@ui5/webcomponents 2.20.0-rc.0 → 2.20.0-rc.2

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 (326) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Avatar.d.ts +23 -2
  4. package/dist/Avatar.js +41 -4
  5. package/dist/Avatar.js.map +1 -1
  6. package/dist/AvatarGroup.js +2 -0
  7. package/dist/AvatarGroup.js.map +1 -1
  8. package/dist/AvatarGroupTemplate.js +8 -1
  9. package/dist/AvatarGroupTemplate.js.map +1 -1
  10. package/dist/AvatarTemplate.js +1 -1
  11. package/dist/AvatarTemplate.js.map +1 -1
  12. package/dist/ComboBox.d.ts +19 -0
  13. package/dist/ComboBox.js +58 -2
  14. package/dist/ComboBox.js.map +1 -1
  15. package/dist/ComboBoxItem.d.ts +23 -0
  16. package/dist/ComboBoxItem.js +4 -0
  17. package/dist/ComboBoxItem.js.map +1 -1
  18. package/dist/List.js +6 -0
  19. package/dist/List.js.map +1 -1
  20. package/dist/ListItem.js +1 -1
  21. package/dist/ListItem.js.map +1 -1
  22. package/dist/ListItemCustom.d.ts +2 -14
  23. package/dist/ListItemCustom.js +31 -66
  24. package/dist/ListItemCustom.js.map +1 -1
  25. package/dist/ListItemGroup.d.ts +1 -0
  26. package/dist/ListItemGroup.js +1 -0
  27. package/dist/ListItemGroup.js.map +1 -1
  28. package/dist/ListItemGroupTemplate.js +1 -1
  29. package/dist/ListItemGroupTemplate.js.map +1 -1
  30. package/dist/Menu.d.ts +2 -1
  31. package/dist/Menu.js +14 -7
  32. package/dist/Menu.js.map +1 -1
  33. package/dist/MenuItem.d.ts +1 -0
  34. package/dist/MenuItem.js +6 -2
  35. package/dist/MenuItem.js.map +1 -1
  36. package/dist/Panel.d.ts +3 -0
  37. package/dist/Panel.js +13 -0
  38. package/dist/Panel.js.map +1 -1
  39. package/dist/PanelTemplate.js +1 -1
  40. package/dist/PanelTemplate.js.map +1 -1
  41. package/dist/Slider.d.ts +13 -20
  42. package/dist/Slider.js +48 -74
  43. package/dist/Slider.js.map +1 -1
  44. package/dist/SliderHandle.d.ts +61 -0
  45. package/dist/SliderHandle.js +104 -0
  46. package/dist/SliderHandle.js.map +1 -0
  47. package/dist/SliderHandleTemplate.d.ts +2 -0
  48. package/dist/SliderHandleTemplate.js +7 -0
  49. package/dist/SliderHandleTemplate.js.map +1 -0
  50. package/dist/SliderScale.d.ts +138 -0
  51. package/dist/SliderScale.js +300 -0
  52. package/dist/SliderScale.js.map +1 -0
  53. package/dist/SliderScaleTemplate.d.ts +2 -0
  54. package/dist/SliderScaleTemplate.js +11 -0
  55. package/dist/SliderScaleTemplate.js.map +1 -0
  56. package/dist/SliderTemplate.d.ts +0 -2
  57. package/dist/SliderTemplate.js +16 -14
  58. package/dist/SliderTemplate.js.map +1 -1
  59. package/dist/SliderTooltip.js +0 -4
  60. package/dist/SliderTooltip.js.map +1 -1
  61. package/dist/SplitButton.d.ts +2 -0
  62. package/dist/SplitButton.js +5 -0
  63. package/dist/SplitButton.js.map +1 -1
  64. package/dist/Tab.js +1 -1
  65. package/dist/Tab.js.map +1 -1
  66. package/dist/TabContainer.js +1 -1
  67. package/dist/TabContainer.js.map +1 -1
  68. package/dist/TableDragAndDrop.js +1 -1
  69. package/dist/TableDragAndDrop.js.map +1 -1
  70. package/dist/Tokenizer.js +16 -4
  71. package/dist/Tokenizer.js.map +1 -1
  72. package/dist/Toolbar.d.ts +4 -0
  73. package/dist/Toolbar.js +11 -0
  74. package/dist/Toolbar.js.map +1 -1
  75. package/dist/bundle.esm.js +2 -0
  76. package/dist/bundle.esm.js.map +1 -1
  77. package/dist/css/themes/Avatar.css +1 -1
  78. package/dist/css/themes/AvatarGroup.css +1 -1
  79. package/dist/css/themes/ColorPicker.css +1 -1
  80. package/dist/css/themes/Form.css +1 -1
  81. package/dist/css/themes/FormItemSpan.css +1 -1
  82. package/dist/css/themes/Panel.css +1 -1
  83. package/dist/css/themes/ProgressIndicator.css +1 -1
  84. package/dist/css/themes/Slider.css +1 -0
  85. package/dist/css/themes/SliderHandle.css +1 -0
  86. package/dist/css/themes/SliderScale.css +1 -0
  87. package/dist/css/themes/ToolbarItem.css +1 -1
  88. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  89. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  90. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  91. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  92. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  93. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  94. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -2
  95. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -2
  96. package/dist/custom-elements-internal.json +242 -32
  97. package/dist/custom-elements.json +198 -31
  98. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_mk.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 -1
  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_sr.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  149. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  151. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  154. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  155. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  156. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  157. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  158. package/dist/generated/themes/Avatar.css.js +1 -1
  159. package/dist/generated/themes/Avatar.css.js.map +1 -1
  160. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  161. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  162. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  163. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  164. package/dist/generated/themes/ColorPicker.css.js +1 -1
  165. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  166. package/dist/generated/themes/Form.css.d.ts +1 -1
  167. package/dist/generated/themes/Form.css.js +1 -1
  168. package/dist/generated/themes/Form.css.js.map +1 -1
  169. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  170. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  171. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  172. package/dist/generated/themes/Panel.css.d.ts +1 -1
  173. package/dist/generated/themes/Panel.css.js +1 -1
  174. package/dist/generated/themes/Panel.css.js.map +1 -1
  175. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  176. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  177. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  178. package/dist/generated/themes/Slider.css.d.ts +2 -0
  179. package/dist/generated/themes/Slider.css.js +8 -0
  180. package/dist/generated/themes/Slider.css.js.map +1 -0
  181. package/dist/generated/themes/SliderHandle.css.d.ts +2 -0
  182. package/dist/generated/themes/SliderHandle.css.js +8 -0
  183. package/dist/generated/themes/SliderHandle.css.js.map +1 -0
  184. package/dist/generated/themes/SliderScale.css.d.ts +2 -0
  185. package/dist/generated/themes/SliderScale.css.js +8 -0
  186. package/dist/generated/themes/SliderScale.css.js.map +1 -0
  187. package/dist/generated/themes/ToolbarItem.css.d.ts +1 -1
  188. package/dist/generated/themes/ToolbarItem.css.js +1 -1
  189. package/dist/generated/themes/ToolbarItem.css.js.map +1 -1
  190. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  191. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  192. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  193. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  194. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  195. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  196. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  197. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  198. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  199. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  200. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  201. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  202. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  203. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  204. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  205. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  206. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  207. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  208. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  209. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -2
  210. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  211. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  212. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -2
  213. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  214. package/dist/types/AvatarMode.d.ts +30 -0
  215. package/dist/types/AvatarMode.js +32 -0
  216. package/dist/types/AvatarMode.js.map +1 -0
  217. package/dist/vscode.html-custom-data.json +35 -11
  218. package/dist/web-types.json +80 -19
  219. package/package.json +9 -9
  220. package/src/AvatarGroupTemplate.tsx +8 -1
  221. package/src/AvatarTemplate.tsx +1 -0
  222. package/src/ListItemGroupTemplate.tsx +9 -3
  223. package/src/PanelTemplate.tsx +2 -0
  224. package/src/SliderHandleTemplate.tsx +15 -0
  225. package/src/SliderScaleTemplate.tsx +32 -0
  226. package/src/SliderTemplate.tsx +85 -64
  227. package/src/i18n/messagebundle_ar.properties +14 -8
  228. package/src/i18n/messagebundle_bg.properties +14 -8
  229. package/src/i18n/messagebundle_ca.properties +14 -8
  230. package/src/i18n/messagebundle_cnr.properties +14 -8
  231. package/src/i18n/messagebundle_cs.properties +14 -8
  232. package/src/i18n/messagebundle_cy.properties +14 -8
  233. package/src/i18n/messagebundle_da.properties +14 -8
  234. package/src/i18n/messagebundle_de.properties +14 -8
  235. package/src/i18n/messagebundle_el.properties +14 -8
  236. package/src/i18n/messagebundle_en.properties +14 -8
  237. package/src/i18n/messagebundle_en_GB.properties +14 -8
  238. package/src/i18n/messagebundle_en_US_sappsd.properties +3 -3
  239. package/src/i18n/messagebundle_en_US_saprigi.properties +3 -3
  240. package/src/i18n/messagebundle_en_US_saptrc.properties +3 -3
  241. package/src/i18n/messagebundle_es.properties +16 -10
  242. package/src/i18n/messagebundle_es_MX.properties +15 -9
  243. package/src/i18n/messagebundle_et.properties +14 -8
  244. package/src/i18n/messagebundle_fi.properties +14 -8
  245. package/src/i18n/messagebundle_fr.properties +14 -8
  246. package/src/i18n/messagebundle_fr_CA.properties +15 -9
  247. package/src/i18n/messagebundle_hi.properties +14 -8
  248. package/src/i18n/messagebundle_hr.properties +14 -8
  249. package/src/i18n/messagebundle_hu.properties +14 -8
  250. package/src/i18n/messagebundle_id.properties +14 -8
  251. package/src/i18n/messagebundle_it.properties +14 -8
  252. package/src/i18n/messagebundle_iw.properties +14 -8
  253. package/src/i18n/messagebundle_ja.properties +14 -8
  254. package/src/i18n/messagebundle_kk.properties +14 -8
  255. package/src/i18n/messagebundle_ko.properties +14 -8
  256. package/src/i18n/messagebundle_lt.properties +14 -8
  257. package/src/i18n/messagebundle_lv.properties +14 -8
  258. package/src/i18n/messagebundle_mk.properties +14 -8
  259. package/src/i18n/messagebundle_ms.properties +14 -8
  260. package/src/i18n/messagebundle_nl.properties +14 -8
  261. package/src/i18n/messagebundle_no.properties +14 -8
  262. package/src/i18n/messagebundle_pl.properties +14 -8
  263. package/src/i18n/messagebundle_pt.properties +14 -8
  264. package/src/i18n/messagebundle_pt_PT.properties +14 -8
  265. package/src/i18n/messagebundle_ro.properties +14 -8
  266. package/src/i18n/messagebundle_ru.properties +14 -8
  267. package/src/i18n/messagebundle_sh.properties +14 -8
  268. package/src/i18n/messagebundle_sk.properties +14 -8
  269. package/src/i18n/messagebundle_sl.properties +14 -8
  270. package/src/i18n/messagebundle_sr.properties +14 -8
  271. package/src/i18n/messagebundle_sv.properties +14 -8
  272. package/src/i18n/messagebundle_th.properties +14 -8
  273. package/src/i18n/messagebundle_tr.properties +14 -8
  274. package/src/i18n/messagebundle_uk.properties +14 -8
  275. package/src/i18n/messagebundle_vi.properties +14 -8
  276. package/src/i18n/messagebundle_zh_CN.properties +14 -8
  277. package/src/i18n/messagebundle_zh_TW.properties +15 -9
  278. package/src/themes/Avatar.css +39 -14
  279. package/src/themes/AvatarGroup.css +24 -0
  280. package/src/themes/ColorPicker.css +23 -27
  281. package/src/themes/FormItemSpan.css +1 -1
  282. package/src/themes/Panel.css +5 -1
  283. package/src/themes/ProgressIndicator.css +1 -0
  284. package/src/themes/Slider.css +32 -0
  285. package/src/themes/SliderHandle.css +61 -0
  286. package/src/themes/SliderScale.css +149 -0
  287. package/src/themes/ToolbarItem.css +1 -1
  288. package/src/themes/base/SliderHandle-parameters.css +3 -0
  289. package/src/themes/base/SliderScale-parameters.css +13 -0
  290. package/src/themes/sap_fiori_3/Slider-parameters.css +11 -0
  291. package/src/themes/sap_fiori_3/SliderHandle-parameters.css +5 -0
  292. package/src/themes/sap_fiori_3/SliderScale-parameters.css +13 -0
  293. package/src/themes/sap_fiori_3/parameters-bundle.css +2 -0
  294. package/src/themes/sap_fiori_3_dark/Slider-parameters.css +11 -0
  295. package/src/themes/sap_fiori_3_dark/SliderHandle-parameters.css +5 -0
  296. package/src/themes/sap_fiori_3_dark/SliderScale-parameters.css +13 -0
  297. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +2 -0
  298. package/src/themes/sap_fiori_3_hcb/Slider-parameters.css +11 -0
  299. package/src/themes/sap_fiori_3_hcb/SliderHandle-parameters.css +5 -0
  300. package/src/themes/sap_fiori_3_hcb/SliderScale-parameters.css +14 -0
  301. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +2 -0
  302. package/src/themes/sap_fiori_3_hcw/Slider-parameters.css +11 -0
  303. package/src/themes/sap_fiori_3_hcw/SliderHandle-parameters.css +5 -0
  304. package/src/themes/sap_fiori_3_hcw/SliderScale-parameters.css +14 -0
  305. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +2 -0
  306. package/src/themes/sap_horizon/AvatarGroup-parameters.css +20 -3
  307. package/src/themes/sap_horizon/Slider-parameters.css +11 -0
  308. package/src/themes/sap_horizon/SliderHandle-parameters.css +5 -0
  309. package/src/themes/sap_horizon/SliderScale-parameters.css +10 -0
  310. package/src/themes/sap_horizon/parameters-bundle.css +3 -0
  311. package/src/themes/sap_horizon/rtl-parameters.css +4 -0
  312. package/src/themes/sap_horizon_dark/Slider-parameters.css +11 -0
  313. package/src/themes/sap_horizon_dark/SliderHandle-parameters.css +5 -0
  314. package/src/themes/sap_horizon_dark/SliderScale-parameters.css +10 -0
  315. package/src/themes/sap_horizon_dark/parameters-bundle.css +3 -0
  316. package/src/themes/sap_horizon_dark/rtl-parameters.css +6 -0
  317. package/src/themes/sap_horizon_hcb/Slider-parameters.css +11 -0
  318. package/src/themes/sap_horizon_hcb/SliderHandle-parameters.css +5 -0
  319. package/src/themes/sap_horizon_hcb/SliderScale-parameters.css +10 -0
  320. package/src/themes/sap_horizon_hcb/parameters-bundle.css +3 -1
  321. package/src/themes/sap_horizon_hcb/rtl-parameters.css +1 -0
  322. package/src/themes/sap_horizon_hcw/Slider-parameters.css +11 -0
  323. package/src/themes/sap_horizon_hcw/SliderHandle-parameters.css +5 -0
  324. package/src/themes/sap_horizon_hcw/SliderScale-parameters.css +10 -0
  325. package/src/themes/sap_horizon_hcw/parameters-bundle.css +3 -1
  326. package/src/themes/sap_horizon_hcw/rtl-parameters.css +1 -0
