@ui5/webcomponents 0.0.0-323968e1b → 0.0.0-4180fe799

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