@ui5/webcomponents 1.0.0-rc.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (729) hide show
  1. package/CHANGELOG.md +816 -1
  2. package/README.md +144 -41
  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 +222 -37
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +44 -22
  10. package/dist/Breadcrumbs.js +573 -0
  11. package/dist/BreadcrumbsItem.js +103 -0
  12. package/dist/BusyIndicator.js +172 -17
  13. package/dist/Button.js +148 -35
  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 +432 -78
  21. package/dist/CheckBox.js +150 -50
  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 +626 -90
  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 +446 -382
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +430 -0
  35. package/dist/DayPicker.js +509 -431
  36. package/dist/Dialog.js +498 -51
  37. package/dist/DurationPicker.js +312 -0
  38. package/dist/FileUploader.js +222 -29
  39. package/dist/GroupHeaderListItem.js +32 -8
  40. package/dist/Icon.js +197 -36
  41. package/dist/Input.js +689 -170
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +139 -29
  45. package/dist/List.js +514 -111
  46. package/dist/ListItem.js +124 -20
  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 +589 -202
  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 +118 -36
  55. package/dist/Popover.js +286 -234
  56. package/dist/Popup.js +381 -284
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +133 -53
  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 +82 -40
  63. package/dist/SegmentedButton.js +137 -51
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +478 -100
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +45 -22
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +38 -30
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +60 -42
  74. package/dist/Tab.js +181 -15
  75. package/dist/TabContainer.js +296 -230
  76. package/dist/TabSeparator.js +2 -1
  77. package/dist/Table.js +480 -35
  78. package/dist/TableCell.js +13 -15
  79. package/dist/TableColumn.js +18 -7
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +244 -18
  82. package/dist/TextArea.js +311 -36
  83. package/dist/TimePicker.js +56 -683
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +17 -10
  87. package/dist/Toast.js +25 -14
  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 +227 -77
  95. package/dist/YearPicker.js +199 -255
  96. package/dist/api.json +6871 -1
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +0 -1
  99. package/dist/features/InputSuggestions.js +273 -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 -5
  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 -14
  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 -5
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -13
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -4
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +12 -0
  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 -12
  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 -11
  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 -4
  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 -8
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -18
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +9 -0
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +11 -0
  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 +11 -0
  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 +6 -7
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +6 -7
  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 +6 -7
  255. package/dist/generated/themes/Button.css.js +6 -7
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +6 -7
  258. package/dist/generated/themes/CalendarHeader.css.js +6 -7
  259. package/dist/generated/themes/Card.css.js +6 -7
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +6 -7
  262. package/dist/generated/themes/CheckBox.css.js +6 -7
  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 +6 -7
  269. package/dist/generated/themes/ComboBoxPopover.css.js +6 -7
  270. package/dist/generated/themes/CustomListItem.css.js +6 -7
  271. package/dist/generated/themes/DatePicker.css.js +6 -7
  272. package/dist/generated/themes/DatePickerPopover.css.js +6 -7
  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 +8 -0
  276. package/dist/generated/themes/DayPicker.css.js +6 -7
  277. package/dist/generated/themes/Dialog.css.js +6 -7
  278. package/dist/generated/themes/FileUploader.css.js +6 -7
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +6 -7
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +6 -7
  282. package/dist/generated/themes/Input.css.js +6 -7
  283. package/dist/generated/themes/InputIcon.css.js +6 -7
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +6 -7
  285. package/dist/generated/themes/Label.css.js +6 -7
  286. package/dist/generated/themes/Link.css.js +6 -7
  287. package/dist/generated/themes/List.css.js +6 -7
  288. package/dist/generated/themes/ListItem.css.js +6 -7
  289. package/dist/generated/themes/ListItemBase.css.js +6 -7
  290. package/dist/generated/themes/MessageStrip.css.js +6 -7
  291. package/dist/generated/themes/MonthPicker.css.js +6 -7
  292. package/dist/generated/themes/MultiComboBox.css.js +6 -7
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +6 -7
  295. package/dist/generated/themes/Popover.css.js +6 -7
  296. package/dist/generated/themes/Popup.css.js +6 -7
  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 +6 -7
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +6 -7
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +6 -7
  305. package/dist/generated/themes/SegmentedButton.css.js +6 -7
  306. package/dist/generated/themes/Select.css.js +6 -7
  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 +6 -7
  312. package/dist/generated/themes/Tab.css.js +6 -7
  313. package/dist/generated/themes/TabContainer.css.js +6 -7
  314. package/dist/generated/themes/TabInOverflow.css.js +8 -0
  315. package/dist/generated/themes/TabInStrip.css.js +8 -0
  316. package/dist/generated/themes/Table.css.js +6 -7
  317. package/dist/generated/themes/TableCell.css.js +6 -7
  318. package/dist/generated/themes/TableColumn.css.js +6 -7
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +6 -7
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +6 -7
  323. package/dist/generated/themes/TimePicker.css.js +6 -7
  324. package/dist/generated/themes/TimePickerPopover.css.js +6 -7
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +6 -7
  327. package/dist/generated/themes/Toast.css.js +6 -7
  328. package/dist/generated/themes/ToggleButton.css.js +6 -7
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +6 -7
  331. package/dist/generated/themes/Tokenizer.css.js +6 -7
  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 +6 -7
  335. package/dist/generated/themes/WheelSlider.css.js +6 -7
  336. package/dist/generated/themes/YearPicker.css.js +6 -7
  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 +103 -0
  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 +40 -0
  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 +573 -0
  462. package/src/BreadcrumbsItem.js +103 -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 +530 -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 +521 -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 -82
  719. package/dist/TimelineItem.js +0 -161
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  722. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  723. package/dist/generated/themes/ComboBoxItem.css.js +0 -9
  724. package/dist/generated/themes/TabContainerPopup.css.js +0 -9
  725. package/dist/generated/themes/Timeline.css.js +0 -9
  726. package/dist/generated/themes/TimelineItem.css.js +0 -9
  727. package/dist/popup-utils/PopupUtils.js +0 -55
  728. package/dist/types/AvatarFitType.js +0 -40
  729. 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>