package/dist/Slider.js CHANGED
@@ -12,6 +12,7 @@ import { isEscape, isF2 } from "@ui5/webcomponents-base/dist/Keys.js";
12
12
  import SliderBase from "./SliderBase.js";
13
13
  // Template
14
14
  import SliderTemplate from "./SliderTemplate.js";
15
+ import styles from "./generated/themes/Slider.css.js";
15
16
  // Texts
16
17
  import { SLIDER_ARIA_DESCRIPTION, SLIDER_TOOLTIP_INPUT_DESCRIPTION, SLIDER_TOOLTIP_INPUT_LABEL, } from "./generated/i18n/i18n-defaults.js";
17
18
  /**
@@ -82,60 +83,36 @@ let Slider = Slider_1 = class Slider extends SliderBase {
82
83
  * @public
83
84
  */
84
85
  this.value = 0;
86
+ /**
87
+ * Defines the size of the slider's selection intervals (e.g. min = 0, max = 10, step = 5 would result in possible selection of the values 0, 5, 10).
88
+ *
89
+ * **Note:** If set to 0 the slider handle movement is disabled.
90
+ * @default 1
91
+ * @public
92
+ */
93
+ this.step = 1;
85
94
  this.tooltipValueState = "None";
86
95
  this.tooltipValue = "";
