@ui5/webcomponents 0.0.0-d849bec2c → 0.0.0-dc3ccac50

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 +552 -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 +141 -37
  13. package/dist/Button.js +120 -68
  14. package/dist/Calendar.js +341 -545
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +127 -56
  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 +267 -98
  21. package/dist/CheckBox.js +146 -58
  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 +599 -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 -4
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +392 -409
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +106 -384
  35. package/dist/DayPicker.js +508 -430
  36. package/dist/Dialog.js +496 -44
  37. package/dist/DurationPicker.js +135 -400
  38. package/dist/FileUploader.js +208 -26
  39. package/dist/GroupHeaderListItem.js +24 -14
  40. package/dist/Icon.js +140 -46
  41. package/dist/Input.js +613 -162
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -17
  44. package/dist/Link.js +123 -29
  45. package/dist/List.js +425 -94
  46. package/dist/ListItem.js +88 -19
  47. package/dist/ListItemBase.js +27 -5
  48. package/dist/MessageStrip.js +50 -65
  49. package/dist/MonthPicker.js +180 -182
  50. package/dist/MultiComboBox.js +569 -156
  51. package/dist/MultiComboBoxItem.js +8 -2
  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 +252 -139
  56. package/dist/Popup.js +364 -90
  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 +67 -53
  63. package/dist/SegmentedButton.js +109 -73
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +441 -108
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +44 -13
  69. package/dist/StepInput.js +681 -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 +59 -42
  74. package/dist/Tab.js +55 -24
  75. package/dist/TabContainer.js +142 -62
  76. package/dist/TabSeparator.js +1 -0
  77. package/dist/Table.js +475 -22
  78. package/dist/TableCell.js +11 -9
  79. package/dist/TableColumn.js +13 -3
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +235 -10
  82. package/dist/TextArea.js +139 -41
  83. package/dist/TimePicker.js +55 -675
  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 -8
  89. package/dist/Token.js +84 -47
  90. package/dist/Tokenizer.js +242 -60
  91. package/dist/Tree.js +137 -51
  92. package/dist/TreeItem.js +44 -9
  93. package/dist/TreeListItem.js +127 -7
  94. package/dist/WheelSlider.js +76 -56
  95. package/dist/YearPicker.js +198 -254
  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 +247 -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 -87
  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 -6
  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 -9
  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 +8 -17
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -5
  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 +4 -4
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -9
  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 -9
  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 -20
  219. package/dist/generated/templates/StepInputTemplate.lit.js +8 -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 -13
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +8 -21
  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 -11
  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 -7
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -8
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +6 -6
  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 +18 -16
  245. package/dist/generated/templates/TreeTemplate.lit.js +5 -5
  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 +5 -5
  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 +5 -5
  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 +5 -5
  333. package/dist/generated/themes/TreeListItem.css.js +5 -5
  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 +49 -15
  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 +1 -1
  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 +1 -1
  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 -7
  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 +226 -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 +77 -0
  574. package/src/StepInput.js +681 -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 +261 -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 -10
  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,8 @@ 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",
40
47
  managedSlots: true,
41
48
  properties: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
