@ui5/webcomponents 0.0.0-39bd3067f → 0.0.0-4180fe799

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 (732) hide show
  1. package/CHANGELOG.md +610 -1
  2. package/README.md +144 -52
  3. package/csp.js +7 -0
  4. package/customI18n.js +50 -0
  5. package/dist/Assets-static.js +6 -0
  6. package/dist/Assets.js +2 -1
  7. package/dist/Avatar.js +197 -46
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +44 -22
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +159 -20
  13. package/dist/Button.js +132 -69
  14. package/dist/Calendar.js +342 -546
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -62
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +44 -158
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +272 -76
  21. package/dist/CheckBox.js +149 -49
  22. package/dist/ColorPalette.js +493 -0
  23. package/dist/ColorPaletteItem.js +137 -0
  24. package/dist/ColorPalettePopover.js +219 -0
  25. package/dist/ColorPicker.js +524 -0
  26. package/dist/ComboBox.js +603 -94
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +12 -24
  30. package/dist/CustomListItem.js +38 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +418 -403
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +111 -384
  35. package/dist/DayPicker.js +509 -431
  36. package/dist/Dialog.js +497 -50
  37. package/dist/DurationPicker.js +170 -317
  38. package/dist/FileUploader.js +217 -24
  39. package/dist/GroupHeaderListItem.js +24 -19
  40. package/dist/Icon.js +197 -36
  41. package/dist/Input.js +660 -167
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +138 -28
  45. package/dist/List.js +501 -110
  46. package/dist/ListItem.js +110 -28
  47. package/dist/ListItemBase.js +42 -8
  48. package/dist/MessageStrip.js +56 -70
  49. package/dist/MonthPicker.js +180 -182
  50. package/dist/MultiComboBox.js +583 -207
  51. package/dist/MultiComboBoxItem.js +8 -5
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +100 -37
  55. package/dist/Popover.js +255 -224
  56. package/dist/Popup.js +381 -284
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +131 -51
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +291 -0
  62. package/dist/ResponsivePopover.js +73 -46
  63. package/dist/SegmentedButton.js +127 -60
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +448 -107
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +44 -22
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +37 -31
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +60 -42
  74. package/dist/Tab.js +55 -24
  75. package/dist/TabContainer.js +241 -82
  76. package/dist/TabSeparator.js +1 -0
  77. package/dist/Table.js +480 -35
  78. package/dist/TableCell.js +11 -13
  79. package/dist/TableColumn.js +13 -3
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +244 -18
  82. package/dist/TextArea.js +153 -55
  83. package/dist/TimePicker.js +55 -644
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +16 -9
  87. package/dist/Toast.js +24 -13
  88. package/dist/ToggleButton.js +21 -13
  89. package/dist/Token.js +84 -45
  90. package/dist/Tokenizer.js +246 -64
  91. package/dist/Tree.js +443 -0
  92. package/dist/TreeItem.js +168 -0
  93. package/dist/TreeListItem.js +332 -0
  94. package/dist/WheelSlider.js +79 -59
  95. package/dist/YearPicker.js +199 -255
  96. package/dist/api.json +6877 -1
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +0 -1
  99. package/dist/features/InputSuggestions.js +276 -53
  100. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
  105. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
  110. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  112. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  113. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
  115. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
  119. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
  123. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
  136. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  148. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  151. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -0
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -0
  155. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
  156. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
  157. package/dist/generated/i18n/i18n-defaults.js +2 -2
  158. package/dist/generated/json-imports/Themes-static.js +35 -0
  159. package/dist/generated/json-imports/Themes.js +23 -15
  160. package/dist/generated/json-imports/i18n-static.js +162 -0
  161. package/dist/generated/json-imports/i18n.js +113 -89
  162. package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
  163. package/dist/generated/templates/AvatarTemplate.lit.js +9 -9
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -6
  165. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
  166. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
  167. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -6
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -6
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -4
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -4
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -8
  173. package/dist/generated/templates/CarouselTemplate.lit.js +13 -12
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -7
  175. package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
  176. package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
  177. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
  178. package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
  179. package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
  180. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -5
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -6
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -13
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -6
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +9 -12
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -8
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +7 -7
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -4
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -6
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -23
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -8
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -4
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -5
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -13
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -9
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +6 -27
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -7
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -8
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +16 -0
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -6
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -9
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +7 -0
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -4
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +17 -0
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -7
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +14 -0
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -14
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +4 -11
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -5
  216. package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
  217. package/dist/generated/templates/SliderTemplate.lit.js +12 -0
  218. package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -19
  219. package/dist/generated/templates/StepInputTemplate.lit.js +10 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +27 -0
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -6
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -6
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -14
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -17
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +6 -30
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -4
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -4
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -4
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -4
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -10
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +8 -8
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -8
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +6 -5
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -10
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -4
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -6
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -5
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +12 -0
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -6
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +21 -0
  245. package/dist/generated/templates/TreeTemplate.lit.js +8 -0
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +7 -7
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +5 -5
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +5 -5
  251. package/dist/generated/themes/Breadcrumbs.css.js +8 -0
  252. package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
  253. package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
  254. package/dist/generated/themes/BusyIndicator.css.js +5 -5
  255. package/dist/generated/themes/Button.css.js +5 -5
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +5 -5
  258. package/dist/generated/themes/CalendarHeader.css.js +5 -5
  259. package/dist/generated/themes/Card.css.js +5 -5
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +5 -5
  262. package/dist/generated/themes/CheckBox.css.js +5 -5
  263. package/dist/generated/themes/ColorPalette.css.js +8 -0
  264. package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
  265. package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
  266. package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
  267. package/dist/generated/themes/ColorPicker.css.js +8 -0
  268. package/dist/generated/themes/ComboBox.css.js +5 -5
  269. package/dist/generated/themes/ComboBoxPopover.css.js +5 -5
  270. package/dist/generated/themes/CustomListItem.css.js +5 -5
  271. package/dist/generated/themes/DatePicker.css.js +5 -5
  272. package/dist/generated/themes/DatePickerPopover.css.js +5 -5
  273. package/dist/generated/themes/DateRangePicker.css.js +8 -0
  274. package/dist/generated/themes/DateTimePicker.css.js +8 -0
  275. package/dist/generated/themes/DateTimePickerPopover.css.js +5 -5
  276. package/dist/generated/themes/DayPicker.css.js +5 -5
  277. package/dist/generated/themes/Dialog.css.js +5 -5
  278. package/dist/generated/themes/FileUploader.css.js +5 -5
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +5 -5
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +5 -5
  282. package/dist/generated/themes/Input.css.js +5 -5
  283. package/dist/generated/themes/InputIcon.css.js +5 -5
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +5 -5
  285. package/dist/generated/themes/Label.css.js +5 -5
  286. package/dist/generated/themes/Link.css.js +5 -5
  287. package/dist/generated/themes/List.css.js +5 -5
  288. package/dist/generated/themes/ListItem.css.js +5 -5
  289. package/dist/generated/themes/ListItemBase.css.js +5 -5
  290. package/dist/generated/themes/MessageStrip.css.js +5 -5
  291. package/dist/generated/themes/MonthPicker.css.js +5 -5
  292. package/dist/generated/themes/MultiComboBox.css.js +5 -5
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +5 -5
  295. package/dist/generated/themes/Popover.css.js +5 -5
  296. package/dist/generated/themes/Popup.css.js +5 -5
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +8 -0
  299. package/dist/generated/themes/PopupsCommon.css.js +8 -0
  300. package/dist/generated/themes/ProgressIndicator.css.js +8 -0
  301. package/dist/generated/themes/RadioButton.css.js +5 -5
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +5 -5
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +5 -5
  305. package/dist/generated/themes/SegmentedButton.css.js +5 -5
  306. package/dist/generated/themes/Select.css.js +5 -5
  307. package/dist/generated/themes/SelectPopover.css.js +8 -0
  308. package/dist/generated/themes/SliderBase.css.js +8 -0
  309. package/dist/generated/themes/StepInput.css.js +8 -0
  310. package/dist/generated/themes/Suggestions.css.js +8 -0
  311. package/dist/generated/themes/Switch.css.js +5 -5
  312. package/dist/generated/themes/Tab.css.js +5 -5
  313. package/dist/generated/themes/TabContainer.css.js +5 -5
  314. package/dist/generated/themes/TabInOverflow.css.js +5 -5
  315. package/dist/generated/themes/TabInStrip.css.js +5 -5
  316. package/dist/generated/themes/Table.css.js +5 -5
  317. package/dist/generated/themes/TableCell.css.js +5 -5
  318. package/dist/generated/themes/TableColumn.css.js +5 -5
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +5 -5
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +5 -5
  323. package/dist/generated/themes/TimePicker.css.js +5 -5
  324. package/dist/generated/themes/TimePickerPopover.css.js +5 -5
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +5 -5
  327. package/dist/generated/themes/Toast.css.js +5 -5
  328. package/dist/generated/themes/ToggleButton.css.js +5 -5
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +5 -5
  331. package/dist/generated/themes/Tokenizer.css.js +5 -5
  332. package/dist/generated/themes/Tree.css.js +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  334. package/dist/generated/themes/ValueStateMessage.css.js +5 -5
  335. package/dist/generated/themes/WheelSlider.css.js +5 -5
  336. package/dist/generated/themes/YearPicker.css.js +5 -5
  337. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  338. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  340. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  342. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -0
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -0
  344. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
  345. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
  346. package/dist/i18n/messagebundle.properties +335 -0
  347. package/dist/i18n/messagebundle_ar.properties +224 -0
  348. package/dist/i18n/messagebundle_bg.properties +224 -0
  349. package/dist/i18n/messagebundle_ca.properties +224 -0
  350. package/dist/i18n/messagebundle_cs.properties +224 -0
  351. package/dist/i18n/messagebundle_cy.properties +224 -0
  352. package/dist/i18n/messagebundle_da.properties +224 -0
  353. package/dist/i18n/messagebundle_de.properties +224 -0
  354. package/dist/i18n/messagebundle_el.properties +224 -0
  355. package/dist/i18n/messagebundle_en.properties +224 -0
  356. package/dist/i18n/messagebundle_en_GB.properties +224 -0
  357. package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
  358. package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
  359. package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
  360. package/dist/i18n/messagebundle_es.properties +224 -0
  361. package/dist/i18n/messagebundle_es_MX.properties +224 -0
  362. package/dist/i18n/messagebundle_et.properties +224 -0
  363. package/dist/i18n/messagebundle_fi.properties +224 -0
  364. package/dist/i18n/messagebundle_fr.properties +224 -0
  365. package/dist/i18n/messagebundle_fr_CA.properties +224 -0
  366. package/dist/i18n/messagebundle_hi.properties +224 -0
  367. package/dist/i18n/messagebundle_hr.properties +224 -0
  368. package/dist/i18n/messagebundle_hu.properties +224 -0
  369. package/dist/i18n/messagebundle_id.properties +224 -0
  370. package/dist/i18n/messagebundle_in.properties +172 -0
  371. package/dist/i18n/messagebundle_it.properties +224 -0
  372. package/dist/i18n/messagebundle_iw.properties +224 -0
  373. package/dist/i18n/messagebundle_ja.properties +224 -0
  374. package/dist/i18n/messagebundle_kk.properties +224 -0
  375. package/dist/i18n/messagebundle_ko.properties +224 -0
  376. package/dist/i18n/messagebundle_lt.properties +224 -0
  377. package/dist/i18n/messagebundle_lv.properties +224 -0
  378. package/dist/i18n/messagebundle_ms.properties +224 -0
  379. package/dist/i18n/messagebundle_nl.properties +224 -0
  380. package/dist/i18n/messagebundle_no.properties +224 -0
  381. package/dist/i18n/messagebundle_pl.properties +224 -0
  382. package/dist/i18n/messagebundle_pt.properties +224 -0
  383. package/dist/i18n/messagebundle_pt_PT.properties +224 -0
  384. package/dist/i18n/messagebundle_ro.properties +224 -0
  385. package/dist/i18n/messagebundle_ru.properties +224 -0
  386. package/dist/i18n/messagebundle_sh.properties +224 -0
  387. package/dist/i18n/messagebundle_sk.properties +224 -0
  388. package/dist/i18n/messagebundle_sl.properties +224 -0
  389. package/dist/i18n/messagebundle_sv.properties +224 -0
  390. package/dist/i18n/messagebundle_th.properties +224 -0
  391. package/dist/i18n/messagebundle_tr.properties +224 -0
  392. package/dist/i18n/messagebundle_uk.properties +224 -0
  393. package/dist/i18n/messagebundle_vi.properties +224 -0
  394. package/dist/i18n/messagebundle_zh_CN.properties +224 -0
  395. package/dist/i18n/messagebundle_zh_TW.properties +224 -0
  396. package/dist/popup-utils/OpenedPopupsRegistry.js +18 -13
  397. package/dist/popup-utils/PopoverRegistry.js +55 -21
  398. package/dist/timepicker-utils/TimeSlider.js +15 -13
  399. package/dist/types/{AvatarBackgroundColor.js → AvatarColorScheme.js} +9 -9
  400. package/dist/types/AvatarGroupType.js +43 -0
  401. package/dist/types/AvatarShape.js +1 -1
  402. package/dist/types/AvatarSize.js +1 -1
  403. package/dist/types/BreadcrumbsDesign.js +42 -0
  404. package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
  405. package/dist/types/BusyIndicatorSize.js +1 -1
  406. package/dist/types/ButtonDesign.js +8 -1
  407. package/dist/types/CalendarSelectionMode.js +47 -0
  408. package/dist/types/CarouselArrowsPlacement.js +3 -3
  409. package/dist/types/GrowingMode.js +48 -0
  410. package/dist/types/InputType.js +7 -7
  411. package/dist/types/LinkDesign.js +1 -1
  412. package/dist/types/ListGrowingMode.js +15 -0
  413. package/dist/types/ListItemType.js +2 -2
  414. package/dist/types/ListMode.js +9 -1
  415. package/dist/types/ListSeparators.js +1 -1
  416. package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  417. package/dist/types/PanelAccessibleRole.js +1 -1
  418. package/dist/types/PopoverHorizontalAlign.js +1 -1
  419. package/dist/types/PopoverPlacementType.js +2 -2
  420. package/dist/types/PopoverVerticalAlign.js +1 -2
  421. package/dist/types/Priority.js +55 -0
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +5 -5
  425. package/dist/types/TabLayout.js +1 -1
  426. package/dist/types/TableGrowingMode.js +15 -0
  427. package/dist/types/TableMode.js +47 -0
  428. package/dist/types/TableRowType.js +40 -0
  429. package/dist/types/TitleLevel.js +1 -1
  430. package/dist/types/ToastPlacement.js +1 -2
  431. package/dist/types/WrappingType.js +41 -0
  432. package/dist/webcomponentsjs/CHANGELOG.md +61 -0
  433. package/dist/webcomponentsjs/README.md +64 -47
  434. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
  435. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
  436. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
  437. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  438. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  439. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  440. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
  441. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
  442. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
  443. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
  444. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
  445. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
  446. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
  447. package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
  448. package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
  449. package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
  450. package/package-scripts.js +1 -0
  451. package/package.json +23 -6
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +7 -0
  454. package/src/Avatar.hbs +20 -0
  455. package/src/Avatar.js +392 -0
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +14 -0
  459. package/src/Badge.js +165 -0
  460. package/src/Breadcrumbs.hbs +42 -0
  461. package/src/Breadcrumbs.js +563 -0
  462. package/src/BreadcrumbsItem.js +109 -0
  463. package/src/BreadcrumbsPopover.hbs +28 -0
  464. package/src/BusyIndicator.hbs +32 -0
  465. package/src/BusyIndicator.js +269 -0
  466. package/src/Button.hbs +45 -0
  467. package/src/Button.js +463 -0
  468. package/src/Calendar.hbs +69 -0
  469. package/src/Calendar.js +489 -0
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +54 -0
  472. package/src/CalendarHeader.js +209 -0
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +14 -0
  475. package/src/Card.js +160 -0
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +85 -0
  479. package/src/Carousel.js +681 -0
  480. package/src/CheckBox.hbs +44 -0
  481. package/src/CheckBox.js +424 -0
  482. package/src/ColorPalette.hbs +52 -0
  483. package/src/ColorPalette.js +493 -0
  484. package/src/ColorPaletteDialog.hbs +18 -0
  485. package/src/ColorPaletteItem.hbs +11 -0
  486. package/src/ColorPaletteItem.js +137 -0
  487. package/src/ColorPalettePopover.hbs +29 -0
  488. package/src/ColorPalettePopover.js +219 -0
  489. package/src/ColorPicker.hbs +98 -0
  490. package/src/ColorPicker.js +524 -0
  491. package/src/ComboBox.hbs +49 -0
  492. package/src/ComboBox.js +1041 -0
  493. package/src/ComboBoxFilters.js +40 -0
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +49 -0
  496. package/src/ComboBoxPopover.hbs +125 -0
  497. package/src/CustomListItem.hbs +5 -0
  498. package/src/CustomListItem.js +99 -0
  499. package/src/DateComponentBase.js +170 -0
  500. package/src/DatePicker.hbs +44 -0
  501. package/src/DatePicker.js +823 -0
  502. package/src/DatePickerPopover.hbs +63 -0
  503. package/src/DateRangePicker.js +328 -0
  504. package/src/DateTimePicker.js +430 -0
  505. package/src/DateTimePickerPopover.hbs +74 -0
  506. package/src/DayPicker.hbs +66 -0
  507. package/src/DayPicker.js +754 -0
  508. package/src/Dialog.hbs +35 -0
  509. package/src/Dialog.js +601 -0
  510. package/src/DurationPicker.js +312 -0
  511. package/src/FileUploader.hbs +40 -0
  512. package/src/FileUploader.js +532 -0
  513. package/src/FileUploaderPopover.hbs +25 -0
  514. package/src/GroupHeaderListItem.hbs +15 -0
  515. package/src/GroupHeaderListItem.js +94 -0
  516. package/src/Icon.hbs +25 -0
  517. package/src/Icon.js +373 -0
  518. package/src/Input.hbs +78 -0
  519. package/src/Input.js +1381 -0
  520. package/src/InputPopover.hbs +118 -0
  521. package/src/Interfaces.js +192 -0
  522. package/src/Label.hbs +13 -0
  523. package/src/Label.js +152 -0
  524. package/src/Link.hbs +20 -0
  525. package/src/Link.js +349 -0
  526. package/src/List.hbs +89 -0
  527. package/src/List.js +1056 -0
  528. package/src/ListItem.hbs +102 -0
  529. package/src/ListItem.js +371 -0
  530. package/src/ListItemBase.js +179 -0
  531. package/src/MessageStrip.hbs +34 -0
  532. package/src/MessageStrip.js +227 -0
  533. package/src/MonthPicker.hbs +29 -0
  534. package/src/MonthPicker.js +299 -0
  535. package/src/MultiComboBox.hbs +78 -0
  536. package/src/MultiComboBox.js +1091 -0
  537. package/src/MultiComboBoxItem.js +43 -0
  538. package/src/MultiComboBoxPopover.hbs +133 -0
  539. package/src/MultiInput.hbs +41 -0
  540. package/src/MultiInput.js +301 -0
  541. package/src/Option.js +115 -0
  542. package/src/Panel.hbs +63 -0
  543. package/src/Panel.js +462 -0
  544. package/src/Popover.hbs +25 -0
  545. package/src/Popover.js +786 -0
  546. package/src/Popup.hbs +34 -0
  547. package/src/Popup.js +567 -0
  548. package/src/PopupBlockLayer.hbs +7 -0
  549. package/src/ProgressIndicator.hbs +35 -0
  550. package/src/ProgressIndicator.js +235 -0
  551. package/src/RadioButton.hbs +33 -0
  552. package/src/RadioButton.js +494 -0
  553. package/src/RadioButtonGroup.js +205 -0
  554. package/src/RangeSlider.hbs +70 -0
  555. package/src/RangeSlider.js +769 -0
  556. package/src/RatingIndicator.hbs +33 -0
  557. package/src/RatingIndicator.js +291 -0
  558. package/src/ResponsivePopover.hbs +39 -0
  559. package/src/ResponsivePopover.js +206 -0
  560. package/src/SegmentedButton.hbs +17 -0
  561. package/src/SegmentedButton.js +290 -0
  562. package/src/SegmentedButtonItem.hbs +42 -0
  563. package/src/SegmentedButtonItem.js +109 -0
  564. package/src/Select.hbs +45 -0
  565. package/src/Select.js +834 -0
  566. package/src/SelectPopover.hbs +89 -0
  567. package/src/Slider.hbs +42 -0
  568. package/src/Slider.js +320 -0
  569. package/src/SliderBase.hbs +38 -0
  570. package/src/SliderBase.js +842 -0
  571. package/src/StandardListItem.hbs +44 -0
  572. package/src/StandardListItem.js +191 -0
  573. package/src/StepInput.hbs +80 -0
  574. package/src/StepInput.js +684 -0
  575. package/src/SuggestionGroupItem.js +64 -0
  576. package/src/SuggestionItem.js +146 -0
  577. package/src/SuggestionListItem.hbs +33 -0
  578. package/src/SuggestionListItem.js +76 -0
  579. package/src/Switch.hbs +50 -0
  580. package/src/Switch.js +262 -0
  581. package/src/Tab.hbs +3 -0
  582. package/src/Tab.js +334 -0
  583. package/src/TabContainer.hbs +93 -0
  584. package/src/TabContainer.js +679 -0
  585. package/src/TabContainerPopover.hbs +24 -0
  586. package/src/TabInOverflow.hbs +22 -0
  587. package/src/TabInStrip.hbs +43 -0
  588. package/src/TabSeparator.hbs +1 -0
  589. package/src/TabSeparator.js +44 -0
  590. package/src/Table.hbs +99 -0
  591. package/src/Table.js +761 -0
  592. package/src/TableCell.hbs +7 -0
  593. package/src/TableCell.js +88 -0
  594. package/src/TableColumn.hbs +8 -0
  595. package/src/TableColumn.js +136 -0
  596. package/src/TableGroupRow.hbs +12 -0
  597. package/src/TableGroupRow.js +160 -0
  598. package/src/TableRow.hbs +61 -0
  599. package/src/TableRow.js +388 -0
  600. package/src/TextArea.hbs +50 -0
  601. package/src/TextArea.js +691 -0
  602. package/src/TextAreaPopover.hbs +28 -0
  603. package/src/TimePicker.hbs +35 -0
  604. package/src/TimePicker.js +166 -0
  605. package/src/TimePickerBase.js +463 -0
  606. package/src/TimePickerPopover.hbs +34 -0
  607. package/src/TimeSelection.hbs +60 -0
  608. package/src/TimeSelection.js +493 -0
  609. package/src/Title.hbs +47 -0
  610. package/src/Title.js +132 -0
  611. package/src/Toast.hbs +13 -0
  612. package/src/Toast.js +243 -0
  613. package/src/ToggleButton.hbs +5 -0
  614. package/src/ToggleButton.js +84 -0
  615. package/src/Token.hbs +30 -0
  616. package/src/Token.js +219 -0
  617. package/src/Tokenizer.hbs +27 -0
  618. package/src/Tokenizer.js +414 -0
  619. package/src/TokenizerPopover.hbs +50 -0
  620. package/src/Tree.hbs +42 -0
  621. package/src/Tree.js +443 -0
  622. package/src/TreeItem.js +168 -0
  623. package/src/TreeListItem.hbs +48 -0
  624. package/src/TreeListItem.js +332 -0
  625. package/src/WheelSlider.hbs +48 -0
  626. package/src/WheelSlider.js +435 -0
  627. package/src/YearPicker.hbs +27 -0
  628. package/src/YearPicker.js +324 -0
  629. package/src/features/ColorPaletteMoreColors.js +42 -0
  630. package/src/features/InputElementsFormSupport.js +88 -0
  631. package/src/features/InputSuggestions.js +530 -0
  632. package/src/i18n/messagebundle.properties +335 -0
  633. package/src/i18n/messagebundle_ar.properties +224 -0
  634. package/src/i18n/messagebundle_bg.properties +224 -0
  635. package/src/i18n/messagebundle_ca.properties +224 -0
  636. package/src/i18n/messagebundle_cs.properties +224 -0
  637. package/src/i18n/messagebundle_cy.properties +224 -0
  638. package/src/i18n/messagebundle_da.properties +224 -0
  639. package/src/i18n/messagebundle_de.properties +224 -0
  640. package/src/i18n/messagebundle_el.properties +224 -0
  641. package/src/i18n/messagebundle_en.properties +224 -0
  642. package/src/i18n/messagebundle_en_GB.properties +224 -0
  643. package/src/i18n/messagebundle_en_US_sappsd.properties +224 -0
  644. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  645. package/src/i18n/messagebundle_en_US_saptrc.properties +224 -0
  646. package/src/i18n/messagebundle_es.properties +224 -0
  647. package/src/i18n/messagebundle_es_MX.properties +224 -0
  648. package/src/i18n/messagebundle_et.properties +224 -0
  649. package/src/i18n/messagebundle_fi.properties +224 -0
  650. package/src/i18n/messagebundle_fr.properties +224 -0
  651. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  652. package/src/i18n/messagebundle_hi.properties +224 -0
  653. package/src/i18n/messagebundle_hr.properties +224 -0
  654. package/src/i18n/messagebundle_hu.properties +224 -0
  655. package/src/i18n/messagebundle_id.properties +224 -0
  656. package/src/i18n/messagebundle_in.properties +172 -0
  657. package/src/i18n/messagebundle_it.properties +224 -0
  658. package/src/i18n/messagebundle_iw.properties +224 -0
  659. package/src/i18n/messagebundle_ja.properties +224 -0
  660. package/src/i18n/messagebundle_kk.properties +224 -0
  661. package/src/i18n/messagebundle_ko.properties +224 -0
  662. package/src/i18n/messagebundle_lt.properties +224 -0
  663. package/src/i18n/messagebundle_lv.properties +224 -0
  664. package/src/i18n/messagebundle_ms.properties +224 -0
  665. package/src/i18n/messagebundle_nl.properties +224 -0
  666. package/src/i18n/messagebundle_no.properties +224 -0
  667. package/src/i18n/messagebundle_pl.properties +224 -0
  668. package/src/i18n/messagebundle_pt.properties +224 -0
  669. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  670. package/src/i18n/messagebundle_ro.properties +224 -0
  671. package/src/i18n/messagebundle_ru.properties +224 -0
  672. package/src/i18n/messagebundle_sh.properties +224 -0
  673. package/src/i18n/messagebundle_sk.properties +224 -0
  674. package/src/i18n/messagebundle_sl.properties +224 -0
  675. package/src/i18n/messagebundle_sv.properties +224 -0
  676. package/src/i18n/messagebundle_th.properties +224 -0
  677. package/src/i18n/messagebundle_tr.properties +224 -0
  678. package/src/i18n/messagebundle_uk.properties +224 -0
  679. package/src/i18n/messagebundle_vi.properties +224 -0
  680. package/src/i18n/messagebundle_zh_CN.properties +224 -0
  681. package/src/i18n/messagebundle_zh_TW.properties +224 -0
  682. package/src/popup-utils/OpenedPopupsRegistry.js +50 -0
  683. package/src/popup-utils/PopoverRegistry.js +145 -0
  684. package/src/timepicker-utils/TimeSlider.js +103 -0
  685. package/src/types/AvatarColorScheme.js +104 -0
  686. package/src/types/AvatarGroupType.js +43 -0
  687. package/src/types/AvatarShape.js +41 -0
  688. package/src/types/AvatarSize.js +67 -0
  689. package/src/types/BreadcrumbsDesign.js +42 -0
  690. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  691. package/src/types/BusyIndicatorSize.js +47 -0
  692. package/src/types/ButtonDesign.js +68 -0
  693. package/src/types/CalendarSelectionMode.js +47 -0
  694. package/src/types/CarouselArrowsPlacement.js +40 -0
  695. package/src/types/GrowingMode.js +48 -0
  696. package/src/types/InputType.js +68 -0
  697. package/src/types/LinkDesign.js +47 -0
  698. package/src/types/ListGrowingMode.js +15 -0
  699. package/src/types/ListItemType.js +47 -0
  700. package/src/types/ListMode.js +77 -0
  701. package/src/types/ListSeparators.js +46 -0
  702. package/src/types/MessageStripDesign.js +54 -0
  703. package/src/types/PanelAccessibleRole.js +48 -0
  704. package/src/types/PopoverHorizontalAlign.js +54 -0
  705. package/src/types/PopoverPlacementType.js +54 -0
  706. package/src/types/PopoverVerticalAlign.js +54 -0
  707. package/src/types/Priority.js +55 -0
  708. package/src/types/SemanticColor.js +61 -0
  709. package/src/types/SwitchDesign.js +40 -0
  710. package/src/types/TabContainerTabsPlacement.js +40 -0
  711. package/src/types/TabLayout.js +40 -0
  712. package/src/types/TableGrowingMode.js +15 -0
  713. package/src/types/TableMode.js +47 -0
  714. package/src/types/TableRowType.js +40 -0
  715. package/src/types/TitleLevel.js +68 -0
  716. package/src/types/ToastPlacement.js +91 -0
  717. package/src/types/WrappingType.js +41 -0
  718. package/dist/Timeline.js +0 -97
  719. package/dist/TimelineItem.js +0 -161
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/DurationPickerPopoverTemplate.lit.js +0 -8
  722. package/dist/generated/templates/DurationPickerTemplate.lit.js +0 -8
  723. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  724. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  725. package/dist/generated/themes/ComboBoxItem.css.js +0 -8
  726. package/dist/generated/themes/DurationPicker.css.js +0 -8
  727. package/dist/generated/themes/DurationPickerPopover.css.js +0 -8
  728. package/dist/generated/themes/Timeline.css.js +0 -8
  729. package/dist/generated/themes/TimelineItem.css.js +0 -8
  730. package/dist/popup-utils/PopupUtils.js +0 -55
  731. package/dist/types/AvatarFitType.js +0 -40
  732. package/dist/webcomponentsjs/package.json +0 -46
