@ui5/webcomponents 2.4.0-rc.0 → 2.4.0-rc.1

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 (398) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cypress/specs/Button.cy.ts +13 -26
  3. package/cypress/specs/Form.cy.ts +100 -96
  4. package/cypress/specs/Menu.cy.ts +5 -10
  5. package/cypress/specs/RTL.cy.ts +2 -4
  6. package/cypress/specs/base/AriaLabelHelper.cy.ts +2 -4
  7. package/dist/.tsbuildinfo +1 -1
  8. package/dist/Form.d.ts +3 -3
  9. package/dist/Form.js +5 -5
  10. package/dist/Form.js.map +1 -1
  11. package/dist/FormGroup.js +3 -0
  12. package/dist/FormGroup.js.map +1 -1
  13. package/dist/RangeSlider.d.ts +16 -6
  14. package/dist/RangeSlider.js +170 -19
  15. package/dist/RangeSlider.js.map +1 -1
  16. package/dist/Select.d.ts +3 -3
  17. package/dist/Select.js.map +1 -1
  18. package/dist/Slider.d.ts +10 -2
  19. package/dist/Slider.js +54 -6
  20. package/dist/Slider.js.map +1 -1
  21. package/dist/SliderBase.d.ts +28 -4
  22. package/dist/SliderBase.js +75 -9
  23. package/dist/SliderBase.js.map +1 -1
  24. package/dist/bundle.scoped.config.d.ts +1 -0
  25. package/dist/bundle.scoped.config.js +5 -0
  26. package/dist/bundle.scoped.config.js.map +1 -0
  27. package/dist/bundle.scoped.esm.d.ts +1 -0
  28. package/dist/bundle.scoped.esm.js +1 -4
  29. package/dist/bundle.scoped.esm.js.map +1 -1
  30. package/dist/css/themes/Avatar.css +1 -1
  31. package/dist/css/themes/AvatarGroup.css +1 -1
  32. package/dist/css/themes/Bar.css +1 -1
  33. package/dist/css/themes/Breadcrumbs.css +1 -1
  34. package/dist/css/themes/BusyIndicator.css +1 -1
  35. package/dist/css/themes/Button.css +1 -1
  36. package/dist/css/themes/Calendar.css +1 -1
  37. package/dist/css/themes/CalendarHeader.css +1 -1
  38. package/dist/css/themes/CalendarLegend.css +1 -1
  39. package/dist/css/themes/CalendarLegendItem.css +1 -1
  40. package/dist/css/themes/Card.css +1 -1
  41. package/dist/css/themes/CardHeader.css +1 -1
  42. package/dist/css/themes/Carousel.css +1 -1
  43. package/dist/css/themes/CheckBox.css +1 -1
  44. package/dist/css/themes/ColorPalette.css +1 -1
  45. package/dist/css/themes/ColorPaletteItem.css +1 -1
  46. package/dist/css/themes/ColorPalettePopover.css +1 -1
  47. package/dist/css/themes/ColorPicker.css +1 -1
  48. package/dist/css/themes/ComboBox.css +1 -1
  49. package/dist/css/themes/DatePicker.css +1 -1
  50. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  51. package/dist/css/themes/DayPicker.css +1 -1
  52. package/dist/css/themes/Dialog.css +1 -1
  53. package/dist/css/themes/FileUploader.css +1 -1
  54. package/dist/css/themes/Form.css +1 -1
  55. package/dist/css/themes/FormItem.css +1 -1
  56. package/dist/css/themes/FormLabelSpan.css +1 -1
  57. package/dist/css/themes/FormLayout.css +1 -1
  58. package/dist/css/themes/GrowingButton.css +1 -1
  59. package/dist/css/themes/Icon.css +1 -1
  60. package/dist/css/themes/Input.css +1 -1
  61. package/dist/css/themes/InputIcon.css +1 -1
  62. package/dist/css/themes/InputSharedStyles.css +1 -1
  63. package/dist/css/themes/Link.css +1 -1
  64. package/dist/css/themes/List.css +1 -1
  65. package/dist/css/themes/ListItem.css +1 -1
  66. package/dist/css/themes/ListItemBase.css +1 -1
  67. package/dist/css/themes/ListItemCustom.css +1 -1
  68. package/dist/css/themes/ListItemGroup.css +1 -1
  69. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  70. package/dist/css/themes/ListItemIcon.css +1 -1
  71. package/dist/css/themes/Menu.css +1 -1
  72. package/dist/css/themes/MenuItem.css +1 -1
  73. package/dist/css/themes/MessageStrip.css +1 -1
  74. package/dist/css/themes/MonthPicker.css +1 -1
  75. package/dist/css/themes/MultiComboBox.css +1 -1
  76. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  77. package/dist/css/themes/MultiInput.css +1 -1
  78. package/dist/css/themes/NavigationMenu.css +1 -1
  79. package/dist/css/themes/NavigationMenuItem.css +1 -1
  80. package/dist/css/themes/OptionBase.css +1 -1
  81. package/dist/css/themes/Panel.css +1 -1
  82. package/dist/css/themes/Popover.css +1 -1
  83. package/dist/css/themes/PopupsCommon.css +1 -1
  84. package/dist/css/themes/ProgressIndicator.css +1 -1
  85. package/dist/css/themes/RadioButton.css +1 -1
  86. package/dist/css/themes/RangeSlider.css +1 -1
  87. package/dist/css/themes/RatingIndicator.css +1 -1
  88. package/dist/css/themes/ResponsivePopover.css +1 -1
  89. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  90. package/dist/css/themes/SegmentedButton.css +1 -1
  91. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  92. package/dist/css/themes/Select.css +1 -1
  93. package/dist/css/themes/SliderBase.css +1 -1
  94. package/dist/css/themes/SplitButton.css +1 -1
  95. package/dist/css/themes/StepInput.css +1 -1
  96. package/dist/css/themes/SuggestionItem.css +1 -1
  97. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  98. package/dist/css/themes/Switch.css +1 -1
  99. package/dist/css/themes/TabContainer.css +1 -1
  100. package/dist/css/themes/TabInOverflow.css +1 -1
  101. package/dist/css/themes/TabInStrip.css +1 -1
  102. package/dist/css/themes/TabSemanticIcon.css +1 -1
  103. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  104. package/dist/css/themes/Table.css +1 -1
  105. package/dist/css/themes/TableCellBase.css +1 -1
  106. package/dist/css/themes/TableHeaderRow.css +1 -1
  107. package/dist/css/themes/TableRow.css +1 -1
  108. package/dist/css/themes/TableRowBase.css +1 -1
  109. package/dist/css/themes/Tag.css +1 -1
  110. package/dist/css/themes/Text.css +1 -1
  111. package/dist/css/themes/TextArea.css +1 -1
  112. package/dist/css/themes/TimePicker.css +1 -1
  113. package/dist/css/themes/Toast.css +1 -1
  114. package/dist/css/themes/ToggleButton.css +1 -1
  115. package/dist/css/themes/Token.css +1 -1
  116. package/dist/css/themes/Tokenizer.css +1 -1
  117. package/dist/css/themes/TokenizerPopover.css +1 -1
  118. package/dist/css/themes/Toolbar.css +1 -1
  119. package/dist/css/themes/ToolbarPopover.css +1 -1
  120. package/dist/css/themes/TreeItem.css +1 -1
  121. package/dist/css/themes/ValueStateMessage.css +1 -1
  122. package/dist/css/themes/YearPicker.css +1 -1
  123. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  124. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  125. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  126. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  127. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  128. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  129. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  130. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  131. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  132. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  133. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  134. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  135. package/dist/custom-elements-internal.json +84 -5
  136. package/dist/custom-elements.json +78 -5
  137. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  143. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  144. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  145. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  146. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  147. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  148. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  149. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  150. package/dist/generated/i18n/i18n-defaults.js +3 -1
  151. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  152. package/dist/generated/templates/DialogTemplate.lit.js +1 -1
  153. package/dist/generated/templates/DialogTemplate.lit.js.map +1 -1
  154. package/dist/generated/templates/PopoverTemplate.lit.js +1 -1
  155. package/dist/generated/templates/PopoverTemplate.lit.js.map +1 -1
  156. package/dist/generated/templates/PopupTemplate.lit.js +1 -1
  157. package/dist/generated/templates/PopupTemplate.lit.js.map +1 -1
  158. package/dist/generated/templates/RangeSliderTemplate.lit.js +9 -3
  159. package/dist/generated/templates/RangeSliderTemplate.lit.js.map +1 -1
  160. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  161. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js.map +1 -1
  162. package/dist/generated/templates/SliderBaseTemplate.lit.js +3 -1
  163. package/dist/generated/templates/SliderBaseTemplate.lit.js.map +1 -1
  164. package/dist/generated/templates/SliderTemplate.lit.js +6 -2
  165. package/dist/generated/templates/SliderTemplate.lit.js.map +1 -1
  166. package/dist/generated/themes/Avatar.css.js +1 -1
  167. package/dist/generated/themes/Avatar.css.js.map +1 -1
  168. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  169. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  170. package/dist/generated/themes/Bar.css.js +1 -1
  171. package/dist/generated/themes/Bar.css.js.map +1 -1
  172. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  173. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  174. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  175. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  176. package/dist/generated/themes/Button.css.js +1 -1
  177. package/dist/generated/themes/Button.css.js.map +1 -1
  178. package/dist/generated/themes/Calendar.css.js +1 -1
  179. package/dist/generated/themes/Calendar.css.js.map +1 -1
  180. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  181. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  182. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  183. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  184. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  185. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  186. package/dist/generated/themes/Card.css.js +1 -1
  187. package/dist/generated/themes/Card.css.js.map +1 -1
  188. package/dist/generated/themes/CardHeader.css.js +1 -1
  189. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  190. package/dist/generated/themes/Carousel.css.js +1 -1
  191. package/dist/generated/themes/Carousel.css.js.map +1 -1
  192. package/dist/generated/themes/CheckBox.css.js +1 -1
  193. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  194. package/dist/generated/themes/ColorPalette.css.js +1 -1
  195. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  196. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  197. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  198. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  199. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  200. package/dist/generated/themes/ColorPicker.css.js +1 -1
  201. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  202. package/dist/generated/themes/ComboBox.css.js +1 -1
  203. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  204. package/dist/generated/themes/DatePicker.css.js +1 -1
  205. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  206. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  207. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  208. package/dist/generated/themes/DayPicker.css.js +1 -1
  209. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  210. package/dist/generated/themes/Dialog.css.js +1 -1
  211. package/dist/generated/themes/Dialog.css.js.map +1 -1
  212. package/dist/generated/themes/FileUploader.css.js +1 -1
  213. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  214. package/dist/generated/themes/Form.css.js +1 -1
  215. package/dist/generated/themes/Form.css.js.map +1 -1
  216. package/dist/generated/themes/FormItem.css.js +1 -1
  217. package/dist/generated/themes/FormItem.css.js.map +1 -1
  218. package/dist/generated/themes/FormLabelSpan.css.js +1 -1
  219. package/dist/generated/themes/FormLabelSpan.css.js.map +1 -1
  220. package/dist/generated/themes/FormLayout.css.js +1 -1
  221. package/dist/generated/themes/FormLayout.css.js.map +1 -1
  222. package/dist/generated/themes/GrowingButton.css.js +1 -1
  223. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  224. package/dist/generated/themes/Icon.css.js +1 -1
  225. package/dist/generated/themes/Icon.css.js.map +1 -1
  226. package/dist/generated/themes/Input.css.js +1 -1
  227. package/dist/generated/themes/Input.css.js.map +1 -1
  228. package/dist/generated/themes/InputIcon.css.js +1 -1
  229. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  230. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  231. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  232. package/dist/generated/themes/Link.css.js +1 -1
  233. package/dist/generated/themes/Link.css.js.map +1 -1
  234. package/dist/generated/themes/List.css.js +1 -1
  235. package/dist/generated/themes/List.css.js.map +1 -1
  236. package/dist/generated/themes/ListItem.css.js +1 -1
  237. package/dist/generated/themes/ListItem.css.js.map +1 -1
  238. package/dist/generated/themes/ListItemBase.css.js +1 -1
  239. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  240. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  241. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  242. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  243. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  244. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  245. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  246. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  247. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  248. package/dist/generated/themes/Menu.css.js +1 -1
  249. package/dist/generated/themes/Menu.css.js.map +1 -1
  250. package/dist/generated/themes/MenuItem.css.js +1 -1
  251. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  252. package/dist/generated/themes/MessageStrip.css.js +1 -1
  253. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  254. package/dist/generated/themes/MonthPicker.css.js +1 -1
  255. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  256. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  257. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  258. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  259. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  260. package/dist/generated/themes/MultiInput.css.js +1 -1
  261. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  262. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  263. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  264. package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
  265. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
  266. package/dist/generated/themes/OptionBase.css.js +1 -1
  267. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  268. package/dist/generated/themes/Panel.css.js +1 -1
  269. package/dist/generated/themes/Panel.css.js.map +1 -1
  270. package/dist/generated/themes/Popover.css.js +1 -1
  271. package/dist/generated/themes/Popover.css.js.map +1 -1
  272. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  273. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  274. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  275. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  276. package/dist/generated/themes/RadioButton.css.js +1 -1
  277. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  278. package/dist/generated/themes/RangeSlider.css.js +1 -1
  279. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  280. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  281. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  282. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  283. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  284. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  285. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  286. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  287. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  288. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  289. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  290. package/dist/generated/themes/Select.css.js +1 -1
  291. package/dist/generated/themes/Select.css.js.map +1 -1
  292. package/dist/generated/themes/SliderBase.css.js +1 -1
  293. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  294. package/dist/generated/themes/SplitButton.css.js +1 -1
  295. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  296. package/dist/generated/themes/StepInput.css.js +1 -1
  297. package/dist/generated/themes/StepInput.css.js.map +1 -1
  298. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  299. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  300. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  301. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  302. package/dist/generated/themes/Switch.css.js +1 -1
  303. package/dist/generated/themes/Switch.css.js.map +1 -1
  304. package/dist/generated/themes/TabContainer.css.js +1 -1
  305. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  306. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  307. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  308. package/dist/generated/themes/TabInStrip.css.js +1 -1
  309. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  310. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  311. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  312. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  313. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  314. package/dist/generated/themes/Table.css.js +1 -1
  315. package/dist/generated/themes/Table.css.js.map +1 -1
  316. package/dist/generated/themes/TableCellBase.css.js +1 -1
  317. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  318. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  319. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  320. package/dist/generated/themes/TableRow.css.js +1 -1
  321. package/dist/generated/themes/TableRow.css.js.map +1 -1
  322. package/dist/generated/themes/TableRowBase.css.js +1 -1
  323. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  324. package/dist/generated/themes/Tag.css.js +1 -1
  325. package/dist/generated/themes/Tag.css.js.map +1 -1
  326. package/dist/generated/themes/Text.css.js +1 -1
  327. package/dist/generated/themes/Text.css.js.map +1 -1
  328. package/dist/generated/themes/TextArea.css.js +1 -1
  329. package/dist/generated/themes/TextArea.css.js.map +1 -1
  330. package/dist/generated/themes/TimePicker.css.js +1 -1
  331. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  332. package/dist/generated/themes/Toast.css.js +1 -1
  333. package/dist/generated/themes/Toast.css.js.map +1 -1
  334. package/dist/generated/themes/ToggleButton.css.js +1 -1
  335. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  336. package/dist/generated/themes/Token.css.js +1 -1
  337. package/dist/generated/themes/Token.css.js.map +1 -1
  338. package/dist/generated/themes/Tokenizer.css.js +1 -1
  339. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  340. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  341. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  342. package/dist/generated/themes/Toolbar.css.js +1 -1
  343. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  344. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  345. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  346. package/dist/generated/themes/TreeItem.css.js +1 -1
  347. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  348. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  349. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  350. package/dist/generated/themes/YearPicker.css.js +1 -1
  351. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  352. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  353. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  354. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  355. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  356. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  357. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  358. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  359. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  360. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  361. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  362. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  363. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  364. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  365. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  366. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  367. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  368. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  369. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  370. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  371. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  372. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  373. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  374. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  375. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  376. package/dist/vscode.html-custom-data.json +17 -2
  377. package/dist/web-types.json +25 -5
  378. package/package.json +9 -9
  379. package/src/Popup.hbs +2 -2
  380. package/src/RangeSlider.hbs +70 -38
  381. package/src/Slider.hbs +37 -18
  382. package/src/SliderBase.hbs +13 -4
  383. package/src/i18n/messagebundle.properties +6 -0
  384. package/src/themes/ColorPicker.css +9 -1
  385. package/src/themes/Form.css +3 -2
  386. package/src/themes/FormLayout.css +3 -3
  387. package/src/themes/ListItemBase.css +2 -2
  388. package/src/themes/SliderBase.css +27 -7
  389. package/src/themes/base/sizes-parameters.css +1 -1
  390. package/src/themes/sap_fiori_3/SliderBase-parameters.css +7 -0
  391. package/src/themes/sap_fiori_3/sizes-parameters.css +4 -0
  392. package/src/themes/sap_fiori_3_dark/SliderBase-parameters.css +7 -0
  393. package/src/themes/sap_fiori_3_dark/sizes-parameters.css +4 -0
  394. package/src/themes/sap_fiori_3_hcb/sizes-parameters.css +6 -0
  395. package/src/themes/sap_fiori_3_hcw/sizes-parameters.css +6 -0
  396. package/src/themes/sap_horizon_hcb/SliderBase-parameters.css +1 -1
  397. package/src/themes/sap_horizon_hcw/SliderBase-parameters.css +1 -1
  398. package/tsconfig.json +2 -0