42
49
  /**
@@ -51,7 +58,7 @@ const metadata = {
51
58
  },
52
59
 
53
60
  /**
54
- * Defines the value state of the <code>ui5-datepicker</code>.
61
+ * Defines the value state of the component.
55
62
  * <br><br>
56
63
  * Available options are:
57
64
  * <ul>
@@ -72,64 +79,19 @@ const metadata = {
72
79
  },
73
80
 
74
81
  /**
75
- * Determines the format, displayed in the input field.
82
+ * Defines whether the component is required.
76
83
  *
77
- * @type {string}
78
- * @defaultvalue ""
79
- * @public
80
- */
81
- formatPattern: {
82
- type: String,
83
- },
84
-
85
- /**
86
- * Determines the minimum date available for selection.
87
- *
88
- * @type {string}
89
- * @defaultvalue ""
90
- * @since 1.0.0-rc.6
91
- * @public
92
- */
93
- minDate: {
94
- type: String,
95
- },
96
-
97
- /**
98
- * Determines the maximum date available for selection.
99
- *
100
- * @type {string}
101
- * @defaultvalue ""
102
- * @since 1.0.0-rc.6
103
- * @public
104
- */
105
- maxDate: {
106
- type: String,
107
- },
108
-
109
- /**
110
- * Determines the calendar type.
111
- * The input value is formated according to the calendar type
112
- * and the picker shows the months and years from the specified calendar.
113
- * <br><br>
114
- * Available options are:
115
- * <ul>
116
- * <li><code>Gregorian</code></li>
117
- * <li><code>Islamic</code></li>
118
- * <li><code>Japanese</code></li>
119
- * <li><code>Buddhist</code></li>
120
- * <li><code>Persian</code></li>
121
- * </ul>
122
- *
123
- * @type {CalendarType}
124
- * @defaultvalue "Gregorian"
84
+ * @since 1.0.0-rc.9
85
+ * @type {boolean}
86
+ * @defaultvalue false
125
87
  * @public
126
88
  */