87
96
  this._progressPercentage = 0;
88
97
  this._handlePositionFromStart = 0;
89
- this._stateStorage.value = undefined;
90
98
  this._lastValidInputValue = this.min.toString();
91
99
  }
92
100
  /**
93
- *
94
- * Check if the previously saved state is outdated. That would mean
95
- * either it is the initial rendering or that a property has been changed
96
- * programmatically - because the previous state is always updated in
97
- * the interaction handlers.
98
- *
99
- * Normalize current properties, update the previously stored state.
100
- * Update the visual UI representation of the Slider.
101
- *
101
+ * The value is visually clamped to min/max but the property is not modified.
102
+ * @private
102
103
  */
103
104
  onBeforeRendering() {
104
- if (!this.isCurrentStateOutdated()) {
105
- return;
106
- }
107
- this.notResized = true;
108
- this.syncUIAndState();
109
- this._updateHandleAndProgress(this.value);
105
+ // Clamp value visually without modifying the actual value property
106
+ const ctor = this.constructor;
107
+ const clampedValue = ctor.clipValue(this.value, this.min, this.max);
108
+ this._updateHandleAndProgress(clampedValue);
110
109
  }
111
110
  onAfterRendering() {
112
111
  super.onAfterRendering();
113
112
  this.tooltip?.repositionTooltip();
114
113
  }