@@ -61,7 +69,7 @@ const metadata = {
61
69
  * <li><code>Information</code></li>
62
70
  * </ul>
63
71
  *
64
- * @type {string}
72
+ * @type {ValueState}
65
73
  * @defaultvalue "None"
66
74
  * @public
67
75
  */
@@ -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 {string}
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,159 +384,207 @@ class DatePicker extends UI5Element {
293
384
  }
294
385
 
295
386
  static get staticAreaStyles() {
296
- return [datePickerPopoverCss, ResponsivePopoverCommonCss];
387
+ return [ResponsivePopoverCommonCss, datePickerPopoverCss];
388
+ }
389
+
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
+ }
297
400
  }
298
401
 
299
- constructor() {
300
- super();
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
+ });
301
408
 
302
- this._respPopoverConfig = {
303
- allowTargetOverlap: true,
304
- stayOpenOnScroll: true,
305
- afterClose: () => {
306
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
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
+ }
307
415
 
308
- this._isPickerOpen = false;
416
+ this.liveValue = this.value;
417
+ }
309
418
 
310
- if (isPhone()) {
311
- // close device's keyboard and prevent further typing
312
- this.blur();
313
- } else if (this._focusInputAfterClose) {
314
- this._getInput().focus();
315
- this._focusInputAfterClose = false;
316
- }
419
+ /**
420
+ * Override in derivatives to change calendar selection mode
421
+ * @returns {string}
422
+ * @protected
423
+ */
424
+ get _calendarSelectionMode() {
425
+ return "Single";
426
+ }
317
427
 
318
- calendar._hideMonthPicker();
319
- calendar._hideYearPicker();
320
- },
321
- afterOpen: () => {
322
- const calendar = this.responsivePopover.querySelector(`#${this._id}-calendar`);
323
- const dayPicker = calendar.shadowRoot.querySelector(`#${calendar._id}-daypicker`);
324
-
325
- const selectedDay = dayPicker.shadowRoot.querySelector(".ui5-dp-item--selected");
326
- const today = dayPicker.shadowRoot.querySelector(".ui5-dp-item--now");
327
- let focusableDay = selectedDay || today;
328
- if (!selectedDay && (this.minDate || this.maxDate) && !this.isInValidRange((new Date().getTime()))) {
329
- focusableDay = this.findFirstFocusableDay(dayPicker);
330
- }
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
+ }
331
439
 
332
- if (this._focusInputAfterOpen) {
333
- this._focusInputAfterOpen = false;
334
- this._getInput().focus();
335
- } else if (focusableDay) {
336
- focusableDay.focus();
440
+ return getTodayUTCTimestamp(this._primaryCalendarType);
441
+ }
442
+
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
+ }
337
452
 
