@ui5/webcomponents 2.9.0-rc.0 → 2.9.0-rc.2

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 (704) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/cypress/specs/Breadcrumbs.mobile.cy.tsx +53 -0
  3. package/cypress/specs/Button.cy.tsx +9 -0
  4. package/cypress/specs/ColorPicker.cy.tsx +232 -23
  5. package/cypress/specs/ComboBox.cy.tsx +67 -0
  6. package/cypress/specs/DateControlsWithTimezone.cy.tsx +75 -0
  7. package/cypress/specs/DatePicker.cy.tsx +1693 -0
  8. package/cypress/specs/DateRangePicker.cy.tsx +588 -0
  9. package/cypress/specs/DateTimePicker.cy.tsx +445 -0
  10. package/cypress/specs/DayPicker.cy.tsx +81 -0
  11. package/cypress/specs/Input.cy.tsx +57 -0
  12. package/cypress/specs/List.cy.tsx +26 -0
  13. package/cypress/specs/MultiComboBox.cy.tsx +36 -0
  14. package/cypress/specs/MultiInput.cy.tsx +4 -1
  15. package/cypress/specs/Popover.cy.tsx +53 -0
  16. package/cypress/specs/RatingIndicator.cy.tsx +176 -0
  17. package/cypress/specs/SegmentedButton.cy.tsx +215 -0
  18. package/cypress/specs/Select.cy.tsx +18 -0
  19. package/cypress/specs/Table.cy.tsx +2 -0
  20. package/cypress/specs/Tag.cy.tsx +22 -0
  21. package/cypress/specs/Tree.cy.tsx +18 -0
  22. package/cypress/specs/base/AccessibilityTextsHelper.cy.tsx +141 -0
  23. package/cypress/support/commands/ColorPicker.commands.ts +14 -0
  24. package/cypress/support/commands/DatePicker.commands.ts +218 -0
  25. package/cypress/support/commands/DateTimePicker.commands.ts +60 -0
  26. package/cypress/support/commands/SegmentedButton.commands.ts +32 -0
  27. package/cypress/support/commands.ts +18 -0
  28. package/dist/.tsbuildinfo +1 -1
  29. package/dist/Breadcrumbs.d.ts +5 -0
  30. package/dist/Breadcrumbs.js +9 -0
  31. package/dist/Breadcrumbs.js.map +1 -1
  32. package/dist/BreadcrumbsPopoverTemplate.js +5 -1
  33. package/dist/BreadcrumbsPopoverTemplate.js.map +1 -1
  34. package/dist/Button.d.ts +1 -1
  35. package/dist/ComboBox.js +2 -1
  36. package/dist/ComboBox.js.map +1 -1
  37. package/dist/DayPicker.js +3 -3
  38. package/dist/DayPicker.js.map +1 -1
  39. package/dist/Input.d.ts +34 -1
  40. package/dist/Input.js +44 -4
  41. package/dist/Input.js.map +1 -1
  42. package/dist/InputTemplate.js +4 -3
  43. package/dist/InputTemplate.js.map +1 -1
  44. package/dist/ListItem.d.ts +1 -0
  45. package/dist/ListItem.js +9 -1
  46. package/dist/ListItem.js.map +1 -1
  47. package/dist/ListItemGroupHeader.js +1 -1
  48. package/dist/ListItemGroupHeader.js.map +1 -1
  49. package/dist/ListItemTemplate.js +1 -1
  50. package/dist/ListItemTemplate.js.map +1 -1
  51. package/dist/Menu.d.ts +1 -0
  52. package/dist/Menu.js +6 -3
  53. package/dist/Menu.js.map +1 -1
  54. package/dist/MenuItem.d.ts +1 -0
  55. package/dist/MenuItem.js +3 -0
  56. package/dist/MenuItem.js.map +1 -1
  57. package/dist/MenuItemTemplate.d.ts +1 -5
  58. package/dist/MenuItemTemplate.js +1 -1
  59. package/dist/MenuItemTemplate.js.map +1 -1
  60. package/dist/MultiComboBox.d.ts +0 -6
  61. package/dist/MultiComboBox.js +0 -8
  62. package/dist/MultiComboBox.js.map +1 -1
  63. package/dist/MultiInput.d.ts +2 -1
  64. package/dist/Popup.js +2 -5
  65. package/dist/Popup.js.map +1 -1
  66. package/dist/PopupTemplate.d.ts +1 -1
  67. package/dist/Select.d.ts +19 -2
  68. package/dist/Select.js +7 -2
  69. package/dist/Select.js.map +1 -1
  70. package/dist/SelectTemplate.js +6 -2
  71. package/dist/SelectTemplate.js.map +1 -1
  72. package/dist/TabContainer.d.ts +0 -22
  73. package/dist/TabContainer.js +0 -24
  74. package/dist/TabContainer.js.map +1 -1
  75. package/dist/Table.d.ts +15 -17
  76. package/dist/Table.js +37 -45
  77. package/dist/Table.js.map +1 -1
  78. package/dist/TableCell.js +0 -2
  79. package/dist/TableCell.js.map +1 -1
  80. package/dist/TableCellBase.d.ts +1 -0
  81. package/dist/TableCellBase.js +3 -10
  82. package/dist/TableCellBase.js.map +1 -1
  83. package/dist/TableDragAndDrop.d.ts +1 -1
  84. package/dist/TableDragAndDrop.js.map +1 -1
  85. package/dist/TableGrowing.d.ts +2 -2
  86. package/dist/TableGrowing.js +5 -11
  87. package/dist/TableGrowing.js.map +1 -1
  88. package/dist/TableHeaderCell.js +2 -6
  89. package/dist/TableHeaderCell.js.map +1 -1
  90. package/dist/TableHeaderCellActionAI.d.ts +1 -0
  91. package/dist/TableHeaderCellActionAI.js +4 -0
  92. package/dist/TableHeaderCellActionAI.js.map +1 -1
  93. package/dist/TableHeaderCellActionBaseTemplate.js +2 -1
  94. package/dist/TableHeaderCellActionBaseTemplate.js.map +1 -1
  95. package/dist/TableHeaderCellTemplate.js.map +1 -1
  96. package/dist/TableHeaderRow.d.ts +0 -1
  97. package/dist/TableHeaderRow.js +0 -3
  98. package/dist/TableHeaderRow.js.map +1 -1
  99. package/dist/TableHeaderRowTemplate.js +1 -1
  100. package/dist/TableHeaderRowTemplate.js.map +1 -1
  101. package/dist/TableNavigation.d.ts +2 -2
  102. package/dist/TableNavigation.js +1 -1
  103. package/dist/TableNavigation.js.map +1 -1
  104. package/dist/TableRow.d.ts +2 -4
  105. package/dist/TableRow.js +6 -35
  106. package/dist/TableRow.js.map +1 -1
  107. package/dist/TableRowActionBaseTemplate.js +4 -2
  108. package/dist/TableRowActionBaseTemplate.js.map +1 -1
  109. package/dist/TableRowActionNavigation.d.ts +1 -1
  110. package/dist/TableRowActionNavigation.js +4 -4
  111. package/dist/TableRowActionNavigation.js.map +1 -1
  112. package/dist/TableRowBase.d.ts +4 -2
  113. package/dist/TableRowBase.js +15 -16
  114. package/dist/TableRowBase.js.map +1 -1
  115. package/dist/TableRowTemplate.js +3 -2
  116. package/dist/TableRowTemplate.js.map +1 -1
  117. package/dist/TableUtils.d.ts +2 -1
  118. package/dist/TableUtils.js +14 -1
  119. package/dist/TableUtils.js.map +1 -1
  120. package/dist/TableVirtualizer.js +1 -1
  121. package/dist/TableVirtualizer.js.map +1 -1
  122. package/dist/Tag.d.ts +1 -1
  123. package/dist/Tag.js +2 -1
  124. package/dist/Tag.js.map +1 -1
  125. package/dist/Token.d.ts +1 -0
  126. package/dist/Token.js +6 -0
  127. package/dist/Token.js.map +1 -1
  128. package/dist/TokenTemplate.js +1 -1
  129. package/dist/TokenTemplate.js.map +1 -1
  130. package/dist/Toolbar.d.ts +2 -2
  131. package/dist/Toolbar.js +5 -8
  132. package/dist/Toolbar.js.map +1 -1
  133. package/dist/TreeList.js +3 -1
  134. package/dist/TreeList.js.map +1 -1
  135. package/dist/bundle.esm.d.ts +1 -1
  136. package/dist/css/themes/Avatar.css +1 -1
  137. package/dist/css/themes/AvatarGroup.css +1 -1
  138. package/dist/css/themes/Bar.css +1 -1
  139. package/dist/css/themes/Breadcrumbs.css +1 -1
  140. package/dist/css/themes/BusyIndicator.css +1 -1
  141. package/dist/css/themes/Button.css +1 -1
  142. package/dist/css/themes/ButtonBadge.css +1 -1
  143. package/dist/css/themes/Calendar.css +1 -1
  144. package/dist/css/themes/CalendarHeader.css +1 -1
  145. package/dist/css/themes/CalendarLegend.css +1 -1
  146. package/dist/css/themes/CalendarLegendItem.css +1 -1
  147. package/dist/css/themes/Card.css +1 -1
  148. package/dist/css/themes/CardHeader.css +1 -1
  149. package/dist/css/themes/Carousel.css +1 -1
  150. package/dist/css/themes/CheckBox.css +1 -1
  151. package/dist/css/themes/ColorPalette.css +1 -1
  152. package/dist/css/themes/ColorPaletteItem.css +1 -1
  153. package/dist/css/themes/ColorPalettePopover.css +1 -1
  154. package/dist/css/themes/ColorPicker.css +1 -1
  155. package/dist/css/themes/ComboBox.css +1 -1
  156. package/dist/css/themes/ComboBoxItem.css +1 -1
  157. package/dist/css/themes/DatePicker.css +1 -1
  158. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  159. package/dist/css/themes/DayPicker.css +1 -1
  160. package/dist/css/themes/Dialog.css +1 -1
  161. package/dist/css/themes/FileUploader.css +1 -1
  162. package/dist/css/themes/Form.css +1 -1
  163. package/dist/css/themes/FormItem.css +1 -1
  164. package/dist/css/themes/FormItemSpan.css +1 -1
  165. package/dist/css/themes/GrowingButton.css +1 -1
  166. package/dist/css/themes/Icon.css +1 -1
  167. package/dist/css/themes/Input.css +1 -1
  168. package/dist/css/themes/InputIcon.css +1 -1
  169. package/dist/css/themes/InputSharedStyles.css +1 -1
  170. package/dist/css/themes/Link.css +1 -1
  171. package/dist/css/themes/List.css +1 -1
  172. package/dist/css/themes/ListItem.css +1 -1
  173. package/dist/css/themes/ListItemBase.css +1 -1
  174. package/dist/css/themes/ListItemCustom.css +1 -1
  175. package/dist/css/themes/ListItemGroup.css +1 -1
  176. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  177. package/dist/css/themes/ListItemIcon.css +1 -1
  178. package/dist/css/themes/Menu.css +1 -1
  179. package/dist/css/themes/MenuItem.css +1 -1
  180. package/dist/css/themes/MessageStrip.css +1 -1
  181. package/dist/css/themes/MonthPicker.css +1 -1
  182. package/dist/css/themes/MultiComboBox.css +1 -1
  183. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  184. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  185. package/dist/css/themes/MultiInput.css +1 -1
  186. package/dist/css/themes/OptionBase.css +1 -1
  187. package/dist/css/themes/Panel.css +1 -1
  188. package/dist/css/themes/Popover.css +1 -1
  189. package/dist/css/themes/PopupsCommon.css +1 -1
  190. package/dist/css/themes/ProgressIndicator.css +1 -1
  191. package/dist/css/themes/RadioButton.css +1 -1
  192. package/dist/css/themes/RangeSlider.css +1 -1
  193. package/dist/css/themes/RatingIndicator.css +1 -1
  194. package/dist/css/themes/ResponsivePopover.css +1 -1
  195. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  196. package/dist/css/themes/SegmentedButton.css +1 -1
  197. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  198. package/dist/css/themes/Select.css +1 -1
  199. package/dist/css/themes/SliderBase.css +1 -1
  200. package/dist/css/themes/SplitButton.css +1 -1
  201. package/dist/css/themes/StepInput.css +1 -1
  202. package/dist/css/themes/SuggestionItem.css +1 -1
  203. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  204. package/dist/css/themes/Switch.css +1 -1
  205. package/dist/css/themes/TabContainer.css +1 -1
  206. package/dist/css/themes/TabInOverflow.css +1 -1
  207. package/dist/css/themes/TabInStrip.css +1 -1
  208. package/dist/css/themes/TabSemanticIcon.css +1 -1
  209. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  210. package/dist/css/themes/Table.css +1 -1
  211. package/dist/css/themes/TableCellBase.css +1 -1
  212. package/dist/css/themes/TableHeaderRow.css +1 -1
  213. package/dist/css/themes/TableRow.css +1 -1
  214. package/dist/css/themes/TableRowActionBase.css +1 -1
  215. package/dist/css/themes/TableRowBase.css +1 -1
  216. package/dist/css/themes/Tag.css +1 -1
  217. package/dist/css/themes/Text.css +1 -1
  218. package/dist/css/themes/TextArea.css +1 -1
  219. package/dist/css/themes/TimePicker.css +1 -1
  220. package/dist/css/themes/Toast.css +1 -1
  221. package/dist/css/themes/ToggleButton.css +1 -1
  222. package/dist/css/themes/Token.css +1 -1
  223. package/dist/css/themes/Tokenizer.css +1 -1
  224. package/dist/css/themes/TokenizerPopover.css +1 -1
  225. package/dist/css/themes/Toolbar.css +1 -1
  226. package/dist/css/themes/ToolbarPopover.css +1 -1
  227. package/dist/css/themes/TreeItem.css +1 -1
  228. package/dist/css/themes/ValueStateMessage.css +1 -1
  229. package/dist/css/themes/YearPicker.css +1 -1
  230. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  231. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  232. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  233. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  234. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  235. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  236. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  237. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  238. package/dist/custom-elements-internal.json +170 -28
  239. package/dist/custom-elements.json +129 -27
  240. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  241. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  242. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  243. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  244. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  245. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  246. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  247. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  248. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  249. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  250. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  251. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  252. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  253. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  254. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  255. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  256. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  257. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  258. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  259. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  260. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  261. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  262. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  263. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  264. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  265. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  266. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  267. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  268. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  269. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  270. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  271. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  272. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  273. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  274. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  275. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  276. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  277. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  278. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  279. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  280. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  281. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  282. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  283. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  284. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  285. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  286. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  287. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  288. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  289. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  290. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  291. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  292. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  293. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  294. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  295. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  296. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  297. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  298. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  299. package/dist/generated/i18n/i18n-defaults.js +2 -1
  300. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  301. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  302. package/dist/generated/themes/Avatar.css.js +1 -1
  303. package/dist/generated/themes/Avatar.css.js.map +1 -1
  304. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  305. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  306. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  307. package/dist/generated/themes/Bar.css.d.ts +1 -1
  308. package/dist/generated/themes/Bar.css.js +1 -1
  309. package/dist/generated/themes/Bar.css.js.map +1 -1
  310. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  311. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  312. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  313. package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
  314. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  315. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  316. package/dist/generated/themes/Button.css.d.ts +1 -1
  317. package/dist/generated/themes/Button.css.js +1 -1
  318. package/dist/generated/themes/Button.css.js.map +1 -1
  319. package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
  320. package/dist/generated/themes/ButtonBadge.css.js +1 -1
  321. package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
  322. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  323. package/dist/generated/themes/Calendar.css.js +1 -1
  324. package/dist/generated/themes/Calendar.css.js.map +1 -1
  325. package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
  326. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  327. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  328. package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
  329. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  330. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  331. package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
  332. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  333. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  334. package/dist/generated/themes/Card.css.d.ts +1 -1
  335. package/dist/generated/themes/Card.css.js +1 -1
  336. package/dist/generated/themes/Card.css.js.map +1 -1
  337. package/dist/generated/themes/CardHeader.css.d.ts +1 -1
  338. package/dist/generated/themes/CardHeader.css.js +1 -1
  339. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  340. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  341. package/dist/generated/themes/Carousel.css.js +1 -1
  342. package/dist/generated/themes/Carousel.css.js.map +1 -1
  343. package/dist/generated/themes/CheckBox.css.d.ts +1 -1
  344. package/dist/generated/themes/CheckBox.css.js +1 -1
  345. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  346. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  347. package/dist/generated/themes/ColorPalette.css.js +1 -1
  348. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  349. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  350. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  351. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  352. package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
  353. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  354. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  355. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  356. package/dist/generated/themes/ColorPicker.css.js +1 -1
  357. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  358. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  359. package/dist/generated/themes/ComboBox.css.js +1 -1
  360. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  361. package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
  362. package/dist/generated/themes/ComboBoxItem.css.js +1 -1
  363. package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
  364. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  365. package/dist/generated/themes/DatePicker.css.js +1 -1
  366. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  367. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  368. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  369. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  370. package/dist/generated/themes/DayPicker.css.d.ts +1 -1
  371. package/dist/generated/themes/DayPicker.css.js +1 -1
  372. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  373. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  374. package/dist/generated/themes/Dialog.css.js +1 -1
  375. package/dist/generated/themes/Dialog.css.js.map +1 -1
  376. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  377. package/dist/generated/themes/FileUploader.css.js +1 -1
  378. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  379. package/dist/generated/themes/Form.css.d.ts +1 -1
  380. package/dist/generated/themes/Form.css.js +1 -1
  381. package/dist/generated/themes/Form.css.js.map +1 -1
  382. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  383. package/dist/generated/themes/FormItem.css.js +1 -1
  384. package/dist/generated/themes/FormItem.css.js.map +1 -1
  385. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  386. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  387. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  388. package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
  389. package/dist/generated/themes/GrowingButton.css.js +1 -1
  390. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  391. package/dist/generated/themes/Icon.css.d.ts +1 -1
  392. package/dist/generated/themes/Icon.css.js +1 -1
  393. package/dist/generated/themes/Icon.css.js.map +1 -1
  394. package/dist/generated/themes/Input.css.d.ts +1 -1
  395. package/dist/generated/themes/Input.css.js +1 -1
  396. package/dist/generated/themes/Input.css.js.map +1 -1
  397. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  398. package/dist/generated/themes/InputIcon.css.js +1 -1
  399. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  400. package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
  401. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  402. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  403. package/dist/generated/themes/Link.css.d.ts +1 -1
  404. package/dist/generated/themes/Link.css.js +1 -1
  405. package/dist/generated/themes/Link.css.js.map +1 -1
  406. package/dist/generated/themes/List.css.d.ts +1 -1
  407. package/dist/generated/themes/List.css.js +1 -1
  408. package/dist/generated/themes/List.css.js.map +1 -1
  409. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  410. package/dist/generated/themes/ListItem.css.js +1 -1
  411. package/dist/generated/themes/ListItem.css.js.map +1 -1
  412. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  413. package/dist/generated/themes/ListItemBase.css.js +1 -1
  414. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  415. package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
  416. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  417. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  418. package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
  419. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  420. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  421. package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
  422. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  423. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  424. package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
  425. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  426. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  427. package/dist/generated/themes/Menu.css.d.ts +1 -1
  428. package/dist/generated/themes/Menu.css.js +1 -1
  429. package/dist/generated/themes/Menu.css.js.map +1 -1
  430. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  431. package/dist/generated/themes/MenuItem.css.js +1 -1
  432. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  433. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  434. package/dist/generated/themes/MessageStrip.css.js +1 -1
  435. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  436. package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
  437. package/dist/generated/themes/MonthPicker.css.js +1 -1
  438. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  439. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  440. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  441. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  442. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  443. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  444. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  445. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  446. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  447. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  448. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  449. package/dist/generated/themes/MultiInput.css.js +1 -1
  450. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  451. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  452. package/dist/generated/themes/OptionBase.css.js +1 -1
  453. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  454. package/dist/generated/themes/Panel.css.d.ts +1 -1
  455. package/dist/generated/themes/Panel.css.js +1 -1
  456. package/dist/generated/themes/Panel.css.js.map +1 -1
  457. package/dist/generated/themes/Popover.css.d.ts +1 -1
  458. package/dist/generated/themes/Popover.css.js +1 -1
  459. package/dist/generated/themes/Popover.css.js.map +1 -1
  460. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  461. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  462. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  463. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  464. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  465. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  466. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  467. package/dist/generated/themes/RadioButton.css.js +1 -1
  468. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  469. package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
  470. package/dist/generated/themes/RangeSlider.css.js +1 -1
  471. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  472. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  473. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  474. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  475. package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
  476. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  477. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  478. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  479. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  480. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  481. package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
  482. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  483. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  484. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  485. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  486. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  487. package/dist/generated/themes/Select.css.d.ts +1 -1
  488. package/dist/generated/themes/Select.css.js +1 -1
  489. package/dist/generated/themes/Select.css.js.map +1 -1
  490. package/dist/generated/themes/SliderBase.css.d.ts +1 -1
  491. package/dist/generated/themes/SliderBase.css.js +1 -1
  492. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  493. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  494. package/dist/generated/themes/SplitButton.css.js +1 -1
  495. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  496. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  497. package/dist/generated/themes/StepInput.css.js +1 -1
  498. package/dist/generated/themes/StepInput.css.js.map +1 -1
  499. package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
  500. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  501. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  502. package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
  503. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  504. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  505. package/dist/generated/themes/Switch.css.d.ts +1 -1
  506. package/dist/generated/themes/Switch.css.js +1 -1
  507. package/dist/generated/themes/Switch.css.js.map +1 -1
  508. package/dist/generated/themes/TabContainer.css.d.ts +1 -1
  509. package/dist/generated/themes/TabContainer.css.js +1 -1
  510. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  511. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  512. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  513. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  514. package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
  515. package/dist/generated/themes/TabInStrip.css.js +1 -1
  516. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  517. package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
  518. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  519. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  520. package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
  521. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  522. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  523. package/dist/generated/themes/Table.css.d.ts +1 -1
  524. package/dist/generated/themes/Table.css.js +1 -1
  525. package/dist/generated/themes/Table.css.js.map +1 -1
  526. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  527. package/dist/generated/themes/TableCellBase.css.js +1 -1
  528. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  529. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  530. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  531. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  532. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  533. package/dist/generated/themes/TableRow.css.js +1 -1
  534. package/dist/generated/themes/TableRow.css.js.map +1 -1
  535. package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
  536. package/dist/generated/themes/TableRowActionBase.css.js +1 -1
  537. package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
  538. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  539. package/dist/generated/themes/TableRowBase.css.js +1 -1
  540. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  541. package/dist/generated/themes/Tag.css.d.ts +1 -1
  542. package/dist/generated/themes/Tag.css.js +1 -1
  543. package/dist/generated/themes/Tag.css.js.map +1 -1
  544. package/dist/generated/themes/Text.css.d.ts +1 -1
  545. package/dist/generated/themes/Text.css.js +1 -1
  546. package/dist/generated/themes/Text.css.js.map +1 -1
  547. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  548. package/dist/generated/themes/TextArea.css.js +1 -1
  549. package/dist/generated/themes/TextArea.css.js.map +1 -1
  550. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  551. package/dist/generated/themes/TimePicker.css.js +1 -1
  552. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  553. package/dist/generated/themes/Toast.css.d.ts +1 -1
  554. package/dist/generated/themes/Toast.css.js +1 -1
  555. package/dist/generated/themes/Toast.css.js.map +1 -1
  556. package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
  557. package/dist/generated/themes/ToggleButton.css.js +1 -1
  558. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  559. package/dist/generated/themes/Token.css.d.ts +1 -1
  560. package/dist/generated/themes/Token.css.js +1 -1
  561. package/dist/generated/themes/Token.css.js.map +1 -1
  562. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  563. package/dist/generated/themes/Tokenizer.css.js +1 -1
  564. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  565. package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
  566. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  567. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  568. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  569. package/dist/generated/themes/Toolbar.css.js +1 -1
  570. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  571. package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
  572. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  573. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  574. package/dist/generated/themes/TreeItem.css.d.ts +1 -1
  575. package/dist/generated/themes/TreeItem.css.js +1 -1
  576. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  577. package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
  578. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  579. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  580. package/dist/generated/themes/YearPicker.css.d.ts +1 -1
  581. package/dist/generated/themes/YearPicker.css.js +1 -1
  582. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  583. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  584. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  585. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  586. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  587. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  588. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  589. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  590. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  591. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  592. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  593. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  594. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  595. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  596. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  597. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  598. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  599. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  600. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  601. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  602. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  603. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  604. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  605. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  606. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  607. package/dist/types/InputKeyHint.d.ts +16 -0
  608. package/dist/types/InputKeyHint.js +18 -0
  609. package/dist/types/InputKeyHint.js.map +1 -0
  610. package/dist/types/SearchPopupMode.d.ts +22 -0
  611. package/dist/types/SearchPopupMode.js +24 -0
  612. package/dist/types/SearchPopupMode.js.map +1 -0
  613. package/dist/vscode.html-custom-data.json +22 -7
  614. package/dist/web-types.json +46 -16
  615. package/package.json +9 -9
  616. package/src/BreadcrumbsPopoverTemplate.tsx +6 -1
  617. package/src/InputTemplate.tsx +6 -0
  618. package/src/ListItemTemplate.tsx +1 -2
  619. package/src/MenuItemTemplate.tsx +3 -8
  620. package/src/SelectTemplate.tsx +11 -3
  621. package/src/TableHeaderCellActionBaseTemplate.tsx +2 -1
  622. package/src/TableHeaderCellTemplate.tsx +1 -2
  623. package/src/TableHeaderRowTemplate.tsx +1 -1
  624. package/src/TableRowActionBaseTemplate.tsx +4 -2
  625. package/src/TableRowTemplate.tsx +4 -3
  626. package/src/TokenTemplate.tsx +1 -0
  627. package/src/i18n/messagebundle.properties +4 -1
  628. package/src/i18n/messagebundle_ar.properties +2 -0
  629. package/src/i18n/messagebundle_bg.properties +2 -0
  630. package/src/i18n/messagebundle_ca.properties +2 -0
  631. package/src/i18n/messagebundle_cnr.properties +2 -0
  632. package/src/i18n/messagebundle_cs.properties +2 -0
  633. package/src/i18n/messagebundle_cy.properties +2 -0
  634. package/src/i18n/messagebundle_da.properties +2 -0
  635. package/src/i18n/messagebundle_de.properties +2 -0
  636. package/src/i18n/messagebundle_el.properties +2 -0
  637. package/src/i18n/messagebundle_en.properties +218 -0
  638. package/src/i18n/messagebundle_en_GB.properties +2 -0
  639. package/src/i18n/messagebundle_en_US_sappsd.properties +2 -0
  640. package/src/i18n/messagebundle_en_US_saprigi.properties +4 -0
  641. package/src/i18n/messagebundle_en_US_saptrc.properties +2 -0
  642. package/src/i18n/messagebundle_es.properties +2 -0
  643. package/src/i18n/messagebundle_es_MX.properties +2 -0
  644. package/src/i18n/messagebundle_et.properties +2 -0
  645. package/src/i18n/messagebundle_fi.properties +2 -0
  646. package/src/i18n/messagebundle_fr.properties +6 -4
  647. package/src/i18n/messagebundle_fr_CA.properties +2 -0
  648. package/src/i18n/messagebundle_hi.properties +2 -0
  649. package/src/i18n/messagebundle_hr.properties +10 -8
  650. package/src/i18n/messagebundle_hu.properties +2 -0
  651. package/src/i18n/messagebundle_id.properties +2 -0
  652. package/src/i18n/messagebundle_it.properties +2 -0
  653. package/src/i18n/messagebundle_iw.properties +2 -0
  654. package/src/i18n/messagebundle_ja.properties +2 -0
  655. package/src/i18n/messagebundle_kk.properties +2 -0
  656. package/src/i18n/messagebundle_ko.properties +2 -0
  657. package/src/i18n/messagebundle_lt.properties +2 -0
  658. package/src/i18n/messagebundle_lv.properties +13 -11
  659. package/src/i18n/messagebundle_mk.properties +2 -0
  660. package/src/i18n/messagebundle_ms.properties +2 -0
  661. package/src/i18n/messagebundle_nl.properties +2 -0
  662. package/src/i18n/messagebundle_no.properties +2 -0
  663. package/src/i18n/messagebundle_pl.properties +2 -0
  664. package/src/i18n/messagebundle_pt.properties +2 -0
  665. package/src/i18n/messagebundle_pt_PT.properties +2 -0
  666. package/src/i18n/messagebundle_ro.properties +2 -0
  667. package/src/i18n/messagebundle_ru.properties +4 -2
  668. package/src/i18n/messagebundle_sh.properties +2 -0
  669. package/src/i18n/messagebundle_sk.properties +2 -0
  670. package/src/i18n/messagebundle_sl.properties +2 -0
  671. package/src/i18n/messagebundle_sr.properties +2 -0
  672. package/src/i18n/messagebundle_sv.properties +2 -0
  673. package/src/i18n/messagebundle_th.properties +2 -0
  674. package/src/i18n/messagebundle_tr.properties +2 -0
  675. package/src/i18n/messagebundle_uk.properties +2 -0
  676. package/src/i18n/messagebundle_vi.properties +2 -0
  677. package/src/i18n/messagebundle_zh_CN.properties +3 -1
  678. package/src/i18n/messagebundle_zh_TW.properties +2 -0
  679. package/src/themes/Bar.css +0 -14
  680. package/src/themes/Input.css +7 -2
  681. package/src/themes/Select.css +14 -0
  682. package/src/themes/TabInStrip.css +48 -28
  683. package/src/themes/TabSemanticIcon.css +3 -3
  684. package/src/themes/base/Bar-parameters.css +2 -6
  685. package/src/themes/base/RadioButton-parameters.css +1 -1
  686. package/src/themes/base/TabContainer-parameters.css +2 -22
  687. package/src/themes/sap_fiori_3/TabContainer-parameters.css +0 -3
  688. package/src/themes/sap_fiori_3_dark/TabContainer-parameters.css +0 -3
  689. package/src/themes/sap_fiori_3_hcb/RadioButton-parameters.css +1 -0
  690. package/src/themes/sap_fiori_3_hcb/TabContainer-parameters.css +0 -20
  691. package/src/themes/sap_fiori_3_hcw/RadioButton-parameters.css +1 -0
  692. package/src/themes/sap_fiori_3_hcw/TabContainer-parameters.css +0 -20
  693. package/src/themes/sap_horizon/RadioButton-parameters.css +0 -1
  694. package/src/themes/sap_horizon/TabContainer-parameters.css +4 -9
  695. package/src/themes/sap_horizon/Tag-parameters.css +32 -0
  696. package/src/themes/sap_horizon_dark/RadioButton-parameters.css +0 -1
  697. package/src/themes/sap_horizon_dark/TabContainer-parameters.css +4 -9
  698. package/src/themes/sap_horizon_dark/Tag-parameters.css +32 -0
  699. package/src/themes/sap_horizon_hcb/RadioButton-parameters.css +1 -0
  700. package/src/themes/sap_horizon_hcb/TabContainer-parameters.css +4 -23
  701. package/src/themes/sap_horizon_hcb/Tag-parameters.css +20 -20
  702. package/src/themes/sap_horizon_hcw/RadioButton-parameters.css +1 -0
  703. package/src/themes/sap_horizon_hcw/TabContainer-parameters.css +4 -23
  704. package/src/themes/sap_horizon_hcw/Tag-parameters.css +20 -20