package/dist/Slider.js CHANGED
@@ -11,10 +11,11 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
11
11
  import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
12
12
  import SliderBase from "./SliderBase.js";
13
13
  import Icon from "./Icon.js";
14
+ import Input from "./Input.js";
14
15
  // Template
15
16
  import SliderTemplate from "./generated/templates/SliderTemplate.lit.js";
16
17
  // Texts
17
- import { SLIDER_ARIA_DESCRIPTION, } from "./generated/i18n/i18n-defaults.js";
18
+ import { SLIDER_ARIA_DESCRIPTION, SLIDER_TOOLTIP_INPUT_DESCRIPTION, SLIDER_TOOLTIP_INPUT_LABEL, } from "./generated/i18n/i18n-defaults.js";
18
19
  /**
19
20
  * @class
20
21
  *
@@ -85,7 +86,10 @@ let Slider = Slider_1 = class Slider extends SliderBase {
85
86
  this.value = 0;
86
87
  this._progressPercentage = 0;
87
88
  this._handlePositionFromStart = 0;
89
+ this._tooltipInputValue = this.value.toString();
90
+ this._tooltipInputValueState = "None";
88
91
  this._stateStorage.value = undefined;
92
+ this._lastValidInputValue = this.min.toString();
89
93
  }
90
94
  /**
91
95
  *
@@ -99,6 +103,9 @@ let Slider = Slider_1 = class Slider extends SliderBase {
99
103
  *
100
104
  */