127
- primaryCalendarType: {
128
- type: CalendarType,
89
+ required: {
90
+ type: Boolean,
129
91
  },
130
92
 
131
93
  /**
132
- * Determines whether the <code>ui5-datepicker</code> is displayed as disabled.
94
+ * Determines whether the component is displayed as disabled.
133
95
  *
134
96
  * @type {boolean}
135
97
  * @defaultvalue false
@@ -140,7 +102,7 @@ const metadata = {
140
102
  },
141
103
 
142
104
  /**
143
- * Determines whether the <code>ui5-datepicker</code> is displayed as read-only.
105
+ * Determines whether the component is displayed as read-only.
144
106
  *
145
107
  * @type {boolean}
146
108
  * @defaultvalue false
@@ -152,11 +114,11 @@ const metadata = {
152
114
 
153
115
  /**
154
116
  * Defines a short hint, intended to aid the user with data entry when the
155
- * <code>ui5-datepicker</code> has no value.
117
+ * component has no value.
156
118
  *
157
119
  * <br><br>
158
120
  * <b>Note:</b> When no placeholder is set, the format pattern is displayed as a placeholder.
159
- * 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.
160
122
  *
161
123
  * @type {string}
162
124
  * @defaultvalue undefined
@@ -168,7 +130,7 @@ const metadata = {
168
130
  },
169
131
 
170
132
  /**
171
- * 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.
172
134
  *
173
135
  * <br><br>
174
136
  * <b>Important:</b> For the <code>name</code> property to have effect, you must add the following import to your project:
@@ -176,7 +138,7 @@ const metadata = {
176
138
  *
177
139
  * <br><br>
178
140
  * <b>Note:</b> When set, a native <code>input</code> HTML element
179
- * 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
180
142
  * part of an HTML form. Do not use this property unless you need to submit a form.
181
143
  *
182
144
  * @type {string}
@@ -187,6 +149,46 @@ const metadata = {
187
149
  type: String,
188
150
  },
189
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
+
190
192
  _isPickerOpen: {
191
193
  type: Boolean,
192
194
  noAttribute: true,
@@ -196,20 +198,21 @@ const metadata = {
196
198
  type: Object,
197
199
  },
198
200
 
199
- _calendar: {
200
- type: Object,
201
+ _calendarCurrentPicker: {
202
+ type: String,
203
+ defaultValue: "day",
201
204
  },
202
205
  },
203
206
 
204
207
  slots: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
205
208
  /**
206
- * Defines the value state message that will be displayed as pop up under the <code>ui5-datepicker</code>.
209
+ * Defines the value state message that will be displayed as pop up under the component.
207
210
  * <br><br>
208
211
  *
209
212
  * <b>Note:</b> If not specified, a default text (in the respective language) will be displayed.
210
213
  * <br>
211
214
  * <b>Note:</b> The <code>valueStateMessage</code> would be displayed,
212
- * when the <code>ui5-datepicker</code> is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
215
+ * when the component is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
213
216
  * @type {HTMLElement}
214
217
  * @since 1.0.0-rc.7
215
218
  * @slot
@@ -218,6 +221,17 @@ const metadata = {
218
221
  valueStateMessage: {
219
222
  type: HTMLElement,
220
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
+ },
221
235
  },
222
236
 
223
237
  events: /** @lends sap.ui.webcomponents.main.DatePicker.prototype */ {
@@ -226,17 +240,41 @@ const metadata = {
226
240
  * Fired when the input operation has finished by pressing Enter or on focusout.
227
241
  *
228
242
  * @event
243
+ * @allowPreventDefault
229
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.
230
247
  */
231
- change: {},
248
+ change: {
249
+ details: {
250
+ value: {
251
+ type: String,
252
+ },
253
+ valid: {
254
+ type: Boolean,
255
+ },
256
+ },
257
+ },
232
258
 
233
259
  /**
234
- * 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.
235
261
  *
236
262
  * @event
263
+ * @allowPreventDefault
237
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.
238
267
  */
239
- input: {},
268
+ input: {
269
+ details: {
270
+ value: {
271
+ type: String,
272
+ },
273
+ valid: {
274
+ type: Boolean,
275
+ },
276
+ },
277
+ },
240
278
  },
241
279
  };
242
280
 
@@ -245,8 +283,8 @@ const metadata = {
245
283
  *
246
284
  * <h3 class="comment-api-title">Overview</h3>
247
285
  *
248
- * The <code>ui5-datepicker</code> component provides an input field with assigned calendar which opens on user action.
249
- * 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,
250
288
  * mouse, or keyboard input. It consists of two parts: the date input field and the
251
289
  * date picker.
252
290
  *
@@ -258,7 +296,7 @@ const metadata = {
258
296
  * <li>Typing it in directly in the input field</li>
259
297
  * </ul>
260
298
  * <br><br>
261
- * 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.
262
300
  * When the user directly triggers the calendar display, the actual date is displayed.
263
301
  *
264
302
  * <h3>Formatting</h3>
@@ -273,14 +311,50 @@ const metadata = {
273
311
  * a valid value string is "2015-07-30" and the same is displayed in the input.
274
312
  *
275
313
  * <h3>Keyboard Handling</h3>
276
- * The <code>ui5-datepicker</code> provides advanced keyboard handling.
277
- * 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,
278
316
  * you can open or close the drop-down by pressing <code>F4</code>, <code>ALT+UP</code> or <code>ALT+DOWN</code> keys.
279
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
280
318
  * to navigate through the dates and select one by pressing the <code>Space</code> or <code>Enter</code> keys. Moreover you can
281
319
  * use TAB to reach the buttons for changing month and year.
282
320
  * <br>
283
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
+ *
284
358
  * <h3>ES6 Module Import</h3>
285
359
  *
286
360
  * <code>import "@ui5/webcomponents/dist/DatePicker";</code>
@@ -288,19 +362,15 @@ const metadata = {
288
362
  * @constructor
289
363
  * @author SAP SE
290
364
  * @alias sap.ui.webcomponents.main.DatePicker
291
- * @extends sap.ui.webcomponents.base.UI5Element
292
- * @tagname ui5-datepicker
365
+ * @extends DateComponentBase
366
+ * @tagname ui5-date-picker
293
367
  * @public
294
368
  */
295
- class DatePicker extends UI5Element {
369
+ class DatePicker extends DateComponentBase {
296
370
  static get metadata() {
297
371
  return metadata;
298
372
  }
299
373
 
300
- static get render() {
301
- return litRender;
302
- }
303
-
304
374
  static get template() {
305
375
  return DatePickerTemplate;
306
376
  }
@@ -317,164 +387,204 @@ class DatePicker extends UI5Element {
317
387
  return [ResponsivePopoverCommonCss, datePickerPopoverCss];
318
388
  }
319
389
 
320
- constructor() {
321
- 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
+ }
322
401
 
323
- this._respPopoverConfig = {
324
- allowTargetOverlap: true,
325
- stayOpenOnScroll: true,
326
- afterClose: () => {
327
- 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
+ });
328
408
 
329
- if (isPhone()) {
330
- // close device's keyboard and prevent further typing
331
- this.blur();
332
- } else if (this._focusInputAfterClose) {
333
- this._getInput().focus();
334
- this._focusInputAfterClose = false;
335
- }
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
+ }
336
415
 
337
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
338
- if (calendar) {
339
- calendar._hideMonthPicker();
340
- calendar._hideYearPicker();
341
- }
342
- },
343
- afterOpen: () => {
344
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
416
+ this.liveValue = this.value;
417
+ }
345
418
 
346
- if (!calendar) {
347
- return;
348
- }
419
+ /**
420
+ * Override in derivatives to change calendar selection mode
421
+ * @returns {string}
422
+ * @protected
423
+ */
424
+ get _calendarSelectionMode() {
425
+ return "Single";
426
+ }
349
427
 
350
- const dayPicker = calendar.shadowRoot.querySelector(`#${calendar._id}-daypicker`);
351
- const selectedDay = dayPicker.shadowRoot.querySelector(".ui5-dp-item--selected");
352
- const today = dayPicker.shadowRoot.querySelector(".ui5-dp-item--now");
353
- let focusableDay = selectedDay || today;
354
- if (!selectedDay && (this.minDate || this.maxDate) && !this.isInValidRange((new Date().getTime()))) {
355
- focusableDay = this.findFirstFocusableDay(dayPicker);
356
- }
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
+ }
357
439
 
358
- if (this._focusInputAfterOpen) {
359
- this._focusInputAfterOpen = false;
360
- this._getInput().focus();
361
- } else if (focusableDay) {
362
- focusableDay.focus();
440
+ return getTodayUTCTimestamp(this._primaryCalendarType);
441
+ }
363
442
 
364
- let focusableDayIdx = parseInt(focusableDay.getAttribute("data-sap-index"));
365
- const focusableItem = dayPicker.focusableDays.find(item => parseInt(item._index) === focusableDayIdx);
366
- focusableDayIdx = focusableItem ? dayPicker.focusableDays.indexOf(focusableItem) : focusableDayIdx;
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
+ }
367
452
 
368
- dayPicker._itemNav.current = focusableDayIdx;
369
- dayPicker._itemNav.update();
453
+ return [];
454
+ }
455
+
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();
370
462
  }
371
- },
372
- };
463
+ } else {
464
+ this._toggleAndFocusInput();
465
+ }
466
+ }
373
467
 