338
- let focusableDayIdx = parseInt(focusableDay.getAttribute("data-sap-index"));
339
- const focusableItem = dayPicker.focusableDays.find(item => parseInt(item._index) === focusableDayIdx);
340
- focusableDayIdx = focusableItem ? dayPicker.focusableDays.indexOf(focusableItem) : focusableDayIdx;
453
+ return [];
454
+ }
341
455
 
342
- dayPicker._itemNav.current = focusableDayIdx;
343
- 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();
344
462
  }
345
- },
346
- };
463
+ } else {
464
+ this._toggleAndFocusInput();
465
+ }
466
+ }
347
467
 
348
- this._calendar = {
349
- onSelectedDatesChange: this._handleCalendarSelectedDatesChange.bind(this),
350
- selectedDates: [],
351
- };
468
+ if (this.isOpen()) {
469
+ return;
470
+ }
352
471
 
353
- 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
+ }
354
491
  }
355
492
 
356
- findFirstFocusableDay(daypicker) {
357
- const today = new Date();
358
- if (!this.isInValidRange(today.getTime())) {
359
- const focusableItems = Array.from(daypicker.shadowRoot.querySelectorAll(".ui5-dp-item"));
360
- 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;
361
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"]);
362
507
  }
363
508
 
364
- onBeforeRendering() {
365
- this._calendar.primaryCalendarType = this._primaryCalendarType;
366
- this._calendar.formatPattern = this._formatPattern;
509
+ _updateValueAndFireEvents(value, normalizeValue, events, updateValue = true) {
510
+ const valid = this._checkValueValidity(value);
367
511
 
368
- if (this.minDate && !this.isValid(this.minDate)) {
369
- this.minDate = null;
370
- 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
371
514
  }
372
515
 
373
- if (this.maxDate && !this.isValid(this.maxDate)) {
374
- this.maxDate = null;
375
- console.warn(`In order for the "maxDate" property to have effect, you should enter valid date format`); // eslint-disable-line
376
- }
377
- if (this.isValid(this.value) && this.isInValidRange(this._getTimeStampFromString(this.value))) {
378
- this._changeCalendarSelection();
379
- } else {
380
- this._calendar.selectedDates = [];
381
- }
516
+ let executeEvent = true;
517
+ this.liveValue = value;
382
518
 
383
- const FormSupport = getFeature("FormSupport");
384
- if (FormSupport) {
385
- FormSupport.syncNativeHiddenInput(this);
386
- } else if (this.name) {
387
- console.warn(`In order for the "name" property to have effect, you should also: import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";`); // eslint-disable-line
388
- }
519
+ events.forEach(event => {
520
+ if (!this.fireEvent(event, { value, valid }, true)) {
521
+ executeEvent = false;
522
+ }
523
+ });
389
524
 
390
- if (this.minDate) {
391
- this._calendar.minDate = this.minDate;
525
+ if (!executeEvent) {
526
+ return;
392
527
  }
393
528
 
394
- if (this.maxDate) {
395
- 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
396
532
  }
397
533
  }
398
534
 
399
- _getTimeStampFromString(value) {
400
- if (this.getFormat().parse(value)) {
401
- const jsDate = new Date(this.getFormat().parse(value).getFullYear(), this.getFormat().parse(value).getMonth(), this.getFormat().parse(value).getDate());
402
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
403
- 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;
404
541
  }
405
- return undefined;
406
542
  }
407
543
 
408
- _onkeydown(event) {
409
- if (isShow(event)) {
410
- this.togglePicker();
411
- this._getInput().focus();
412
- }
544
+ _toggleAndFocusInput() {
545
+ this.togglePicker();
546
+ this._getInput().focus();
413
547
  }
414
548
 
415
549
  _getInput() {
416
- return this.shadowRoot.querySelector("ui5-input");
550
+ return this.shadowRoot.querySelector("[ui5-input]");
417
551
  }
418
552
 
419
- _handleInputChange() {
420
- let nextValue = this._getInput().getInputValue();
421
- const isValid = this.isValid(nextValue);
422
- const isInValidRange = this.isInValidRange(this._getTimeStampFromString(nextValue));
423
-
424
- if (isValid && isInValidRange) {
425
- nextValue = this.normalizeValue(nextValue);
426
- this.valueState = ValueState.None;
427
- } else {
428
- this.valueState = ValueState.Error;
429
- }
430
-
553
+ /**
554
+ * The ui5-input "submit" event handler - fire change event when the user presses enter
555
+ * @protected
556
+ */
557
+ _onInputSubmit(event) {}
431
558
 
432
- this.value = nextValue;
433
- this.fireEvent("change", { value: nextValue, valid: isValid });
434
- // Angular two way data binding
435
- 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"]);
436
565
  }
437
566
 
438
- _handleInputLiveChange() {
439
- const nextValue = this._getInput().getInputValue();
440
- const isValid = 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
+ }
441
574
 
442
- this.value = nextValue;
443
- 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);
444
583
  }
445
584
 
446
585
  _click(event) {
447
586
  if (isPhone()) {
448
- this.responsivePopover.open(this);
587
+ this.responsivePopover.showAt(this);
449
588
  event.preventDefault(); // prevent immediate selection of any item
450
589
  }
451
590
  }
@@ -456,175 +595,149 @@ class DatePicker extends UI5Element {
456
595
  * @public
457
596
  */
458
597
  isValid(value = "") {
459
- return !!(value && this.getFormat().parse(value));
598
+ if (value === "") {
599
+ return true;
600
+ }
601
+
602
+ return !!this.getFormat().parse(value);
460
603
  }
461
604
 
462
605
  /**
463
- * Checks if a date is in range between minimum and maximum date.
464
- * @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}
465
609
  * @public
466
610
  */
467
611
  isInValidRange(value = "") {
468
- const pickedDate = new Date(value),
469
- minDate = this._minDate && new Date(this._minDate),
470
- maxDate = this._maxDate && new Date(this._maxDate);
471
-
472
- if (minDate && maxDate) {
473
- if (minDate <= pickedDate && maxDate >= pickedDate) {
474
- return true;
475
- }
476
- } else if (minDate && !maxDate) {
477
- if (minDate <= pickedDate) {
478
- return true;
479
- }
480
- } else if (maxDate && !minDate) {
481
- if (maxDate >= pickedDate) {
482
- return true;
483
- }
484
- } else if (!maxDate && !minDate) {
612
+ if (value === "") {
485
613
  return true;
486
614
  }
487
615
 
488
- return false;
489
- }
490
-
491
- // because the parser understands more than one format
492
- // but we need values in one format
493
- normalizeValue(sValue) {
494
- return this.getFormat().format(this.getFormat().parse(sValue));
616
+ const calendarDate = this._getCalendarDateFromString(value);
617
+ return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
495
618
  }
496
619
 
497
- get validValue() {
498
- if (this.isValid(this.value)) {
499
- return this.value;
620
+ /**
621
+ * The parser understands many formats, but we need one format
622
+ * @protected
623
+ */
624
+ normalizeValue(value) {
625
+ if (value === "") {
626
+ return value;
500
627
  }
501
- return this.getFormat().format(new Date());
502
- }
503
628
 
504
- get _calendarDate() {
505
- const millisecondsUTC = this.getFormat().parse(this.validValue, true).getTime();
506
- const oCalDate = CalendarDate.fromTimestamp(
507
- millisecondsUTC - (millisecondsUTC % (24 * 60 * 60 * 1000)),
508
- this._primaryCalendarType
509
- );
510
- return oCalDate;
629
+ return this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC
511
630
  }
512
631
 
513
- get _primaryCalendarType() {
514
- return this.primaryCalendarType || getCalendarType() || LocaleData.getInstance(getLocale()).getPreferredCalendarType();
632
+ get _displayFormat() {
633
+ return this.getFormat().oFormatOptions.pattern;
515
634
  }
516
635
 
517
- get _formatPattern() {
518
- return this.formatPattern || "medium"; // get from config
636
+ /**
637
+ * @protected
638
+ */
639
+ get _placeholder() {
640
+ return this.placeholder !== undefined ? this.placeholder : this._displayFormat;
519
641
  }
520
642
 
521
- get _isPattern() {
522
- return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
643
+ get _headerTitleText() {
644
+ return DatePicker.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
523
645
  }
524
646
 
525
- get _displayFormat() {
526
- return this.getFormat().oFormatOptions.pattern;
647
+ get phone() {
648
+ return isPhone();
527
649
  }
528
650
 
529
- get _placeholder() {
530
- return this.placeholder !== undefined ? this.placeholder : this._displayFormat;
651
+ get showHeader() {
652
+ return this.phone;
531
653
  }
532
654
 
533
- get _headerTitleText() {
534
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
655
+ get showFooter() {
656
+ return this.phone;
535
657
  }
536
658
 
537
- getFormat() {
538
- if (this._isPattern) {
539
- this._oDateFormat = DateFormat.getInstance({
540
- pattern: this._formatPattern,
541
- calendarType: this._primaryCalendarType,
542
- });
543
- } else {
544
- this._oDateFormat = DateFormat.getInstance({
545
- style: this._formatPattern,
546
- calendarType: this._primaryCalendarType,
547
- });
548
- }
549
- return this._oDateFormat;
659
+ get _isIE() {
660
+ return isIE();
550
661
  }
551
662
 
552
663
  get accInfo() {
553
664
  return {
554
- "ariaDescribedBy": `${this._id}-date`,
665
+ "ariaRoledescription": this.dateAriaDescription,
555
666
  "ariaHasPopup": "true",
556
667
  "ariaAutoComplete": "none",
557
668
  "role": "combobox",
558
- "ariaOwns": `${this._id}-responsive-popover`,
669
+ "ariaControls": `${this._id}-responsive-popover`,
559
670
  "ariaExpanded": this.isOpen(),
560
- "ariaDescription": this.dateAriaDescription,
671
+ "ariaRequired": this.required,
672
+ "ariaLabel": getEffectiveAriaLabelText(this),
561
673
  };
562
674
  }
563
675
 
564
- get _maxDate() {
565
- if (this.maxDate) {
566
- return this._getTimeStampFromString(this.maxDate);
567
- }
568
- return this.maxDate;
569
- }
570
-
571
- get _minDate() {
572
- if (this.minDate) {
573
- return this._getTimeStampFromString(this.minDate);
574
- }
575
- return this.minDate;
676
+ get openIconTitle() {
677
+ return DatePicker.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
576
678
  }
577
679
 
578
- get openIconTitle() {
579
- return this.i18nBundle.getText(DATEPICKER_OPEN_ICON_TITLE);
680
+ get openIconName() {
681
+ return "appointment-2";
580
682
  }
581
683
 
582
684
  get dateAriaDescription() {
583
- return this.i18nBundle.getText(DATEPICKER_DATE_ACC_TEXT);
685
+ return DatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);
584
686
  }
585
687
 
586
- get dir() {
587
- return getRTL() ? "rtl" : "ltr";
688
+ /**
689
+ * Defines whether the dialog on mobile should have header
690
+ * @private
691
+ */
692
+ get _shouldHideHeader() {
693
+ return false;
588
694
  }
589
695
 
590
696
  async _respPopover() {
591
697
  const staticAreaItem = await this.getStaticAreaItemDomRef();
592
- return staticAreaItem.querySelector("ui5-responsive-popover");
698
+ return staticAreaItem.querySelector("[ui5-responsive-popover]");
593
699
  }
594
700
 
595
701
  _canOpenPicker() {
596
702
  return !this.disabled && !this.readonly;
597
703
  }
598
704
 
599
- _handleCalendarSelectedDatesChange(event) {
600
- const iNewValue = event.detail.dates && event.detail.dates[0];
601
-
602
- if (this._calendar.selectedDates.indexOf(iNewValue) !== -1) {
603
- this.closePicker();
604
- return;
605
- }
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"]);
606
714
 
607
- this.value = this.getFormat().format(
608
- new Date(CalendarDate.fromTimestamp(
609
- iNewValue * 1000,
610
- this._primaryCalendarType
611
- ).valueOf()),
612
- true
613
- );
614
- this._calendar.timestamp = iNewValue;
615
- this._calendar.selectedDates = event.detail.dates;
616
- this._focusInputAfterClose = true;
617
715
  this.closePicker();
716
+ }
618
717
 
619
- if (this.isInValidRange(this._getTimeStampFromString(this.value))) {
620
- this.valueState = ValueState.None;
621
- } else {
622
- this.valueState = ValueState.Error;
623
- }
718
+ /**
719
+ * The user clicked the "month" button in the header
720
+ */
721
+ onHeaderShowMonthPress() {
722
+ this._calendarCurrentPicker = "month";
723
+ }
624
724
 
625
- this.fireEvent("change", { value: this.value, valid: true });
626
- // Angular two way data binding
627
- this.fireEvent("value-changed", { value: this.value, valid: true });
725
+ /**
726
+ * The user clicked the "year" button in the header
727
+ */
728
+ onHeaderShowYearPress() {
729
+ this._calendarCurrentPicker = "year";
730
+ }
731
+
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);
628
741
  }
629
742
 
630
743
  /**
@@ -637,51 +750,29 @@ class DatePicker extends UI5Element {
637
750
 
638
751
  /**
639
752
  * Opens the picker.
640
- * @param {object} options A JSON object with additional configuration.<br>
641
- * <code>{ focusInput: true }</code> By default, the focus goes in the picker after opening it.
642
- * Specify this option to focus the input field.
643
753
  * @public
754
+ * @async
755
+ * @returns {Promise} Resolves when the picker is open
644
756
  */
645
- async openPicker(options) {
757
+ async openPicker() {
646
758
  this._isPickerOpen = true;
759
+ this._calendarCurrentPicker = "day";
647
760
  this.responsivePopover = await this._respPopover();
648
- this._changeCalendarSelection();
649
-
650
- if (options && options.focusInput) {
651
- this._focusInputAfterOpen = true;
652
- }
653
761
 
654
- this.responsivePopover.open(this);
762
+ this.responsivePopover.showAt(this);
655
763
  }
656
764
 
657
765
  togglePicker() {
658
766
  if (this.isOpen()) {
659
767
  this.closePicker();
660
768
  } else if (this._canOpenPicker()) {
661
- this.updateStaticAreaItemContentDensity();
662
769
  this.openPicker();
663
770
  }
664
771
  }
665
772
 
666
- _changeCalendarSelection(focusTimestamp) {
667
- if (this._calendarDate.getYear() < 1) {
668
- // 0 is a valid year, but we cannot display it
669
- return;
670
- }
671
-
672
- const oCalDate = this._calendarDate;
673
- const timestamp = focusTimestamp || oCalDate.valueOf() / 1000;
674
-
675
- this._calendar = Object.assign({}, this._calendar);
676
- this._calendar.timestamp = timestamp;
677
- if (this.value) {
678
- this._calendar.selectedDates = [timestamp];
679
- }
680
- }
681
-
682
773
  /**
683
774
  * Checks if the picker is open.
684
- * @returns {Boolean} true if the picker is open, false otherwise
775
+ * @returns {boolean} true if the picker is open, false otherwise
685
776
  * @public
686
777
  */
687
778
  isOpen() {
@@ -689,30 +780,18 @@ class DatePicker extends UI5Element {
689
780
  }
690
781
 
691
782
  /**
692
- * Gets some semantic details about an event originated in the control.
693
- * @param {*} event An event object
694
- * @returns {Object} Semantic details
695
- */
696
- getSemanticTargetInfo(event) {
697
- const oDomTarget = getDomTarget(event);
698
- let isInput = false;
699
-
700
- if (oDomTarget && oDomTarget.className.indexOf("ui5-input-inner") > -1) {
701
- isInput = true;
702
- }
703
-
704
- return { isInput };
705
- }
706
-
707
- /**
708
- * Currently selected date represented as JavaScript Date instance.
783
+ * Currently selected date represented as a Local JavaScript Date instance.
709
784
  *
710
785
  * @readonly
711
786
  * @type { Date }
712
787
  * @public
713
788
  */
714
789
  get dateValue() {
715
- 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);
716
795
  }
717
796
 
718
797
  get styles() {
@@ -727,33 +806,18 @@ class DatePicker extends UI5Element {
727
806
  return InputType.Text;
728
807
  }
729
808
 
730
- static async onDefine() {
731
- await Promise.all([
732
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
733
- Icon.define(),
734
- ResponsivePopover.define(),
735
- Calendar.define(),
736
- Input.define(),
737
- fetchI18nBundle("@ui5/webcomponents"),
738
- ]);
809
+ static get dependencies() {
810
+ return [
811
+ Icon,
812
+ ResponsivePopover,
813
+ Calendar,
814
+ CalendarDateComponent.default,
815
+ Input,
816
+ Button,
817
+ ];
739
818
  }
740
819
  }
741
820
 
742
- const getDomTarget = event => {
743
- let target,
744
- composedPath;
745
-
746
- if (typeof event.composedPath === "function") {
747
- composedPath = event.composedPath();
748
- }
749
-
750
- if (Array.isArray(composedPath) && composedPath.length) {
751
- target = composedPath[0];
752
- }
753
-
754
- return target;
755
- };
756
-
757
821
  DatePicker.define();
758
822
 
759
823
  export default DatePicker;