101
105
  onBeforeRendering() {
106
+ if (this.editableTooltip) {
107
+ this._updateInputValue();
108
+ }
102
109
  if (!this.isCurrentStateOutdated()) {
103
110
  return;
104
111
  }
@@ -138,7 +145,7 @@ let Slider = Slider_1 = class Slider extends SliderBase {
138
145
  _onmousedown(e) {
139
146
  // If step is 0 no interaction is available because there is no constant
140
147
  // (equal for all user environments) quantitative representation of the value
141
- if (this.disabled || this.step === 0) {
148
+ if (this.disabled || this.step === 0 || e.target.hasAttribute("ui5-input")) {
142
149
  return;
143
150
  }
144
151
  const newValue = this.handleDownBase(e);
@@ -166,7 +173,7 @@ let Slider = Slider_1 = class Slider extends SliderBase {
166
173
  this._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.VISIBLE;
167
174
  }
168
175
  }
169
- _onfocusout() {
176
+ _onfocusout(e) {
170
177
  // Prevent focusout when the focus is getting set within the slider internal
171
178
  // element (on the handle), before the Slider' customElement itself is finished focusing
172
179
  if (this._isFocusing()) {
@@ -176,7 +183,7 @@ let Slider = Slider_1 = class Slider extends SliderBase {
176
183
  // Reset focus state and the stored Slider's initial
177
184
  // value that was saved when it was first focused in
178
185
  this._valueInitial = undefined;
179
- if (this.showTooltip) {
186
+ if (this.showTooltip && !e.relatedTarget?.hasAttribute("ui5-input")) {
180
187
  this._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.HIDDEN;
181
188
  }
182
189
  }
@@ -185,6 +192,9 @@ let Slider = Slider_1 = class Slider extends SliderBase {
185
192
  * @private
186
193
  */
187
194
  _handleMove(e) {
195
+ if (e.target.hasAttribute("ui5-input")) {
196
+ return;
197
+ }
188
198
  e.preventDefault();
189
199
  // If step is 0 no interaction is available because there is no constant
190
200
  // (equal for all user environments) quantitative representation of the value
@@ -200,13 +210,42 @@ let Slider = Slider_1 = class Slider extends SliderBase {
200
210
  /** Called when the user finish interacting with the slider
201
211
  * @private
202
212
  */
203
- _handleUp() {
213
+ _handleUp(e) {
214
+ if (e.target.hasAttribute("ui5-input")) {
215
+ return;
216
+ }
204
217
  if (this._valueOnInteractionStart !== this.value) {
205
218
  this.fireDecoratorEvent("change");
206
219
  }
207
220
  this.handleUpBase();
208
221
  this._valueOnInteractionStart = undefined;
209
222
  }
223
+ _onInputFocusOut(e) {
224
+ const tooltipInput = this.shadowRoot.querySelector("[ui5-input]");
225
+ this._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.HIDDEN;
226
+ this._updateValueFromInput(e);
227
+ if (!this._isInputValueValid) {
228
+ tooltipInput.value = this._lastValidInputValue;
229
+ this._isInputValueValid = true;
230
+ this._tooltipInputValueState = "None";
231
+ }
232
+ }
233
+ _updateInputValue() {
234
+ const tooltipInput = this.shadowRoot.querySelector("[ui5-input]");
235
+ if (!tooltipInput) {
236
+ return;
237
+ }
238
+ this._isInputValueValid = parseFloat(tooltipInput.value) >= this.min && parseFloat(tooltipInput.value) <= this.max;
239
+ if (!this._isInputValueValid) {
240
+ this._tooltipInputValue = this._lastValidInputValue;
241
+ this._isInputValueValid = true;
242
+ this._tooltipInputValueState = "Negative";
243
+ return;
244
+ }
245
+ this._tooltipInputValue = this.value.toString();
246
+ this._lastValidInputValue = this._tooltipInputValue;
247
+ this._tooltipInputValueState = "None";
248
+ }
210
249
  /** Determines if the press is over the handle
211
250
  * @private
212
251
  */
@@ -237,6 +276,9 @@ let Slider = Slider_1 = class Slider extends SliderBase {
237
276
  this.updateStateStorageAndFireInputEvent("value");
238
277
  }
239
278
  }
279
+ get inputValue() {
280
+ return this.value.toString();
281
+ }
240
282
  get styles() {
241
283
  return {
242
284
  progress: {
@@ -272,6 +314,12 @@ let Slider = Slider_1 = class Slider extends SliderBase {
272
314
  get _ariaLabelledByText() {
273
315
  return Slider_1.i18nBundle.getText(SLIDER_ARIA_DESCRIPTION);
274
316
  }
317
+ get _ariaDescribedByInputText() {
318
+ return Slider_1.i18nBundle.getText(SLIDER_TOOLTIP_INPUT_DESCRIPTION);
319
+ }
320
+ get _ariaLabelledByInputText() {
321
+ return Slider_1.i18nBundle.getText(SLIDER_TOOLTIP_INPUT_LABEL);
322
+ }
275
323
  get tickmarksObject() {
276
324
  const count = this._tickmarksCount;
277
325
  const arr = [];
@@ -296,7 +344,7 @@ Slider = Slider_1 = __decorate([
296
344
  languageAware: true,
297
345
  formAssociated: true,
298
346
  template: SliderTemplate,
299
- dependencies: [Icon],
347
+ dependencies: [Icon, Input],
300
348
  })
301
349
  ], Slider);
302
350
  Slider.define();
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sourceRoot":"","sources":["../src/Slider.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport SliderBase from \"./SliderBase.js\";\nimport Icon from \"./Icon.js\";\n\n// Template\nimport SliderTemplate from \"./generated/templates/SliderTemplate.lit.js\";\n\n// Texts\nimport {\n\tSLIDER_ARIA_DESCRIPTION,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * @class\n *\n * ### Overview\n * The Slider component represents a numerical range and a handle (grip).\n * The purpose of the component is to enable visual selection of a value in\n * a continuous numerical range by moving an adjustable handle.\n *\n * ### Structure\n * The most important properties of the Slider are:\n *\n * - min - The minimum value of the slider range.\n * - max - The maximum value of the slider range.\n * - value - The current value of the slider range.\n * - step - Determines the increments in which the slider will move.\n * - showTooltip - Determines if a tooltip should be displayed above the handle.\n * - showTickmarks - Displays a visual divider between the step values.\n * - labelInterval - Labels some or all of the tickmarks with their values.\n *\n * ### Usage\n * The most common use case is to select values on a continuous numerical scale (e.g. temperature, volume, etc. ).\n *\n * ### Responsive Behavior\n * The `ui5-slider` component adjusts to the size of its parent container by recalculating and\n * resizing the width of the control. You can move the slider handle in several different ways:\n *\n * - Drag and drop the handle to the desired value.\n * - Click/tap on the range bar to move the handle to that location.\n *\n * ### Keyboard Handling\n *\n * - `Left or Down Arrow` - Moves the handle one step to the left, effectively decreasing the component's value by `step` amount;\n * - `Right or Up Arrow` - Moves the handle one step to the right, effectively increasing the component's value by `step` amount;\n * - `Left or Down Arrow + Ctrl/Cmd` - Moves the handle to the left with step equal to 1/10th of the entire range, effectively decreasing the component's value by 1/10th of the range;\n * - `Right or Up Arrow + Ctrl/Cmd` - Moves the handle to the right with step equal to 1/10th of the entire range, effectively increasing the component's value by 1/10th of the range;\n * - `Plus` - Same as `Right or Up Arrow`;\n * - `Minus` - Same as `Left or Down Arrow`;\n * - `Home` - Moves the handle to the beginning of the range;\n * - `End` - Moves the handle to the end of the range;\n * - `Page Up` - Same as `Right or Up + Ctrl/Cmd`;\n * - `Page Down` - Same as `Left or Down + Ctrl/Cmd`;\n * - `Escape` - Resets the value property after interaction, to the position prior the component's focusing;\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Slider.js\";`\n * @constructor\n * @extends SliderBase\n * @since 1.0.0-rc.11\n * @public\n * @csspart progress-container - Used to style the progress container, the horizontal bar that visually represents the range between the minimum and maximum values, of the `ui5-slider`.\n * @csspart progress-bar - Used to style the progress bar, which shows the progress of the `ui5-slider`.\n * @csspart handle - Used to style the handle of the `ui5-slider`.\n */\n@customElement({\n\ttag: \"ui5-slider\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\ttemplate: SliderTemplate,\n\tdependencies: [Icon],\n})\nclass Slider extends SliderBase implements IFormInputElement {\n\t/**\n\t * Current value of the slider\n\t * @default 0\n\t * @formEvents change input\n\t * @formProperty\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvalue = 0;\n\n\t_valueInitial?: number;\n\t_valueOnInteractionStart?: number;\n\t_progressPercentage = 0;\n\t_handlePositionFromStart = 0;\n\n\tget formFormattedValue() {\n\t\treturn this.value.toString();\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._stateStorage.value = undefined;\n\t}\n\n\t/**\n\t *\n\t * Check if the previously saved state is outdated. That would mean\n\t * either it is the initial rendering or that a property has been changed\n\t * programmatically - because the previous state is always updated in\n\t * the interaction handlers.\n\t *\n\t * Normalize current properties, update the previously stored state.\n\t * Update the visual UI representation of the Slider.\n\t *\n\t */\n\tonBeforeRendering() {\n\t\tif (!this.isCurrentStateOutdated()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.notResized = true;\n\t\tthis.syncUIAndState();\n\t\tthis._updateHandleAndProgress(this.value);\n\t}\n\n\tsyncUIAndState() {\n\t\t// Validate step and update the stored state for the step property.\n\t\tif (this.isPropertyUpdated(\"step\")) {\n\t\t\tthis._validateStep(this.step);\n\t\t\tthis.storePropertyState(\"step\");\n\t\t}\n\n\t\t// Recalculate the tickmarks and labels and update the stored state.\n\t\tif (this.isPropertyUpdated(\"min\", \"max\", \"value\")) {\n\t\t\tthis.storePropertyState(\"min\", \"max\");\n\n\t\t\t// Here the value props are changed programmatically (not by user interaction)\n\t\t\t// and it won't be \"stepified\" (rounded to the nearest step). 'Clip' them within\n\t\t\t// min and max bounderies and update the previous state reference.\n\t\t\tthis.value = SliderBase.clipValue(this.value, this._effectiveMin, this._effectiveMax);\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t\tthis.storePropertyState(\"value\");\n\t\t}\n\n\t\t// Labels must be updated if any of the min/max/step/labelInterval props are changed\n\t\tif (this.labelInterval && this.showTickmarks) {\n\t\t\tthis._createLabels();\n\t\t}\n\n\t\t// Update the stored state for the labelInterval, if changed\n\t\tif (this.isPropertyUpdated(\"labelInterval\")) {\n\t\t\tthis.storePropertyState(\"labelInterval\");\n\t\t}\n\t}\n\n\t/**\n\t * Called when the user starts interacting with the slider\n\t * @private\n\t */\n\t_onmousedown(e: TouchEvent | MouseEvent) {\n\t\t// If step is 0 no interaction is available because there is no constant\n\t\t// (equal for all user environments) quantitative representation of the value\n\t\tif (this.disabled || this.step === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newValue = this.handleDownBase(e);\n\t\tthis._valueOnInteractionStart = this.value;\n\n\t\t// Set initial value if one is not set previously on focus in.\n\t\t// It will be restored if ESC key is pressed.\n\t\tif (this._valueInitial === undefined) {\n\t\t\tthis._valueInitial = this.value;\n\t\t}\n\n\t\t// Do not yet update the Slider if press is over a handle. It will be updated if the user drags the mouse.\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tif (!this._isHandlePressed(ctor.getPageXValueFromEvent(e))) {\n\t\t\tthis._updateHandleAndProgress(newValue);\n\t\t\tthis.value = newValue;\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\t// Set initial value if one is not set previously on focus in.\n\t\t// It will be restored if ESC key is pressed.\n\t\tif (this._valueInitial === undefined) {\n\t\t\tthis._valueInitial = this.value;\n\t\t}\n\n\t\tif (this.showTooltip) {\n\t\t\tthis._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.VISIBLE;\n\t\t}\n\t}\n\n\t_onfocusout() {\n\t\t// Prevent focusout when the focus is getting set within the slider internal\n\t\t// element (on the handle), before the Slider' customElement itself is finished focusing\n\t\tif (this._isFocusing()) {\n\t\t\tthis._preventFocusOut();\n\t\t\treturn;\n\t\t}\n\n\t\t// Reset focus state and the stored Slider's initial\n\t\t// value that was saved when it was first focused in\n\t\tthis._valueInitial = undefined;\n\n\t\tif (this.showTooltip) {\n\t\t\tthis._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.HIDDEN;\n\t\t}\n\t}\n\n\t/**\n\t * Called when the user moves the slider\n\t * @private\n\t */\n\t_handleMove(e: TouchEvent | MouseEvent) {\n\t\te.preventDefault();\n\n\t\t// If step is 0 no interaction is available because there is no constant\n\t\t// (equal for all user environments) quantitative representation of the value\n\t\tif (this.disabled || this._effectiveStep === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst newValue = ctor.getValueFromInteraction(e, this._effectiveStep, this._effectiveMin, this._effectiveMax, this.getBoundingClientRect(), this.directionStart);\n\n\t\tthis._updateHandleAndProgress(newValue);\n\t\tthis.value = newValue;\n\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t}\n\n\t/** Called when the user finish interacting with the slider\n\t * @private\n\t */\n\t_handleUp() {\n\t\tif (this._valueOnInteractionStart !== this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis.handleUpBase();\n\t\tthis._valueOnInteractionStart = undefined;\n\t}\n\n\t/** Determines if the press is over the handle\n\t * @private\n\t */\n\t_isHandlePressed(clientX: number) {\n\t\tconst sliderHandleDomRect = this._sliderHandle.getBoundingClientRect();\n\t\treturn clientX >= sliderHandleDomRect.left && clientX <= sliderHandleDomRect.right;\n\t}\n\n\t/** Updates the UI representation of the progress bar and handle position\n\t * @private\n\t */\n\t_updateHandleAndProgress(newValue: number) {\n\t\tconst max = this._effectiveMax;\n\t\tconst min = this._effectiveMin;\n\n\t\t// The progress (completed) percentage of the slider.\n\t\tthis._progressPercentage = (newValue - min) / (max - min);\n\t\t// How many pixels from the left end of the slider will be the placed the affected by the user action handle\n\t\tthis._handlePositionFromStart = this._progressPercentage * 100;\n\t}\n\n\t_handleActionKeyPress(e: KeyboardEvent) {\n\t\tconst min = this._effectiveMin;\n\t\tconst max = this._effectiveMax;\n\t\tconst currentValue = this.value;\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst newValue = isEscape(e) ? this._valueInitial : ctor.clipValue(this._handleActionKeyPressBase(e, \"value\") + currentValue, min, max);\n\n\t\tif (newValue !== currentValue) {\n\t\t\tthis._updateHandleAndProgress(newValue!);\n\t\t\tthis.value = newValue!;\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\tprogress: {\n\t\t\t\t\"transform\": `scaleX(${this._progressPercentage})`,\n\t\t\t\t\"transform-origin\": `${this.directionStart} top`,\n\t\t\t},\n\t\t\thandle: {\n\t\t\t\t[this.directionStart]: `${this._handlePositionFromStart}%`,\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\t\"width\": `${this._labelWidth}%`,\n\t\t\t},\n\t\t\tlabelContainer: {\n\t\t\t\t\"width\": `100%`,\n\t\t\t\t[this.directionStart]: `-${this._labelWidth / 2}%`,\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\t\"visibility\": `${this._tooltipVisibility}`,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _sliderHandle() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-slider-handle\")!;\n\t}\n\n\tget tooltipValue() {\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this._effectiveStep);\n\t\treturn this.value.toFixed(stepPrecision);\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled || undefined;\n\t}\n\n\tget _ariaLabelledByText() {\n\t\treturn Slider.i18nBundle.getText(SLIDER_ARIA_DESCRIPTION);\n\t}\n\n\tget tickmarksObject() {\n\t\tconst count = this._tickmarksCount;\n\t\tconst arr = [];\n\n\t\tif (this._hiddenTickmarks) {\n\t\t\treturn [true, false];\n\t\t}\n\n\t\tfor (let i = 0; i <= count; i++) {\n\t\t\tarr.push(this._effectiveMin + (i * this.step) <= this.value);\n\t\t}\n\n\t\treturn arr;\n\t}\n}\n\nSlider.define();\n\nexport default Slider;\n"]}
1
+ {"version":3,"file":"Slider.js","sourceRoot":"","sources":["../src/Slider.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport SliderBase from \"./SliderBase.js\";\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\n\n// Template\nimport SliderTemplate from \"./generated/templates/SliderTemplate.lit.js\";\n\n// Texts\nimport {\n\tSLIDER_ARIA_DESCRIPTION,\n\tSLIDER_TOOLTIP_INPUT_DESCRIPTION,\n\tSLIDER_TOOLTIP_INPUT_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * @class\n *\n * ### Overview\n * The Slider component represents a numerical range and a handle (grip).\n * The purpose of the component is to enable visual selection of a value in\n * a continuous numerical range by moving an adjustable handle.\n *\n * ### Structure\n * The most important properties of the Slider are:\n *\n * - min - The minimum value of the slider range.\n * - max - The maximum value of the slider range.\n * - value - The current value of the slider range.\n * - step - Determines the increments in which the slider will move.\n * - showTooltip - Determines if a tooltip should be displayed above the handle.\n * - showTickmarks - Displays a visual divider between the step values.\n * - labelInterval - Labels some or all of the tickmarks with their values.\n *\n * ### Usage\n * The most common use case is to select values on a continuous numerical scale (e.g. temperature, volume, etc. ).\n *\n * ### Responsive Behavior\n * The `ui5-slider` component adjusts to the size of its parent container by recalculating and\n * resizing the width of the control. You can move the slider handle in several different ways:\n *\n * - Drag and drop the handle to the desired value.\n * - Click/tap on the range bar to move the handle to that location.\n *\n * ### Keyboard Handling\n *\n * - `Left or Down Arrow` - Moves the handle one step to the left, effectively decreasing the component's value by `step` amount;\n * - `Right or Up Arrow` - Moves the handle one step to the right, effectively increasing the component's value by `step` amount;\n * - `Left or Down Arrow + Ctrl/Cmd` - Moves the handle to the left with step equal to 1/10th of the entire range, effectively decreasing the component's value by 1/10th of the range;\n * - `Right or Up Arrow + Ctrl/Cmd` - Moves the handle to the right with step equal to 1/10th of the entire range, effectively increasing the component's value by 1/10th of the range;\n * - `Plus` - Same as `Right or Up Arrow`;\n * - `Minus` - Same as `Left or Down Arrow`;\n * - `Home` - Moves the handle to the beginning of the range;\n * - `End` - Moves the handle to the end of the range;\n * - `Page Up` - Same as `Right or Up + Ctrl/Cmd`;\n * - `Page Down` - Same as `Left or Down + Ctrl/Cmd`;\n * - `Escape` - Resets the value property after interaction, to the position prior the component's focusing;\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Slider.js\";`\n * @constructor\n * @extends SliderBase\n * @since 1.0.0-rc.11\n * @public\n * @csspart progress-container - Used to style the progress container, the horizontal bar that visually represents the range between the minimum and maximum values, of the `ui5-slider`.\n * @csspart progress-bar - Used to style the progress bar, which shows the progress of the `ui5-slider`.\n * @csspart handle - Used to style the handle of the `ui5-slider`.\n */\n@customElement({\n\ttag: \"ui5-slider\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\ttemplate: SliderTemplate,\n\tdependencies: [Icon, Input],\n})\nclass Slider extends SliderBase implements IFormInputElement {\n\t/**\n\t * Current value of the slider\n\t * @default 0\n\t * @formEvents change input\n\t * @formProperty\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvalue = 0;\n\n\t_valueInitial?: number;\n\t_valueOnInteractionStart?: number;\n\t_progressPercentage = 0;\n\t_handlePositionFromStart = 0;\n\t_lastValidInputValue: string;\n\t_tooltipInputValue: string = this.value.toString();\n\t_tooltipInputValueState: string = \"None\";\n\n\tget formFormattedValue() {\n\t\treturn this.value.toString();\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._stateStorage.value = undefined;\n\t\tthis._lastValidInputValue = this.min.toString();\n\t}\n\n\t/**\n\t *\n\t * Check if the previously saved state is outdated. That would mean\n\t * either it is the initial rendering or that a property has been changed\n\t * programmatically - because the previous state is always updated in\n\t * the interaction handlers.\n\t *\n\t * Normalize current properties, update the previously stored state.\n\t * Update the visual UI representation of the Slider.\n\t *\n\t */\n\tonBeforeRendering() {\n\t\tif (this.editableTooltip) {\n\t\t\tthis._updateInputValue();\n\t\t}\n\n\t\tif (!this.isCurrentStateOutdated()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.notResized = true;\n\t\tthis.syncUIAndState();\n\t\tthis._updateHandleAndProgress(this.value);\n\t}\n\n\tsyncUIAndState() {\n\t\t// Validate step and update the stored state for the step property.\n\t\tif (this.isPropertyUpdated(\"step\")) {\n\t\t\tthis._validateStep(this.step);\n\t\t\tthis.storePropertyState(\"step\");\n\t\t}\n\n\t\t// Recalculate the tickmarks and labels and update the stored state.\n\t\tif (this.isPropertyUpdated(\"min\", \"max\", \"value\")) {\n\t\t\tthis.storePropertyState(\"min\", \"max\");\n\n\t\t\t// Here the value props are changed programmatically (not by user interaction)\n\t\t\t// and it won't be \"stepified\" (rounded to the nearest step). 'Clip' them within\n\t\t\t// min and max bounderies and update the previous state reference.\n\t\t\tthis.value = SliderBase.clipValue(this.value, this._effectiveMin, this._effectiveMax);\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t\tthis.storePropertyState(\"value\");\n\t\t}\n\n\t\t// Labels must be updated if any of the min/max/step/labelInterval props are changed\n\t\tif (this.labelInterval && this.showTickmarks) {\n\t\t\tthis._createLabels();\n\t\t}\n\n\t\t// Update the stored state for the labelInterval, if changed\n\t\tif (this.isPropertyUpdated(\"labelInterval\")) {\n\t\t\tthis.storePropertyState(\"labelInterval\");\n\t\t}\n\t}\n\n\t/**\n\t * Called when the user starts interacting with the slider\n\t * @private\n\t */\n\t_onmousedown(e: TouchEvent | MouseEvent) {\n\t\t// If step is 0 no interaction is available because there is no constant\n\t\t// (equal for all user environments) quantitative representation of the value\n\t\tif (this.disabled || this.step === 0 || (e.target as HTMLElement).hasAttribute(\"ui5-input\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newValue = this.handleDownBase(e);\n\t\tthis._valueOnInteractionStart = this.value;\n\n\t\t// Set initial value if one is not set previously on focus in.\n\t\t// It will be restored if ESC key is pressed.\n\t\tif (this._valueInitial === undefined) {\n\t\t\tthis._valueInitial = this.value;\n\t\t}\n\n\t\t// Do not yet update the Slider if press is over a handle. It will be updated if the user drags the mouse.\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tif (!this._isHandlePressed(ctor.getPageXValueFromEvent(e))) {\n\t\t\tthis._updateHandleAndProgress(newValue);\n\t\t\tthis.value = newValue;\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\t// Set initial value if one is not set previously on focus in.\n\t\t// It will be restored if ESC key is pressed.\n\t\tif (this._valueInitial === undefined) {\n\t\t\tthis._valueInitial = this.value;\n\t\t}\n\n\t\tif (this.showTooltip) {\n\t\t\tthis._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.VISIBLE;\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\t// Prevent focusout when the focus is getting set within the slider internal\n\t\t// element (on the handle), before the Slider' customElement itself is finished focusing\n\t\tif (this._isFocusing()) {\n\t\t\tthis._preventFocusOut();\n\t\t\treturn;\n\t\t}\n\n\t\t// Reset focus state and the stored Slider's initial\n\t\t// value that was saved when it was first focused in\n\t\tthis._valueInitial = undefined;\n\n\t\tif (this.showTooltip && !(e.relatedTarget as HTMLInputElement)?.hasAttribute(\"ui5-input\")) {\n\t\t\tthis._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.HIDDEN;\n\t\t}\n\t}\n\n\t/**\n\t * Called when the user moves the slider\n\t * @private\n\t */\n\t_handleMove(e: TouchEvent | MouseEvent) {\n\t\tif ((e.target as HTMLElement).hasAttribute(\"ui5-input\")) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\t// If step is 0 no interaction is available because there is no constant\n\t\t// (equal for all user environments) quantitative representation of the value\n\t\tif (this.disabled || this._effectiveStep === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst newValue = ctor.getValueFromInteraction(e, this._effectiveStep, this._effectiveMin, this._effectiveMax, this.getBoundingClientRect(), this.directionStart);\n\n\t\tthis._updateHandleAndProgress(newValue);\n\t\tthis.value = newValue;\n\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t}\n\n\t/** Called when the user finish interacting with the slider\n\t * @private\n\t */\n\t_handleUp(e: TouchEvent | MouseEvent) {\n\t\tif ((e.target as HTMLElement).hasAttribute(\"ui5-input\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._valueOnInteractionStart !== this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis.handleUpBase();\n\t\tthis._valueOnInteractionStart = undefined;\n\t}\n\n\t_onInputFocusOut(e: FocusEvent) {\n\t\tconst tooltipInput = this.shadowRoot!.querySelector(\"[ui5-input]\") as Input;\n\n\t\tthis._tooltipVisibility = SliderBase.TOOLTIP_VISIBILITY.HIDDEN;\n\t\tthis._updateValueFromInput(e);\n\n\t\tif (!this._isInputValueValid) {\n\t\t\ttooltipInput.value = this._lastValidInputValue;\n\t\t\tthis._isInputValueValid = true;\n\t\t\tthis._tooltipInputValueState = \"None\";\n\t\t}\n\t}\n\n\t_updateInputValue() {\n\t\tconst tooltipInput = this.shadowRoot!.querySelector(\"[ui5-input]\") as Input;\n\n\t\tif (!tooltipInput) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isInputValueValid = parseFloat(tooltipInput.value) >= this.min && parseFloat(tooltipInput.value) <= this.max;\n\n\t\tif (!this._isInputValueValid) {\n\t\t\tthis._tooltipInputValue = this._lastValidInputValue;\n\t\t\tthis._isInputValueValid = true;\n\t\t\tthis._tooltipInputValueState = \"Negative\";\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._tooltipInputValue = this.value.toString();\n\t\tthis._lastValidInputValue = this._tooltipInputValue;\n\t\tthis._tooltipInputValueState = \"None\";\n\t}\n\n\t/** Determines if the press is over the handle\n\t * @private\n\t */\n\t_isHandlePressed(clientX: number) {\n\t\tconst sliderHandleDomRect = this._sliderHandle.getBoundingClientRect();\n\t\treturn clientX >= sliderHandleDomRect.left && clientX <= sliderHandleDomRect.right;\n\t}\n\n\t/** Updates the UI representation of the progress bar and handle position\n\t * @private\n\t */\n\t_updateHandleAndProgress(newValue: number) {\n\t\tconst max = this._effectiveMax;\n\t\tconst min = this._effectiveMin;\n\n\t\t// The progress (completed) percentage of the slider.\n\t\tthis._progressPercentage = (newValue - min) / (max - min);\n\t\t// How many pixels from the left end of the slider will be the placed the affected by the user action handle\n\t\tthis._handlePositionFromStart = this._progressPercentage * 100;\n\t}\n\n\t_handleActionKeyPress(e: KeyboardEvent) {\n\t\tconst min = this._effectiveMin;\n\t\tconst max = this._effectiveMax;\n\t\tconst currentValue = this.value;\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst newValue = isEscape(e) ? this._valueInitial : ctor.clipValue(this._handleActionKeyPressBase(e, \"value\") + currentValue, min, max);\n\n\t\tif (newValue !== currentValue) {\n\t\t\tthis._updateHandleAndProgress(newValue!);\n\t\t\tthis.value = newValue!;\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\tget inputValue() {\n\t\treturn this.value.toString();\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\tprogress: {\n\t\t\t\t\"transform\": `scaleX(${this._progressPercentage})`,\n\t\t\t\t\"transform-origin\": `${this.directionStart} top`,\n\t\t\t},\n\t\t\thandle: {\n\t\t\t\t[this.directionStart]: `${this._handlePositionFromStart}%`,\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\t\"width\": `${this._labelWidth}%`,\n\t\t\t},\n\t\t\tlabelContainer: {\n\t\t\t\t\"width\": `100%`,\n\t\t\t\t[this.directionStart]: `-${this._labelWidth / 2}%`,\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\t\"visibility\": `${this._tooltipVisibility}`,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _sliderHandle() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-slider-handle\")!;\n\t}\n\n\tget tooltipValue() {\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this._effectiveStep);\n\t\treturn this.value.toFixed(stepPrecision);\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled || undefined;\n\t}\n\n\tget _ariaLabelledByText() {\n\t\treturn Slider.i18nBundle.getText(SLIDER_ARIA_DESCRIPTION);\n\t}\n\n\tget _ariaDescribedByInputText() {\n\t\treturn Slider.i18nBundle.getText(SLIDER_TOOLTIP_INPUT_DESCRIPTION);\n\t}\n\n\tget _ariaLabelledByInputText() {\n\t\treturn Slider.i18nBundle.getText(SLIDER_TOOLTIP_INPUT_LABEL);\n\t}\n\n\tget tickmarksObject() {\n\t\tconst count = this._tickmarksCount;\n\t\tconst arr = [];\n\n\t\tif (this._hiddenTickmarks) {\n\t\t\treturn [true, false];\n\t\t}\n\n\t\tfor (let i = 0; i <= count; i++) {\n\t\t\tarr.push(this._effectiveMin + (i * this.step) <= this.value);\n\t\t}\n\n\t\treturn arr;\n\t}\n}\n\nSlider.define();\n\nexport default Slider;\n"]}
@@ -64,6 +64,16 @@ declare abstract class SliderBase extends UI5Element {
64
64
  * @public
65
65
  */
66
66
  showTooltip: boolean;
67
+ /**
68
+ *
69
+ * Indicates whether input fields should be used as tooltips for the handles.
70
+ *
71
+ * **Note:** Setting this option to true will only work if showTooltip is set to true.
72
+ * **Note:** In order for the component to comply with the accessibility standard, it is recommended to set the editableTooltip property to true.
73
+ * @default false
74
+ * @public
75
+ */
76
+ editableTooltip: boolean;
67
77
  /**
68
78
  * Defines whether the slider is in disabled state.
69
79
  * @default false
@@ -77,15 +87,20 @@ declare abstract class SliderBase extends UI5Element {
77
87
  * @since 1.4.0
78
88
  */
79
89
  accessibleName?: string;
90
+ /**
91
+ * @private
92
+ */
93
+ value: number;
80
94
  /**
81
95
  * @private
82
96
  */
83
97
  _tooltipVisibility: string;
84
98
  _labelsOverlapping: boolean;
85
99
  _hiddenTickmarks: boolean;
100
+ _isInputValueValid: boolean;
86
101
  _resizeHandler: ResizeObserverCallback;
87
102
  _moveHandler: (e: TouchEvent | MouseEvent) => void;
88
- _upHandler: () => void;
103
+ _upHandler: (e: TouchEvent | MouseEvent) => void;
89
104
  _stateStorage: StateStorage;
90
105
  _ontouchstart: PassiveEventListenerObject;
91
106
  notResized: boolean;
@@ -96,12 +111,14 @@ declare abstract class SliderBase extends UI5Element {
96
111
  _oldMax?: number;
97
112
  _labelWidth: number;
98
113
  _labelValues?: Array<string>;
114
+ _valueOnInteractionStart?: number;
99
115
  formElementAnchor(): Promise<HTMLElement | undefined>;
100
116
  constructor();
101
117
  _handleMove(e: TouchEvent | MouseEvent): void;
102
- _handleUp(): void;
118
+ _handleUp(e: TouchEvent | MouseEvent): void;
103
119
  _onmousedown(e: TouchEvent | MouseEvent): void;
104
120
  _handleActionKeyPress(e: Event): void;
121
+ _updateInputValue(): void;
105
122
  abstract styles: {
106
123
  label: object;
107
124
  labelContainer: object;
@@ -137,7 +154,11 @@ declare abstract class SliderBase extends UI5Element {
137
154
  */
138
155
  _onmouseout(): void;
139
156
  _onkeydown(e: KeyboardEvent): void;
140
- _onkeyup(): void;
157
+ _onInputKeydown(e: KeyboardEvent): void;
158
+ _onInputChange(): void;
159
+ _onInputInput(): void;
160
+ _updateValueFromInput(e: Event): void;
161
+ _onKeyupBase(): void;
141
162
  /**
142
163
  * Flags if an inner element is currently being focused
143
164
  * @private
@@ -288,6 +309,9 @@ declare abstract class SliderBase extends UI5Element {
288
309
  get _effectiveMin(): number;
289
310
  get _effectiveMax(): number;
290
311
  get _tabIndex(): "-1" | "0";
291
- get _ariaLabelledByHandleRefs(): string;
312
+ get _ariaDescribedByHandleText(): "ui5-slider-accName ui5-slider-InputDesc" | undefined;
313
+ get _ariaLabelledByHandleText(): "ui5-slider-accName" | undefined;
314
+ get _ariaDescribedByInputText(): string;
315
+ get _ariaLabelledByInputText(): string;
292
316
  }
293
317
  export default SliderBase;
@@ -12,7 +12,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
12
12
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
13
13
  import { isPhone, supportsTouch } from "@ui5/webcomponents-base/dist/Device.js";
14
14
  import "@ui5/webcomponents-icons/dist/direction-arrows.js";
15
- import { isEscape, isHome, isEnd, isUp, isDown, isRight, isLeft, isUpCtrl, isDownCtrl, isRightCtrl, isLeftCtrl, isPlus, isMinus, isPageUp, isPageDown, } from "@ui5/webcomponents-base/dist/Keys.js";
15
+ import { isEscape, isHome, isEnd, isUp, isDown, isRight, isLeft, isUpCtrl, isDownCtrl, isRightCtrl, isLeftCtrl, isPlus, isMinus, isPageUp, isPageDown, isF2, isEnter, } from "@ui5/webcomponents-base/dist/Keys.js";
16
16
  // Styles
17
17
  import sliderBaseStyles from "./generated/themes/SliderBase.css.js";
18
18
  /**
@@ -78,18 +78,33 @@ class SliderBase extends UI5Element {
78
78
  * @public
79
79
  */
80
80
  this.showTooltip = false;
81
+ /**
82
+ *
83
+ * Indicates whether input fields should be used as tooltips for the handles.
84
+ *
85
+ * **Note:** Setting this option to true will only work if showTooltip is set to true.
86
+ * **Note:** In order for the component to comply with the accessibility standard, it is recommended to set the editableTooltip property to true.
87
+ * @default false
88
+ * @public
89
+ */
90
+ this.editableTooltip = false;
81
91
  /**
82
92
  * Defines whether the slider is in disabled state.
83
93
  * @default false
84
94
  * @public
85
95
  */
86
96
  this.disabled = false;
97
+ /**
98
+ * @private
99
+ */
100
+ this.value = 0;
87
101
  /**
88
102
  * @private
89
103
  */
90
104
  this._tooltipVisibility = "hidden";
91
105
  this._labelsOverlapping = false;
92
106
  this._hiddenTickmarks = false;
107
+ this._isInputValueValid = false;
93
108
  this.notResized = false;
94
109
  this._isUserInteraction = false;
95
110
  this._isInnerElementFocusing = false;
@@ -112,9 +127,10 @@ class SliderBase extends UI5Element {
112
127
  };
113
128
  }
114
129
  _handleMove(e) { } // eslint-disable-line
115
- _handleUp() { }
130
+ _handleUp(e) { } // eslint-disable-line
116
131
  _onmousedown(e) { } // eslint-disable-line
117
132
  _handleActionKeyPress(e) { } // eslint-disable-line
133
+ _updateInputValue() { }
118
134
  static get ACTION_KEYS() {
119
135
  return [
120
136
  isLeft,
@@ -190,16 +206,47 @@ class SliderBase extends UI5Element {
190
206
  }
191
207
  }
192
208
  _onkeydown(e) {
193
- if (this.disabled || this._effectiveStep === 0) {
209
+ const target = e.target;
210
+ if (isF2(e) && target.classList.contains("ui5-slider-handle")) {
211
+ target.parentNode.querySelector(".ui5-slider-handle-container ui5-input").focus();
212
+ }
213
+ if (this.disabled || this._effectiveStep === 0 || target.hasAttribute("ui5-slider-handle")) {
194
214
  return;
195
215
  }
196
- if (SliderBase_1._isActionKey(e)) {
216
+ if (SliderBase_1._isActionKey(e) && target && !target.hasAttribute("ui5-input")) {
197
217
  e.preventDefault();
198
218
  this._isUserInteraction = true;
199
219
  this._handleActionKeyPress(e);
200
220
  }
201
221
  }
202
- _onkeyup() {
222
+ _onInputKeydown(e) {
223
+ const target = e.target;
224
+ if (isF2(e) && target.hasAttribute("ui5-input")) {
225
+ target.parentNode.parentNode.querySelector(".ui5-slider-handle").focus();
226
+ }
227
+ if (isEnter(e)) {
228
+ this._updateInputValue();
229
+ this._updateValueFromInput(e);
230
+ }
231
+ }
232
+ _onInputChange() {
233
+ if (this._valueOnInteractionStart !== this.value) {
234
+ this.fireEvent("change");
235
+ }
236
+ }
237
+ _onInputInput() {
238
+ this.fireEvent("input");
239
+ }
240
+ _updateValueFromInput(e) {
241
+ const input = e.target;
242
+ const value = parseFloat(input.value);
243
+ this._isInputValueValid = value >= this._effectiveMin && value <= this._effectiveMax;
244
+ if (!this._isInputValueValid) {
245
+ return;
246
+ }
247
+ this.value = value;
248
+ }
249
+ _onKeyupBase() {
203
250
  if (this.disabled) {
204
251
  return;
205
252
  }
@@ -295,8 +342,9 @@ class SliderBase extends UI5Element {
295
342
  * @private
296
343
  */
297
344
  _handleFocusOnMouseDown(e) {
298
- const focusedElement = this.shadowRoot.activeElement;
299
- if (!focusedElement || focusedElement !== e.target) {
345
+ const currentlyFocusedElement = this.shadowRoot.activeElement;
346
+ const elementToBeFocused = e.target;
347
+ if ((!currentlyFocusedElement || currentlyFocusedElement !== elementToBeFocused) && !elementToBeFocused.hasAttribute("ui5-input")) {
300
348
  this._preserveFocus(true);
301
349
  this.focusInnerElement();
302
350
  }
@@ -566,8 +614,17 @@ class SliderBase extends UI5Element {
566
614
  get _tabIndex() {
567
615
  return this.disabled ? "-1" : "0";
568
616
  }
569
- get _ariaLabelledByHandleRefs() {
570
- return [`${this._id}-accName`, `${this._id}-sliderDesc`].join(" ").trim();
617
+ get _ariaDescribedByHandleText() {
618
+ return this.editableTooltip ? "ui5-slider-accName ui5-slider-InputDesc" : undefined;
619
+ }
620
+ get _ariaLabelledByHandleText() {
621
+ return this.accessibleName ? "ui5-slider-accName" : undefined;
622
+ }
623
+ get _ariaDescribedByInputText() {
624
+ return "";
625
+ }
626
+ get _ariaLabelledByInputText() {
627
+ return "";
571
628
  }
572
629
  };
573
630
  __decorate([
@@ -591,12 +648,18 @@ __decorate([
591
648
  __decorate([
592
649
  property({ type: Boolean })
593
650
  ], SliderBase.prototype, "showTooltip", void 0);
651
+ __decorate([
652
+ property({ type: Boolean })
653
+ ], SliderBase.prototype, "editableTooltip", void 0);
594
654
  __decorate([
595
655
  property({ type: Boolean })
596
656
  ], SliderBase.prototype, "disabled", void 0);
597
657
  __decorate([
598
658
  property()
599
659
  ], SliderBase.prototype, "accessibleName", void 0);
660
+ __decorate([
661
+ property({ type: Number })
662
+ ], SliderBase.prototype, "value", void 0);
600
663
  __decorate([
601
664
  property()
602
665
  ], SliderBase.prototype, "_tooltipVisibility", void 0);
@@ -606,6 +669,9 @@ __decorate([
606
669
  __decorate([
607
670
  property({ type: Boolean })
608
671
  ], SliderBase.prototype, "_hiddenTickmarks", void 0);
672
+ __decorate([
673
+ property({ type: Boolean })
674
+ ], SliderBase.prototype, "_isInputValueValid", void 0);
609
675
  SliderBase = SliderBase_1 = __decorate([
610
676
  event("change", {
611
677
  bubbles: true,