@@ -1,24 +1,30 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
- import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
4
- import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
5
- import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
6
1
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
7
- import LocaleData from "@ui5/webcomponents-localization/dist/LocaleData.js";
8
- import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
9
- import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
10
2
  import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
3
+ import modifyDateBy from "@ui5/webcomponents-localization/dist/dates/modifyDateBy.js";
4
+ import getRoundedTimestamp from "@ui5/webcomponents-localization/dist/dates/getRoundedTimestamp.js";
5
+ import getTodayUTCTimestamp from "@ui5/webcomponents-localization/dist/dates/getTodayUTCTimestamp.js";
11
6
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
12
- import { isShow } from "@ui5/webcomponents-base/dist/Keys.js";
13
- import { getRTL } from "@ui5/webcomponents-base/dist/config/RTL.js";
14
- import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
15
- import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
16
- import "@ui5/webcomponents-icons/dist/icons/appointment-2.js";
17
- import "@ui5/webcomponents-icons/dist/icons/decline.js";
18
- import { DATEPICKER_OPEN_ICON_TITLE, DATEPICKER_DATE_ACC_TEXT, INPUT_SUGGESTIONS_TITLE } from "./generated/i18n/i18n-defaults.js";
7
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
8
+ import {
9
+ isPageUp,
10
+ isPageDown,
11
+ isPageUpShift,
12
+ isPageDownShift,
13
+ isPageUpShiftCtrl,
14
+ isPageDownShiftCtrl,
15
+ isShow,
16
+ isF4,
17
+ } from "@ui5/webcomponents-base/dist/Keys.js";
18
+ import { isPhone, isIE } from "@ui5/webcomponents-base/dist/Device.js";
19
+ import "@ui5/webcomponents-icons/dist/appointment-2.js";
20
+ import "@ui5/webcomponents-icons/dist/decline.js";
21
+ import { DATEPICKER_OPEN_ICON_TITLE, DATEPICKER_DATE_DESCRIPTION, INPUT_SUGGESTIONS_TITLE } from "./generated/i18n/i18n-defaults.js";
22
+ import DateComponentBase from "./DateComponentBase.js";
19
23
  import Icon from "./Icon.js";