374
- this._calendar = {
375
- onSelectedDatesChange: this._handleCalendarChange.bind(this),
376
- selectedDates: [],
377
- };
468
+ if (this.isOpen()) {
469
+ return;
470
+ }
378
471
 
379
- 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
+ }
380
491
  }
381
492
 
382
- findFirstFocusableDay(daypicker) {
383
- const today = new Date();
384
- if (!this.isInValidRange(today.getTime())) {
385
- const focusableItems = Array.from(daypicker.shadowRoot.querySelectorAll(".ui5-dp-item"));
386
- 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;
387
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"]);
388
507
  }
389
508
 
390
- onBeforeRendering() {
391
- this._calendar.primaryCalendarType = this._primaryCalendarType;
392
- this._calendar.formatPattern = this._formatPattern;
509
+ _updateValueAndFireEvents(value, normalizeValue, events, updateValue = true) {
510
+ const valid = this._checkValueValidity(value);
393
511
 
394
- if (this.minDate && !this.isValid(this.minDate)) {
395
- this.minDate = null;
396
- 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
397
514
  }
398
515
 
399
- if (this.maxDate && !this.isValid(this.maxDate)) {
400
- this.maxDate = null;
401
- console.warn(`In order for the "maxDate" property to have effect, you should enter valid date format`); // eslint-disable-line
402
- }
403
- if (this.isValid(this.value) && this.isInValidRange(this._getTimeStampFromString(this.value))) {
404
- this._changeCalendarSelection();
405
- } else {
406
- this._calendar.selectedDates = [];
407
- }
516
+ let executeEvent = true;
517
+ this.liveValue = value;
408
518
 
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
- }
519
+ events.forEach(event => {
520
+ if (!this.fireEvent(event, { value, valid }, true)) {
521
+ executeEvent = false;
522
+ }
523
+ });
415
524
 
416
- if (this.minDate) {
417
- this._calendar.minDate = this.minDate;
525
+ if (!executeEvent) {
526
+ return;
418
527
  }
419
528
 
420
- if (this.maxDate) {
421
- 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
422
532
  }
423
533
  }
424
534
 
425
- _getTimeStampFromString(value) {
426
- const jsDate = this.getFormat().parse(value);
427
- if (jsDate) {
428
- const jsDateTimeNow = new Date(jsDate.getFullYear(), jsDate.getMonth(), jsDate.getDate());
429
- const oCalDate = CalendarDate.fromTimestamp(jsDateTimeNow.getTime(), this._primaryCalendarType);
430
- 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;
431
541
  }
432
- return undefined;
433
542
  }
434
543
 
435
- _onkeydown(event) {
436
- if (isShow(event)) {
437
- this.togglePicker();
438
- this._getInput().focus();
439
- }
544
+ _toggleAndFocusInput() {
545
+ this.togglePicker();
546
+ this._getInput().focus();
440
547
  }
441
548
 
442
549
  _getInput() {
443
- return this.shadowRoot.querySelector("ui5-input");
550
+ return this.shadowRoot.querySelector("[ui5-input]");
444
551
  }
445
552
 
446
- _handleInputChange() {
447
- let nextValue = this._getInput().getInputValue();
448
- const emptyValue = nextValue === "";
449
- const isValid = emptyValue || this.isValid(nextValue);
450
- const isInValidRange = this.isInValidRange(this._getTimeStampFromString(nextValue));
451
-
452
- if (isValid && isInValidRange) {
453
- nextValue = this.normalizeValue(nextValue);
454
- this.valueState = ValueState.None;
455
- } else {
456
- this.valueState = ValueState.Error;
457
- }
458
-
553
+ /**
554
+ * The ui5-input "submit" event handler - fire change event when the user presses enter
555
+ * @protected
556
+ */
557
+ _onInputSubmit(event) {}
459
558
 
460
- this.value = nextValue;
461
- this.fireEvent("change", { value: nextValue, valid: isValid });
462
- // Angular two way data binding
463
- 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"]);
464
565
  }
465
566
 
466
- _handleInputLiveChange() {
467
- const nextValue = this._getInput().getInputValue();
468
- const emptyValue = nextValue === "";
469
- 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
+ }
470
574
 
471
- this.value = nextValue;
472
- 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);
473
583
  }
474
584
 
475
585
  _click(event) {
476
586
  if (isPhone()) {
477
- this.responsivePopover.open(this);
587
+ this.responsivePopover.showAt(this);
478
588
  event.preventDefault(); // prevent immediate selection of any item
479
589
  }
480
590
  }
@@ -485,86 +595,53 @@ class DatePicker extends UI5Element {
485
595
  * @public
486
596
  */
487
597
  isValid(value = "") {
488
- return !!(value && this.getFormat().parse(value));
598
+ if (value === "") {
599
+ return true;
600
+ }
601
+
602
+ return !!this.getFormat().parse(value);
489
603
  }
490
604
 
491
605
  /**
492
- * Checks if a date is in range between minimum and maximum date.
493
- * @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}
494
609
  * @public
495
610
  */
496
611
  isInValidRange(value = "") {
497
- const pickedDate = new Date(value),
498
- minDate = this._minDate && new Date(this._minDate),
499
- maxDate = this._maxDate && new Date(this._maxDate);
500
-
501
- if (minDate && maxDate) {
502
- if (minDate <= pickedDate && maxDate >= pickedDate) {
503
- return true;
504
- }
505
- } else if (minDate && !maxDate) {
506
- if (minDate <= pickedDate) {
507
- return true;
508
- }
509
- } else if (maxDate && !minDate) {
510
- if (maxDate >= pickedDate) {
511
- return true;
512
- }
513
- } else if (!maxDate && !minDate) {
612
+ if (value === "") {
514
613
  return true;
515
614
  }
516
615
 
517
- return false;
616
+ const calendarDate = this._getCalendarDateFromString(value);
617
+ return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
518
618
  }
519
619
 
520
- // because the parser understands more than one format
521
- // but we need values in one format
620
+ /**
621
+ * The parser understands many formats, but we need one format
622
+ * @protected
623
+ */
522
624
  normalizeValue(value) {
523
625
  if (value === "") {
524
626
  return value;
525
627
  }
526
628
 
527
- return this.getFormat().format(this.getFormat().parse(value));
528
- }
529
-
530
- get validValue() {
531
- if (this.isValid(this.value)) {
532
- return this.value;
533
- }
534
- return this.getFormat().format(new Date());
535
- }
536
-
537
- get _calendarDate() {
538
- const millisecondsUTC = this.getFormat().parse(this.validValue, true).getTime();
539
- const oCalDate = CalendarDate.fromTimestamp(
540
- millisecondsUTC - (millisecondsUTC % (24 * 60 * 60 * 1000)),
541
- this._primaryCalendarType
542
- );
543
- return oCalDate;
544
- }
545
-
546
- get _primaryCalendarType() {
547
- return this.primaryCalendarType || getCalendarType() || LocaleData.getInstance(getLocale()).getPreferredCalendarType();
548
- }
549
-
550
- get _formatPattern() {
551
- return this.formatPattern || "medium"; // get from config
552
- }
553
-
554
- get _isPattern() {
555
- 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
556
630
  }
557
631
 
558
632
  get _displayFormat() {
559
633
  return this.getFormat().oFormatOptions.pattern;
560
634
  }
561
635
 
636
+ /**
637
+ * @protected
638
+ */
562
639
  get _placeholder() {
563
640
  return this.placeholder !== undefined ? this.placeholder : this._displayFormat;
564
641
  }
565
642
 
566
643
  get _headerTitleText() {
567
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
644
+ return DatePicker.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
568
645
  }
569
646
 
570
647
  get phone() {
@@ -579,49 +656,25 @@ class DatePicker extends UI5Element {
579
656
  return this.phone;
580
657
  }
581
658
 
582
- getFormat() {
583
- if (this._isPattern) {
584
- this._oDateFormat = DateFormat.getInstance({
585
- pattern: this._formatPattern,
586
- calendarType: this._primaryCalendarType,
587
- });
588
- } else {
589
- this._oDateFormat = DateFormat.getInstance({
590
- style: this._formatPattern,
591
- calendarType: this._primaryCalendarType,
592
- });
593
- }
594
- return this._oDateFormat;
659
+ get _isIE() {
660
+ return isIE();
595
661
  }
596
662
 
597
663
  get accInfo() {
598
664
  return {
599
- "ariaDescribedBy": `${this._id}-date`,
665
+ "ariaRoledescription": this.dateAriaDescription,
600
666
  "ariaHasPopup": "true",
601
667
  "ariaAutoComplete": "none",
602
668
  "role": "combobox",
603
- "ariaOwns": `${this._id}-responsive-popover`,
669
+ "ariaControls": `${this._id}-responsive-popover`,
604
670
  "ariaExpanded": this.isOpen(),
605
- "ariaDescription": this.dateAriaDescription,
671
+ "ariaRequired": this.required,
672
+ "ariaLabel": getEffectiveAriaLabelText(this),
606
673
  };
607
674
  }
608
675
 
609
- get _maxDate() {
610
- if (this.maxDate) {
611
- return this._getTimeStampFromString(this.maxDate);
612
- }
613
- return this.maxDate;
614
- }
615
-
616
- get _minDate() {
617
- if (this.minDate) {
618
- return this._getTimeStampFromString(this.minDate);
619
- }
620
- return this.minDate;
621
- }
622
-
623
676
  get openIconTitle() {
624
- return this.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
677
+ return DatePicker.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
625
678
  }
626
679
 
627
680
  get openIconName() {
@@ -629,11 +682,7 @@ class DatePicker extends UI5Element {
629
682
  }
630
683
 
631
684
  get dateAriaDescription() {
632
- return this.i18nBundle.getText(DATEPICKER_DATE_ACC_TEXT);
633
- }
634
-
635
- get dir() {
636
- return getRTL() ? "rtl" : "ltr";
685
+ return DatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);
637
686
  }
638
687
 
639
688
  /**
@@ -646,66 +695,49 @@ class DatePicker extends UI5Element {
646
695
 
647
696
  async _respPopover() {
648
697
  const staticAreaItem = await this.getStaticAreaItemDomRef();
649
- return staticAreaItem.querySelector("ui5-responsive-popover");
698
+ return staticAreaItem.querySelector("[ui5-responsive-popover]");
650
699
  }
651
700
 
652
701
  _canOpenPicker() {
653
702
  return !this.disabled && !this.readonly;
654
703
  }
655
704
 
656
- _handleCalendarChange(event) {
657
- const iNewValue = event.detail.dates && event.detail.dates[0];
658
-
659
- if (this._calendar.selectedDates.indexOf(iNewValue) !== -1) {
660
- this.closePicker();
661
- return false;
662
- }
663
-
664
- const fireChange = this._handleCalendarSelectedDatesChange(event, iNewValue);
665
-
666
- if (fireChange) {
667
- this.fireEvent("change", { value: this.value, valid: true });
668
- // Angular two way data binding
669
- this.fireEvent("value-changed", { value: this.value, valid: true });
670
- }
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"]);
671
714
 
672
715
  this.closePicker();
673
716
  }
674
717
 
675
- _handleCalendarSelectedDatesChange(event, newValue) {
676
- this._updateValueCalendarSelectedDatesChange(newValue);
677
-
678
- this._calendar.timestamp = newValue;
679
- this._calendar.selectedDates = event.detail.dates;
680
- this._focusInputAfterClose = true;
681
-
682
- if (this.isInValidRange(this._getTimeStampFromString(this.value))) {
683
- this.valueState = ValueState.None;
684
- } else {
685
- this.valueState = ValueState.Error;
686
- }
687
-
688
- return true;
718
+ /**
719
+ * The user clicked the "month" button in the header
720
+ */
721
+ onHeaderShowMonthPress() {
722
+ this._calendarCurrentPicker = "month";
689
723
  }
690
724
 
691
- _updateValueCalendarSelectedDatesChange(newValue) {
692
- this.value = this.getFormat().format(
693
- new Date(CalendarDate.fromTimestamp(
694
- newValue * 1000,
695
- this._primaryCalendarType
696
- ).valueOf()),
697
- true
698
- );
725
+ /**
726
+ * The user clicked the "year" button in the header
727
+ */
728
+ onHeaderShowYearPress() {
729
+ this._calendarCurrentPicker = "year";
699
730
  }
700
731
 
701
732
  /**
702
733
  * Formats a Java Script date object into a string representing a locale date
703
734
  * according to the <code>formatPattern</code> property of the DatePicker instance
704
- * @param {object} oDate A Java Script date object to be formatted as string
735
+ * @param {object} date A Java Script date object to be formatted as string
736
+ * @returns {string} The date as string
705
737
  * @public
706
738
  */
707
- formatValue(oDate) {
708
- return this.getFormat().format(oDate);
739
+ formatValue(date) {
740
+ return this.getFormat().format(date);
709
741
  }
710
742
 
711
743
  /**
@@ -718,51 +750,29 @@ class DatePicker extends UI5Element {
718
750
 
719
751
  /**
720
752
  * Opens the picker.
721
- * @param {object} options A JSON object with additional configuration.<br>
722
- * <code>{ focusInput: true }</code> By default, the focus goes in the picker after opening it.
723
- * Specify this option to focus the input field.
724
753
  * @public
754
+ * @async
755
+ * @returns {Promise} Resolves when the picker is open
725
756
  */
726
- async openPicker(options) {
757
+ async openPicker() {
727
758
  this._isPickerOpen = true;
759
+ this._calendarCurrentPicker = "day";
728
760
  this.responsivePopover = await this._respPopover();
729
- this._changeCalendarSelection();
730
-
731
- if (options && options.focusInput) {
732
- this._focusInputAfterOpen = true;
733
- }
734
761
 
735
- this.responsivePopover.open(this);
762
+ this.responsivePopover.showAt(this);
736
763
  }
737
764
 
738
765
  togglePicker() {
739
766
  if (this.isOpen()) {
740
767
  this.closePicker();
741
768
  } else if (this._canOpenPicker()) {
742
- this.updateStaticAreaItemContentDensity();
743
769
  this.openPicker();
744
770
  }
745
771
  }
746
772
 
747
- _changeCalendarSelection(focusTimestamp) {
748
- if (this._calendarDate.getYear() < 1) {
749
- // 0 is a valid year, but we cannot display it
750
- return;
751
- }
752
-
753
- const oCalDate = this._calendarDate;
754
- const timestamp = focusTimestamp || oCalDate.valueOf() / 1000;
755
-
756
- this._calendar = Object.assign({}, this._calendar);
757
- this._calendar.timestamp = timestamp;
758
- if (this.value) {
759
- this._calendar.selectedDates = [timestamp];
760
- }
761
- }
762
-
763
773
  /**
764
774
  * Checks if the picker is open.
765
- * @returns {Boolean} true if the picker is open, false otherwise
775
+ * @returns {boolean} true if the picker is open, false otherwise
766
776
  * @public
767
777
  */
768
778
  isOpen() {
@@ -770,30 +780,18 @@ class DatePicker extends UI5Element {
770
780
  }
771
781
 
772
782
  /**
773
- * Gets some semantic details about an event originated in the control.
774
- * @param {*} event An event object
775
- * @returns {Object} Semantic details
776
- */
777
- getSemanticTargetInfo(event) {
778
- const oDomTarget = getDomTarget(event);
779
- let isInput = false;
780
-
781
- if (oDomTarget && oDomTarget.className.indexOf("ui5-input-inner") > -1) {
782
- isInput = true;
783
- }
784
-
785
- return { isInput };
786
- }
787
-
788
- /**
789
- * Currently selected date represented as JavaScript Date instance.
783
+ * Currently selected date represented as a Local JavaScript Date instance.
790
784
  *
791
785
  * @readonly
792
786
  * @type { Date }
793
787
  * @public
794
788
  */
795
789
  get dateValue() {
796
- 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);
797
795
  }
798
796
 
799
797
  get styles() {
@@ -808,33 +806,18 @@ class DatePicker extends UI5Element {
808
806
  return InputType.Text;
809
807
  }
810
808
 
811
- static async onDefine() {
812
- await Promise.all([
813
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
814
- Icon.define(),
815
- ResponsivePopover.define(),
816
- Calendar.define(),
817
- Input.define(),
818
- fetchI18nBundle("@ui5/webcomponents"),
819
- ]);
809
+ static get dependencies() {
810
+ return [
811
+ Icon,
812
+ ResponsivePopover,
813
+ Calendar,
814
+ CalendarDateComponent.default,
815
+ Input,
816
+ Button,
817
+ ];
820
818
  }
821
819
  }
822
820
 
823
- const getDomTarget = event => {
824
- let target,
825
- composedPath;
826
-
827
- if (typeof event.composedPath === "function") {
828
- composedPath = event.composedPath();
829
- }
830
-
831
- if (Array.isArray(composedPath) && composedPath.length) {
832
- target = composedPath[0];
833
- }
834
-
835
- return target;
836
- };
837
-
838
821
  DatePicker.define();
839
822
 
840
823
  export default DatePicker;