115
- syncUIAndState() {
116
- // Validate step and update the stored state for the step property.
117
- if (this.isPropertyUpdated("step")) {
118
- this._validateStep(this.step);
119
- this.storePropertyState("step");
120
- }
121
- // Recalculate the tickmarks and labels and update the stored state.
122
- if (this.isPropertyUpdated("min", "max", "value")) {
123
- this.storePropertyState("min", "max");
124
- // Here the value props are changed programmatically (not by user interaction)
125
- // and it won't be "stepified" (rounded to the nearest step). 'Clip' them within
126
- // min and max bounderies and update the previous state reference.
127
- this.value = SliderBase.clipValue(this.value, this._effectiveMin, this._effectiveMax);
128
- this.updateStateStorageAndFireInputEvent("value");
129
- this.storePropertyState("value");
130
- }
131
- // Labels must be updated if any of the min/max/step/labelInterval props are changed
132
- if (this.labelInterval && this.showTickmarks) {
133
- this._createLabels();
134
- }
135
- // Update the stored state for the labelInterval, if changed
136
- if (this.isPropertyUpdated("labelInterval")) {
137
- this.storePropertyState("labelInterval");
138
- }
114
+ _handleResize() {
115
+ // TODO: Remove after refactoring Base and RangeSlider
139
116
  }
140
117
  /**
141
118
  * Called when the user starts interacting with the slider
@@ -157,8 +134,10 @@ let Slider = Slider_1 = class Slider extends SliderBase {
157
134
  // Do not yet update the Slider if press is over a handle. It will be updated if the user drags the mouse.
158
135
  const ctor = this.constructor;
159
136
  if (!this._isHandlePressed(ctor.getPageXValueFromEvent(e))) {
137
+ const stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);
160
138
  this._updateHandleAndProgress(newValue);
161
139
  this.value = newValue;
140
+ this.tooltipValue = newValue.toFixed(stepPrecision);
162
141
  this.updateStateStorageAndFireInputEvent("value");
163
142
  }
164
143
  }
@@ -188,18 +167,19 @@ let Slider = Slider_1 = class Slider extends SliderBase {
188
167
  }
189
168
  _onTooltipChange(e) {
190
169
  const value = parseFloat(e.detail.value);
191
- const isInvalid = value < this._effectiveMin || value > this._effectiveMax;
170
+ const isInvalid = (value < this.min || value > this.max) || Number.isNaN(value);
192
171
  if (isInvalid) {
193
172
  this.tooltipValueState = "Negative";
194
173
  this.tooltipValue = `${value}`;
195
174
  return;
196
175
  }
176
+ this.tooltipValueState = "None";
197
177
  this.value = value;
198
178
  this.fireDecoratorEvent("change");
199
179
  }
200
180
  _onTooltipFocusChange() {
201
181
  const value = parseFloat(this.tooltipValue);
202
- const isInvalid = value < this._effectiveMin || value > this._effectiveMax;
182
+ const isInvalid = (value < this.min || value > this.max) || Number.isNaN(value);
203
183
  if (isInvalid) {
204
184
  this.tooltipValueState = "None";
205
185
  this.tooltipValue = this.value.toString();
@@ -213,7 +193,7 @@ let Slider = Slider_1 = class Slider extends SliderBase {
213
193
  }
214
194
  _onTooltipOpen() {
215
195
  const ctor = this.constructor;
216
- const stepPrecision = ctor._getDecimalPrecisionOfNumber(this._effectiveStep);
196
+ const stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);
217
197
  this.tooltipValue = this.value.toFixed(stepPrecision);
218
198
  }
219
199
  _onTooltipInput(e) {
@@ -225,16 +205,12 @@ let Slider = Slider_1 = class Slider extends SliderBase {
225
205
  */
226
206
  _handleMove(e) {
227
207
  e.preventDefault();
228
- // If step is 0 no interaction is available because there is no constant
229
- // (equal for all user environments) quantitative representation of the value
230
- if (this.disabled || this._effectiveStep === 0) {
231
- return;
232
- }
233
208
  const ctor = this.constructor;
234
- const newValue = ctor.getValueFromInteraction(e, this._effectiveStep, this._effectiveMin, this._effectiveMax, this.getBoundingClientRect(), this.directionStart);
209
+ const newValue = ctor.getValueFromInteraction(e, this.step, this.min, this.max, this.getBoundingClientRect(), this.directionStart);
210
+ const stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);
235
211
  this._updateHandleAndProgress(newValue);
236
212
  this.value = newValue;
237
- this.tooltipValue = newValue.toString();
213
+ this.tooltipValue = newValue.toFixed(stepPrecision);
238
214
  this.updateStateStorageAndFireInputEvent("value");
239
215
  }
240
216
  /** Called when the user finish interacting with the slider
@@ -266,23 +242,24 @@ let Slider = Slider_1 = class Slider extends SliderBase {
266
242
  * @private
267
243
  */
268
244
  _updateHandleAndProgress(newValue) {
269
- const max = this._effectiveMax;
270
- const min = this._effectiveMin;
245
+ const max = this.max;
246
+ const min = this.min;
271
247
  // The progress (completed) percentage of the slider.
272
248
  this._progressPercentage = (newValue - min) / (max - min);
273
249
  // How many pixels from the left end of the slider will be the placed the affected by the user action handle
274
250
  this._handlePositionFromStart = this._progressPercentage * 100;
275
251
  }