24
+ import Button from "./Button.js";
20
25
  import ResponsivePopover from "./ResponsivePopover.js";
21
26
  import Calendar from "./Calendar.js";
27
+ import * as CalendarDateComponent from "./CalendarDate.js";
22
28
  import Input from "./Input.js";
23
29
  import InputType from "./types/InputType.js";
24
30
  import DatePickerTemplate from "./generated/templates/DatePickerTemplate.lit.js";
@@ -36,7 +42,9 @@ import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverComm
36
42
  * @public
37
43
  */
38
44
  const metadata = {
39
- tag: "ui5-datepicker",
45
+ tag: "ui5-date-picker",
46
+ altTag: "ui5-datepicker",
47
+ managedSlots: true,
40
48
  properties: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
41
49
  /**
42
50
  * Defines a formatted date value.
@@ -50,7 +58,7 @@ const metadata = {
50
58
  },
51
59
 
52
60
  /**
53
- * Defines the value state of the <code>ui5-datepicker</code>.
61
+ * Defines the value state of the component.
54
62
  * <br><br>
55
63
  * Available options are:
56
64
  * <ul>
@@ -71,64 +79,19 @@ const metadata = {
71
79
  },
72
80
 
73
81
  /**
74
- * Determines the format, displayed in the input field.
82
+ * Defines whether the component is required.
75
83
  *
76
- * @type {string}
77
- * @defaultvalue ""
78
- * @public
79
- */
80
- formatPattern: {
81
- type: String,
82
- },
83
-
84
- /**
85
- * Determines the minimum date available for selection.
86
- *
87
- * @type {string}
88
- * @defaultvalue ""
89
- * @since 1.0.0-rc.6
90
- * @public
91
- */
92
- minDate: {
93
- type: String,
94
- },
95
-
96
- /**
97
- * Determines the maximum date available for selection.
98
- *
99
- * @type {string}
100
- * @defaultvalue ""
101
- * @since 1.0.0-rc.6
102
- * @public
103
- */
104
- maxDate: {
105
- type: String,
106
- },
107
-
108
- /**
109
- * Determines the calendar type.
110
- * The input value is formated according to the calendar type
111
- * and the picker shows the months and years from the specified calendar.
112
- * <br><br>
113
- * Available options are:
114
- * <ul>
115
- * <li><code>Gregorian</code></li>
116
- * <li><code>Islamic</code></li>
117
- * <li><code>Japanese</code></li>
118
- * <li><code>Buddhist</code></li>
119
- * <li><code>Persian</code></li>
120
- * </ul>
121
- *
122
- * @type {CalendarType}
123
- * @defaultvalue "Gregorian"
84
+ * @since 1.0.0-rc.9
85
+ * @type {boolean}
86
+ * @defaultvalue false
124
87
  * @public
125
88
  */
126
- primaryCalendarType: {
127
- type: CalendarType,
89
+ required: {
90
+ type: Boolean,
128
91
  },
129
92
 
130
93
  /**
131
- * Determines whether the <code>ui5-datepicker</code> is displayed as disabled.
94
+ * Determines whether the component is displayed as disabled.
132
95
  *
133
96
  * @type {boolean}
134
97
  * @defaultvalue false
@@ -139,7 +102,7 @@ const metadata = {
139
102
  },
140
103
 
141
104
  /**
142
- * Determines whether the <code>ui5-datepicker</code> is displayed as read-only.
105
+ * Determines whether the component is displayed as read-only.
143
106
  *
144
107
  * @type {boolean}
145
108
  * @defaultvalue false
@@ -151,11 +114,11 @@ const metadata = {
151
114
 
152
115
  /**
153
116
  * Defines a short hint, intended to aid the user with data entry when the
154
- * <code>ui5-datepicker</code> has no value.
117
+ * component has no value.
155
118
  *
156
119
  * <br><br>
157
120
  * <b>Note:</b> When no placeholder is set, the format pattern is displayed as a placeholder.
158
- * Passing an empty string as the value of this property will make the <code>ui5-datepicker</code> appear empty - without placeholder or format pattern.
121
+ * Passing an empty string as the value of this property will make the component appear empty - without placeholder or format pattern.
159
122
  *
160
123
  * @type {string}
161
124
  * @defaultvalue undefined
@@ -167,7 +130,7 @@ const metadata = {
167
130
  },
168
131
 
169
132
  /**
170
- * Determines the name with which the <code>ui5-datepicker</code> will be submitted in an HTML form.
133
+ * Determines the name with which the component will be submitted in an HTML form.
171
134
  *
172
135
  * <br><br>
173
136
  * <b>Important:</b> For the <code>name</code> property to have effect, you must add the following import to your project:
@@ -175,7 +138,7 @@ const metadata = {
175
138
  *
176
139
  * <br><br>
177
140
  * <b>Note:</b> When set, a native <code>input</code> HTML element
178
- * will be created inside the <code>ui5-datepicker</code> so that it can be submitted as
141
+ * will be created inside the component so that it can be submitted as
179
142
  * part of an HTML form. Do not use this property unless you need to submit a form.
180
143
  *
181
144
  * @type {string}
@@ -186,6 +149,46 @@ const metadata = {
186
149
  type: String,
187
150
  },
188
151
 
152
+ /**
153
+ * Defines the visibility of the week numbers column.
154
+ * <br><br>
155
+ *
156
+ * <b>Note:</b> For calendars other than Gregorian,
157
+ * the week numbers are not displayed regardless of what is set.
158
+ *
159
+ * @type {boolean}
160
+ * @defaultvalue false
161
+ * @public
162
+ * @since 1.0.0-rc.8
163
+ */
164
+ hideWeekNumbers: {
165
+ type: Boolean,
166
+ },
167
+
168
+ /**
169
+ * Defines the aria-label attribute for the component.
170
+ *
171
+ * @type {String}
172
+ * @public
173
+ * @since 1.0.0-rc.15
174
+ */
175
+ accessibleName: {
176
+ type: String,
177
+ },
178
+
179
+ /**
180
+ * Receives id(or many ids) of the elements that label the component.
181
+ *
182
+ * @type {String}
183
+ * @defaultvalue ""
184
+ * @public
185
+ * @since 1.0.0-rc.15
186
+ */
187
+ accessibleNameRef: {
188
+ type: String,
189
+ defaultValue: "",
190
+ },
191
+
189
192
  _isPickerOpen: {
190
193
  type: Boolean,
191
194
  noAttribute: true,
@@ -195,27 +198,83 @@ const metadata = {
195
198
  type: Object,
196
199
  },
197
200
 
198
- _calendar: {
199
- type: Object,
201
+ _calendarCurrentPicker: {
202
+ type: String,
203
+ defaultValue: "day",
200
204
  },
201
205
  },
206
+
207
+ slots: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
208
+ /**
209
+ * Defines the value state message that will be displayed as pop up under the component.
210
+ * <br><br>
211
+ *
212
+ * <b>Note:</b> If not specified, a default text (in the respective language) will be displayed.
213
+ * <br>
214
+ * <b>Note:</b> The <code>valueStateMessage</code> would be displayed,
215
+ * when the component is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
216
+ * @type {HTMLElement}
217
+ * @since 1.0.0-rc.7
218
+ * @slot
219
+ * @public
220
+ */
221
+ valueStateMessage: {
222
+ type: HTMLElement,
223
+ },
224
+
225
+ /**
226
+ * The slot is used to render native <code>input</code> HTML element within Light DOM to enable form submit,
227
+ * when <code>name</code> property is set.
228
+ * @type {HTMLElement[]}
229
+ * @slot
230
+ * @private
231
+ */
232
+ formSupport: {
233
+ type: HTMLElement,
234
+ },
235
+ },
236
+
202
237
  events: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
203
238
 
204
239
  /**
205
240
  * Fired when the input operation has finished by pressing Enter or on focusout.
206
241
  *
207
242
  * @event
243
+ * @allowPreventDefault
208
244
  * @public
245
+ * @param {String} value The submitted value.
246
+ * @param {Boolean} valid Indicator if the value is in correct format pattern and in valid range.
209
247
  */
210
- change: {},
248
+ change: {
249
+ details: {
250
+ value: {
251
+ type: String,
252
+ },
253
+ valid: {
254
+ type: Boolean,
255
+ },
256
+ },
257
+ },
211
258
 
212
259
  /**
213
- * Fired when the value of the <code>ui5-datepicker</code> is changed at each key stroke.
260
+ * Fired when the value of the component is changed at each key stroke.
214
261
  *
215
262
  * @event
263
+ * @allowPreventDefault
216
264
  * @public
265
+ * @param {String} value The submitted value.
266
+ * @param {Boolean} valid Indicator if the value is in correct format pattern and in valid range.
217
267
  */
218
- input: {},
268
+ input: {
269
+ details: {
270
+ value: {
271
+ type: String,
272
+ },
273
+ valid: {
274
+ type: Boolean,
275
+ },
276
+ },
277
+ },
219
278
  },
220
279
  };