@@ -0,0 +1,1693 @@
1
+ import "@ui5/webcomponents-localization/dist/features/calendar/Islamic.js";
2
+ import "../../src/Assets.js";
3
+ import { setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
4
+ import DatePicker from "../../src/DatePicker.js";
5
+ import Label from "../../src/Label.js";
6
+
7
+ describe("Date Picker Tests", () => {
8
+ afterEach(() => {
9
+ // eslint-disable-next-line
10
+ cy.wait(200);
11
+ });
12
+
13
+ it("input renders", () => {
14
+ cy.mount(<DatePicker></DatePicker>);
15
+
16
+ cy.get("[ui5-date-picker]")
17
+ .as("datePicker");
18
+
19
+ cy.get<DatePicker>("@datePicker")
20
+ .shadow()
21
+ .find("ui5-input")
22
+ .should("be.visible");
23
+
24
+ cy.get<DatePicker>("@datePicker")
25
+ .ui5DatePickerGetInnerInput()
26
+ .as("input");
27
+
28
+ cy.get("@input")
29
+ .should("be.visible");
30
+
31
+ cy.get("@input")
32
+ .should("have.attr", "aria-roledescription", "Date Input")
33
+ .and("have.attr", "aria-haspopup", "grid")
34
+ .and("not.have.attr", "aria-controls");
35
+
36
+ cy.get("@input")
37
+ .should("not.have.attr", "aria-expanded");
38
+ });
39
+
40
+ it("input receives value in format pattern depending on the set language", () => {
41
+ cy.wrap({ setLanguage })
42
+ .invoke("setLanguage", "bg");
43
+
44
+ cy.mount(<DatePicker value="11 декември 2018г." formatPattern="long"></DatePicker>);
45
+
46
+ cy.get("[ui5-date-picker]")
47
+ .as("datePicker");
48
+
49
+ cy.get("@datePicker")
50
+ .should("have.value", "11 декември 2018\u202fг.")
51
+ .and("have.attr", "value-state", "None");
52
+
53
+ const timestamp_11_Dec_2018 = 1544486400;
54
+
55
+ cy.get<DatePicker>("@datePicker")
56
+ .ui5DatePickerGetInnerInput()
57
+ .realClick()
58
+ .should("be.focused")
59
+ .realPress("F4");
60
+
61
+ cy.get<DatePicker>("@datePicker")
62
+ .ui5DatePickerGetPopoverDate(timestamp_11_Dec_2018)
63
+ .should("have.class", "ui5-dp-item--selected");
64
+
65
+ cy.wrap({ setLanguage })
66
+ .invoke("setLanguage", "en");
67
+ });
68
+
69
+ it("custom formatting", () => {
70
+ cy.mount(<DatePicker formatPattern="yyyy, dd/MM"></DatePicker>);
71
+
72
+ cy.get("[ui5-date-picker]")
73
+ .as("datePicker");
74
+
75
+ cy.get<DatePicker>("@datePicker")
76
+ .ui5DatePickerGetInnerInput()
77
+ .realClick()
78
+ .should("be.focused")
79
+ .realType("2018, 05/05")
80
+ .realPress("Enter");
81
+
82
+ cy.get("@datePicker")
83
+ .should("have.attr", "value-state", "None");
84
+ });
85
+
86
+ it("value state", () => {
87
+ cy.mount(<DatePicker></DatePicker>);
88
+ cy.get("[ui5-date-picker]")
89
+ .as("datePicker");
90
+
91
+ cy.get<DatePicker>("@datePicker")
92
+ .ui5DatePickerGetInnerInput()
93
+ .realClick()
94
+ .should("be.focused")
95
+ .realType("Invalid input")
96
+ .realPress("Enter");
97
+
98
+ cy.get("@datePicker")
99
+ .shadow()
100
+ .find("ui5-input")
101
+ .should("have.attr", "value-state", "Negative");
102
+
103
+ cy.get("@datePicker")
104
+ .shadow()
105
+ .find("ui5-input")
106
+ .shadow()
107
+ .find(".ui5-input-content")
108
+ .should("be.visible");
109
+ });
110
+
111
+ it("disabled", () => {
112
+ cy.mount(<DatePicker disabled={true}></DatePicker>);
113
+
114
+ cy.get("[ui5-date-picker]")
115
+ .as("datePicker")
116
+ .should("have.css", "pointer-events", "none");
117
+
118
+ cy.get<DatePicker>("@datePicker")
119
+ .ui5DatePickerGetInnerInput()
120
+ .should("have.attr", "disabled");
121
+
122
+ cy.get<DatePicker>("@datePicker")
123
+ .shadow()
124
+ .find("ui5-icon")
125
+ .should("have.css", "pointer-events", "none");
126
+ });
127
+
128
+ it("readonly", () => {
129
+ cy.mount(<DatePicker readonly={true}></DatePicker>);
130
+
131
+ cy.get("[ui5-date-picker]")
132
+ .as("datePicker")
133
+ .ui5DatePickerGetInnerInput()
134
+ .should("have.attr", "readonly");
135
+
136
+ cy.get<DatePicker>("@datePicker")
137
+ .shadow()
138
+ .find("ui5-icon")
139
+ .should("not.exist");
140
+ });
141
+
142
+ it("required", () => {
143
+ cy.mount(<DatePicker required={true}></DatePicker>);
144
+
145
+ cy.get("[ui5-date-picker]")
146
+ .as("datePicker")
147
+ .shadow()
148
+ .find("ui5-input")
149
+ .should("have.attr", "required");
150
+
151
+ cy.get<DatePicker>("@datePicker")
152
+ .ui5DatePickerGetInnerInput()
153
+ .should("have.attr", "aria-required", "true");
154
+ });
155
+
156
+ it("placeholder", () => {
157
+ cy.mount(<DatePicker placeholder="test placeholder"></DatePicker>);
158
+
159
+ cy.get("[ui5-date-picker]")
160
+ .ui5DatePickerGetInnerInput()
161
+ .should("have.attr", "placeholder", "test placeholder");
162
+ });
163
+
164
+
165
+
166
+ it("Selected date from daypicker is the same as datepicker date", () => {
167
+ cy.mount(<DatePicker value="Jan 29, 2019" formatPattern="MMM d, y"></DatePicker>);
168
+
169
+ const timestamp_11_Jan_2019 = 1547164800;
170
+
171
+ cy.get("[ui5-date-picker]")
172
+ .as("datePicker")
173
+ .ui5DatePickerValueHelpIconPress();
174
+
175
+ cy.get<DatePicker>("@datePicker")
176
+ .ui5DatePickerGetPopoverDate(timestamp_11_Jan_2019)
177
+ .realClick();
178
+
179
+ cy.get<DatePicker>("@datePicker")
180
+ .should("have.value", "Jan 11, 2019");
181
+ });
182
+
183
+ it("focusout fires change", () => {
184
+ cy.mount(<DatePicker></DatePicker>);
185
+
186
+ cy.get("[ui5-date-picker]")
187
+ .as("datePicker")
188
+ .ui5DatePickerGetInnerInput()
189
+ .as("input")
190
+ .realClick()
191
+ .should("be.focused")
192
+ .realType("Jan 1, 1999")
193
+ .realPress("Tab");
194
+
195
+ cy.get<DatePicker>("@datePicker")
196
+ .should("have.attr", "value", "Jan 1, 1999");
197
+ });
198
+
199
+ it("Select a date from the picker popover", () => {
200
+ cy.mount(<DatePicker value="Jan 6, 2015" formatPattern="MMM d, y"></DatePicker>);
201
+
202
+ const timestamp_6_Jan_2015 = 1420502400;
203
+ const timestamp_8_Jan_2015 = timestamp_6_Jan_2015 + 2 * 24 * 60 * 60;
204
+
205
+ cy.get("[ui5-date-picker]")
206
+ .as("datePicker")
207
+ .ui5DatePickerValueHelpIconPress();
208
+
209
+ cy.get<DatePicker>("@datePicker")
210
+ .ui5DatePickerGetPopoverDate(timestamp_6_Jan_2015)
211
+ .should("have.class", "ui5-dp-item--selected");
212
+
213
+ cy.get<DatePicker>("@datePicker")
214
+ .ui5DatePickerGetPopoverDate(timestamp_8_Jan_2015)
215
+ .realClick();
216
+
217
+ cy.get<DatePicker>("@datePicker")
218
+ .should("not.have.attr", "open");
219
+
220
+ cy.get("@datePicker")
221
+ .shadow()
222
+ .find("[ui5-responsive-popover]")
223
+ .should("not.have.attr", "open");
224
+
225
+ cy.get<DatePicker>("@datePicker")
226
+ .should("have.value", "Jan 8, 2015");
227
+ });
228
+
229
+ it("Clear the input field", () => {
230
+ cy.mount(<DatePicker value="2015" formatPattern="y"></DatePicker>);
231
+
232
+ cy.get("[ui5-date-picker]")
233
+ .as("datePicker")
234
+ .ui5DatePickerGetInnerInput()
235
+ .as("input")
236
+ .realClick()
237
+ .should("be.focused")
238
+ .realPress("Backspace")
239
+ .realPress("Backspace")
240
+ .realPress("Backspace")
241
+ .realPress("Backspace")
242
+ .realPress("Enter");
243
+
244
+ cy.get<DatePicker>("@datePicker")
245
+ .should("have.value", "");
246
+ });
247
+
248
+ it("respect first day of the week - monday", () => {
249
+ cy.wrap({ setLanguage })
250
+ .invoke("setLanguage", "bg");
251
+
252
+ cy.mount(<DatePicker value="фев 6, 2019" formatPattern="MMM d, y"></DatePicker>);
253
+
254
+ const timestamp_3_Feb_2019 = 1549152000;
255
+ const timestamp_28_Jan_2019 = 1548633600;
256
+
257
+ cy.get("[ui5-date-picker]")
258
+ .as("datePicker")
259
+ .ui5DatePickerValueHelpIconPress();
260
+
261
+ cy.get<DatePicker>("@datePicker")
262
+ .ui5DatePickerGetFirstDisplayedDate()
263
+ .should("have.attr", "data-sap-timestamp", timestamp_28_Jan_2019.toString());
264
+
265
+ cy.get<DatePicker>("@datePicker")
266
+ .ui5DatePickerGetPopoverDate(timestamp_3_Feb_2019)
267
+ .should("have.class", "ui5-dp-wday6");
268
+
269
+ cy.wrap({ setLanguage })
270
+ .invoke("setLanguage", "en");
271
+ });
272
+
273
+ it("if today is 30 jan, clicking next month does not skip feb", () => {
274
+ cy.mount(<DatePicker value="Jan 30, 2019" formatPattern="MMM d, y"></DatePicker>);
275
+
276
+ const timestamp_27_Jan_2019 = 1548547200;
277
+
278
+ cy.get("[ui5-date-picker]")
279
+ .as("datePicker")
280
+ .ui5DatePickerValueHelpIconPress();
281
+
282
+ cy.get<DatePicker>("@datePicker")
283
+ .ui5DatePickerGetNextButton()
284
+ .realClick();
285
+
286
+ cy.get<DatePicker>("@datePicker")
287
+ .ui5DatePickerGetFirstDisplayedDate()
288
+ .should("have.attr", "data-sap-timestamp", timestamp_27_Jan_2019.toString());
289
+ });
290
+
291
+ it("picker stays open on input click", () => {
292
+ cy.mount(<DatePicker></DatePicker>);
293
+
294
+ cy.get("[ui5-date-picker]")
295
+ .as("datePicker")
296
+ .ui5DatePickerValueHelpIconPress();
297
+
298
+ cy.get<DatePicker>("@datePicker")
299
+ .ui5DatePickerGetInnerInput()
300
+ .realClick();
301
+
302
+ cy.get<DatePicker>("@datePicker")
303
+ .should("have.attr", "open");
304
+ });
305
+
306
+ it("change fires when we change the input back to its original value", () => {
307
+ cy.mount(<DatePicker value="2015" formatPattern="y"></DatePicker>);
308
+
309
+ cy.get("[ui5-date-picker]")
310
+ .as("datePicker")
311
+ .ui5DatePickerGetInnerInput()
312
+ .as("input")
313
+ .realClick()
314
+ .should("be.focused");
315
+
316
+ cy.get("@input")
317
+ .realPress("Backspace")
318
+ .realPress("Backspace")
319
+ .realPress("Backspace")
320
+ .realPress("Backspace")
321
+ .realPress("Enter");
322
+
323
+ cy.get<DatePicker>("@datePicker")
324
+ .should("have.value", "");
325
+
326
+ cy.get("@input")
327
+ .should("be.focused")
328
+ .realType("2015")
329
+ .realPress("Enter");
330
+
331
+ cy.get<DatePicker>("@datePicker")
332
+ .should("have.value", "2015");
333
+ });
334
+
335
+ it("change fires every time tomorrow is typed and normalized", () => {
336
+ cy.mount(<DatePicker></DatePicker>);
337
+
338
+ cy.get("[ui5-date-picker]")
339
+ .as("datePicker")
340
+ .ui5DatePickerGetInnerInput()
341
+ .realClick()
342
+ .should("be.focused")
343
+ .realType("tomorrow")
344
+ .realPress("Enter");
345
+
346
+ cy.get<DatePicker>("@datePicker")
347
+ .invoke("attr", "value")
348
+ .should("not.be.empty")
349
+ .and("not.equal", "tomorrow");
350
+ });
351
+
352
+ it("today value is normalized and correctly rounded to 00:00:00", () => {
353
+ cy.mount(<DatePicker value="today"></DatePicker>);
354
+
355
+ let timestampToday = new Date().getTime();
356
+ timestampToday = (timestampToday - (timestampToday % (24 * 60 * 60 * 1000))) / 1000;
357
+
358
+ cy.get("[ui5-date-picker]")
359
+ .as("datePicker")
360
+ .ui5DatePickerValueHelpIconPress();
361
+
362
+ cy.get<DatePicker>("@datePicker")
363
+ .shadow()
364
+ .find("ui5-calendar")
365
+ .should("have.attr", "timestamp", timestampToday.toString());
366
+
367
+ cy.get<DatePicker>("@datePicker")
368
+ .ui5DatePickerGetPopoverDate(timestampToday)
369
+ .should("have.class", "ui5-dp-item--selected");
370
+ });
371
+
372
+ it("[F4] toggles the calendar", () => {
373
+ cy.mount(<DatePicker></DatePicker>);
374
+
375
+ cy.get("[ui5-date-picker]")
376
+ .as("datePicker")
377
+ .should("not.have.attr", "open");
378
+
379
+ cy.get<DatePicker>("@datePicker")
380
+ .ui5DatePickerGetInnerInput()
381
+ .realClick()
382
+ .should("be.focused")
383
+ .realPress("F4");
384
+
385
+ cy.get<DatePicker>("@datePicker")
386
+ .should("have.attr", "open");
387
+
388
+ cy.get<DatePicker>("@datePicker")
389
+ .shadow()
390
+ .find("ui5-calendar")
391
+ .shadow()
392
+ .find("ui5-daypicker")
393
+ .should("be.visible");
394
+ });
395
+
396
+ it("[Alt] + [Up] toggles the calendar", () => {
397
+ cy.mount(<DatePicker></DatePicker>);
398
+
399
+ cy.get("[ui5-date-picker]")
400
+ .as("datePicker")
401
+ .ui5DatePickerGetInnerInput()
402
+ .as("input")
403
+ .realClick()
404
+ .should("be.focused")
405
+ .realPress(["Alt", "ArrowUp"]);
406
+
407
+ cy.get<DatePicker>("@datePicker")
408
+ .should("have.attr", "open");
409
+
410
+ cy.get("@input")
411
+ .realPress(["Alt", "ArrowUp"]);
412
+
413
+ cy.get<DatePicker>("@datePicker")
414
+ .should("not.have.attr", "open");
415
+ });
416
+
417
+ it("[Alt] + [Down] toggles the calendar", () => {
418
+ cy.mount(<DatePicker></DatePicker>);
419
+
420
+ cy.get("[ui5-date-picker]")
421
+ .as("datePicker")
422
+ .ui5DatePickerGetInnerInput()
423
+ .as("input")
424
+ .realClick()
425
+ .should("be.focused")
426
+ .realPress(["Alt", "ArrowDown"]);
427
+
428
+ cy.get<DatePicker>("@datePicker")
429
+ .should("have.attr", "open");
430
+
431
+ cy.get("@input")
432
+ .realPress(["Alt", "ArrowDown"]);
433
+
434
+ cy.get<DatePicker>("@datePicker")
435
+ .should("not.have.attr", "open");
436
+ });
437
+
438
+ it("[F4] shows month picker after date picker is open", () => {
439
+ cy.mount(<DatePicker></DatePicker>);
440
+
441
+ cy.get("[ui5-date-picker]")
442
+ .as("datePicker")
443
+ .ui5DatePickerGetInnerInput()
444
+ .realClick()
445
+ .should("be.focused")
446
+ .realPress("F4");
447
+
448
+ cy.get<DatePicker>("@datePicker")
449
+ .shadow()
450
+ .find("ui5-calendar")
451
+ .as("calendar")
452
+ .realPress("F4");
453
+
454
+ cy.get("@calendar")
455
+ .shadow()
456
+ .find("ui5-daypicker")
457
+ .should("not.be.visible");
458
+
459
+ cy.get("@calendar")
460
+ .shadow()
461
+ .find("ui5-monthpicker")
462
+ .should("be.visible");
463
+ });
464
+
465
+ it("[Shift] + [F4] shows year picker after date picker is open", () => {
466
+ cy.mount(<DatePicker></DatePicker>);
467
+
468
+ cy.get("[ui5-date-picker]")
469
+ .as("datePicker")
470
+ .ui5DatePickerValueHelpIconPress();
471
+
472
+ cy.get<DatePicker>("@datePicker")
473
+ .shadow()
474
+ .find("ui5-calendar")
475
+ .as("calendar")
476
+ .realPress(["Shift", "F4"]);
477
+
478
+ cy.get("@calendar")
479
+ .shadow()
480
+ .find("ui5-yearpicker")
481
+ .should("be.visible");
482
+ });
483
+
484
+ it("[F4] shows month picker after year picker is open", () => {
485
+ cy.mount(<DatePicker></DatePicker>);
486
+
487
+ cy.get("[ui5-date-picker]")
488
+ .as("datePicker")
489
+ .ui5DatePickerValueHelpIconPress();
490
+
491
+ cy.get<DatePicker>("@datePicker")
492
+ .shadow()
493
+ .find("ui5-calendar")
494
+ .as("calendar")
495
+ .realPress(["Shift", "F4"])
496
+ .realPress("F4");
497
+
498
+ cy.get("@calendar")
499
+ .shadow()
500
+ .find("ui5-monthpicker")
501
+ .should("be.visible");
502
+ });
503
+
504
+ it("[Shift] + [F4] shows year picker after month picker is open", () => {
505
+ cy.mount(<DatePicker></DatePicker>);
506
+
507
+ cy.get("[ui5-date-picker]")
508
+ .as("datePicker")
509
+ .ui5DatePickerValueHelpIconPress();
510
+
511
+ cy.get<DatePicker>("@datePicker")
512
+ .shadow()
513
+ .find("ui5-calendar")
514
+ .as("calendar")
515
+ .realPress("F4")
516
+ .realPress(["Shift", "F4"]);
517
+
518
+ cy.get("@calendar")
519
+ .shadow()
520
+ .find("ui5-yearpicker")
521
+ .should("be.visible");
522
+ });
523
+
524
+ it("DatePicker popover when initially opened displays a day picker", () => {
525
+ cy.mount(<DatePicker></DatePicker>);
526
+
527
+ cy.get("[ui5-date-picker]")
528
+ .as("datePicker")
529
+ .ui5DatePickerValueHelpIconPress();
530
+
531
+ cy.get<DatePicker>("@datePicker")
532
+ .shadow()
533
+ .find("ui5-calendar")
534
+ .as("calendar")
535
+ .realPress("F4")
536
+ .realPress("Escape");
537
+
538
+ cy.get<DatePicker>("@datePicker")
539
+ .ui5DatePickerValueHelpIconPress();
540
+
541
+ cy.get("@calendar")
542
+ .shadow()
543
+ .find("ui5-daypicker")
544
+ .should("be.visible");
545
+
546
+ cy.get<DatePicker>("@datePicker")
547
+ .ui5DatePickerValueHelpIconPress();
548
+
549
+ cy.get<DatePicker>("@datePicker")
550
+ .shadow()
551
+ .find("ui5-calendar")
552
+ .as("calendar")
553
+ .realPress(["Shift", "F4"])
554
+ .realPress("Escape");
555
+
556
+ cy.get<DatePicker>("@datePicker")
557
+ .ui5DatePickerValueHelpIconPress();
558
+
559
+ cy.get("@calendar")
560
+ .shadow()
561
+ .find("ui5-daypicker")
562
+ .should("be.visible");
563
+ });
564
+
565
+ it("daypicker extreme values max", () => {
566
+ const timestamp_28_Nov_9999 = "253399363200";
567
+
568
+ cy.mount(<DatePicker value="Dec 31, 9999" formatPattern="MMM d, y"></DatePicker>);
569
+
570
+ cy.get("[ui5-date-picker]")
571
+ .as("datePicker")
572
+ .ui5DatePickerValueHelpIconPress();
573
+
574
+ cy.get<DatePicker>("@datePicker")
575
+ .ui5DatePickerGetFirstDisplayedDate()
576
+ .should("have.attr", "data-sap-timestamp", timestamp_28_Nov_9999);
577
+
578
+ cy.get<DatePicker>("@datePicker")
579
+ .ui5DatePickerGetNextButton()
580
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
581
+ });
582
+
583
+ it("daypicker extreme values min", () => {
584
+ const timestamp_31_Dec_0000 = "-62135683200";
585
+
586
+ cy.mount(<DatePicker value="Jan 1, 0001" formatPattern="MMM d, y"></DatePicker>);
587
+
588
+ cy.get("[ui5-date-picker]")
589
+ .as("datePicker")
590
+ .ui5DatePickerValueHelpIconPress();
591
+
592
+ cy.get<DatePicker>("@datePicker")
593
+ .ui5DatePickerGetFirstDisplayedDate()
594
+ .should("have.attr", "data-sap-timestamp", timestamp_31_Dec_0000);
595
+
596
+ cy.get<DatePicker>("@datePicker")
597
+ .ui5DatePickerGetPreviousButton()
598
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
599
+ });
600
+
601
+ it("daypicker prev extreme values min", () => {
602
+ const timestamp_31_Dec_0000 = "-62135683200";
603
+
604
+ cy.mount(<DatePicker value="Feb 1, 0001" formatPattern="MMM d, y"></DatePicker>);
605
+
606
+ cy.get("[ui5-date-picker]")
607
+ .as("datePicker")
608
+ .ui5DatePickerValueHelpIconPress();
609
+
610
+ cy.get<DatePicker>("@datePicker")
611
+ .ui5DatePickerGetPreviousButton()
612
+ .realClick();
613
+
614
+ cy.get<DatePicker>("@datePicker")
615
+ .ui5DatePickerGetFirstDisplayedDate()
616
+ .should("have.attr", "data-sap-timestamp", timestamp_31_Dec_0000);
617
+
618
+ cy.get<DatePicker>("@datePicker")
619
+ .ui5DatePickerGetPreviousButton()
620
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
621
+ });
622
+
623
+ it("daypicker next extreme values max", () => {
624
+ const timestamp_28_Nov_9999 = "253399363200";
625
+
626
+ cy.mount(<DatePicker value="Nov 30, 9999" formatPattern="MMM d, y"></DatePicker>);
627
+
628
+ cy.get("[ui5-date-picker]")
629
+ .as("datePicker")
630
+ .ui5DatePickerValueHelpIconPress();
631
+
632
+ cy.get<DatePicker>("@datePicker")
633
+ .ui5DatePickerGetNextButton()
634
+ .realClick();
635
+
636
+ cy.get<DatePicker>("@datePicker")
637
+ .ui5DatePickerGetFirstDisplayedDate()
638
+ .should("have.attr", "data-sap-timestamp", timestamp_28_Nov_9999);
639
+
640
+ cy.get<DatePicker>("@datePicker")
641
+ .ui5DatePickerGetNextButton()
642
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
643
+ });
644
+
645
+ it("monthpicker next extreme values max", () => {
646
+ cy.mount(<DatePicker value="Dec 31, 9998" formatPattern="MMM d, y"></DatePicker>);
647
+
648
+ cy.get("[ui5-date-picker]")
649
+ .as("datePicker")
650
+ .ui5DatePickerValueHelpIconPress();
651
+
652
+ cy.get<DatePicker>("@datePicker")
653
+ .ui5DatePickerGetMonthButton()
654
+ .realClick();
655
+
656
+ cy.get<DatePicker>("@datePicker")
657
+ .ui5DatePickerGetNextButton()
658
+ .realClick();
659
+
660
+ cy.get<DatePicker>("@datePicker")
661
+ .shadow()
662
+ .find("ui5-calendar")
663
+ .as("calendar")
664
+ .shadow()
665
+ .find("ui5-monthpicker")
666
+ .should("be.visible");
667
+
668
+ cy.get<DatePicker>("@datePicker")
669
+ .ui5DatePickerGetYearButton()
670
+ .should("have.text", "9999");
671
+
672
+ cy.get<DatePicker>("@datePicker")
673
+ .ui5DatePickerGetNextButton()
674
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
675
+ });
676
+
677
+ it("monthpicker prev extreme values min", () => {
678
+ cy.mount(<DatePicker value="Jan 1, 0002" formatPattern="MMM d, y"></DatePicker>);
679
+
680
+ cy.get("[ui5-date-picker]")
681
+ .as("datePicker")
682
+ .ui5DatePickerValueHelpIconPress();
683
+
684
+ cy.get<DatePicker>("@datePicker")
685
+ .ui5DatePickerGetMonthButton()
686
+ .realClick();
687
+
688
+ cy.get<DatePicker>("@datePicker")
689
+ .shadow()
690
+ .find("ui5-calendar")
691
+ .as("calendar")
692
+ .shadow()
693
+ .find("ui5-monthpicker")
694
+ .should("be.visible");
695
+
696
+ cy.get<DatePicker>("@datePicker")
697
+ .ui5DatePickerGetPreviousButton()
698
+ .realClick();
699
+
700
+ cy.get<DatePicker>("@datePicker")
701
+ .ui5DatePickerGetYearButton()
702
+ .should("have.text", "0001");
703
+
704
+ cy.get<DatePicker>("@datePicker")
705
+ .ui5DatePickerGetPreviousButton()
706
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
707
+ });
708
+
709
+ it("yearpicker extreme values max", () => {
710
+ cy.mount(<DatePicker value="Dec 31, 9995" formatPattern="MMM d, y"></DatePicker>);
711
+
712
+ cy.get("[ui5-date-picker]")
713
+ .as("datePicker")
714
+ .ui5DatePickerValueHelpIconPress();
715
+
716
+ cy.get<DatePicker>("@datePicker")
717
+ .ui5DatePickerGetYearButton()
718
+ .realClick();
719
+
720
+ cy.get<DatePicker>("@datePicker")
721
+ .ui5DatePickerGetFirstDisplayedYear()
722
+ .should("have.text", "9980");
723
+
724
+ cy.get<DatePicker>("@datePicker")
725
+ .ui5DatePickerGetNextButton()
726
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
727
+ });
728
+
729
+ it("yearpicker extreme values min", () => {
730
+ cy.mount(<DatePicker value="Jan 1, 0003" formatPattern="MMM d, y"></DatePicker>);
731
+
732
+ cy.get("[ui5-date-picker]")
733
+ .as("datePicker")
734
+ .ui5DatePickerValueHelpIconPress();
735
+
736
+ cy.get<DatePicker>("@datePicker")
737
+ .ui5DatePickerGetYearButton()
738
+ .realClick();
739
+
740
+ cy.get<DatePicker>("@datePicker")
741
+ .ui5DatePickerGetFirstDisplayedYear()
742
+ .should("have.text", "0001");
743
+
744
+ cy.get<DatePicker>("@datePicker")
745
+ .ui5DatePickerGetPreviousButton()
746
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
747
+ });
748
+
749
+ it("yearpicker prev page extreme values min", () => {
750
+ cy.mount(<DatePicker value="Jan 1, 0012" formatPattern="MMM d, y"></DatePicker>);
751
+
752
+ cy.get("[ui5-date-picker]")
753
+ .as("datePicker")
754
+ .ui5DatePickerValueHelpIconPress();
755
+
756
+ cy.get<DatePicker>("@datePicker")
757
+ .ui5DatePickerGetYearButton()
758
+ .realClick();
759
+
760
+ cy.get<DatePicker>("@datePicker")
761
+ .ui5DatePickerGetFirstDisplayedYear()
762
+ .should("have.text", "0002");
763
+
764
+ cy.get<DatePicker>("@datePicker")
765
+ .ui5DatePickerGetPreviousButton()
766
+ .realClick();
767
+
768
+ cy.get<DatePicker>("@datePicker")
769
+ .ui5DatePickerGetFirstDisplayedYear()
770
+ .should("have.text", "0001");
771
+
772
+ cy.get<DatePicker>("@datePicker")
773
+ .ui5DatePickerGetPreviousButton()
774
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
775
+ });
776
+
777
+ it("yearpicker next page extreme values max", () => {
778
+ cy.mount(<DatePicker value="Dec 31, 9986" formatPattern="MMM d, y"></DatePicker>);
779
+
780
+ cy.get("[ui5-date-picker]")
781
+ .as("datePicker")
782
+ .ui5DatePickerValueHelpIconPress();
783
+
784
+ cy.get<DatePicker>("@datePicker")
785
+ .ui5DatePickerGetYearButton()
786
+ .realClick();
787
+
788
+ cy.get<DatePicker>("@datePicker")
789
+ .ui5DatePickerGetFirstDisplayedYear()
790
+ .should("have.text", "9976");
791
+
792
+ cy.get<DatePicker>("@datePicker")
793
+ .ui5DatePickerGetNextButton()
794
+ .realClick();
795
+
796
+ cy.get<DatePicker>("@datePicker")
797
+ .ui5DatePickerGetFirstDisplayedYear()
798
+ .should("have.text", "9980");
799
+
800
+ cy.get<DatePicker>("@datePicker")
801
+ .ui5DatePickerGetNextButton()
802
+ .should("have.class", "ui5-calheader-arrowbtn-disabled");
803
+ });
804
+
805
+ it("yearpicker click extreme values max", () => {
806
+ cy.mount(<DatePicker value="Dec 31, 9986" formatPattern="MMM d, y"></DatePicker>);
807
+
808
+ cy.get("[ui5-date-picker]")
809
+ .as("datePicker")
810
+ .ui5DatePickerValueHelpIconPress();
811
+
812
+ cy.get<DatePicker>("@datePicker")
813
+ .ui5DatePickerGetYearButton()
814
+ .realClick();
815
+
816
+ cy.get<DatePicker>("@datePicker")
817
+ .ui5DatePickerGetDisplayedYear(10)
818
+ .should("have.text", "9986");
819
+
820
+ cy.get<DatePicker>("@datePicker")
821
+ .ui5DatePickerGetDisplayedYear(10)
822
+ .realClick();
823
+
824
+ cy.get<DatePicker>("@datePicker")
825
+ .ui5DatePickerGetYearButton()
826
+ .realClick();
827
+
828
+ cy.get<DatePicker>("@datePicker")
829
+ .ui5DatePickerGetFirstDisplayedYear()
830
+ .should("have.text", "9976");
831
+ });
832
+
833
+ it("yearpicker click extreme values min year above 10", () => {
834
+ cy.mount(<DatePicker value="Jan 1, 0012" formatPattern="MMM d, y"></DatePicker>);
835
+
836
+ cy.get("[ui5-date-picker]")
837
+ .as("datePicker")
838
+ .ui5DatePickerValueHelpIconPress();
839
+
840
+ cy.get<DatePicker>("@datePicker")
841
+ .ui5DatePickerGetYearButton()
842
+ .realClick();
843
+
844
+ cy.get<DatePicker>("@datePicker")
845
+ .ui5DatePickerGetDisplayedYear(2)
846
+ .should("have.text", "0004");
847
+ });
848
+
849
+ it("yearpicker click extreme values min year below 10", () => {
850
+ cy.mount(<DatePicker value="Jan 1, 0004" formatPattern="MMM d, y"></DatePicker>);
851
+
852
+ cy.get("[ui5-date-picker]")
853
+ .as("datePicker")
854
+ .ui5DatePickerValueHelpIconPress();
855
+
856
+ cy.get<DatePicker>("@datePicker")
857
+ .ui5DatePickerGetYearButton()
858
+ .realClick();
859
+
860
+ cy.get<DatePicker>("@datePicker")
861
+ .ui5DatePickerGetFirstDisplayedYear()
862
+ .should("have.text", "0001");
863
+ });
864
+
865
+ it("placeholder, based on the formatPattern", () => {
866
+ cy.mount(<DatePicker formatPattern="MMM d, y"></DatePicker>);
867
+
868
+ cy.get("[ui5-date-picker]")
869
+ .as("datePicker")
870
+ .ui5DatePickerGetInnerInput()
871
+ .should("have.attr", "placeholder", "MMM d, y");
872
+
873
+ cy.get<DatePicker>("@datePicker")
874
+ .should("not.have.attr", "placeholder");
875
+ });
876
+
877
+ it("placeholder, set by the user", () => {
878
+ cy.mount(<DatePicker placeholder="Delivery date" formatPattern="MMM d, y"></DatePicker>);
879
+
880
+ cy.get("[ui5-date-picker]")
881
+ .as("datePicker")
882
+ .ui5DatePickerGetInnerInput()
883
+ .should("have.attr", "placeholder", "Delivery date");
884
+
885
+ cy.get<DatePicker>("@datePicker")
886
+ .should("have.attr", "placeholder", "Delivery date");
887
+ });
888
+
889
+ it("Going under the minimum date changes value state", () => {
890
+ cy.mount(<DatePicker formatPattern="MMM d, y" minDate="Jan 1, 2000"></DatePicker>);
891
+
892
+ cy.get("[ui5-date-picker]")
893
+ .as("datePicker")
894
+ .ui5DatePickerGetInnerInput()
895
+ .realClick()
896
+ .should("be.focused")
897
+ .realType("Jan 1, 1999")
898
+ .realPress("Enter");
899
+
900
+ cy.get<DatePicker>("@datePicker")
901
+ .should("have.attr", "value-state", "Negative");
902
+
903
+ cy.get<DatePicker>("@datePicker")
904
+ .shadow()
905
+ .find("ui5-input")
906
+ .shadow()
907
+ .find(".ui5-input-content")
908
+ .should("be.visible");
909
+ });
910
+
911
+ it("Going over the maximum date changes value state", () => {
912
+ cy.mount(<DatePicker formatPattern="MMM d, y" maxDate="Jan 8, 2100"></DatePicker>);
913
+
914
+ cy.get("[ui5-date-picker]")
915
+ .as("datePicker")
916
+ .ui5DatePickerGetInnerInput()
917
+ .realClick()
918
+ .should("be.focused")
919
+ .realType("May 5, 2100")
920
+ .realPress("Enter");
921
+
922
+ cy.get<DatePicker>("@datePicker")
923
+ .should("have.attr", "value-state", "Negative");
924
+
925
+ cy.get<DatePicker>("@datePicker")
926
+ .shadow()
927
+ .find("ui5-input")
928
+ .shadow()
929
+ .find(".ui5-input-content")
930
+ .should("be.visible");
931
+ });
932
+
933
+ it("Maximum or minimum date changes value state to none", () => {
934
+ cy.mount(<DatePicker formatPattern="y" minDate="2000" maxDate="2100"></DatePicker>);
935
+
936
+ cy.get("[ui5-date-picker]")
937
+ .as("datePicker")
938
+ .ui5DatePickerGetInnerInput()
939
+ .as("input")
940
+ .realClick()
941
+ .should("be.focused")
942
+ .realType("2000")
943
+ .realPress("Enter");
944
+
945
+ cy.get<DatePicker>("@datePicker")
946
+ .should("have.attr", "value-state", "None");
947
+
948
+ cy.get("@input")
949
+ .realClick()
950
+ .should("be.focused")
951
+ .realPress("Backspace")
952
+ .realPress("Backspace")
953
+ .realPress("Backspace")
954
+ .realPress("Backspace")
955
+ .realType("2100")
956
+ .realPress("Enter");
957
+
958
+ cy.get<DatePicker>("@datePicker")
959
+ .should("have.attr", "value-state", "None");
960
+
961
+ cy.get<DatePicker>("@datePicker")
962
+ .shadow()
963
+ .find("ui5-input")
964
+ .shadow()
965
+ .find(".ui5-input-content")
966
+ .should("be.visible");
967
+ });
968
+
969
+ it("Years are disabled when out of range", () => {
970
+ cy.mount(<DatePicker
971
+ value="Jan 8, 2100"
972
+ formatPattern="MMM d, y"
973
+ minDate="Jan 1, 2000"
974
+ maxDate="Jan 8, 2100">
975
+ </DatePicker>);
976
+
977
+ cy.get("[ui5-date-picker]")
978
+ .as("datePicker")
979
+ .ui5DatePickerValueHelpIconPress();
980
+
981
+ cy.get<DatePicker>("@datePicker")
982
+ .ui5DatePickerGetYearButton()
983
+ .realClick();
984
+
985
+ cy.get<DatePicker>("@datePicker")
986
+ .ui5DatePickerGetDisplayedYear(11)
987
+ .should("have.class", "ui5-yp-item--disabled")
988
+ .and("not.have.focus");
989
+
990
+ cy.get<DatePicker>("@datePicker")
991
+ .ui5DatePickerGetDisplayedYear(10)
992
+ .as("year")
993
+ .should("have.focus");
994
+
995
+ cy.get<DatePicker>("@datePicker")
996
+ .shadow()
997
+ .find("ui5-calendar")
998
+ .realPress("ArrowRight");
999
+
1000
+ cy.get("@year")
1001
+ .should("have.focus");
1002
+ });
1003
+
1004
+ it("Months are disabled when out of range", () => {
1005
+ cy.mount(<DatePicker
1006
+ value="Jan 8, 2100"
1007
+ formatPattern="MMM d, y"
1008
+ minDate="Jan 1, 2000"
1009
+ maxDate="Jan 8, 2100">
1010
+ </DatePicker>);
1011
+
1012
+ cy.get("[ui5-date-picker]")
1013
+ .as("datePicker")
1014
+ .ui5DatePickerValueHelpIconPress();
1015
+
1016
+ cy.get<DatePicker>("@datePicker")
1017
+ .ui5DatePickerGetMonthButton()
1018
+ .realClick();
1019
+
1020
+ cy.get<DatePicker>("@datePicker")
1021
+ .ui5DatePickerGetDisplayedMonth(10)
1022
+ .should("have.class", "ui5-mp-item--disabled");
1023
+
1024
+ cy.get<DatePicker>("@datePicker")
1025
+ .shadow()
1026
+ .find("ui5-calendar")
1027
+ .realPress("ArrowDown");
1028
+
1029
+ cy.get<DatePicker>("@datePicker")
1030
+ .ui5DatePickerGetDisplayedMonth(0)
1031
+ .should("have.focus");
1032
+ });
1033
+
1034
+ it("Days are disabled when out of range", () => {
1035
+ cy.mount(<DatePicker
1036
+ value="Jan 1, 2024"
1037
+ formatPattern="MMM d, y"
1038
+ maxDate="Jan 1, 2024">
1039
+ </DatePicker>);
1040
+
1041
+ cy.get("[ui5-date-picker]")
1042
+ .as("datePicker")
1043
+ .ui5DatePickerValueHelpIconPress();
1044
+
1045
+ cy.get<DatePicker>("@datePicker")
1046
+ .ui5DatePickerGetDisplayedDay(15)
1047
+ .should("have.class", "ui5-dp-item--disabled");
1048
+ });
1049
+
1050
+ it("Min and Max dates are included in the interval", () => {
1051
+ cy.mount(<DatePicker
1052
+ value="Jan 10, 2024"
1053
+ formatPattern="MMM d, y"
1054
+ minDate="Jan 1, 2024"
1055
+ maxDate="Jan 31, 2024"
1056
+ ></DatePicker>);
1057
+
1058
+ cy.get("[ui5-date-picker]")
1059
+ .as("datePicker")
1060
+ .ui5DatePickerValueHelpIconPress();
1061
+
1062
+ cy.get<DatePicker>("@datePicker")
1063
+ .ui5DatePickerGetDisplayedDay(9)
1064
+ .should("not.have.class", "ui5-dp-item--disabled");
1065
+
1066
+ cy.get<DatePicker>("@datePicker")
1067
+ .ui5DatePickerGetDisplayedDay(11)
1068
+ .should("not.have.class", "ui5-dp-item--disabled");
1069
+ });
1070
+
1071
+ it("Week numbers are visible", () => {
1072
+ cy.mount(<DatePicker></DatePicker>);
1073
+
1074
+ cy.get("[ui5-date-picker]")
1075
+ .as("datePicker")
1076
+ .ui5DatePickerValueHelpIconPress();
1077
+
1078
+ cy.get<DatePicker>("@datePicker")
1079
+ .shadow()
1080
+ .find("ui5-calendar")
1081
+ .shadow()
1082
+ .find("ui5-daypicker")
1083
+ .shadow()
1084
+ .find(".ui5-dp-weekname-container")
1085
+ .should("exist");
1086
+ });
1087
+
1088
+ it("Week numbers are hidden", () => {
1089
+ cy.mount(<DatePicker hideWeekNumbers={true}></DatePicker>);
1090
+
1091
+ cy.get("[ui5-date-picker]")
1092
+ .as("datePicker")
1093
+ .ui5DatePickerValueHelpIconPress();
1094
+
1095
+ cy.get<DatePicker>("@datePicker")
1096
+ .shadow()
1097
+ .find("ui5-calendar")
1098
+ .shadow()
1099
+ .find("ui5-daypicker")
1100
+ .shadow()
1101
+ .find(".ui5-dp-weekname-container")
1102
+ .should("not.exist");
1103
+ });
1104
+
1105
+ it("Calendar root have correct attribute", () => {
1106
+ cy.mount(<DatePicker></DatePicker>);
1107
+
1108
+ cy.get("[ui5-date-picker]")
1109
+ .as("datePicker")
1110
+ .ui5DatePickerValueHelpIconPress();
1111
+
1112
+ cy.get<DatePicker>("@datePicker")
1113
+ .shadow()
1114
+ .find("ui5-calendar")
1115
+ .shadow()
1116
+ .find("ui5-daypicker")
1117
+ .shadow()
1118
+ .find(".ui5-dp-content")
1119
+ .should("have.attr", "role", "grid")
1120
+ .and("have.attr", "aria-roledescription", "Gregorian calendar");
1121
+ });
1122
+
1123
+ it("DayPicker content wrapped", () => {
1124
+ cy.mount(<DatePicker></DatePicker>);
1125
+
1126
+ cy.get("[ui5-date-picker]")
1127
+ .as("datePicker")
1128
+ .ui5DatePickerValueHelpIconPress();
1129
+
1130
+ cy.get<DatePicker>("@datePicker")
1131
+ .shadow()
1132
+ .find("ui5-calendar")
1133
+ .shadow()
1134
+ .find("ui5-daypicker")
1135
+ .shadow()
1136
+ .find(".ui5-dp-content")
1137
+ .children()
1138
+ .each($row => {
1139
+ cy.wrap($row)
1140
+ .should("have.attr", "role", "row");
1141
+ });
1142
+ });
1143
+
1144
+ it("DayPicker day number attribute", () => {
1145
+ cy.mount(<DatePicker formatPattern="MMM d, y"></DatePicker>);
1146
+
1147
+ cy.get("[ui5-date-picker]")
1148
+ .as("datePicker")
1149
+ .ui5DatePickerValueHelpIconPress();
1150
+
1151
+ cy.get<DatePicker>("@datePicker")
1152
+ .shadow()
1153
+ .find("ui5-calendar")
1154
+ .shadow()
1155
+ .find("ui5-daypicker")
1156
+ .shadow()
1157
+ .find(".ui5-dp-content")
1158
+ .children()
1159
+ .as("rows");
1160
+
1161
+ cy.get("@rows")
1162
+ .first()
1163
+ .find(".ui5-dp-dayname")
1164
+ .should("have.attr", "role", "columnheader");
1165
+
1166
+ cy.get("@rows")
1167
+ .last()
1168
+ .find(".ui5-dp-weekname-container")
1169
+ .should("have.attr", "role", "rowheader");
1170
+
1171
+ cy.get("@rows")
1172
+ .last()
1173
+ .find(".ui5-dp-item")
1174
+ .should("have.attr", "role", "gridcell");
1175
+ });
1176
+
1177
+ it("DatePicker dates and week number", () => {
1178
+ cy.mount(<DatePicker
1179
+ formatPattern="MMM d, y"
1180
+ primaryCalendarType="Gregorian"
1181
+ value="May 3, 2100"
1182
+ ></DatePicker>);
1183
+
1184
+ cy.get("[ui5-date-picker]")
1185
+ .as("datePicker")
1186
+ .ui5DatePickerValueHelpIconPress();
1187
+
1188
+ cy.get<DatePicker>("@datePicker")
1189
+ .shadow()
1190
+ .find("ui5-calendar")
1191
+ .shadow()
1192
+ .find("ui5-daypicker")
1193
+ .shadow()
1194
+ .find(".ui5-dp-content > div[role='row']:nth-child(3)")
1195
+ .as("row");
1196
+
1197
+ cy.get("@row")
1198
+ .children()
1199
+ .first()
1200
+ .should("have.attr", "aria-label", "Calendar Week 19")
1201
+ .next()
1202
+ .should("have.attr", "aria-label", "May 2, 2100 Non-Working Day")
1203
+ .next()
1204
+ .should("have.attr", "aria-label", "May 3, 2100")
1205
+ .next()
1206
+ .should("have.attr", "aria-label", "May 4, 2100");
1207
+ });
1208
+
1209
+ it("Tests aria-label", () => {
1210
+ const EXPECTED_ARIA_LABEL = "Hello World";
1211
+
1212
+ cy.mount(<DatePicker accessibleName={EXPECTED_ARIA_LABEL}></DatePicker>);
1213
+
1214
+ cy.get("[ui5-date-picker]")
1215
+ .ui5DatePickerGetInnerInput()
1216
+ .should("have.attr", "aria-label", EXPECTED_ARIA_LABEL);
1217
+ });
1218
+
1219
+ it("Tests aria-labelledby", () => {
1220
+ const EXPECTED_ARIA_LABEL = "info text";
1221
+
1222
+ cy.mount(
1223
+ <>
1224
+ <Label id="infoText">{EXPECTED_ARIA_LABEL}</Label>
1225
+ <DatePicker accessibleNameRef="infoText"></DatePicker>
1226
+ </>
1227
+ );
1228
+
1229
+ cy.get("[ui5-date-picker]")
1230
+ .ui5DatePickerGetInnerInput()
1231
+ .should("have.attr", "aria-label", EXPECTED_ARIA_LABEL);
1232
+ });
1233
+
1234
+ it("Page up/down increments/decrements the day value", () => {
1235
+ cy.mount(<DatePicker value="Jan 1, 2000" formatPattern="MMM d, y"></DatePicker>);
1236
+
1237
+ cy.get("[ui5-date-picker]")
1238
+ .as("datePicker")
1239
+ .ui5DatePickerGetInnerInput()
1240
+ .as("input")
1241
+ .realClick()
1242
+ .should("be.focused")
1243
+ .realPress("PageDown");
1244
+
1245
+ cy.get<DatePicker>("@datePicker")
1246
+ .should("have.value", "Dec 31, 1999");
1247
+
1248
+ cy.get("@input")
1249
+ .realPress("PageUp");
1250
+
1251
+ cy.get<DatePicker>("@datePicker")
1252
+ .should("have.value", "Jan 1, 2000");
1253
+ });
1254
+
1255
+ it("Shift + Page up/down increments/decrements the month value", () => {
1256
+ cy.mount(<DatePicker value="Jan 1, 2000" formatPattern="MMM d, y"></DatePicker>);
1257
+
1258
+ cy.get("[ui5-date-picker]")
1259
+ .as("datePicker")
1260
+ .ui5DatePickerGetInnerInput()
1261
+ .as("input")
1262
+ .realClick()
1263
+ .should("be.focused")
1264
+ .realPress(["Shift", "PageDown"]);
1265
+
1266
+ cy.get<DatePicker>("@datePicker")
1267
+ .should("have.value", "Dec 1, 1999");
1268
+
1269
+ cy.get("@input")
1270
+ .realPress(["Shift", "PageUp"]);
1271
+
1272
+ cy.get<DatePicker>("@datePicker")
1273
+ .should("have.value", "Jan 1, 2000");
1274
+ });
1275
+
1276
+ it("Ctrl + Shift + Page up/down increments/decrements the year value", () => {
1277
+ cy.mount(<DatePicker value="Jan 1, 2000" formatPattern="MMM d, y"></DatePicker>);
1278
+
1279
+ cy.get("[ui5-date-picker]")
1280
+ .as("datePicker")
1281
+ .ui5DatePickerGetInnerInput()
1282
+ .as("input")
1283
+ .realClick()
1284
+ .should("be.focused")
1285
+ .realPress(["Control", "Shift", "PageDown"]);
1286
+
1287
+ cy.get<DatePicker>("@datePicker")
1288
+ .should("have.value", "Jan 1, 1999");
1289
+
1290
+ cy.get("@input")
1291
+ .realPress(["Control", "Shift", "PageUp"]);
1292
+
1293
+ cy.get<DatePicker>("@datePicker")
1294
+ .should("have.value", "Jan 1, 2000");
1295
+ });
1296
+
1297
+ it("Keyboard navigation works when there are disabled dates in the calendar grid", () => {
1298
+ cy.mount(<DatePicker
1299
+ value="Jan 1, 2000"
1300
+ formatPattern="MMM d, y"
1301
+ minDate="Jan 1, 2000">
1302
+ </DatePicker>);
1303
+
1304
+ cy.get("[ui5-date-picker]")
1305
+ .as("datePicker")
1306
+ .ui5DatePickerGetInnerInput()
1307
+ .realClick()
1308
+ .should("be.focused")
1309
+ .realPress("F4");
1310
+
1311
+ cy.get<DatePicker>("@datePicker")
1312
+ .shadow()
1313
+ .find("ui5-calendar")
1314
+ .realPress("ArrowDown");
1315
+
1316
+ cy.get<DatePicker>("@datePicker")
1317
+ .ui5DatePickerGetDisplayedDay(13)
1318
+ .should("have.focus");
1319
+ });
1320
+
1321
+ it("Value state changes only on submit", () => {
1322
+ cy.mount(<DatePicker></DatePicker>);
1323
+
1324
+ cy.get("[ui5-date-picker]")
1325
+ .as("datePicker")
1326
+ .ui5DatePickerGetInnerInput()
1327
+ .as("input")
1328
+ .realClick()
1329
+ .should("be.focused")
1330
+ .realType("test");
1331
+
1332
+ cy.get<DatePicker>("@datePicker")
1333
+ .should("have.attr", "value-state", "None");
1334
+
1335
+ cy.get("@input")
1336
+ .realPress("Enter");
1337
+
1338
+ cy.get<DatePicker>("@datePicker")
1339
+ .should("have.attr", "value-state", "Negative");
1340
+ });
1341
+
1342
+ it("Prevent value-state-change event", () => {
1343
+ cy.mount(<DatePicker></DatePicker>);
1344
+
1345
+ cy.get("[ui5-date-picker]")
1346
+ .as("datePicker")
1347
+ .then($datePicker => {
1348
+ $datePicker.on("value-state-change", event => {
1349
+ event.preventDefault();
1350
+ });
1351
+ });
1352
+
1353
+ cy.get<DatePicker>("@datePicker")
1354
+ .ui5DatePickerGetInnerInput()
1355
+ .realClick()
1356
+ .should("be.focused")
1357
+ .realType("Invalid value")
1358
+ .realPress("Enter");
1359
+
1360
+ cy.get("@datePicker")
1361
+ .should("have.attr", "value-state", "None");
1362
+ });
1363
+
1364
+ it("Prevent change event", () => {
1365
+ cy.mount(<DatePicker formatPattern="MMM d, y"></DatePicker>);
1366
+
1367
+ cy.get("[ui5-date-picker]")
1368
+ .as("datePicker")
1369
+ .then($datePicker => {
1370
+ $datePicker.on("change", cy.stub().as("changeHandler").callsFake((event: Event) => {
1371
+ event.preventDefault();
1372
+ }));
1373
+ });
1374
+
1375
+ cy.get<DatePicker>("@datePicker")
1376
+ .ui5DatePickerGetInnerInput()
1377
+ .realClick()
1378
+ .should("be.focused")
1379
+ .realType("Mar 31, 1995")
1380
+ .realPress("Enter");
1381
+
1382
+ cy.get<DatePicker>("@datePicker")
1383
+ .should("have.value", "")
1384
+ .and("have.attr", "value-state", "None");
1385
+
1386
+ cy.get("@changeHandler")
1387
+ .should("have.been.calledOnce")
1388
+ .and("have.been.calledWithMatch", {
1389
+ detail: {
1390
+ value: "Mar 31, 1995",
1391
+ valid: true,
1392
+ }
1393
+ });
1394
+ });
1395
+
1396
+ it("DatePicker's formatter has strict parsing enabled", () => {
1397
+ cy.mount(<DatePicker formatPattern="MMM d, y"></DatePicker>);
1398
+
1399
+ cy.get("[ui5-date-picker]")
1400
+ .as("datePicker")
1401
+ .ui5DatePickerGetInnerInput()
1402
+ .realClick()
1403
+ .should("be.focused")
1404
+ .realType("Jan 60, 2000")
1405
+ .realPress("Enter");
1406
+
1407
+ cy.get<DatePicker>("@datePicker")
1408
+ .should("have.attr", "value-state", "Negative");
1409
+ });
1410
+
1411
+ it("Invalid initial value isn't cleared due to formatting", () => {
1412
+ cy.mount(<DatePicker value="Invalid value"></DatePicker>);
1413
+
1414
+ cy.get("[ui5-date-picker]")
1415
+ .as("datePicker");
1416
+
1417
+ cy.get<DatePicker>("@datePicker")
1418
+ .ui5DatePickerGetInnerInput()
1419
+ .should("have.value", "Invalid value");
1420
+ });
1421
+
1422
+ it("Invalid state is refreshed after a value is picked by Calendar and set again", () => {
1423
+ cy.mount(<DatePicker formatPattern="MMM d, y"></DatePicker>);
1424
+
1425
+ cy.get("[ui5-date-picker]")
1426
+ .as("datePicker")
1427
+ .ui5DatePickerGetInnerInput()
1428
+ .realClick()
1429
+ .should("be.focused")
1430
+ .realType("Invalid value")
1431
+ .realPress("Enter");
1432
+
1433
+ cy.get<DatePicker>("@datePicker")
1434
+ .should("have.attr", "value-state", "Negative");
1435
+
1436
+ cy.get<DatePicker>("@datePicker")
1437
+ .ui5DatePickerValueHelpIconPress();
1438
+
1439
+ cy.get<DatePicker>("@datePicker")
1440
+ .ui5DatePickerGetDisplayedDay(15)
1441
+ .realClick();
1442
+
1443
+ cy.get<DatePicker>("@datePicker")
1444
+ .should("have.attr", "value-state", "None");
1445
+ });
1446
+
1447
+ it("Min and max dates are set, with no format pattern provided, using valid ISO format", () => {
1448
+ cy.mount(<DatePicker minDate="2019-09-01" maxDate="2019-11-01"></DatePicker>);
1449
+
1450
+ cy.get("[ui5-date-picker]")
1451
+ .as("datePicker")
1452
+ .ui5DatePickerGetInnerInput()
1453
+ .realClick()
1454
+ .should("be.focused")
1455
+ .realType("Nov 1, 2020")
1456
+ .realPress("Enter");
1457
+
1458
+ cy.get<DatePicker>("@datePicker")
1459
+ .should("have.attr", "value-state", "Negative");
1460
+
1461
+ cy.get<DatePicker>("@datePicker")
1462
+ .ui5DatePickerValueHelpIconPress();
1463
+
1464
+ cy.get<DatePicker>("@datePicker")
1465
+ .ui5DatePickerGetYearButton()
1466
+ .realClick();
1467
+
1468
+ cy.get<DatePicker>("@datePicker")
1469
+ .ui5DatePickerGetDisplayedYear(3)
1470
+ .should("have.class", "ui5-yp-item--disabled");
1471
+ });
1472
+
1473
+ it("Min and max dates are NOT set because no format pattern is provided & format used is not ISO", () => {
1474
+ cy.mount(<DatePicker minDate="22.10.2020" maxDate="22.10.2021"></DatePicker>);
1475
+
1476
+ cy.get("[ui5-date-picker]")
1477
+ .as("datePicker")
1478
+ .ui5DatePickerGetInnerInput()
1479
+ .realClick()
1480
+ .should("be.focused")
1481
+ .realType("Apr 12, 2024")
1482
+ .realPress("Enter");
1483
+
1484
+ cy.get<DatePicker>("@datePicker")
1485
+ .should("have.attr", "value-state", "None");
1486
+
1487
+ cy.get<DatePicker>("@datePicker")
1488
+ .ui5DatePickerValueHelpIconPress();
1489
+
1490
+ cy.get<DatePicker>("@datePicker")
1491
+ .ui5DatePickerGetYearButton()
1492
+ .realClick();
1493
+
1494
+ cy.get<DatePicker>("@datePicker")
1495
+ .ui5DatePickerGetDisplayedYear(11)
1496
+ .should("not.have.class", "ui5-yp-item--disabled");
1497
+ });
1498
+
1499
+ it("Date picker in month mode", () => {
1500
+ cy.mount(<DatePicker formatPattern="MMM y"></DatePicker>);
1501
+
1502
+ cy.get("[ui5-date-picker]")
1503
+ .as("datePicker")
1504
+ .ui5DatePickerGetInnerInput()
1505
+ .realClick()
1506
+ .should("be.focused")
1507
+ .realPress("F4");
1508
+
1509
+ cy.get<DatePicker>("@datePicker")
1510
+ .should("have.attr", "open");
1511
+
1512
+ cy.get<DatePicker>("@datePicker")
1513
+ .shadow()
1514
+ .find("ui5-calendar")
1515
+ .as("calendar")
1516
+ .should("have.attr", "_current-picker", "month");
1517
+
1518
+ cy.get("@calendar")
1519
+ .shadow()
1520
+ .find("ui5-monthpicker")
1521
+ .should("be.visible");
1522
+ });
1523
+
1524
+ it("Date picker in year mode", () => {
1525
+ cy.mount(<DatePicker formatPattern="yyyy"></DatePicker>);
1526
+
1527
+ cy.get("[ui5-date-picker]")
1528
+ .as("datePicker")
1529
+ .ui5DatePickerGetInnerInput()
1530
+ .realClick()
1531
+ .should("be.focused")
1532
+ .realPress("F4");
1533
+
1534
+ cy.get<DatePicker>("@datePicker")
1535
+ .should("have.attr", "open");
1536
+
1537
+ cy.get<DatePicker>("@datePicker")
1538
+ .shadow()
1539
+ .find("ui5-calendar")
1540
+ .as("calendar")
1541
+ .should("have.attr", "_current-picker", "year");
1542
+
1543
+ cy.get("@calendar")
1544
+ .shadow()
1545
+ .find("ui5-yearpicker")
1546
+ .should("be.visible");
1547
+ });
1548
+
1549
+ it("picker popover should have accessible name", () => {
1550
+ cy.mount(<DatePicker></DatePicker>);
1551
+
1552
+ cy.get("[ui5-date-picker]")
1553
+ .as("datePicker")
1554
+ .ui5DatePickerValueHelpIconPress();
1555
+
1556
+ cy.get<DatePicker>("@datePicker")
1557
+ .shadow()
1558
+ .find("ui5-responsive-popover")
1559
+ .should("have.attr", "accessible-name", "Choose Date");
1560
+ });
1561
+ });
1562
+
1563
+ describe("Legacy date customization and Islamic calendar type", () => {
1564
+ afterEach(() => {
1565
+ // eslint-disable-next-line
1566
+ cy.wait(200);
1567
+ });
1568
+
1569
+ const configurationObject = {
1570
+ "formatSettings": {
1571
+ "legacyDateCalendarCustomizing": [
1572
+ {
1573
+ "dateFormat": "A",
1574
+ "gregDate": "20240211",
1575
+ "islamicMonthStart": "14450801"
1576
+ },
1577
+ {
1578
+ "dateFormat": "A",
1579
+ "gregDate": "20240311",
1580
+ "islamicMonthStart": "14450901"
1581
+ },
1582
+ {
1583
+ "dateFormat": "A",
1584
+ "gregDate": "20240410",
1585
+ "islamicMonthStart": "14451001"
1586
+ },
1587
+ {
1588
+ "dateFormat": "A",
1589
+ "gregDate": "20240509",
1590
+ "islamicMonthStart": "14451101"
1591
+ },
1592
+ {
1593
+ "dateFormat": "A",
1594
+ "gregDate": "20240607",
1595
+ "islamicMonthStart": "14451201"
1596
+ },
1597
+ {
1598
+ "dateFormat": "A",
1599
+ "gregDate": "20240707",
1600
+ "islamicMonthStart": "14460101"
1601
+ },
1602
+ {
1603
+ "dateFormat": "A",
1604
+ "gregDate": "20240805",
1605
+ "islamicMonthStart": "14460201"
1606
+ },
1607
+ {
1608
+ "dateFormat": "A",
1609
+ "gregDate": "20240904",
1610
+ "islamicMonthStart": "14460301"
1611
+ },
1612
+ {
1613
+ "dateFormat": "A",
1614
+ "gregDate": "20241004",
1615
+ "islamicMonthStart": "14460401"
1616
+ },
1617
+ {
1618
+ "dateFormat": "A",
1619
+ "gregDate": "20241103",
1620
+ "islamicMonthStart": "14460501"
1621
+ },
1622
+ {
1623
+ "dateFormat": "A",
1624
+ "gregDate": "20241202",
1625
+ "islamicMonthStart": "14460601"
1626
+ }
1627
+ ]
1628
+ }
1629
+ };
1630
+
1631
+ it("Customization of legacy dates in Islamic calendar", () => {
1632
+ cy.window()
1633
+ .then($el => {
1634
+ const scriptElement = document.createElement("script");
1635
+ scriptElement.type = "application/json";
1636
+ scriptElement.setAttribute("data-ui5-config", "true");
1637
+ scriptElement.innerHTML = JSON.stringify(configurationObject);
1638
+ return $el.document.head.append(scriptElement);
1639
+ })
1640
+
1641
+ // According to the Islamic calendar, Rab. I 9, 1446 AH should be displayed on Thursday,
1642
+ // but it needs to be configured using the legacyDateCalendarCustomizing setting.
1643
+ cy.mount(<DatePicker value="Rab. I 9, 1446 AH" primaryCalendarType="Islamic"></DatePicker>);
1644
+
1645
+ cy.get("[ui5-date-picker]")
1646
+ .as("datePicker")
1647
+ .ui5DatePickerGetInnerInput()
1648
+ .realClick()
1649
+ .should("be.focused")
1650
+ .realPress("F4");
1651
+
1652
+ cy.get<DatePicker>("@datePicker")
1653
+ .ui5DatePickerGetDisplayedDay(11)
1654
+ .should("have.text", "9");
1655
+
1656
+ cy.window()
1657
+ .then($el => {
1658
+ const scriptElement = $el.document.head.querySelector("script[data-ui5-config]");
1659
+
1660
+ scriptElement?.remove();
1661
+ })
1662
+ });
1663
+
1664
+ it("primary calendar type", () => {
1665
+ cy.mount(<DatePicker primaryCalendarType="Islamic"></DatePicker>);
1666
+
1667
+ cy.get("[ui5-date-picker]")
1668
+ .shadow()
1669
+ .find("ui5-calendar")
1670
+ .should("have.attr", "primary-calendar-type", "Islamic");
1671
+ });
1672
+
1673
+ it("Islamic calendar type input value", () => {
1674
+ cy.mount(<DatePicker primaryCalendarType="Islamic" formatPattern="MMM d, y G"></DatePicker>);
1675
+
1676
+ cy.get("[ui5-date-picker]")
1677
+ .as("datePicker")
1678
+ .ui5DatePickerGetInnerInput()
1679
+ .as("input")
1680
+ .realClick()
1681
+ .should("be.focused")
1682
+ .realType("Rab. I 6, 1440 AH")
1683
+ .realPress("Enter");
1684
+
1685
+ cy.get("@datePicker")
1686
+ .should("have.value", "Rab. I 6, 1440 AH");
1687
+
1688
+ cy.get("@datePicker")
1689
+ .shadow()
1690
+ .find("ui5-input")
1691
+ .should("have.attr", "value-state", "None");
1692
+ });
1693
+ });