276
252
  _handleActionKeyPress(e) {
277
- const min = this._effectiveMin;
278
- const max = this._effectiveMax;
253
+ const min = this.min;
254
+ const max = this.max;
279
255
  const currentValue = this.value;
280
256
  const ctor = this.constructor;
281
257
  const newValue = isEscape(e) ? this._valueInitial : ctor.clipValue(this._handleActionKeyPressBase(e, "value") + currentValue, min, max);
282
258
  if (newValue !== currentValue) {
259
+ const stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);
283
260
  this._updateHandleAndProgress(newValue);
284
261
  this.value = newValue;
285
- this.tooltipValue = this.value.toString();
262
+ this.tooltipValue = this.value.toFixed(stepPrecision);
286
263
  this.updateStateStorageAndFireInputEvent("value");
287
264
  }
288
265
  }
@@ -296,19 +273,8 @@ let Slider = Slider_1 = class Slider extends SliderBase {
296
273
  get tooltip() {
297
274
  return this.getDomRef()?.querySelector("[ui5-slider-tooltip]");
298
275
  }
299
- get styles() {
300
- return {
301
- progress: {
302
- "width": `${this._handlePositionFromStart}%`,
303
- "border": this._handlePositionFromStart === 0 ? "none" : "",
304
- },
305
- handle: {
306
- [this.directionStart]: `${this._handlePositionFromStart}%`,
307
- },
308
- };
309
- }
310
276
  get _sliderHandle() {
311
- return this.shadowRoot.querySelector(".ui5-slider-handle");
277
+ return this.shadowRoot.querySelector("[ui5-slider-handle]");
312
278
  }
313
279
  get _ariaDisabled() {
314
280
  return this.disabled || undefined;
@@ -322,21 +288,28 @@ let Slider = Slider_1 = class Slider extends SliderBase {
322
288
  get _ariaLabelledByInputText() {
323
289
  return Slider_1.i18nBundle.getText(SLIDER_TOOLTIP_INPUT_LABEL);
324
290
  }
291
+ // TODO: Refactor these methods after RangeSlider is refactored
325
292
  get tickmarksObject() {
326
- const count = this._tickmarksCount;
327
- const arr = [];
328
- if (this._hiddenTickmarks) {
329
- return [true, false];
293
+ return [];
294
+ }
295
+ _onkeydown(e) {
296
+ const target = e.target;
297
+ if (isF2(e) && target.hasAttribute("ui5-slider-handle")) {
298
+ target.parentNode.querySelector("[ui5-slider-tooltip]").focus();
330
299
  }
331
- for (let i = 0; i <= count; i++) {
332
- arr.push(this._effectiveMin + (i * this.step) <= this.value);
300
+ if (SliderBase._isActionKey(e) && target && !target.hasAttribute("ui5-slider-tooltip")) {
301
+ e.preventDefault();
302
+ this._isUserInteraction = true;
303
+ this._handleActionKeyPress(e);
333
304
  }
334
- return arr;
335
305
  }
336
306
  };
337
307
  __decorate([
338
308
  property({ type: Number })
339
309
  ], Slider.prototype, "value", void 0);
310
+ __decorate([
311
+ property({ type: Number })
312
+ ], Slider.prototype, "step", void 0);
340
313
  __decorate([
341
314
  property()
342
315
  ], Slider.prototype, "tooltipValueState", void 0);
@@ -351,6 +324,7 @@ Slider = Slider_1 = __decorate([
351
324
  tag: "ui5-slider",
352
325
  languageAware: true,
353
326
  formAssociated: true,
327
+ styles: [styles],
354
328
  template: SliderTemplate,
355
329
  })
356
330
  ], Slider);
@@ -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, isF2 } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport type ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport SliderBase from \"./SliderBase.js\";\nimport type SliderTooltip from \"./SliderTooltip.js\";\n\n// Template\nimport SliderTemplate from \"./SliderTemplate.js\";\nimport type { SliderTooltipChangeEventDetails } from \"./SliderTooltip.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})\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@property()\n\ttooltipValueState: `${ValueState}` = \"None\";\n\n\t@property()\n\ttooltipValue = \"\";\n\n\t_valueInitial?: number;\n\t_valueOnInteractionStart?: number;\n\t_progressPercentage = 0;\n\t_handlePositionFromStart = 0;\n\t_lastValidInputValue: string;\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.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\tonAfterRendering(): void {\n\t\tsuper.onAfterRendering();\n\n\t\tthis.tooltip?.repositionTooltip();\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-slider-tooltip\")) {\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._tooltipsOpen = true;\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 HTMLElement)?.hasAttribute(\"ui5-slider-tooltip\")) {\n\t\t\tthis._tooltipsOpen = false;\n\t\t}\n\t}\n\n\t_onTooltipChange(e: CustomEvent<SliderTooltipChangeEventDetails>) {\n\t\tconst value = parseFloat(e.detail.value);\n\t\tconst isInvalid = value < this._effectiveMin || value > this._effectiveMax;\n\n\t\tif (isInvalid) {\n\t\t\tthis.tooltipValueState = \"Negative\";\n\t\t\tthis.tooltipValue = `${value}`;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = value;\n\t\tthis.fireDecoratorEvent(\"change\");\n\t}\n\n\t_onTooltipFocusChange() {\n\t\tconst value = parseFloat(this.tooltipValue);\n\t\tconst isInvalid = value < this._effectiveMin || value > this._effectiveMax;\n\n\t\tif (isInvalid) {\n\t\t\tthis.tooltipValueState = \"None\";\n\t\t\tthis.tooltipValue = this.value.toString();\n\t\t}\n\t}\n\n\t_onTooltipKeydown(e: KeyboardEvent) {\n\t\tif (isF2(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis._sliderHandle.focus();\n\t\t}\n\t}\n\n\t_onTooltipOpen() {\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this._effectiveStep);\n\t\tthis.tooltipValue = this.value.toFixed(stepPrecision);\n\t}\n\n\t_onTooltipInput(e: CustomEvent) {\n\t\tthis.tooltipValue = e.detail.value;\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.tooltipValue = newValue.toString();\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_onkeyup(e: KeyboardEvent) {\n\t\tconst isActionKey = SliderBase._isActionKey(e);\n\n\t\tthis._onKeyupBase();\n\n\t\tif (isActionKey && this._valueOnInteractionStart !== this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis._valueOnInteractionStart = this.value;\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.tooltipValue = this.value.toString();\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\t_onTooltopForwardFocus(e: CustomEvent) {\n\t\tconst tooltip = e.target as SliderTooltip;\n\n\t\ttooltip.followRef?.focus();\n\t}\n\n\tget inputValue() {\n\t\treturn this.value.toString();\n\t}\n\n\tget tooltip() {\n\t\treturn this.getDomRef()?.querySelector<SliderTooltip>(\"[ui5-slider-tooltip]\");\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\tprogress: {\n\t\t\t\t\"width\": `${this._handlePositionFromStart}%`,\n\t\t\t\t\"border\": this._handlePositionFromStart === 0 ? \"none\" : \"\",\n\t\t\t},\n\t\t\thandle: {\n\t\t\t\t[this.directionStart]: `${this._handlePositionFromStart}%`,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _sliderHandle() : HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-slider-handle\")!;\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"]}
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, isF2 } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport type ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport SliderBase from \"./SliderBase.js\";\nimport type SliderTooltip from \"./SliderTooltip.js\";\n\n// Template\nimport SliderTemplate from \"./SliderTemplate.js\";\nimport type { SliderTooltipChangeEventDetails } from \"./SliderTooltip.js\";\nimport styles from \"./generated/themes/Slider.css.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\tstyles: [styles],\n\ttemplate: SliderTemplate,\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/**\n\t * Defines the size of the slider's selection intervals (e.g. min = 0, max = 10, step = 5 would result in possible selection of the values 0, 5, 10).\n\t *\n\t * **Note:** If set to 0 the slider handle movement is disabled.\n\t * @default 1\n\t * @public\n\t */\n\t@property({ type: Number })\n\tstep = 1;\n\n\t@property()\n\ttooltipValueState: `${ValueState}` = \"None\";\n\n\t@property()\n\ttooltipValue = \"\";\n\n\t_valueInitial?: number;\n\t_valueOnInteractionStart?: number;\n\t_progressPercentage = 0;\n\t_handlePositionFromStart = 0;\n\t_lastValidInputValue: string;\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._lastValidInputValue = this.min.toString();\n\t}\n\n\t/**\n\t * The value is visually clamped to min/max but the property is not modified.\n\t * @private\n\t */\n\tonBeforeRendering() {\n\t\t// Clamp value visually without modifying the actual value property\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst clampedValue = ctor.clipValue(this.value, this.min, this.max);\n\t\tthis._updateHandleAndProgress(clampedValue);\n\t}\n\n\tonAfterRendering(): void {\n\t\tsuper.onAfterRendering();\n\n\t\tthis.tooltip?.repositionTooltip();\n\t}\n\n\t_handleResize() {\n\t\t// TODO: Remove after refactoring Base and RangeSlider\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-slider-tooltip\")) {\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\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);\n\t\t\tthis._updateHandleAndProgress(newValue);\n\t\t\tthis.value = newValue;\n\t\t\tthis.tooltipValue = newValue.toFixed(stepPrecision);\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._tooltipsOpen = true;\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 HTMLElement)?.hasAttribute(\"ui5-slider-tooltip\")) {\n\t\t\tthis._tooltipsOpen = false;\n\t\t}\n\t}\n\n\t_onTooltipChange(e: CustomEvent<SliderTooltipChangeEventDetails>) {\n\t\tconst value = parseFloat(e.detail.value);\n\t\tconst isInvalid = (value < this.min || value > this.max) || Number.isNaN(value);\n\n\t\tif (isInvalid) {\n\t\t\tthis.tooltipValueState = \"Negative\";\n\t\t\tthis.tooltipValue = `${value}`;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.tooltipValueState = \"None\";\n\t\tthis.value = value;\n\t\tthis.fireDecoratorEvent(\"change\");\n\t}\n\n\t_onTooltipFocusChange() {\n\t\tconst value = parseFloat(this.tooltipValue);\n\t\tconst isInvalid = (value < this.min || value > this.max) || Number.isNaN(value);\n\n\t\tif (isInvalid) {\n\t\t\tthis.tooltipValueState = \"None\";\n\t\t\tthis.tooltipValue = this.value.toString();\n\t\t}\n\t}\n\n\t_onTooltipKeydown(e: KeyboardEvent) {\n\t\tif (isF2(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis._sliderHandle.focus();\n\t\t}\n\t}\n\n\t_onTooltipOpen() {\n\t\tconst ctor = this.constructor as typeof Slider;\n\t\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);\n\t\tthis.tooltipValue = this.value.toFixed(stepPrecision);\n\t}\n\n\t_onTooltipInput(e: CustomEvent) {\n\t\tthis.tooltipValue = e.detail.value;\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\tconst ctor = this.constructor as typeof Slider;\n\t\tconst newValue = ctor.getValueFromInteraction(e, this.step, this.min, this.max, this.getBoundingClientRect(), this.directionStart);\n\t\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);\n\n\t\tthis._updateHandleAndProgress(newValue);\n\t\tthis.value = newValue;\n\t\tthis.tooltipValue = newValue.toFixed(stepPrecision);\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_onkeyup(e: KeyboardEvent) {\n\t\tconst isActionKey = SliderBase._isActionKey(e);\n\n\t\tthis._onKeyupBase();\n\n\t\tif (isActionKey && this._valueOnInteractionStart !== this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis._valueOnInteractionStart = this.value;\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.max;\n\t\tconst min = this.min;\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.min;\n\t\tconst max = this.max;\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\tconst stepPrecision = ctor._getDecimalPrecisionOfNumber(this.step);\n\t\t\tthis._updateHandleAndProgress(newValue!);\n\t\t\tthis.value = newValue!;\n\t\t\tthis.tooltipValue = this.value.toFixed(stepPrecision);\n\t\t\tthis.updateStateStorageAndFireInputEvent(\"value\");\n\t\t}\n\t}\n\n\t_onTooltopForwardFocus(e: CustomEvent) {\n\t\tconst tooltip = e.target as SliderTooltip;\n\n\t\ttooltip.followRef?.focus();\n\t}\n\n\tget inputValue() {\n\t\treturn this.value.toString();\n\t}\n\n\tget tooltip() {\n\t\treturn this.getDomRef()?.querySelector<SliderTooltip>(\"[ui5-slider-tooltip]\");\n\t}\n\n\tget _sliderHandle() : HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\"[ui5-slider-handle]\")!;\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\t// TODO: Refactor these methods after RangeSlider is refactored\n\tget tickmarksObject() {\n\t\treturn [];\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tconst target = e.target as HTMLElement;\n\n\t\tif (isF2(e) && target.hasAttribute(\"ui5-slider-handle\")) {\n\t\t\t(target.parentNode!.querySelector(\"[ui5-slider-tooltip]\") as HTMLElement).focus();\n\t\t}\n\n\t\tif (SliderBase._isActionKey(e) && target && !target.hasAttribute(\"ui5-slider-tooltip\")) {\n\t\t\te.preventDefault();\n\n\t\t\tthis._isUserInteraction = true;\n\t\t\tthis._handleActionKeyPress(e);\n\t\t}\n\t}\n}\n\nSlider.define();\n\nexport default Slider;\n"]}
@@ -0,0 +1,61 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import type { SliderScaleOrientation } from "./SliderScale.js";
3
+ /**
4
+ * @class
5
+ * The <code>ui5-slider-handle</code> component represents the handle of the <code>ui5-slider</code> component.
6
+ *
7
+ * @constructor
8
+ * @extends UI5Element
9
+ * @since 2.19.0
10
+ * @private
11
+ */
12
+ declare class SliderHandle extends UI5Element {
13
+ /**
14
+ * Defines the value of the slider handle.
15
+ * <br><br>
16
+ * <b>Note:</b> The value should be between the <code>min</code> and <code>max</code> properties of the parent <code>ui5-slider</code>.
17
+ * @since 2.19.0
18
+ * @public
19
+ */
20
+ value: number;
21
+ /**
22
+ * Defines the minimum value of the slider handle.
23
+ * <br><br>
24
+ * <b>Note:</b> The value should be less than the <code>max</code> property of the parent <code>ui5-slider</code>.
25
+ * @since 2.19.0
26
+ * @public
27
+ */
28
+ min: number;
29
+ /**
30
+ * Defines the maximum value of the slider handle.
31
+ * <br><br>
32
+ * <b>Note:</b> The value should be greater than the <code>min</code> property of the parent <code>ui5-slider</code>.
33
+ * @since 2.19.0
34
+ * @public
35
+ */
36
+ max: number;
37
+ /**
38
+ * Defines whether the slider handle is disabled.
39
+ * <br><br>
40
+ * <b>Note:</b> A disabled slider handle cannot be interacted with.
41
+ * @since 2.19.0
42
+ * @public
43
+ */
44
+ disabled: boolean;
45
+ /**
46
+ * Defines whether the slider handle is active.
47
+ * <br><br>
48
+ * <b>Note:</b> An active slider handle is currently being interacted with.
49
+ * @since 2.19.0
50
+ * @public
51
+ */
52
+ active: boolean;
53
+ /**
54
+ * Defines the orientation of the slider handle.
55
+ *
56
+ * @private
57
+ */
58
+ orientation: `${SliderScaleOrientation}`;
59
+ getFocusDomRef(): HTMLElement | undefined;
60
+ }
61
+ export default SliderHandle;
@@ -0,0 +1,104 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
8
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
9
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
10
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
11
+ import SliderHandleTemplate from "./SliderHandleTemplate.js";
12
+ import styles from "./generated/themes/SliderHandle.css.js";
13
+ /**
14
+ * @class
15
+ * The <code>ui5-slider-handle</code> component represents the handle of the <code>ui5-slider</code> component.
16
+ *
17
+ * @constructor
18
+ * @extends UI5Element
19
+ * @since 2.19.0
20
+ * @private
21
+ */
22
+ let SliderHandle = class SliderHandle extends UI5Element {
23
+ constructor() {
24
+ super(...arguments);
25
+ /**
26
+ * Defines the value of the slider handle.
27
+ * <br><br>
28
+ * <b>Note:</b> The value should be between the <code>min</code> and <code>max</code> properties of the parent <code>ui5-slider</code>.
29
+ * @since 2.19.0
30
+ * @public
31
+ */
32
+ this.value = 0;
33
+ /**
34
+ * Defines the minimum value of the slider handle.
35
+ * <br><br>
36
+ * <b>Note:</b> The value should be less than the <code>max</code> property of the parent <code>ui5-slider</code>.
37
+ * @since 2.19.0
38
+ * @public
39
+ */
40
+ this.min = 0;
41
+ /**
42
+ * Defines the maximum value of the slider handle.
43
+ * <br><br>
44
+ * <b>Note:</b> The value should be greater than the <code>min</code> property of the parent <code>ui5-slider</code>.
45
+ * @since 2.19.0
46
+ * @public
47
+ */
48
+ this.max = 100;
49
+ /**
50
+ * Defines whether the slider handle is disabled.
51
+ * <br><br>
52
+ * <b>Note:</b> A disabled slider handle cannot be interacted with.
53
+ * @since 2.19.0
54
+ * @public
55
+ */
56
+ this.disabled = false;
57
+ /**
58
+ * Defines whether the slider handle is active.
59
+ * <br><br>
60
+ * <b>Note:</b> An active slider handle is currently being interacted with.
61
+ * @since 2.19.0
62
+ * @public
63
+ */
64
+ this.active = false;
65
+ /**
66
+ * Defines the orientation of the slider handle.
67
+ *
68
+ * @private
69
+ */
70
+ this.orientation = "Horizontal";
71
+ }
72
+ getFocusDomRef() {
73
+ return this;
74
+ }
75
+ };
76
+ __decorate([
77
+ property({ type: Number })
78
+ ], SliderHandle.prototype, "value", void 0);
79
+ __decorate([
80
+ property({ type: Number })
81
+ ], SliderHandle.prototype, "min", void 0);
82
+ __decorate([
83
+ property({ type: Number })
84
+ ], SliderHandle.prototype, "max", void 0);
85
+ __decorate([
86
+ property({ type: Boolean })
87
+ ], SliderHandle.prototype, "disabled", void 0);
88
+ __decorate([
89
+ property({ type: Boolean })
90
+ ], SliderHandle.prototype, "active", void 0);
91
+ __decorate([
92
+ property()
93
+ ], SliderHandle.prototype, "orientation", void 0);
94
+ SliderHandle = __decorate([
95
+ customElement({
96
+ tag: "ui5-slider-handle",
97
+ renderer: jsxRenderer,
98
+ template: SliderHandleTemplate,
99
+ styles,
100
+ })
101
+ ], SliderHandle);
102
+ SliderHandle.define();
103
+ export default SliderHandle;
104
+ //# sourceMappingURL=SliderHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderHandle.js","sourceRoot":"","sources":["../src/SliderHandle.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,MAAM,MAAM,wCAAwC,CAAC;AAG5D;;;;;;;;GAQG;AAOH,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QACC;;;;;;WAMG;QAEH,UAAK,GAAG,CAAC,CAAC;QAEV;;;;;;WAMG;QAEH,QAAG,GAAG,CAAC,CAAC;QAER;;;;;;WAMG;QAEH,QAAG,GAAG,GAAG,CAAC;QAEV;;;;;;WAMG;QAEH,aAAQ,GAAG,KAAK,CAAC;QAEjB;;;;;;WAMG;QAEH,WAAM,GAAG,KAAK,CAAC;QAEf;;;;WAIG;QAEH,gBAAW,GAAgC,YAAY,CAAC;IAKzD,CAAC;IAHA,cAAc;QACb,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAA;AArDA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACjB;AAUV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCACnB;AAUR;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCACjB;AAUV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACX;AAUjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4CACb;AAQf;IADC,QAAQ,EAAE;iDAC6C;AAzDnD,YAAY;IANjB,aAAa,CAAC;QACd,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,oBAAoB;QAC9B,MAAM;KACN,CAAC;GACI,YAAY,CA8DjB;AAED,YAAY,CAAC,MAAM,EAAE,CAAC;AAEtB,eAAe,YAAY,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport SliderHandleTemplate from \"./SliderHandleTemplate.js\";\nimport styles from \"./generated/themes/SliderHandle.css.js\";\nimport type { SliderScaleOrientation } from \"./SliderScale.js\";\n\n/**\n * @class\n * The <code>ui5-slider-handle</code> component represents the handle of the <code>ui5-slider</code> component.\n *\n * @constructor\n * @extends UI5Element\n * @since 2.19.0\n * @private\n */\n@customElement({\n\ttag: \"ui5-slider-handle\",\n\trenderer: jsxRenderer,\n\ttemplate: SliderHandleTemplate,\n\tstyles,\n})\nclass SliderHandle extends UI5Element {\n\t/**\n\t * Defines the value of the slider handle.\n\t * <br><br>\n\t * <b>Note:</b> The value should be between the <code>min</code> and <code>max</code> properties of the parent <code>ui5-slider</code>.\n\t * @since 2.19.0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvalue = 0;\n\n\t/**\n\t * Defines the minimum value of the slider handle.\n\t * <br><br>\n\t * <b>Note:</b> The value should be less than the <code>max</code> property of the parent <code>ui5-slider</code>.\n\t * @since 2.19.0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmin = 0;\n\n\t/**\n\t * Defines the maximum value of the slider handle.\n\t * <br><br>\n\t * <b>Note:</b> The value should be greater than the <code>min</code> property of the parent <code>ui5-slider</code>.\n\t * @since 2.19.0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmax = 100;\n\n\t/**\n\t * Defines whether the slider handle is disabled.\n\t * <br><br>\n\t * <b>Note:</b> A disabled slider handle cannot be interacted with.\n\t * @since 2.19.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines whether the slider handle is active.\n\t * <br><br>\n\t * <b>Note:</b> An active slider handle is currently being interacted with.\n\t * @since 2.19.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines the orientation of the slider handle.\n\t *\n\t * @private\n\t */\n\t@property()\n\torientation: `${SliderScaleOrientation}` = \"Horizontal\";\n\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this;\n\t}\n}\n\nSliderHandle.define();\n\nexport default SliderHandle;\n"]}
@@ -0,0 +1,2 @@
1
+ import type SliderHandle from "./SliderHandle.js";
2
+ export default function SliderHandleTemplate(this: SliderHandle): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
2
+ import directionArrows from "@ui5/webcomponents-icons/dist/direction-arrows.js";
3
+ import Icon from "./Icon.js";
4
+ export default function SliderHandleTemplate() {
5
+ return (_jsx("div", { class: "ui5-slider-handle-container", children: _jsx(Icon, { name: directionArrows, mode: "Decorative", part: "icon", "slider-icon": true }) }));
6
+ }
7
+ //# sourceMappingURL=SliderHandleTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderHandleTemplate.js","sourceRoot":"","sources":["../src/SliderHandleTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,mDAAmD,CAAC;AAChF,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,OAAO,UAAU,oBAAoB;IAC3C,OAAO,CACN,cAAK,KAAK,EAAC,6BAA6B,YACvC,KAAC,IAAI,IAAC,IAAI,EAAE,eAAe,EAC1B,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,MAAM,wBAEJ,GACH,CACN,CAAC;AACH,CAAC","sourcesContent":["import directionArrows from \"@ui5/webcomponents-icons/dist/direction-arrows.js\";\nimport Icon from \"./Icon.js\";\nimport type SliderHandle from \"./SliderHandle.js\";\n\nexport default function SliderHandleTemplate(this: SliderHandle) {\n\treturn (\n\t\t<div class=\"ui5-slider-handle-container\">\n\t\t\t<Icon name={directionArrows}\n\t\t\t\tmode=\"Decorative\"\n\t\t\t\tpart=\"icon\"\n\t\t\t\tslider-icon\n\t\t\t></Icon>\n\t\t</div>\n\t);\n}\n"]}