221
280
 
@@ -224,8 +283,8 @@ const metadata = {
224
283
  *
225
284
  * <h3 class="comment-api-title">Overview</h3>
226
285
  *
227
- * The <code>ui5-datepicker</code> component provides an input field with assigned calendar which opens on user action.
228
- * The <code>ui5-datepicker</code> allows users to select a localized date using touch,
286
+ * The <code>ui5-date-picker</code> component provides an input field with assigned calendar which opens on user action.
287
+ * The <code>ui5-date-picker</code> allows users to select a localized date using touch,
229
288
  * mouse, or keyboard input. It consists of two parts: the date input field and the
230
289
  * date picker.
231
290
  *
@@ -237,7 +296,7 @@ const metadata = {
237
296
  * <li>Typing it in directly in the input field</li>
238
297
  * </ul>
239
298
  * <br><br>
240
- * When the user makes an entry and chooses the enter key, the calendar shows the corresponding date.
299
+ * When the user makes an entry and presses the enter key, the calendar shows the corresponding date.
241
300
  * When the user directly triggers the calendar display, the actual date is displayed.
242
301
  *
243
302
  * <h3>Formatting</h3>
@@ -252,14 +311,50 @@ const metadata = {
252
311
  * a valid value string is "2015-07-30" and the same is displayed in the input.
253
312
  *
254
313
  * <h3>Keyboard Handling</h3>
255
- * The <code>ui5-datepicker</code> provides advanced keyboard handling.
256
- * If the <code>ui5-datepicker</code> is focused,
314
+ * The <code>ui5-date-picker</code> provides advanced keyboard handling.
315
+ * If the <code>ui5-date-picker</code> is focused,
257
316
  * you can open or close the drop-down by pressing <code>F4</code>, <code>ALT+UP</code> or <code>ALT+DOWN</code> keys.
258
317
  * Once the drop-down is opened, you can use the <code>UP</code>, <code>DOWN</code>, <code>LEFT</code>, <code>RIGHT</code> arrow keys
259
318
  * to navigate through the dates and select one by pressing the <code>Space</code> or <code>Enter</code> keys. Moreover you can
260
319
  * use TAB to reach the buttons for changing month and year.
261
320
  * <br>
262
321
  *
322
+ * If the <code>ui5-date-picker</code> is focused and the picker dialog is not opened the user can
323
+ * increment or decrement the corresponding field of the JS date object referenced by <code>dateValue</code> propery
324
+ * by using the following shortcuts:
325
+ * <br>
326
+ * <ul>
327
+ * <li>[PAGEDOWN] - Decrements the corresponding day of the month by one</li>
328
+ * <li>[SHIFT] + [PAGEDOWN] - Decrements the corresponding month by one</li>
329
+ * <li>[SHIFT] + [CTRL] + [PAGEDOWN] - Decrements the corresponding year by one</li>
330
+ * <li>[PAGEUP] - Increments the corresponding day of the month by one</li>
331
+ * <li>[SHIFT] + [PAGEUP] - Increments the corresponding month by one</li>
332
+ * <li>[SHIFT] + [CTRL] + [PAGEUP] - Increments the corresponding year by one</li>
333
+ * </ul>
334
+ *
335
+ * <h3>Calendar types</h3>
336
+ * The component supports several calendar types - Gregorian, Buddhist, Islamic, Japanese and Persian.
337
+ * By default the Gregorian Calendar is used. In order to use the Buddhist, Islamic, Japanese or Persian calendar,
338
+ * you need to set the <code>primaryCalendarType</code> property and import one or more of the following modules:
339
+ * <br><br>
340
+ *
341
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js";</code>
342
+ * <br>
343
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Islamic.js";</code>
344
+ * <br>
345
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Japanese.js";</code>
346
+ * <br>
347
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Persian.js";</code>
348
+ * <br><br>
349
+ *
350
+ * Or, you can use the global configuration and set the <code>calendarType</code> key:
351
+ * <br>
352
+ * <pre><code>&lt;script data-id="sap-ui-config" type="application/json"&gt;
353
+ * {
354
+ * "calendarType": "Japanese"
355
+ * }
356
+ * &lt;/script&gt;</code></pre>
357
+ *
263
358
  * <h3>ES6 Module Import</h3>
264
359
  *
265
360
  * <code>import "@ui5/webcomponents/dist/DatePicker";</code>
@@ -267,19 +362,15 @@ const metadata = {
267
362
  * @constructor
268
363
  * @author SAP SE
269
364
  * @alias sap.ui.webcomponents.main.DatePicker
270
- * @extends sap.ui.webcomponents.base.UI5Element
271
- * @tagname ui5-datepicker
365
+ * @extends DateComponentBase
366
+ * @tagname ui5-date-picker
272
367
  * @public
273
368
  */
274
- class DatePicker extends UI5Element {
369
+ class DatePicker extends DateComponentBase {
275
370
  static get metadata() {
276
371
  return metadata;
277
372
  }
278
373
 
279
- static get render() {
280
- return litRender;
281
- }
282
-
283
374
  static get template() {
284
375
  return DatePickerTemplate;
285
376
  }
@@ -293,166 +384,207 @@ class DatePicker extends UI5Element {
293
384
  }
294
385
 
295
386
  static get staticAreaStyles() {
296
- return [datePickerPopoverCss, ResponsivePopoverCommonCss];
387
+ return [ResponsivePopoverCommonCss, datePickerPopoverCss];
297
388
  }
298
389
 
299
- constructor() {
300
- super();
390
+ /**
391
+ * @protected
392
+ */
393
+ onResponsivePopoverAfterClose() {
394
+ this._isPickerOpen = false;
395
+ if (isPhone()) {
396
+ this.blur(); // close device's keyboard and prevent further typing
397
+ } else {
398
+ this._getInput().focus();
399
+ }
400
+ }
301
401
 
302
- this._respPopoverConfig = {
303
- allowTargetOverlap: true,
304
- stayOpenOnScroll: true,
305
- afterClose: () => {
306
- this._isPickerOpen = false;
402
+ onBeforeRendering() {
403
+ ["minDate", "maxDate"].forEach(prop => {
404
+ if (this[prop] && !this.isValid(this[prop])) {
405
+ console.warn(`Invalid value for property "${prop}": ${this[prop]} is not compatible with the configured format pattern: "${this._displayFormat}"`); // eslint-disable-line
406
+ }
407
+ });
307
408
 
308
- if (isPhone()) {
309
- // close device's keyboard and prevent further typing
310
- this.blur();
311
- } else if (this._focusInputAfterClose) {
312
- this._getInput().focus();
313
- this._focusInputAfterClose = false;
314
- }
409
+ const FormSupport = getFeature("FormSupport");
410
+ if (FormSupport) {
411
+ FormSupport.syncNativeHiddenInput(this);
412
+ } else if (this.name) {
413
+ console.warn(`In order for the "name" property to have effect, you should also: import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";`); // eslint-disable-line
414
+ }
315
415
 
316
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
317
- if (calendar) {
318
- calendar._hideMonthPicker();
319
- calendar._hideYearPicker();
320
- }
321
- },
322
- afterOpen: () => {
323
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
416
+ this.liveValue = this.value;
417
+ }
324
418
 
325
- if (!calendar) {
326
- return;
327
- }
419
+ /**
420
+ * Override in derivatives to change calendar selection mode
421
+ * @returns {string}
422
+ * @protected
423
+ */
424
+ get _calendarSelectionMode() {
425
+ return "Single";
426
+ }
328
427
 
329
- const dayPicker = calendar.shadowRoot.querySelector(`#${calendar._id}-daypicker`);
330
- const selectedDay = dayPicker.shadowRoot.querySelector(".ui5-dp-item--selected");
331
- const today = dayPicker.shadowRoot.querySelector(".ui5-dp-item--now");
332
- let focusableDay = selectedDay || today;
333
- if (!selectedDay && (this.minDate || this.maxDate) && !this.isInValidRange((new Date().getTime()))) {
334
- focusableDay = this.findFirstFocusableDay(dayPicker);
335
- }
428
+ /**
429
+ * Used to provide a timestamp to the Calendar (to focus it to a relevant date when open) based on the component's state
430
+ * Override in derivatives to provide the calendar a timestamp based on their properties
431
+ * By default focus the calendar on the selected date if set, or the current day otherwise
432
+ * @protected
433
+ */
434
+ get _calendarTimestamp() {
435
+ if (this.value && this._checkValueValidity(this.value)) {
436
+ const millisecondsUTC = this.dateValueUTC.getTime();
437
+ return getRoundedTimestamp(millisecondsUTC);
438
+ }
439
+
440
+ return getTodayUTCTimestamp(this._primaryCalendarType);
441
+ }
336
442
 
337
- if (this._focusInputAfterOpen) {
338
- this._focusInputAfterOpen = false;
339
- this._getInput().focus();
340
- } else if (focusableDay) {
341
- focusableDay.focus();
443
+ /**
444
+ * Used to provide selectedDates to the calendar based on the component's state
445
+ * Override in derivatives to provide different rules for setting the calendar's selected dates
446
+ * @protected
447
+ */
448
+ get _calendarSelectedDates() {
449
+ if (this.value && this._checkValueValidity(this.value)) {
450
+ return [this.value];
451
+ }
342
452
 
343
- let focusableDayIdx = parseInt(focusableDay.getAttribute("data-sap-index"));
344
- const focusableItem = dayPicker.focusableDays.find(item => parseInt(item._index) === focusableDayIdx);
345
- focusableDayIdx = focusableItem ? dayPicker.focusableDays.indexOf(focusableItem) : focusableDayIdx;
453
+ return [];
454
+ }
346
455
 
347
- dayPicker._itemNav.current = focusableDayIdx;
348
- dayPicker._itemNav.update();
456
+ _onkeydown(event) {
457
+ if (isShow(event)) {
458
+ event.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down
459
+ if (this.isOpen()) {
460
+ if (!isF4(event)) {
461
+ this._toggleAndFocusInput();
349
462
  }
350
- },
351
- };
463
+ } else {
464
+ this._toggleAndFocusInput();
465
+ }
466
+ }
352
467
 
353
- this._calendar = {
354
- onSelectedDatesChange: this._handleCalendarChange.bind(this),
355
- selectedDates: [],
356
- };
468
+ if (this.isOpen()) {
469
+ return;
470
+ }
357
471
 
358
- this.i18nBundle = getI18nBundle("@ui5/webcomponents");
472
+ if (isPageUpShiftCtrl(event)) {
473
+ event.preventDefault();
474
+ this._modifyDateValue(1, "year");
475
+ } else if (isPageUpShift(event)) {
476
+ event.preventDefault();
477
+ this._modifyDateValue(1, "month");
478
+ } else if (isPageUp(event)) {
479
+ event.preventDefault();
480
+ this._modifyDateValue(1, "day");
481
+ } else if (isPageDownShiftCtrl(event)) {
482
+ event.preventDefault();
483
+ this._modifyDateValue(-1, "year");
484
+ } else if (isPageDownShift(event)) {
485
+ event.preventDefault();
486
+ this._modifyDateValue(-1, "month");
487
+ } else if (isPageDown(event)) {
488
+ event.preventDefault();
489
+ this._modifyDateValue(-1, "day");
490
+ }
359
491
  }
360
492
 
361
- findFirstFocusableDay(daypicker) {
362
- const today = new Date();
363
- if (!this.isInValidRange(today.getTime())) {
364
- const focusableItems = Array.from(daypicker.shadowRoot.querySelectorAll(".ui5-dp-item"));
365
- return focusableItems.filter(x => !x.classList.contains("ui5-dp-item--disabled"))[0];
493
+ /**
494
+ *
495
+ * @param amount
496
+ * @param unit
497
+ * @protected
498
+ */
499
+ _modifyDateValue(amount, unit) {
500
+ if (!this.dateValue) {
501
+ return;
366
502
  }
503
+
504
+ const modifiedDate = modifyDateBy(CalendarDate.fromLocalJSDate(this.dateValue), amount, unit, this._minDate, this._maxDate);
505
+ const newValue = this.formatValue(modifiedDate.toUTCJSDate());
506
+ this._updateValueAndFireEvents(newValue, true, ["change", "value-changed"]);
367
507
  }
368
508
 
369
- onBeforeRendering() {
370
- this._calendar.primaryCalendarType = this._primaryCalendarType;
371
- this._calendar.formatPattern = this._formatPattern;
509
+ _updateValueAndFireEvents(value, normalizeValue, events, updateValue = true) {
510
+ const valid = this._checkValueValidity(value);
372
511
 
373
- if (this.minDate && !this.isValid(this.minDate)) {
374
- this.minDate = null;
375
- console.warn(`In order for the "minDate" property to have effect, you should enter valid date format`); // eslint-disable-line
512
+ if (valid && normalizeValue) {
513
+ value = this.normalizeValue(value); // transform valid values (in any format) to the correct format
376
514
  }
377
515
 
378
- if (this.maxDate && !this.isValid(this.maxDate)) {
379
- this.maxDate = null;
380
- console.warn(`In order for the "maxDate" property to have effect, you should enter valid date format`); // eslint-disable-line
381
- }
382
- if (this.isValid(this.value) && this.isInValidRange(this._getTimeStampFromString(this.value))) {
383
- this._changeCalendarSelection();
384
- } else {
385
- this._calendar.selectedDates = [];
386
- }
516
+ let executeEvent = true;
517
+ this.liveValue = value;
387
518
 
388
- const FormSupport = getFeature("FormSupport");
389
- if (FormSupport) {
390
- FormSupport.syncNativeHiddenInput(this);
391
- } else if (this.name) {
392
- console.warn(`In order for the "name" property to have effect, you should also: import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";`); // eslint-disable-line
393
- }
519
+ events.forEach(event => {
520
+ if (!this.fireEvent(event, { value, valid }, true)) {
521
+ executeEvent = false;
522
+ }
523
+ });
394
524
 
395
- if (this.minDate) {
396
- this._calendar.minDate = this.minDate;
525
+ if (!executeEvent) {
526
+ return;
397
527
  }
398
528
 
399
- if (this.maxDate) {
400
- this._calendar.maxDate = this.maxDate;
529
+ if (updateValue) {
530
+ this.value = value;
531
+ this._updateValueState(); // Change the value state to Error/None, but only if needed
401
532
  }
402
533
  }
403
534
 
404
- _getTimeStampFromString(value) {
405
- if (this.getFormat().parse(value)) {
406
- const jsDate = new Date(this.getFormat().parse(value).getFullYear(), this.getFormat().parse(value).getMonth(), this.getFormat().parse(value).getDate());
407
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
408
- return oCalDate.valueOf();
535
+ _updateValueState() {
536
+ const isValid = this._checkValueValidity(this.value);
537
+ if (!isValid) { // If not valid - always set Error regardless of the current value state
538
+ this.valueState = ValueState.Error;
539
+ } else if (isValid && this.valueState === ValueState.Error) { // However if valid, change only Error (but not the others) to None
540
+ this.valueState = ValueState.None;
409
541
  }
410
- return undefined;
411
542
  }
412
543
 
413
- _onkeydown(event) {
414
- if (isShow(event)) {
415
- this.togglePicker();
416
- this._getInput().focus();
417
- }
544
+ _toggleAndFocusInput() {
545
+ this.togglePicker();
546
+ this._getInput().focus();
418
547
  }
419
548
 
420
549
  _getInput() {
421
- return this.shadowRoot.querySelector("ui5-input");
550
+ return this.shadowRoot.querySelector("[ui5-input]");
422
551
  }
423
552
 
424
- _handleInputChange() {
425
- let nextValue = this._getInput().getInputValue();
426
- const emptyValue = nextValue === "";
427
- const isValid = emptyValue || this.isValid(nextValue);
428
- const isInValidRange = this.isInValidRange(this._getTimeStampFromString(nextValue));
429
-
430
- if (isValid && isInValidRange) {
431
- nextValue = this.normalizeValue(nextValue);
432
- this.valueState = ValueState.None;
433
- } else {
434
- this.valueState = ValueState.Error;
435
- }
436
-
553
+ /**
554
+ * The ui5-input "submit" event handler - fire change event when the user presses enter
555
+ * @protected
556
+ */
557
+ _onInputSubmit(event) {}
437
558
 
438
- this.value = nextValue;
439
- this.fireEvent("change", { value: nextValue, valid: isValid });
440
- // Angular two way data binding
441
- this.fireEvent("value-changed", { value: nextValue, valid: isValid });
559
+ /**
560
+ * The ui5-input "change" event handler - fire change event when the user focuses out of the input
561
+ * @protected
562
+ */
563
+ _onInputChange(event) {
564
+ this._updateValueAndFireEvents(event.target.value, true, ["change", "value-changed"]);
442
565
  }
443
566
 
444
- _handleInputLiveChange() {
445
- const nextValue = this._getInput().getInputValue();
446
- const emptyValue = nextValue === "";
447
- const isValid = emptyValue || (this.isValid(nextValue) && this.isInValidRange(this._getTimeStampFromString(nextValue)));
567
+ /**
568
+ * The ui5-input "input" event handler - fire input even when the user types
569
+ * @protected
570
+ */
571
+ async _onInputInput(event) {
572
+ this._updateValueAndFireEvents(event.target.value, false, ["input"], false);
573
+ }
448
574
 
449
- this.value = nextValue;
450
- this.fireEvent("input", { value: nextValue, valid: isValid });
575
+ /**
576
+ * @protected
577
+ */
578
+ _checkValueValidity(value) {
579
+ if (value === "") {
580
+ return true;
581
+ }
582
+ return this.isValid(value) && this.isInValidRange(value);
451
583
  }
452
584
 
453
585
  _click(event) {
454
586
  if (isPhone()) {
455
- this.responsivePopover.open(this);
587
+ this.responsivePopover.showAt(this);
456
588
  event.preventDefault(); // prevent immediate selection of any item
457
589
  }
458
590
  }
@@ -463,86 +595,53 @@ class DatePicker extends UI5Element {
463
595
  * @public
464
596
  */
465
597
  isValid(value = "") {
466
- return !!(value && this.getFormat().parse(value));
598
+ if (value === "") {
599
+ return true;
600
+ }
601
+
602
+ return !!this.getFormat().parse(value);
467
603
  }
468
604
 
469
605
  /**
470
- * Checks if a date is in range between minimum and maximum date.
471
- * @param {object} value
606
+ * Checks if a date is between the minimum and maximum date.
607
+ * @param {string} value A value to be checked
608
+ * @returns {boolean}
472
609
  * @public
473
610
  */
474
611
  isInValidRange(value = "") {
475
- const pickedDate = new Date(value),
476
- minDate = this._minDate && new Date(this._minDate),
477
- maxDate = this._maxDate && new Date(this._maxDate);
478
-
479
- if (minDate && maxDate) {
480
- if (minDate <= pickedDate && maxDate >= pickedDate) {
481
- return true;
482
- }
483
- } else if (minDate && !maxDate) {
484
- if (minDate <= pickedDate) {
485
- return true;
486
- }
487
- } else if (maxDate && !minDate) {
488
- if (maxDate >= pickedDate) {
489
- return true;
490
- }
491
- } else if (!maxDate && !minDate) {
612
+ if (value === "") {
492
613
  return true;
493
614
  }
494
615
 
495
- return false;
616
+ const calendarDate = this._getCalendarDateFromString(value);
617
+ return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
496
618
  }
497
619
 
498
- // because the parser understands more than one format
499
- // but we need values in one format
620
+ /**
621
+ * The parser understands many formats, but we need one format
622
+ * @protected
623
+ */
500
624
  normalizeValue(value) {
501
625
  if (value === "") {
502
626
  return value;
503
627
  }
504
628
 
505
- return this.getFormat().format(this.getFormat().parse(value));
506
- }
507
-
508
- get validValue() {
509
- if (this.isValid(this.value)) {
510
- return this.value;
511
- }
512
- return this.getFormat().format(new Date());
513
- }
514
-
515
- get _calendarDate() {
516
- const millisecondsUTC = this.getFormat().parse(this.validValue, true).getTime();
517
- const oCalDate = CalendarDate.fromTimestamp(
518
- millisecondsUTC - (millisecondsUTC % (24 * 60 * 60 * 1000)),
519
- this._primaryCalendarType
520
- );
521
- return oCalDate;
522
- }
523
-
524
- get _primaryCalendarType() {
525
- return this.primaryCalendarType || getCalendarType() || LocaleData.getInstance(getLocale()).getPreferredCalendarType();
526
- }
527
-
528
- get _formatPattern() {
529
- return this.formatPattern || "medium"; // get from config
530
- }
531
-
532
- get _isPattern() {
533
- return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
629
+ return this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC
534
630
  }
535
631
 
536
632
  get _displayFormat() {
537
633
  return this.getFormat().oFormatOptions.pattern;
538
634
  }
539
635
 
636
+ /**
637
+ * @protected
638
+ */
540
639
  get _placeholder() {
541
640
  return this.placeholder !== undefined ? this.placeholder : this._displayFormat;
542
641
  }
543
642
 
544
643
  get _headerTitleText() {
545
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
644
+ return DatePicker.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
546
645
  }
547
646
 
548
647
  get phone() {
@@ -557,49 +656,25 @@ class DatePicker extends UI5Element {
557
656
  return this.phone;
558
657
  }
559
658
 
560
- getFormat() {
561
- if (this._isPattern) {
562
- this._oDateFormat = DateFormat.getInstance({
563
- pattern: this._formatPattern,
564
- calendarType: this._primaryCalendarType,
565
- });
566
- } else {
567
- this._oDateFormat = DateFormat.getInstance({
568
- style: this._formatPattern,
569
- calendarType: this._primaryCalendarType,
570
- });
571
- }
572
- return this._oDateFormat;
659
+ get _isIE() {
660
+ return isIE();
573
661
  }
574
662
 
575
663
  get accInfo() {
576
664
  return {
577
- "ariaDescribedBy": `${this._id}-date`,
665
+ "ariaRoledescription": this.dateAriaDescription,
578
666
  "ariaHasPopup": "true",
579
667
  "ariaAutoComplete": "none",
580
668
  "role": "combobox",
581
- "ariaOwns": `${this._id}-responsive-popover`,
669
+ "ariaControls": `${this._id}-responsive-popover`,
582
670
  "ariaExpanded": this.isOpen(),
583
- "ariaDescription": this.dateAriaDescription,
671
+ "ariaRequired": this.required,
672
+ "ariaLabel": getEffectiveAriaLabelText(this),
584
673
  };
585
674
  }
586
675
 
587
- get _maxDate() {
588
- if (this.maxDate) {
589
- return this._getTimeStampFromString(this.maxDate);
590
- }
591
- return this.maxDate;
592
- }
593
-
594
- get _minDate() {
595
- if (this.minDate) {
596
- return this._getTimeStampFromString(this.minDate);
597
- }
598
- return this.minDate;
599
- }
600
-
601
676
  get openIconTitle() {
602
- return this.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
677
+ return DatePicker.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
603
678
  }
604
679
 
605
680
  get openIconName() {
@@ -607,11 +682,7 @@ class DatePicker extends UI5Element {
607
682
  }
608
683
 
609
684
  get dateAriaDescription() {
610
- return this.i18nBundle.getText(DATEPICKER_DATE_ACC_TEXT);
611
- }
612
-
613
- get dir() {
614
- return getRTL() ? "rtl" : "ltr";
685
+ return DatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);
615
686
  }
616
687
 
617
688
  /**
@@ -624,56 +695,49 @@ class DatePicker extends UI5Element {
624
695
 
625
696
  async _respPopover() {
626
697
  const staticAreaItem = await this.getStaticAreaItemDomRef();
627
- return staticAreaItem.querySelector("ui5-responsive-popover");
698
+ return staticAreaItem.querySelector("[ui5-responsive-popover]");
628
699
  }
629
700
 
630
701
  _canOpenPicker() {
631
702
  return !this.disabled && !this.readonly;
632
703
  }
633
704
 
634
- _handleCalendarChange(event) {
635
- const iNewValue = event.detail.dates && event.detail.dates[0];
636
-
637
- if (this._calendar.selectedDates.indexOf(iNewValue) !== -1) {
638
- this.closePicker();
639
- return false;
640
- }
641
-
642
- const fireChange = this._handleCalendarSelectedDatesChange(event, iNewValue);
643
-
644
- if (fireChange) {
645
- this.fireEvent("change", { value: this.value, valid: true });
646
- // Angular two way data binding
647
- this.fireEvent("value-changed", { value: this.value, valid: true });
648
- }
705
+ /**
706
+ * The user selected a new date in the calendar
707
+ * @param event
708
+ * @protected
709
+ */
710
+ onSelectedDatesChange(event) {
711
+ event.preventDefault();
712
+ const newValue = event.detail.values && event.detail.values[0];
713
+ this._updateValueAndFireEvents(newValue, true, ["change", "value-changed"]);
649
714
 
650
715
  this.closePicker();
651
716
  }
652
717
 
653
- _handleCalendarSelectedDatesChange(event, newValue) {
654
- this._updateValueCalendarSelectedDatesChange(newValue);
655
-
656
- this._calendar.timestamp = newValue;
657
- this._calendar.selectedDates = event.detail.dates;
658
- this._focusInputAfterClose = true;
659
-
660
- if (this.isInValidRange(this._getTimeStampFromString(this.value))) {
661
- this.valueState = ValueState.None;
662
- } else {
663
- this.valueState = ValueState.Error;
664
- }
718
+ /**
719
+ * The user clicked the "month" button in the header
720
+ */
721
+ onHeaderShowMonthPress() {
722
+ this._calendarCurrentPicker = "month";
723
+ }
665
724
 
666
- return true;
725
+ /**
726
+ * The user clicked the "year" button in the header
727
+ */
728
+ onHeaderShowYearPress() {
729
+ this._calendarCurrentPicker = "year";
667
730
  }
668
731
 
669
- _updateValueCalendarSelectedDatesChange(newValue) {
670
- this.value = this.getFormat().format(
671
- new Date(CalendarDate.fromTimestamp(
672
- newValue * 1000,
673
- this._primaryCalendarType
674
- ).valueOf()),
675
- true
676
- );
732
+ /**
733
+ * Formats a Java Script date object into a string representing a locale date
734
+ * according to the <code>formatPattern</code> property of the DatePicker instance
735
+ * @param {object} date A Java Script date object to be formatted as string
736
+ * @returns {string} The date as string
737
+ * @public
738
+ */
739
+ formatValue(date) {
740
+ return this.getFormat().format(date);
677
741
  }
678
742
 
679
743
  /**
@@ -686,51 +750,29 @@ class DatePicker extends UI5Element {
686
750
 
687
751
  /**
688
752
  * Opens the picker.
689
- * @param {object} options A JSON object with additional configuration.<br>
690
- * <code>{ focusInput: true }</code> By default, the focus goes in the picker after opening it.
691
- * Specify this option to focus the input field.
692
753
  * @public
754
+ * @async
755
+ * @returns {Promise} Resolves when the picker is open
693
756
  */
694
- async openPicker(options) {
757
+ async openPicker() {
695
758
  this._isPickerOpen = true;
759
+ this._calendarCurrentPicker = "day";
696
760
  this.responsivePopover = await this._respPopover();
697
- this._changeCalendarSelection();
698
-
699
- if (options && options.focusInput) {
700
- this._focusInputAfterOpen = true;
701
- }
702
761
 
703
- this.responsivePopover.open(this);
762
+ this.responsivePopover.showAt(this);
704
763
  }
705
764
 
706
765
  togglePicker() {
707
766
  if (this.isOpen()) {
708
767
  this.closePicker();
709
768
  } else if (this._canOpenPicker()) {
710
- this.updateStaticAreaItemContentDensity();
711
769
  this.openPicker();
712
770
  }
713
771
  }
714
772
 
715
- _changeCalendarSelection(focusTimestamp) {
716
- if (this._calendarDate.getYear() < 1) {
717
- // 0 is a valid year, but we cannot display it
718
- return;
719
- }
720
-
721
- const oCalDate = this._calendarDate;
722
- const timestamp = focusTimestamp || oCalDate.valueOf() / 1000;
723
-
724
- this._calendar = Object.assign({}, this._calendar);
725
- this._calendar.timestamp = timestamp;
726
- if (this.value) {
727
- this._calendar.selectedDates = [timestamp];
728
- }
729
- }
730
-
731
773
  /**
732
774
  * Checks if the picker is open.
733
- * @returns {Boolean} true if the picker is open, false otherwise
775
+ * @returns {boolean} true if the picker is open, false otherwise
734
776
  * @public
735
777
  */
736
778
  isOpen() {
@@ -738,30 +780,18 @@ class DatePicker extends UI5Element {
738
780
  }
739
781
 
740
782
  /**
741
- * Gets some semantic details about an event originated in the control.
742
- * @param {*} event An event object
743
- * @returns {Object} Semantic details
744
- */
745
- getSemanticTargetInfo(event) {
746
- const oDomTarget = getDomTarget(event);
747
- let isInput = false;
748
-
749
- if (oDomTarget && oDomTarget.className.indexOf("ui5-input-inner") > -1) {
750
- isInput = true;
751
- }
752
-
753
- return { isInput };
754
- }
755
-
756
- /**
757
- * Currently selected date represented as JavaScript Date instance.
783
+ * Currently selected date represented as a Local JavaScript Date instance.
758
784
  *
759
785
  * @readonly
760
786
  * @type { Date }
761
787
  * @public
762
788
  */
763
789
  get dateValue() {
764
- return this.getFormat().parse(this.value);
790
+ return this.liveValue ? this.getFormat().parse(this.liveValue) : this.getFormat().parse(this.value);
791
+ }
792
+
793
+ get dateValueUTC() {
794
+ return this.liveValue ? this.getFormat().parse(this.liveValue, true) : this.getFormat().parse(this.value);
765
795
  }
766
796
 
767
797
  get styles() {
@@ -776,33 +806,18 @@ class DatePicker extends UI5Element {
776
806
  return InputType.Text;
777
807
  }
778
808
 
779
- static async onDefine() {
780
- await Promise.all([
781
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
782
- Icon.define(),
783
- ResponsivePopover.define(),
784
- Calendar.define(),
785
- Input.define(),
786
- fetchI18nBundle("@ui5/webcomponents"),
787
- ]);
809
+ static get dependencies() {
810
+ return [
811
+ Icon,
812
+ ResponsivePopover,
813
+ Calendar,
814
+ CalendarDateComponent.default,
815
+ Input,
816
+ Button,
817
+ ];
788
818
  }
789
819
  }
790
820
 
791
- const getDomTarget = event => {
792
- let target,
793
- composedPath;
794
-
795
- if (typeof event.composedPath === "function") {
796
- composedPath = event.composedPath();
797
- }
798
-
799
- if (Array.isArray(composedPath) && composedPath.length) {
800
- target = composedPath[0];
801
- }
802
-
803
- return target;
804
- };
805
-
806
821
  DatePicker.define();
807
822
 
808
823
  export default DatePicker;