@ui5/webcomponents 1.24.0 → 1.24.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 (396) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/FileUploader.d.ts +2 -0
  4. package/dist/FileUploader.js +16 -0
  5. package/dist/FileUploader.js.map +1 -1
  6. package/dist/Input.d.ts +2 -0
  7. package/dist/Input.js.map +1 -1
  8. package/dist/MonthPicker.d.ts +1 -0
  9. package/dist/MonthPicker.js +10 -6
  10. package/dist/MonthPicker.js.map +1 -1
  11. package/dist/MultiComboBox.js +1 -0
  12. package/dist/MultiComboBox.js.map +1 -1
  13. package/dist/MultiInput.d.ts +1 -0
  14. package/dist/MultiInput.js +5 -1
  15. package/dist/MultiInput.js.map +1 -1
  16. package/dist/SelectMenu.js +3 -3
  17. package/dist/SelectMenu.js.map +1 -1
  18. package/dist/StepInput.d.ts +6 -1
  19. package/dist/StepInput.js +55 -14
  20. package/dist/StepInput.js.map +1 -1
  21. package/dist/ToggleSpinButton.d.ts +4 -0
  22. package/dist/ToggleSpinButton.js +6 -0
  23. package/dist/ToggleSpinButton.js.map +1 -1
  24. package/dist/Tokenizer.d.ts +1 -0
  25. package/dist/Tokenizer.js +3 -0
  26. package/dist/Tokenizer.js.map +1 -1
  27. package/dist/Toolbar.js +4 -3
  28. package/dist/Toolbar.js.map +1 -1
  29. package/dist/TreeItemCustom.d.ts +2 -0
  30. package/dist/TreeItemCustom.js +15 -0
  31. package/dist/TreeItemCustom.js.map +1 -1
  32. package/dist/css/themes/Avatar.css +1 -1
  33. package/dist/css/themes/AvatarGroup.css +1 -1
  34. package/dist/css/themes/Badge.css +1 -1
  35. package/dist/css/themes/Breadcrumbs.css +1 -1
  36. package/dist/css/themes/BusyIndicator.css +1 -1
  37. package/dist/css/themes/Button.css +1 -1
  38. package/dist/css/themes/Calendar.css +1 -1
  39. package/dist/css/themes/CalendarHeader.css +1 -1
  40. package/dist/css/themes/CalendarLegend.css +1 -1
  41. package/dist/css/themes/CalendarLegendItem.css +1 -1
  42. package/dist/css/themes/Card.css +1 -1
  43. package/dist/css/themes/CardHeader.css +1 -1
  44. package/dist/css/themes/Carousel.css +1 -1
  45. package/dist/css/themes/CheckBox.css +1 -1
  46. package/dist/css/themes/ColorPalette.css +1 -1
  47. package/dist/css/themes/ColorPaletteItem.css +1 -1
  48. package/dist/css/themes/ColorPalettePopover.css +1 -1
  49. package/dist/css/themes/ColorPicker.css +1 -1
  50. package/dist/css/themes/ComboBox.css +1 -1
  51. package/dist/css/themes/CustomListItem.css +1 -1
  52. package/dist/css/themes/DatePicker.css +1 -1
  53. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  54. package/dist/css/themes/DayPicker.css +1 -1
  55. package/dist/css/themes/Dialog.css +1 -1
  56. package/dist/css/themes/FileUploader.css +1 -1
  57. package/dist/css/themes/GroupHeaderListItem.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/Menu.css +1 -1
  68. package/dist/css/themes/MenuListItem.css +1 -1
  69. package/dist/css/themes/MessageStrip.css +1 -1
  70. package/dist/css/themes/MonthPicker.css +1 -1
  71. package/dist/css/themes/MultiComboBox.css +1 -1
  72. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  73. package/dist/css/themes/MultiInput.css +1 -1
  74. package/dist/css/themes/NavigationMenu.css +1 -1
  75. package/dist/css/themes/Panel.css +1 -1
  76. package/dist/css/themes/Popover.css +1 -1
  77. package/dist/css/themes/PopupStaticAreaStyles.css +1 -1
  78. package/dist/css/themes/PopupsCommon.css +1 -1
  79. package/dist/css/themes/ProgressIndicator.css +1 -1
  80. package/dist/css/themes/RadioButton.css +1 -1
  81. package/dist/css/themes/RangeSlider.css +1 -1
  82. package/dist/css/themes/RatingIndicator.css +1 -1
  83. package/dist/css/themes/ResponsivePopover.css +1 -1
  84. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  85. package/dist/css/themes/SegmentedButton.css +1 -1
  86. package/dist/css/themes/Select.css +1 -1
  87. package/dist/css/themes/SelectMenu.css +1 -1
  88. package/dist/css/themes/SelectPopover.css +1 -1
  89. package/dist/css/themes/SliderBase.css +1 -1
  90. package/dist/css/themes/SplitButton.css +1 -1
  91. package/dist/css/themes/StepInput.css +1 -1
  92. package/dist/css/themes/Switch.css +1 -1
  93. package/dist/css/themes/TabContainer.css +1 -1
  94. package/dist/css/themes/TabInOverflow.css +1 -1
  95. package/dist/css/themes/TabInStrip.css +1 -1
  96. package/dist/css/themes/TabSemanticIcon.css +1 -1
  97. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  98. package/dist/css/themes/Table.css +1 -1
  99. package/dist/css/themes/TableCell.css +1 -1
  100. package/dist/css/themes/TableColumn.css +1 -1
  101. package/dist/css/themes/TableGroupRow.css +1 -1
  102. package/dist/css/themes/TableRow.css +1 -1
  103. package/dist/css/themes/TextArea.css +1 -1
  104. package/dist/css/themes/TimePicker.css +1 -1
  105. package/dist/css/themes/Toast.css +1 -1
  106. package/dist/css/themes/ToggleButton.css +1 -1
  107. package/dist/css/themes/Token.css +1 -1
  108. package/dist/css/themes/Tokenizer.css +1 -1
  109. package/dist/css/themes/TokenizerPopover.css +1 -1
  110. package/dist/css/themes/Toolbar.css +1 -1
  111. package/dist/css/themes/ToolbarPopover.css +1 -1
  112. package/dist/css/themes/TreeItem.css +1 -1
  113. package/dist/css/themes/ValueStateMessage.css +1 -1
  114. package/dist/css/themes/WheelSlider.css +1 -1
  115. package/dist/css/themes/YearPicker.css +1 -1
  116. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  117. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  118. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  119. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  120. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  121. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  122. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  123. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  124. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  125. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  126. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  127. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  128. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  129. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  130. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  131. package/dist/custom-elements-internal.json +10 -10
  132. package/dist/custom-elements.json +10 -10
  133. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  144. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  145. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  146. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  147. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  148. package/dist/generated/templates/FileUploaderTemplate.lit.js +1 -1
  149. package/dist/generated/templates/FileUploaderTemplate.lit.js.map +1 -1
  150. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  151. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js.map +1 -1
  152. package/dist/generated/templates/SelectPopoverTemplate.lit.js +1 -1
  153. package/dist/generated/templates/SelectPopoverTemplate.lit.js.map +1 -1
  154. package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
  155. package/dist/generated/templates/StepInputTemplate.lit.js.map +1 -1
  156. package/dist/generated/templates/ToggleSpinButtonTemplate.lit.js +1 -1
  157. package/dist/generated/templates/ToggleSpinButtonTemplate.lit.js.map +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.js +1 -1
  161. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  162. package/dist/generated/themes/Badge.css.js +1 -1
  163. package/dist/generated/themes/Badge.css.js.map +1 -1
  164. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  165. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  166. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  167. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  168. package/dist/generated/themes/Button.css.js +1 -1
  169. package/dist/generated/themes/Button.css.js.map +1 -1
  170. package/dist/generated/themes/Calendar.css.js +1 -1
  171. package/dist/generated/themes/Calendar.css.js.map +1 -1
  172. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  173. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  174. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  175. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  176. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  177. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  178. package/dist/generated/themes/Card.css.js +1 -1
  179. package/dist/generated/themes/Card.css.js.map +1 -1
  180. package/dist/generated/themes/CardHeader.css.js +1 -1
  181. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  182. package/dist/generated/themes/Carousel.css.js +1 -1
  183. package/dist/generated/themes/Carousel.css.js.map +1 -1
  184. package/dist/generated/themes/CheckBox.css.js +1 -1
  185. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  186. package/dist/generated/themes/ColorPalette.css.js +1 -1
  187. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  188. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  189. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  190. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  191. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  192. package/dist/generated/themes/ColorPicker.css.js +1 -1
  193. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  194. package/dist/generated/themes/ComboBox.css.js +1 -1
  195. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  196. package/dist/generated/themes/CustomListItem.css.js +1 -1
  197. package/dist/generated/themes/CustomListItem.css.js.map +1 -1
  198. package/dist/generated/themes/DatePicker.css.js +1 -1
  199. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  200. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  201. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  202. package/dist/generated/themes/DayPicker.css.js +1 -1
  203. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  204. package/dist/generated/themes/Dialog.css.js +1 -1
  205. package/dist/generated/themes/Dialog.css.js.map +1 -1
  206. package/dist/generated/themes/FileUploader.css.js +1 -1
  207. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  208. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  209. package/dist/generated/themes/GroupHeaderListItem.css.js.map +1 -1
  210. package/dist/generated/themes/GrowingButton.css.js +1 -1
  211. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  212. package/dist/generated/themes/Icon.css.js +1 -1
  213. package/dist/generated/themes/Icon.css.js.map +1 -1
  214. package/dist/generated/themes/Input.css.js +1 -1
  215. package/dist/generated/themes/Input.css.js.map +1 -1
  216. package/dist/generated/themes/InputIcon.css.js +1 -1
  217. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  218. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  219. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  220. package/dist/generated/themes/Link.css.js +1 -1
  221. package/dist/generated/themes/Link.css.js.map +1 -1
  222. package/dist/generated/themes/List.css.js +1 -1
  223. package/dist/generated/themes/List.css.js.map +1 -1
  224. package/dist/generated/themes/ListItem.css.js +1 -1
  225. package/dist/generated/themes/ListItem.css.js.map +1 -1
  226. package/dist/generated/themes/ListItemBase.css.js +1 -1
  227. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  228. package/dist/generated/themes/Menu.css.js +1 -1
  229. package/dist/generated/themes/Menu.css.js.map +1 -1
  230. package/dist/generated/themes/MenuListItem.css.js +1 -1
  231. package/dist/generated/themes/MenuListItem.css.js.map +1 -1
  232. package/dist/generated/themes/MessageStrip.css.js +1 -1
  233. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  234. package/dist/generated/themes/MonthPicker.css.js +1 -1
  235. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  236. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  237. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  238. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  239. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  240. package/dist/generated/themes/MultiInput.css.js +1 -1
  241. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  242. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  243. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  244. package/dist/generated/themes/Panel.css.js +1 -1
  245. package/dist/generated/themes/Panel.css.js.map +1 -1
  246. package/dist/generated/themes/Popover.css.js +1 -1
  247. package/dist/generated/themes/Popover.css.js.map +1 -1
  248. package/dist/generated/themes/PopupStaticAreaStyles.css.js +1 -1
  249. package/dist/generated/themes/PopupStaticAreaStyles.css.js.map +1 -1
  250. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  251. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  252. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  253. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  254. package/dist/generated/themes/RadioButton.css.js +1 -1
  255. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  256. package/dist/generated/themes/RangeSlider.css.js +1 -1
  257. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  258. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  259. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  260. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  261. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  262. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  263. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  264. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  265. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  266. package/dist/generated/themes/Select.css.js +1 -1
  267. package/dist/generated/themes/Select.css.js.map +1 -1
  268. package/dist/generated/themes/SelectMenu.css.js +1 -1
  269. package/dist/generated/themes/SelectMenu.css.js.map +1 -1
  270. package/dist/generated/themes/SelectPopover.css.js +1 -1
  271. package/dist/generated/themes/SelectPopover.css.js.map +1 -1
  272. package/dist/generated/themes/SliderBase.css.js +1 -1
  273. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  274. package/dist/generated/themes/SplitButton.css.js +1 -1
  275. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  276. package/dist/generated/themes/StepInput.css.js +1 -1
  277. package/dist/generated/themes/StepInput.css.js.map +1 -1
  278. package/dist/generated/themes/Switch.css.js +1 -1
  279. package/dist/generated/themes/Switch.css.js.map +1 -1
  280. package/dist/generated/themes/TabContainer.css.js +1 -1
  281. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  282. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  283. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  284. package/dist/generated/themes/TabInStrip.css.js +1 -1
  285. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  286. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  287. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  288. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  289. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  290. package/dist/generated/themes/Table.css.js +1 -1
  291. package/dist/generated/themes/Table.css.js.map +1 -1
  292. package/dist/generated/themes/TableCell.css.js +1 -1
  293. package/dist/generated/themes/TableCell.css.js.map +1 -1
  294. package/dist/generated/themes/TableColumn.css.js +1 -1
  295. package/dist/generated/themes/TableColumn.css.js.map +1 -1
  296. package/dist/generated/themes/TableGroupRow.css.js +1 -1
  297. package/dist/generated/themes/TableGroupRow.css.js.map +1 -1
  298. package/dist/generated/themes/TableRow.css.js +1 -1
  299. package/dist/generated/themes/TableRow.css.js.map +1 -1
  300. package/dist/generated/themes/TextArea.css.js +1 -1
  301. package/dist/generated/themes/TextArea.css.js.map +1 -1
  302. package/dist/generated/themes/TimePicker.css.js +1 -1
  303. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  304. package/dist/generated/themes/Toast.css.js +1 -1
  305. package/dist/generated/themes/Toast.css.js.map +1 -1
  306. package/dist/generated/themes/ToggleButton.css.js +1 -1
  307. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  308. package/dist/generated/themes/Token.css.js +1 -1
  309. package/dist/generated/themes/Token.css.js.map +1 -1
  310. package/dist/generated/themes/Tokenizer.css.js +1 -1
  311. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  312. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  313. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  314. package/dist/generated/themes/Toolbar.css.js +1 -1
  315. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  316. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  317. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  318. package/dist/generated/themes/TreeItem.css.js +1 -1
  319. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  320. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  321. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  322. package/dist/generated/themes/WheelSlider.css.js +1 -1
  323. package/dist/generated/themes/WheelSlider.css.js.map +1 -1
  324. package/dist/generated/themes/YearPicker.css.js +1 -1
  325. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  326. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  327. package/dist/generated/themes/sap_belize/parameters-bundle.css.js.map +1 -1
  328. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  329. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js.map +1 -1
  330. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  331. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js.map +1 -1
  332. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  333. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  334. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  335. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  336. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  337. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  338. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  340. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  342. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  343. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  344. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  345. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  346. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  347. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  348. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  349. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  350. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  351. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  352. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  353. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  354. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  355. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  356. package/dist/vscode.html-custom-data.json +2 -2
  357. package/dist/web-types.json +5 -5
  358. package/package.json +11 -12
  359. package/src/FileUploader.hbs +2 -0
  360. package/src/MonthPicker.hbs +1 -1
  361. package/src/ResponsivePopover.hbs +2 -1
  362. package/src/SelectPopover.hbs +1 -1
  363. package/src/StepInput.hbs +1 -1
  364. package/src/ToggleSpinButton.hbs +0 -1
  365. package/src/themes/Calendar.css +1 -0
  366. package/src/themes/DayPicker.css +3 -6
  367. package/src/themes/Dialog.css +1 -0
  368. package/src/themes/Link.css +2 -2
  369. package/src/themes/MenuListItem.css +5 -0
  370. package/src/themes/MonthPicker.css +23 -0
  371. package/src/themes/ProgressIndicator.css +0 -1
  372. package/src/themes/SplitButton.css +1 -0
  373. package/src/themes/StepInput.css +1 -0
  374. package/src/themes/base/DayPicker-parameters.css +3 -3
  375. package/src/themes/base/Link-parameters.css +1 -2
  376. package/src/themes/sap_belize_hcb/Link-parameters.css +1 -2
  377. package/src/themes/sap_belize_hcw/Link-parameters.css +1 -2
  378. package/src/themes/sap_fiori_3_hcb/Link-parameters.css +1 -2
  379. package/src/themes/sap_fiori_3_hcw/Link-parameters.css +1 -2
  380. package/src/themes/sap_horizon/DayPicker-parameters.css +0 -1
  381. package/src/themes/sap_horizon/Link-parameters.css +1 -2
  382. package/src/themes/sap_horizon_dark/DayPicker-parameters.css +0 -1
  383. package/src/themes/sap_horizon_dark/Link-parameters.css +1 -2
  384. package/src/themes/sap_horizon_dark_exp/DayPicker-parameters.css +0 -1
  385. package/src/themes/sap_horizon_dark_exp/Link-parameters.css +1 -2
  386. package/src/themes/sap_horizon_exp/DayPicker-parameters.css +0 -1
  387. package/src/themes/sap_horizon_exp/Link-parameters.css +1 -2
  388. package/src/themes/sap_horizon_hcb/DayPicker-parameters.css +0 -1
  389. package/src/themes/sap_horizon_hcb/Link-parameters.css +1 -2
  390. package/src/themes/sap_horizon_hcb_exp/DayPicker-parameters.css +0 -1
  391. package/src/themes/sap_horizon_hcb_exp/Link-parameters.css +1 -2
  392. package/src/themes/sap_horizon_hcw/DayPicker-parameters.css +0 -1
  393. package/src/themes/sap_horizon_hcw/Link-parameters.css +1 -2
  394. package/src/themes/sap_horizon_hcw_exp/DayPicker-parameters.css +0 -1
  395. package/src/themes/sap_horizon_hcw_exp/Link-parameters.css +1 -2
  396. package/LICENSE.txt +0 -201
@@ -1 +1 @@
1
- {"version":3,"file":"MultiInput.js","sourceRoot":"","sources":["../src/MultiInput.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport {\n\tisShow,\n\tisBackSpace,\n\tisLeft,\n\tisRight,\n\tisRightCtrl,\n\tisHome,\n\tisEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\nimport { MULTIINPUT_ROLEDESCRIPTION_TEXT } from \"./generated/i18n/i18n-defaults.js\";\nimport Input from \"./Input.js\";\nimport MultiInputTemplate from \"./generated/templates/MultiInputTemplate.lit.js\";\nimport styles from \"./generated/themes/MultiInput.css.js\";\nimport Token from \"./Token.js\";\nimport Tokenizer, { ClipboardDataOperation } from \"./Tokenizer.js\";\nimport type { TokenizerTokenDeleteEventDetail } from \"./Tokenizer.js\";\nimport Icon from \"./Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/value-help.js\";\n\nimport type {\n\tInputSuggestionItemSelectEventDetail as MultiInputSuggestionItemSelectEventDetail,\n\tInputSuggestionItemPreviewEventDetail as MultiInputSuggestionItemPreviewEventDetail,\n} from \"./Input.js\";\n\ninterface IToken extends HTMLElement, ITabbable {\n\ttext: string;\n\treadonly: boolean,\n\tselected: boolean,\n\tisTruncatable: boolean,\n}\n\ntype MultiInputTokenDeleteEventDetail = {\n\ttoken: IToken;\n}\n\n/**\n * @class\n * ### Overview\n * A `ui5-multi-input` field allows the user to enter multiple values, which are displayed as `ui5-token`.\n *\n * User can choose interaction for creating tokens.\n * Fiori Guidelines say that user should create tokens when:\n *\n * - Type a value in the input and press enter or focus out the input field (`change` event is fired)\n * - Select a value from the suggestion list (`suggestion-item-select` event is fired)\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MultiInput.js\";`\n * @constructor\n * @extends Input\n * @since 1.0.0-rc.9\n * @public\n */\n@customElement({\n\ttag: \"ui5-multi-input\",\n\trenderer: litRender,\n\ttemplate: MultiInputTemplate,\n\tstyles: [Input.styles, styles],\n\tdependencies: [\n\t\t...Input.dependencies,\n\t\tTokenizer,\n\t\tToken,\n\t\tIcon,\n\t],\n})\n/**\n * Fired when the value help icon is pressed\n * and F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used.\n * @public\n */\n@event(\"value-help-trigger\")\n\n/**\n * Fired when a token is about to be deleted.\n * @param {HTMLElement} token deleted token.\n * @public\n */\n@event<MultiInputTokenDeleteEventDetail>(\"token-delete\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\ttoken: { type: HTMLElement },\n\t},\n})\n\nclass MultiInput extends Input {\n\t/**\n\t * Determines whether a value help icon will be visualized in the end of the input.\n\t * Pressing the icon will fire `value-help-trigger` event.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowValueHelpIcon!: boolean;\n\n\t/**\n\t * Indicates whether the tokenizer is expanded or collapsed(shows the n more label)\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\texpandedTokenizer!: boolean;\n\n\t/**\n\t * Indicates whether the tokenizer has tokens\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ttokenizerAvailable!: boolean;\n\n\t/**\n\t * Defines the component tokens.\n\t * @public\n\t */\n\t@slot()\n\ttokens!: Array<IToken>;\n\n\t_skipOpenSuggestions: boolean;\n\t_valueHelpIconPressed: boolean;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Prevent suggestions' opening.\n\t\tthis._skipOpenSuggestions = false;\n\t\tthis._valueHelpIconPressed = false;\n\t}\n\n\tvalueHelpPress() {\n\t\tthis.closePopover();\n\t\tthis.fireEvent(\"value-help-trigger\");\n\t}\n\n\tshowMorePress() {\n\t\tthis.expandedTokenizer = false;\n\t\tthis.focus();\n\t}\n\n\ttokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tconst focusedToken = e.detail.ref;\n\t\tconst selectedTokens = this.tokens.filter(token => token.selected);\n\t\tconst shouldFocusInput = this.tokens.length - 1 === 0 || this.tokens.length === selectedTokens.length;\n\n\t\tif (this._readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (focusedToken) {\n\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token: focusedToken });\n\t\t\tif (shouldFocusInput) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (selectedTokens.indexOf(focusedToken) === -1) {\n\t\t\tselectedTokens.push(focusedToken);\n\t\t}\n\n\t\tselectedTokens.forEach(token => {\n\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token });\n\t\t});\n\t}\n\n\tvalueHelpMouseDown(e: MouseEvent) {\n\t\tconst target = e.target as Icon;\n\t\tthis.closePopover();\n\t\tthis.tokenizer.closeMorePopover();\n\t\tthis._valueHelpIconPressed = true;\n\t\ttarget.focus();\n\t}\n\n\t_tokenizerFocusOut(e: FocusEvent) {\n\t\tconst isFocusingMorePopover = e.relatedTarget === this.tokenizer.staticAreaItem;\n\n\t\tif (!this.contains(e.relatedTarget as HTMLElement) && !isFocusingMorePopover) {\n\t\t\tthis.tokenizer._tokens.forEach(token => { token.selected = false; });\n\t\t\tthis.tokenizer.scrollToStart();\n\t\t}\n\n\t\tif (e.relatedTarget === this.nativeInput) {\n\t\t\tthis.tokenizer.closeMorePopover();\n\t\t}\n\t}\n\n\tvalueHelpMouseUp() {\n\t\tsetTimeout(() => {\n\t\t\tthis._valueHelpIconPressed = false;\n\t\t}, 0);\n\t}\n\n\tinnerFocusIn() {\n\t\tthis.expandedTokenizer = true;\n\t\tthis.focused = true;\n\t\tthis.tokenizer.scrollToEnd();\n\n\t\tthis.tokenizer._getTokens().forEach(token => {\n\t\t\ttoken.selected = false;\n\t\t});\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tsuper._onkeydown(e);\n\n\t\tconst target = e.target as HTMLInputElement;\n\t\tconst isHomeInBeginning = isHome(e) && target.selectionStart === 0;\n\t\tconst isCtrl: boolean = e.metaKey || e.ctrlKey;\n\t\tconst tokens = this.tokens;\n\n\t\tif (isHomeInBeginning) {\n\t\t\tthis._skipOpenSuggestions = true; // Prevent input focus when navigating through the tokens\n\t\t\treturn this._focusFirstToken(e);\n\t\t}\n\n\t\tif (isLeft(e) || isBackSpace(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleLeft(e);\n\t\t}\n\n\t\tthis._skipOpenSuggestions = false;\n\n\t\tif (isShow(e)) {\n\t\t\tthis.valueHelpPress();\n\t\t}\n\n\t\tif (isCtrl && e.key.toLowerCase() === \"i\" && tokens.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tthis.tokenizer.openMorePopover();\n\t\t}\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tconst rightCtrl = isRightCtrl(e);\n\t\tconst isCtrl = !!(e.metaKey || e.ctrlKey);\n\t\tconst tokens = this.tokens;\n\n\t\tif (isRight(e) || isEnd(e) || rightCtrl) {\n\t\t\te.preventDefault();\n\t\t\tconst lastTokenIndex = this.tokens.length - 1;\n\n\t\t\tif (e.target === this.tokens[lastTokenIndex] && this.tokens[lastTokenIndex] === document.activeElement) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}, 0);\n\t\t\t} else if (rightCtrl) {\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tokenizer._handleArrowCtrl(e, e.target as Token, this.tokens, true);\n\t\t\t}\n\t\t}\n\n\t\tif (isCtrl && [\"c\", \"x\"].includes(e.key.toLowerCase())) {\n\t\t\te.preventDefault();\n\n\t\t\tconst isCut = e.key.toLowerCase() === \"x\";\n\t\t\tconst selectedTokens = tokens.filter(token => token.selected);\n\n\t\t\tif (isCut) {\n\t\t\t\tconst cutResult = this.tokenizer._fillClipboard(ClipboardDataOperation.cut, selectedTokens);\n\n\t\t\t\tselectedTokens.forEach(token => {\n\t\t\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token });\n\t\t\t\t});\n\n\t\t\t\tthis.focus();\n\n\t\t\t\treturn cutResult;\n\t\t\t}\n\n\t\t\treturn this.tokenizer._fillClipboard(ClipboardDataOperation.copy, selectedTokens);\n\t\t}\n\n\t\tif (isCtrl && e.key.toLowerCase() === \"i\" && tokens.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tthis.tokenizer.openMorePopover();\n\t\t}\n\t}\n\n\t_handleLeft(e: KeyboardEvent) {\n\t\tconst cursorPosition = this.getDomRef()!.querySelector(`input`)!.selectionStart;\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\tif (cursorPosition === 0 && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_focusFirstToken(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst firstToken = tokens.length && tokens[0];\n\n\t\tif (firstToken) {\n\t\t\te.preventDefault();\n\n\t\t\tfirstToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(firstToken);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\tsuper._onfocusout(e);\n\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\tconst insideDOM = this.contains(relatedTarget);\n\t\tconst insideShadowDom = this.shadowRoot!.contains(relatedTarget);\n\n\t\tif (!insideDOM && !insideShadowDom) {\n\t\t\tthis.expandedTokenizer = false;\n\n\t\t\t// we need to reset tabindex setting by tokenizer\n\t\t\tthis.tokenizer._itemNav._currentIndex = -1;\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t */\n\tasync _onfocusin(e: FocusEvent) {\n\t\tconst inputDomRef = await this.getInputDOMRef();\n\n\t\tif (e.target === inputDomRef) {\n\t\t\tawait super._onfocusin(e);\n\t\t}\n\t}\n\n\tlastItemDeleted() {\n\t\tsetTimeout(() => {\n\t\t\tthis.focus();\n\t\t}, 0);\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tthis.style.setProperty(getScopedVarName(\"--_ui5-input-icons-count\"), `${this.iconsCount}`);\n\t\tthis.tokenizerAvailable = this.tokens && this.tokens.length > 0;\n\t}\n\n\tget iconsCount() {\n\t\treturn super.iconsCount + (this.showValueHelpIcon ? 1 : 0);\n\t}\n\n\tget tokenizer() {\n\t\treturn this.shadowRoot!.querySelector<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tget _tokensCountText() {\n\t\tif (!this.tokenizer) {\n\t\t\treturn;\n\t\t}\n\t\treturn this.tokenizer._tokensCountText();\n\t}\n\n\tget _tokensCountTextId() {\n\t\treturn `${this._id}-hiddenText-nMore`;\n\t}\n\n\t/**\n\t * Returns the placeholder value when there are no tokens.\n\t * @protected\n\t */\n\tget _placeholder() {\n\t\tif (this.tokenizer && this.tokenizer._tokens.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.placeholder;\n\t}\n\n\tget accInfo() {\n\t\tconst ariaDescribedBy = `${this._tokensCountTextId} ${this.suggestionsTextId} ${this.valueStateTextId}`.trim();\n\t\treturn {\n\t\t\t\"input\": {\n\t\t\t\t...super.accInfo.input,\n\t\t\t\t\"ariaRoledescription\": this.ariaRoleDescription,\n\t\t\t\t\"ariaDescribedBy\": ariaDescribedBy,\n\t\t\t},\n\t\t};\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_ROLEDESCRIPTION_TEXT);\n\t}\n\n\tget morePopoverOpener(): HTMLElement {\n\t\tif (this.tokens.length === 1 && this.tokens[0].isTruncatable) {\n\t\t\treturn this.tokens[0];\n\t\t}\n\n\t\treturn this;\n\t}\n}\n\nMultiInput.define();\n\nexport default MultiInput;\nexport type {\n\tIToken,\n\tMultiInputTokenDeleteEventDetail,\n\tMultiInputSuggestionItemSelectEventDetail,\n\tMultiInputSuggestionItemPreviewEventDetail,\n};\n"]}
1
+ {"version":3,"file":"MultiInput.js","sourceRoot":"","sources":["../src/MultiInput.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport {\n\tisShow,\n\tisBackSpace,\n\tisLeft,\n\tisRight,\n\tisRightCtrl,\n\tisHome,\n\tisEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\nimport { MULTIINPUT_ROLEDESCRIPTION_TEXT } from \"./generated/i18n/i18n-defaults.js\";\nimport Input from \"./Input.js\";\nimport MultiInputTemplate from \"./generated/templates/MultiInputTemplate.lit.js\";\nimport styles from \"./generated/themes/MultiInput.css.js\";\nimport Token from \"./Token.js\";\nimport Tokenizer, { ClipboardDataOperation } from \"./Tokenizer.js\";\nimport type { TokenizerTokenDeleteEventDetail } from \"./Tokenizer.js\";\nimport Icon from \"./Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/value-help.js\";\n\nimport type {\n\tInputSuggestionItemSelectEventDetail as MultiInputSuggestionItemSelectEventDetail,\n\tInputSuggestionItemPreviewEventDetail as MultiInputSuggestionItemPreviewEventDetail,\n} from \"./Input.js\";\n\ninterface IToken extends HTMLElement, ITabbable {\n\ttext: string;\n\treadonly: boolean,\n\tselected: boolean,\n\tisTruncatable: boolean,\n}\n\ntype MultiInputTokenDeleteEventDetail = {\n\ttoken: IToken;\n}\n\n/**\n * @class\n * ### Overview\n * A `ui5-multi-input` field allows the user to enter multiple values, which are displayed as `ui5-token`.\n *\n * User can choose interaction for creating tokens.\n * Fiori Guidelines say that user should create tokens when:\n *\n * - Type a value in the input and press enter or focus out the input field (`change` event is fired)\n * - Select a value from the suggestion list (`suggestion-item-select` event is fired)\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MultiInput.js\";`\n * @constructor\n * @extends Input\n * @since 1.0.0-rc.9\n * @public\n */\n@customElement({\n\ttag: \"ui5-multi-input\",\n\trenderer: litRender,\n\ttemplate: MultiInputTemplate,\n\tstyles: [Input.styles, styles],\n\tdependencies: [\n\t\t...Input.dependencies,\n\t\tTokenizer,\n\t\tToken,\n\t\tIcon,\n\t],\n})\n/**\n * Fired when the value help icon is pressed\n * and F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used.\n * @public\n */\n@event(\"value-help-trigger\")\n\n/**\n * Fired when a token is about to be deleted.\n * @param {HTMLElement} token deleted token.\n * @public\n */\n@event<MultiInputTokenDeleteEventDetail>(\"token-delete\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\ttoken: { type: HTMLElement },\n\t},\n})\n\nclass MultiInput extends Input {\n\t/**\n\t * Determines whether a value help icon will be visualized in the end of the input.\n\t * Pressing the icon will fire `value-help-trigger` event.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowValueHelpIcon!: boolean;\n\n\t/**\n\t * Indicates whether the tokenizer is expanded or collapsed(shows the n more label)\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\texpandedTokenizer!: boolean;\n\n\t/**\n\t * Indicates whether the tokenizer has tokens\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ttokenizerAvailable!: boolean;\n\n\t/**\n\t * Defines the component tokens.\n\t * @public\n\t */\n\t@slot()\n\ttokens!: Array<IToken>;\n\n\t_skipOpenSuggestions: boolean;\n\t_valueHelpIconPressed: boolean;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Prevent suggestions' opening.\n\t\tthis._skipOpenSuggestions = false;\n\t\tthis._valueHelpIconPressed = false;\n\t}\n\n\tvalueHelpPress() {\n\t\tthis.closePopover();\n\t\tthis.fireEvent(\"value-help-trigger\");\n\t}\n\n\tshowMorePress() {\n\t\tthis.expandedTokenizer = false;\n\t\tthis.focus();\n\t}\n\n\ttokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tconst focusedToken = e.detail.ref;\n\t\tconst selectedTokens = this.tokens.filter(token => token.selected);\n\t\tconst shouldFocusInput = this.tokens.length - 1 === 0 || this.tokens.length === selectedTokens.length;\n\n\t\tif (this._readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (focusedToken) {\n\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token: focusedToken });\n\t\t\tif (shouldFocusInput) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (selectedTokens.indexOf(focusedToken) === -1) {\n\t\t\tselectedTokens.push(focusedToken);\n\t\t}\n\n\t\tselectedTokens.forEach(token => {\n\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token });\n\t\t});\n\t}\n\n\tvalueHelpMouseDown(e: MouseEvent) {\n\t\tconst target = e.target as Icon;\n\t\tthis.closePopover();\n\t\tthis.tokenizer.closeMorePopover();\n\t\tthis._valueHelpIconPressed = true;\n\t\ttarget.focus();\n\t}\n\n\t_tokenizerFocusOut(e: FocusEvent) {\n\t\tconst isFocusingMorePopover = e.relatedTarget === this.tokenizer.staticAreaItem;\n\n\t\tif (!this.contains(e.relatedTarget as HTMLElement) && !isFocusingMorePopover) {\n\t\t\tthis.tokenizer._tokens.forEach(token => { token.selected = false; });\n\t\t\tthis.tokenizer.scrollToStart();\n\t\t}\n\n\t\tif (e.relatedTarget === this.nativeInput) {\n\t\t\tthis.tokenizer.closeMorePopover();\n\t\t}\n\t}\n\n\tvalueHelpMouseUp() {\n\t\tsetTimeout(() => {\n\t\t\tthis._valueHelpIconPressed = false;\n\t\t}, 0);\n\t}\n\n\tinnerFocusIn() {\n\t\tthis.expandedTokenizer = true;\n\t\tthis.focused = true;\n\t\tthis.tokenizer.scrollToEnd();\n\n\t\tthis.tokenizer._getTokens().forEach(token => {\n\t\t\ttoken.selected = false;\n\t\t});\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tsuper._onkeydown(e);\n\n\t\tconst target = e.target as HTMLInputElement;\n\t\tconst isHomeInBeginning = isHome(e) && target.selectionStart === 0;\n\t\tconst isCtrl: boolean = e.metaKey || e.ctrlKey;\n\t\tconst tokens = this.tokens;\n\n\t\tif (isHomeInBeginning) {\n\t\t\tthis._skipOpenSuggestions = true; // Prevent input focus when navigating through the tokens\n\t\t\treturn this._focusFirstToken(e);\n\t\t}\n\n\t\tif (isLeft(e) || isBackSpace(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleLeft(e);\n\t\t}\n\n\t\tthis._skipOpenSuggestions = false;\n\n\t\tif (isShow(e)) {\n\t\t\tthis.valueHelpPress();\n\t\t}\n\n\t\tif (isCtrl && e.key.toLowerCase() === \"i\" && tokens.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tthis.tokenizer.openMorePopover();\n\t\t}\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tconst rightCtrl = isRightCtrl(e);\n\t\tconst isCtrl = !!(e.metaKey || e.ctrlKey);\n\t\tconst tokens = this.tokens;\n\n\t\tif (isRight(e) || isEnd(e) || rightCtrl) {\n\t\t\te.preventDefault();\n\t\t\tconst lastTokenIndex = this.tokens.length - 1;\n\n\t\t\tif (e.target === this.tokens[lastTokenIndex] && this.tokens[lastTokenIndex] === document.activeElement) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}, 0);\n\t\t\t} else if (rightCtrl) {\n\t\t\t\te.preventDefault();\n\t\t\t\treturn this.tokenizer._handleArrowCtrl(e, e.target as Token, this.tokens, true);\n\t\t\t}\n\t\t}\n\n\t\tif (isCtrl && [\"c\", \"x\"].includes(e.key.toLowerCase())) {\n\t\t\te.preventDefault();\n\n\t\t\tconst isCut = e.key.toLowerCase() === \"x\";\n\t\t\tconst selectedTokens = tokens.filter(token => token.selected);\n\n\t\t\tif (isCut) {\n\t\t\t\tconst cutResult = this.tokenizer._fillClipboard(ClipboardDataOperation.cut, selectedTokens);\n\n\t\t\t\tselectedTokens.forEach(token => {\n\t\t\t\t\tthis.fireEvent<MultiInputTokenDeleteEventDetail>(\"token-delete\", { token });\n\t\t\t\t});\n\n\t\t\t\tthis.focus();\n\n\t\t\t\treturn cutResult;\n\t\t\t}\n\n\t\t\treturn this.tokenizer._fillClipboard(ClipboardDataOperation.copy, selectedTokens);\n\t\t}\n\n\t\tif (isCtrl && e.key.toLowerCase() === \"i\" && tokens.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tthis.tokenizer.openMorePopover();\n\t\t}\n\t}\n\n\t_handleLeft(e: KeyboardEvent) {\n\t\tconst cursorPosition = this.getDomRef()!.querySelector(`input`)!.selectionStart;\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\t// selectionStart property applies only to inputs of types text, search, URL, tel, and password\n\t\tif (((cursorPosition === null && !this.value) || cursorPosition === 0) && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_focusFirstToken(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst firstToken = tokens.length && tokens[0];\n\n\t\tif (firstToken) {\n\t\t\te.preventDefault();\n\n\t\t\tfirstToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(firstToken);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\tsuper._onfocusout(e);\n\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\tconst insideDOM = this.contains(relatedTarget);\n\t\tconst insideShadowDom = this.shadowRoot!.contains(relatedTarget);\n\n\t\tif (!insideDOM && !insideShadowDom) {\n\t\t\tthis.expandedTokenizer = false;\n\n\t\t\t// we need to reset tabindex setting by tokenizer\n\t\t\tthis.tokenizer._itemNav._currentIndex = -1;\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t */\n\tasync _onfocusin(e: FocusEvent) {\n\t\tconst inputDomRef = await this.getInputDOMRef();\n\n\t\tif (e.target === inputDomRef) {\n\t\t\tawait super._onfocusin(e);\n\t\t}\n\t}\n\n\tlastItemDeleted() {\n\t\tsetTimeout(() => {\n\t\t\tthis.focus();\n\t\t}, 0);\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tthis.style.setProperty(getScopedVarName(\"--_ui5-input-icons-count\"), `${this.iconsCount}`);\n\t\tthis.tokenizerAvailable = this.tokens && this.tokens.length > 0;\n\t}\n\n\tget iconsCount() {\n\t\treturn super.iconsCount + (this.showValueHelpIcon ? 1 : 0);\n\t}\n\n\tget tokenizer() {\n\t\treturn this.shadowRoot!.querySelector<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tget _tokensCountText() {\n\t\tif (!this.tokenizer) {\n\t\t\treturn;\n\t\t}\n\t\treturn this.tokenizer._tokensCountText();\n\t}\n\n\tget _tokensCountTextId() {\n\t\treturn `${this._id}-hiddenText-nMore`;\n\t}\n\n\t/**\n\t * Returns the placeholder value when there are no tokens.\n\t * @protected\n\t */\n\tget _placeholder() {\n\t\tif (this.tokenizer && this.tokenizer._tokens.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.placeholder;\n\t}\n\n\tget accInfo() {\n\t\tconst ariaDescribedBy = `${this._tokensCountTextId} ${this.suggestionsTextId} ${this.valueStateTextId}`.trim();\n\t\treturn {\n\t\t\t\"input\": {\n\t\t\t\t...super.accInfo.input,\n\t\t\t\t\"ariaRoledescription\": this.ariaRoleDescription,\n\t\t\t\t\"ariaDescribedBy\": ariaDescribedBy,\n\t\t\t},\n\t\t};\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_ROLEDESCRIPTION_TEXT);\n\t}\n\n\tget morePopoverOpener(): HTMLElement {\n\t\tif (this.tokens.length === 1 && this.tokens[0].isTruncatable) {\n\t\t\treturn this.tokens[0];\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget shouldDisplayOnlyValueStateMessage() {\n\t\treturn this.hasValueStateMessage && !this.readonly && !this.open && this.focused && !this.tokenizer._isOpen;\n\t}\n}\n\nMultiInput.define();\n\nexport default MultiInput;\nexport type {\n\tIToken,\n\tMultiInputTokenDeleteEventDetail,\n\tMultiInputSuggestionItemSelectEventDetail,\n\tMultiInputSuggestionItemPreviewEventDetail,\n};\n"]}
@@ -122,13 +122,13 @@ let SelectMenu = class SelectMenu extends UI5Element {
122
122
  });
123
123
  }
124
124
  _onBeforeOpen() {
125
- this.fireEvent("before-open");
125
+ this.fireEvent("before-open", undefined, false, false);
126
126
  }
127
127
  _onAfterOpen() {
128
- this.fireEvent("after-open");
128
+ this.fireEvent("after-open", undefined, false, false);
129
129
  }
130
130
  _onAfterClose() {
131
- this.fireEvent("after-close");
131
+ this.fireEvent("after-close", undefined, false, false);
132
132
  }
133
133
  _onCloseBtnClick() {
134
134
  this.close();
@@ -1 +1 @@
1
- {"version":3,"file":"SelectMenu.js","sourceRoot":"","sources":["../src/SelectMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\n\n// Template\nimport SelectMenuTemplate from \"./generated/templates/SelectMenuTemplate.lit.js\";\n\n// Styles\nimport SelectMenuCss from \"./generated/themes/SelectMenu.css.js\";\nimport ValueStateMessageCss from \"./generated/themes/ValueStateMessage.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\n// Deps\nimport ResponsivePopover from \"./ResponsivePopover.js\";\nimport List from \"./List.js\";\nimport Button from \"./Button.js\";\n\n// Types\nimport type Select from \"./Select.js\";\nimport type SelectMenuOption from \"./SelectMenuOption.js\";\nimport type { IOption } from \"./Select.js\";\n\ntype SelectMenuOptionClick = {\n\toption: SelectMenuOption,\n\toptionIndex: number,\n};\n\ntype SelectMenuChange = {\n\ttext: string,\n\tselectedIndex: number,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-select-menu` is meant to be used together with the `ui5-select` component as alternative\n * to define the select's dropdown. It acts as a popover on desktop and tablet, and as a Dialog on phone.\n *\n * The component gives the possibility to the user to customize the `ui5-select`'s dropdown\n * by slotting custom options and adding custom styles.\n *\n * ### Usage\n *\n * To use `ui5-select` with a `ui5-select-menu`,\n * you need to set the `ui5-select` `menu` property to reference `ui5-select-menu` either by ID or DOM reference.\n *\n * For the `ui5-select-menu`\n * ### ES6 Module Import\n *\n * `import @ui5/webcomponents/dist/SelectMenu.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.17.0\n */\n@customElement({\n\ttag: \"ui5-select-menu\",\n\trenderer: litRender,\n\tstyles: [SelectMenuCss, ValueStateMessageCss, ResponsivePopoverCommonCss],\n\ttemplate: SelectMenuTemplate,\n\tdependencies: [\n\t\tResponsivePopover,\n\t\tList,\n\t\tButton,\n\t],\n})\n@event<SelectMenuOptionClick>(\"option-click\", {\n\tdetail: {\n\t\toption: { type: HTMLElement },\n\t\toptionIndex: { type: Integer },\n\t},\n})\n@event(\"before-open\")\n@event(\"after-open\")\n@event(\"after-close\")\n@event<SelectMenuChange>(\"menu-change\", {\n\tdetail: {\n\t\ttext: { type: String },\n\t\tselectedIndex: { type: Integer },\n\t},\n})\nclass SelectMenu extends UI5Element {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.valueStateMessageText = [];\n\t}\n\n\t/**\n\t * Defines the options of the component.\n\t * @public\n\t */\n\t@slot({\n\t\t\"default\": true,\n\t\ttype: HTMLElement,\n\t\tinvalidateOnChildChange: true,\n\t})\n\toptions!: Array<IOption>;\n\n\t/**\n\t * Defines the width of the component.\n\t * @private\n\t */\n\t@property({ validator: Integer })\n\tselectWidth?: number;\n\n\t@property({ type: Boolean })\n\thasValueState!: boolean;\n\n\t@property({ type: Boolean })\n\thasValueStateSlot!: boolean;\n\n\t@property({ type: ValueState, defaultValue: ValueState.None })\n\tvalueState!: `${ValueState}`;\n\n\t@property()\n\tvalueStateText!: string;\n\n\t@property({ type: String, noAttribute: true })\n\tvalue!: string;\n\n\t@property({ type: String, noAttribute: true })\n\tselectId?: string;\n\n\tvalueStateMessageText: Array<Node>;\n\n\t_headerTitleText?: string;\n\n\tselect?: Select;\n\n\t/**\n\t * Shows the dropdown at the given element.\n\t */\n\tshowAt(opener: Select, openerWidth: number) {\n\t\tthis.selectWidth = openerWidth;\n\t\tthis.respPopover.open = true;\n\t\tthis.respPopover.opener = opener;\n\t\tthis.hasValueState = !!opener.hasValueState;\n\t\tthis.hasValueStateSlot = opener.valueStateMessageText.length > 0;\n\t\tthis.valueStateText = opener.valueStateText;\n\t\tthis.valueStateMessageText = opener.valueStateMessageText;\n\t\tthis.valueState = opener.valueState;\n\n\t\tthis._headerTitleText = opener._headerTitleText;\n\t}\n\n\t/**\n\t * Closes the dropdown.\n\t */\n\tclose(escPressed = false, preventRegistryUpdate = false, preventFocusRestore = false) {\n\t\tthis.respPopover.close(escPressed, preventRegistryUpdate, preventFocusRestore);\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._syncSelection();\n\t}\n\n\t_syncSelection() {\n\t\tlet lastSelectedOptionIndex = -1,\n\t\t\tfirstEnabledOptionIndex = -1,\n\t\t\ttext,\n\t\t\tselectedIndex;\n\t\tconst options = this.options;\n\t\toptions.forEach((opt, index) => {\n\t\t\tif (opt.selected) {\n\t\t\t\tlastSelectedOptionIndex = index;\n\t\t\t}\n\t\t\tif (firstEnabledOptionIndex === -1) {\n\t\t\t\tfirstEnabledOptionIndex = index;\n\t\t\t}\n\n\t\t\topt.selected = false;\n\t\t\topt.focused = false;\n\t\t\treturn opt;\n\t\t});\n\n\t\tif (lastSelectedOptionIndex > -1) {\n\t\t\tconst lastSelectedOption = options[lastSelectedOptionIndex];\n\t\t\tlastSelectedOption.selected = true;\n\t\t\tlastSelectedOption.focused = true;\n\t\t\ttext = lastSelectedOption.displayText || String(lastSelectedOption.textContent);\n\t\t\tselectedIndex = lastSelectedOptionIndex;\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t\tselectedIndex = -1;\n\t\t\tconst firstSelectedOption = options[firstEnabledOptionIndex];\n\t\t\tif (firstSelectedOption) {\n\t\t\t\tfirstSelectedOption.selected = true;\n\t\t\t\tfirstSelectedOption.focused = true;\n\t\t\t\tselectedIndex = firstEnabledOptionIndex;\n\t\t\t\ttext = firstSelectedOption.displayText || String(firstSelectedOption.textContent);\n\t\t\t}\n\t\t}\n\n\t\tthis.fireEvent<SelectMenuChange>(\"menu-change\", {\n\t\t\ttext,\n\t\t\tselectedIndex,\n\t\t});\n\t}\n\n\t_onOptionClick(e: CustomEvent) {\n\t\tconst option = e.detail.item;\n\t\tconst optionIndex = this.options.findIndex(_option => option.__id === _option.__id);\n\n\t\tthis.fireEvent<SelectMenuOptionClick>(\"option-click\", {\n\t\t\toption,\n\t\t\toptionIndex,\n\t\t});\n\t}\n\n\t_onBeforeOpen() {\n\t\tthis.fireEvent<CustomEvent>(\"before-open\");\n\t}\n\n\t_onAfterOpen() {\n\t\tthis.fireEvent<CustomEvent>(\"after-open\");\n\t}\n\n\t_onAfterClose() {\n\t\tthis.fireEvent<CustomEvent>(\"after-close\");\n\t}\n\n\t_onCloseBtnClick() {\n\t\tthis.close();\n\t}\n\n\tget open() {\n\t\treturn !!this.respPopover?.open;\n\t}\n\n\tget respPopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\".ui5-select-menu\")!;\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tpopoverValueState: {\n\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Success,\n\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Error,\n\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Warning,\n\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t},\n\t\t\tpopover: {\n\t\t\t\t\"ui5-select-popover-valuestate\": this.hasValueState,\n\t\t\t},\n\t\t};\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\tvalueStatePopover: {\n\t\t\t\t\"width\": `${this.selectWidth!}px`,\n\t\t\t},\n\t\t\tresponsivePopover: {\n\t\t\t\t\"min-width\": `${this.selectWidth!}px`,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _valueStateMessageInputIcon() {\n\t\tconst iconPerValueState = {\n\t\t\tError: \"error\",\n\t\t\tWarning: \"alert\",\n\t\t\tSuccess: \"sys-enter-2\",\n\t\t\tInformation: \"information\",\n\t\t};\n\n\t\treturn this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : \"\";\n\t}\n\n\tget _isPhone() {\n\t\treturn isPhone();\n\t}\n}\n\nSelectMenu.define();\n\nexport default SelectMenu;\nexport type {\n\tSelectMenuOptionClick,\n\tSelectMenuChange,\n};\n"]}
1
+ {"version":3,"file":"SelectMenu.js","sourceRoot":"","sources":["../src/SelectMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\n\n// Template\nimport SelectMenuTemplate from \"./generated/templates/SelectMenuTemplate.lit.js\";\n\n// Styles\nimport SelectMenuCss from \"./generated/themes/SelectMenu.css.js\";\nimport ValueStateMessageCss from \"./generated/themes/ValueStateMessage.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\n// Deps\nimport ResponsivePopover from \"./ResponsivePopover.js\";\nimport List from \"./List.js\";\nimport Button from \"./Button.js\";\n\n// Types\nimport type Select from \"./Select.js\";\nimport type SelectMenuOption from \"./SelectMenuOption.js\";\nimport type { IOption } from \"./Select.js\";\n\ntype SelectMenuOptionClick = {\n\toption: SelectMenuOption,\n\toptionIndex: number,\n};\n\ntype SelectMenuChange = {\n\ttext: string,\n\tselectedIndex: number,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-select-menu` is meant to be used together with the `ui5-select` component as alternative\n * to define the select's dropdown. It acts as a popover on desktop and tablet, and as a Dialog on phone.\n *\n * The component gives the possibility to the user to customize the `ui5-select`'s dropdown\n * by slotting custom options and adding custom styles.\n *\n * ### Usage\n *\n * To use `ui5-select` with a `ui5-select-menu`,\n * you need to set the `ui5-select` `menu` property to reference `ui5-select-menu` either by ID or DOM reference.\n *\n * For the `ui5-select-menu`\n * ### ES6 Module Import\n *\n * `import @ui5/webcomponents/dist/SelectMenu.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.17.0\n */\n@customElement({\n\ttag: \"ui5-select-menu\",\n\trenderer: litRender,\n\tstyles: [SelectMenuCss, ValueStateMessageCss, ResponsivePopoverCommonCss],\n\ttemplate: SelectMenuTemplate,\n\tdependencies: [\n\t\tResponsivePopover,\n\t\tList,\n\t\tButton,\n\t],\n})\n@event<SelectMenuOptionClick>(\"option-click\", {\n\tdetail: {\n\t\toption: { type: HTMLElement },\n\t\toptionIndex: { type: Integer },\n\t},\n})\n@event(\"before-open\")\n@event(\"after-open\")\n@event(\"after-close\")\n@event<SelectMenuChange>(\"menu-change\", {\n\tdetail: {\n\t\ttext: { type: String },\n\t\tselectedIndex: { type: Integer },\n\t},\n})\nclass SelectMenu extends UI5Element {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.valueStateMessageText = [];\n\t}\n\n\t/**\n\t * Defines the options of the component.\n\t * @public\n\t */\n\t@slot({\n\t\t\"default\": true,\n\t\ttype: HTMLElement,\n\t\tinvalidateOnChildChange: true,\n\t})\n\toptions!: Array<IOption>;\n\n\t/**\n\t * Defines the width of the component.\n\t * @private\n\t */\n\t@property({ validator: Integer })\n\tselectWidth?: number;\n\n\t@property({ type: Boolean })\n\thasValueState!: boolean;\n\n\t@property({ type: Boolean })\n\thasValueStateSlot!: boolean;\n\n\t@property({ type: ValueState, defaultValue: ValueState.None })\n\tvalueState!: `${ValueState}`;\n\n\t@property()\n\tvalueStateText!: string;\n\n\t@property({ type: String, noAttribute: true })\n\tvalue!: string;\n\n\t@property({ type: String, noAttribute: true })\n\tselectId?: string;\n\n\tvalueStateMessageText: Array<Node>;\n\n\t_headerTitleText?: string;\n\n\tselect?: Select;\n\n\t/**\n\t * Shows the dropdown at the given element.\n\t */\n\tshowAt(opener: Select, openerWidth: number) {\n\t\tthis.selectWidth = openerWidth;\n\t\tthis.respPopover.open = true;\n\t\tthis.respPopover.opener = opener;\n\t\tthis.hasValueState = !!opener.hasValueState;\n\t\tthis.hasValueStateSlot = opener.valueStateMessageText.length > 0;\n\t\tthis.valueStateText = opener.valueStateText;\n\t\tthis.valueStateMessageText = opener.valueStateMessageText;\n\t\tthis.valueState = opener.valueState;\n\n\t\tthis._headerTitleText = opener._headerTitleText;\n\t}\n\n\t/**\n\t * Closes the dropdown.\n\t */\n\tclose(escPressed = false, preventRegistryUpdate = false, preventFocusRestore = false) {\n\t\tthis.respPopover.close(escPressed, preventRegistryUpdate, preventFocusRestore);\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._syncSelection();\n\t}\n\n\t_syncSelection() {\n\t\tlet lastSelectedOptionIndex = -1,\n\t\t\tfirstEnabledOptionIndex = -1,\n\t\t\ttext,\n\t\t\tselectedIndex;\n\t\tconst options = this.options;\n\t\toptions.forEach((opt, index) => {\n\t\t\tif (opt.selected) {\n\t\t\t\tlastSelectedOptionIndex = index;\n\t\t\t}\n\t\t\tif (firstEnabledOptionIndex === -1) {\n\t\t\t\tfirstEnabledOptionIndex = index;\n\t\t\t}\n\n\t\t\topt.selected = false;\n\t\t\topt.focused = false;\n\t\t\treturn opt;\n\t\t});\n\n\t\tif (lastSelectedOptionIndex > -1) {\n\t\t\tconst lastSelectedOption = options[lastSelectedOptionIndex];\n\t\t\tlastSelectedOption.selected = true;\n\t\t\tlastSelectedOption.focused = true;\n\t\t\ttext = lastSelectedOption.displayText || String(lastSelectedOption.textContent);\n\t\t\tselectedIndex = lastSelectedOptionIndex;\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t\tselectedIndex = -1;\n\t\t\tconst firstSelectedOption = options[firstEnabledOptionIndex];\n\t\t\tif (firstSelectedOption) {\n\t\t\t\tfirstSelectedOption.selected = true;\n\t\t\t\tfirstSelectedOption.focused = true;\n\t\t\t\tselectedIndex = firstEnabledOptionIndex;\n\t\t\t\ttext = firstSelectedOption.displayText || String(firstSelectedOption.textContent);\n\t\t\t}\n\t\t}\n\n\t\tthis.fireEvent<SelectMenuChange>(\"menu-change\", {\n\t\t\ttext,\n\t\t\tselectedIndex,\n\t\t});\n\t}\n\n\t_onOptionClick(e: CustomEvent) {\n\t\tconst option = e.detail.item;\n\t\tconst optionIndex = this.options.findIndex(_option => option.__id === _option.__id);\n\n\t\tthis.fireEvent<SelectMenuOptionClick>(\"option-click\", {\n\t\t\toption,\n\t\t\toptionIndex,\n\t\t});\n\t}\n\n\t_onBeforeOpen() {\n\t\tthis.fireEvent<CustomEvent>(\"before-open\", undefined, false, false);\n\t}\n\n\t_onAfterOpen() {\n\t\tthis.fireEvent<CustomEvent>(\"after-open\", undefined, false, false);\n\t}\n\n\t_onAfterClose() {\n\t\tthis.fireEvent<CustomEvent>(\"after-close\", undefined, false, false);\n\t}\n\n\t_onCloseBtnClick() {\n\t\tthis.close();\n\t}\n\n\tget open() {\n\t\treturn !!this.respPopover?.open;\n\t}\n\n\tget respPopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\".ui5-select-menu\")!;\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tpopoverValueState: {\n\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Success,\n\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Error,\n\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Warning,\n\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t},\n\t\t\tpopover: {\n\t\t\t\t\"ui5-select-popover-valuestate\": this.hasValueState,\n\t\t\t},\n\t\t};\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\tvalueStatePopover: {\n\t\t\t\t\"width\": `${this.selectWidth!}px`,\n\t\t\t},\n\t\t\tresponsivePopover: {\n\t\t\t\t\"min-width\": `${this.selectWidth!}px`,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _valueStateMessageInputIcon() {\n\t\tconst iconPerValueState = {\n\t\t\tError: \"error\",\n\t\t\tWarning: \"alert\",\n\t\t\tSuccess: \"sys-enter-2\",\n\t\t\tInformation: \"information\",\n\t\t};\n\n\t\treturn this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : \"\";\n\t}\n\n\tget _isPhone() {\n\t\treturn isPhone();\n\t}\n}\n\nSelectMenu.define();\n\nexport default SelectMenu;\nexport type {\n\tSelectMenuOptionClick,\n\tSelectMenuChange,\n};\n"]}
@@ -181,7 +181,7 @@ declare class StepInput extends UI5Element implements IFormElement {
181
181
  get _decIconClickable(): boolean;
182
182
  get _incIconClickable(): boolean;
183
183
  get _isFocused(): boolean;
184
- get _valuePrecisioned(): string;
184
+ get _displayValue(): string;
185
185
  get accInfo(): {
186
186
  ariaRequired: boolean;
187
187
  ariaLabel: string | undefined;
@@ -193,6 +193,7 @@ declare class StepInput extends UI5Element implements IFormElement {
193
193
  };
194
194
  onBeforeRendering(): void;
195
195
  get input(): Input;
196
+ get innerInput(): HTMLInputElement;
196
197
  get inputOuter(): Element;
197
198
  _onButtonFocusOut(): void;
198
199
  _onInputFocusIn(): void;
@@ -212,7 +213,11 @@ declare class StepInput extends UI5Element implements IFormElement {
212
213
  _modifyValue(modifier: number, fireChangeEvent?: boolean): void;
213
214
  _incValue(e: CustomEvent): void;
214
215
  _decValue(e: CustomEvent): void;
216
+ get _isValueWithCorrectPrecision(): boolean;
215
217
  _onInputChange(): void;
218
+ _setDefaultInputValueIfNeeded(): void;
219
+ _isValueChanged(inputValue: number): boolean;
220
+ _updateValueAndValidate(inputValue: number): void;
216
221
  _onfocusin(): void;
217
222
  _onfocusout(): void;
218
223
  _onkeydown(e: KeyboardEvent): void;
package/dist/StepInput.js CHANGED
@@ -103,8 +103,14 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
103
103
  get _isFocused() {
104
104
  return this.focused;
105
105
  }
106
- get _valuePrecisioned() {
107
- return this.value.toFixed(this.valuePrecision);
106
+ get _displayValue() {
107
+ if ((this.value === 0) || (Number.isInteger(this.value))) {
108
+ return this.value.toFixed(this.valuePrecision);
109
+ }
110
+ if (this.value === Number(this.input.value)) { // For the cases where the number is fractional and is ending with 0s.
111
+ return this.input.value;
112
+ }
113
+ return this.value.toString();
108
114
  }
109
115
  get accInfo() {
110
116
  return {
@@ -135,6 +141,9 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
135
141
  get input() {
136
142
  return this.shadowRoot.querySelector("[ui5-input]");
137
143
  }
144
+ get innerInput() {
145
+ return this.input.shadowRoot.querySelector("input");
146
+ }
138
147
  get inputOuter() {
139
148
  return this.shadowRoot.querySelector(".ui5-step-input-input");
140
149
  }
@@ -166,10 +175,16 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
166
175
  this._updateValueState();
167
176
  }
168
177
  _updateValueState() {
169
- const valid = !((this.min !== undefined && this.value < this.min) || (this.max !== undefined && this.value > this.max));
178
+ const isWithinRange = (this.min === undefined || Number(this.input.value) >= this.min)
179
+ && (this.max === undefined || Number(this.input.value) <= this.max);
180
+ const isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;
170
181
  const previousValueState = this.valueState;
171
- this.valueState = valid ? ValueState.None : ValueState.Error;
172
- const eventPrevented = !this.fireEvent("value-state-change", { valueState: this.valueState, valid }, true);
182
+ const isValid = isWithinRange && isValueWithCorrectPrecision;
183
+ this.valueState = isValid ? ValueState.None : ValueState.Error;
184
+ const eventPrevented = !this.fireEvent("value-state-change", {
185
+ valueState: this.valueState,
186
+ valid: isValid,
187
+ }, true);
173
188
  if (eventPrevented) {
174
189
  this.valueState = previousValueState;
175
190
  }
@@ -193,7 +208,6 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
193
208
  */
194
209
  _modifyValue(modifier, fireChangeEvent = false) {
195
210
  let value;
196
- this.value = this._preciseValue(parseFloat(this.input.value));
197
211
  value = this.value + modifier;
198
212
  if (this.min !== undefined && value < this.min) {
199
213
  value = this.min;
@@ -204,6 +218,7 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
204
218
  value = this._preciseValue(value);
205
219
  if (value !== this.value) {
206
220
  this.value = value;
221
+ this.input.value = value.toFixed(this.valuePrecision);
207
222
  this._validate();
208
223
  this._setButtonState();
209
224
  this.focused = true;
@@ -228,18 +243,44 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
228
243
  this._previousValue = this.value;
229
244
  }
230
245
  }
246
+ get _isValueWithCorrectPrecision() {
247
+ // gets either "." or "," as delimiter which is based on locale, and splits the number by it
248
+ const delimiter = this.input.value.includes(".") ? "." : ",";
249
+ const numberParts = this.input.value.split(delimiter);
250
+ const decimalPartLength = numberParts.length > 1 ? numberParts[1].length : 0;
251
+ return decimalPartLength === this.valuePrecision;
252
+ }
231
253
  _onInputChange() {
232
- if (this.input.value === "") {
233
- this.input.value = (this.min || 0);
254
+ this._setDefaultInputValueIfNeeded();
255
+ const inputValue = Number(this.input.value);
256
+ if (this._isValueChanged(inputValue)) {
257
+ this._updateValueAndValidate(inputValue);
234
258
  }
235
- const inputValue = this._preciseValue(parseFloat(this.input.value));
236
- if (this.value !== this._previousValue || this.value !== inputValue) {
237
- this.value = inputValue;
238
- this._validate();
239
- this._setButtonState();
240
- this._fireChangeEvent();
259
+ }
260
+ _setDefaultInputValueIfNeeded() {
261
+ if (this.input.value === "") {
262
+ const defaultValue = (this.min || 0).toFixed(this.valuePrecision);
263
+ this.input.value = defaultValue;
264
+ this.innerInput.value = defaultValue; // we need to update inner input value as well, to avoid empty input scenario
241
265
  }
242
266
  }
267
+ _isValueChanged(inputValue) {
268
+ const isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;
269
+ // Treat values as distinct when modified to match a specific precision (e.g., from 3.4000 to 3.40),
270
+ // even if JavaScript sees them as equal, to correctly update valueState based on expected valuePrecision.
271
+ const isPrecisionCorrectButValueStateError = isValueWithCorrectPrecision && this.valueState === ValueState.Error;
272
+ return this.value !== this._previousValue
273
+ || this.value !== inputValue
274
+ || inputValue === 0
275
+ || !isValueWithCorrectPrecision
276
+ || isPrecisionCorrectButValueStateError;
277
+ }
278
+ _updateValueAndValidate(inputValue) {
279
+ this.value = inputValue;
280
+ this._validate();
281
+ this._setButtonState();
282
+ this._fireChangeEvent();
283
+ }
243
284
  _onfocusin() {
244
285
  this.focused = true;
245
286
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StepInput.js","sourceRoot":"","sources":["../src/StepInput.ts"],"names":[],"mappings":"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","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 slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport {\n\tisUp,\n\tisDown,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisPageUpShift,\n\tisPageDownShift,\n\tisEscape,\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AriaLabelHelper.js\";\nimport { getFeature } from \"@ui5/webcomponents-base/dist/FeaturesRegistry.js\";\nimport Float from \"@ui5/webcomponents-base/dist/types/Float.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type FormSupport from \"./features/InputElementsFormSupport.js\";\nimport type { IFormElement } from \"./features/InputElementsFormSupport.js\";\nimport StepInputTemplate from \"./generated/templates/StepInputTemplate.lit.js\";\nimport { STEPINPUT_DEC_ICON_TITLE, STEPINPUT_INC_ICON_TITLE } from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/less.js\";\nimport \"@ui5/webcomponents-icons/dist/add.js\";\n\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport InputType from \"./types/InputType.js\";\n\n// Styles\nimport StepInputCss from \"./generated/themes/StepInput.css.js\";\n\n// Spin variables\nconst INITIAL_WAIT_TIMEOUT = 500; // milliseconds\nconst ACCELERATION = 0.8;\nconst MIN_WAIT_TIMEOUT = 50; // milliseconds\nconst INITIAL_SPEED = 120; // milliseconds\n\ntype StepInputValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\n\tvalid: boolean,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-step-input` consists of an input field and buttons with icons to increase/decrease the value\n * with the predefined step.\n *\n * The user can change the value of the component by pressing the increase/decrease buttons,\n * by typing a number directly, by using the keyboard up/down and page up/down,\n * or by using the mouse scroll wheel. Decimal values are supported.\n *\n * ### Usage\n *\n * The default step is 1 but the app developer can set a different one.\n *\n * App developers can set a maximum and minimum value for the `StepInput`.\n * The increase/decrease button and the up/down keyboard navigation become disabled when\n * the value reaches the max/min or a new value is entered from the input which is greater/less than the max/min.\n *\n * #### When to use:\n *\n * - To adjust amounts, quantities, or other values quickly.\n * - To adjust values for a specific step.\n *\n * #### When not to use:\n *\n * - To enter a static number (for example, postal code, phone number, or ID). In this case,\n * use the regular `ui5-input` instead.\n * - To display a value that rarely needs to be adjusted and does not pertain to a particular step.\n * In this case, use the regular `ui5-input` instead.\n * - To enter dates and times. In this case, use date/time related components instead.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/StepInput.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.13\n * @public\n */\n@customElement({\n\ttag: \"ui5-step-input\",\n\trenderer: litRender,\n\tstyles: StepInputCss,\n\ttemplate: StepInputTemplate,\n\tdependencies: [\n\t\tIcon,\n\t\tInput,\n\t],\n})\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n * @public\n */\n@event(\"change\")\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @allowPreventDefault\n * @since 1.23.0\n * @public\n * @param {string} valueState The new `valueState` that will be set.\n * @param {boolean} valid Indicator if the value is in between the min and max value.\n */\n@event<StepInputValueStateChangeEventDetail>(\"value-state-change\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tvalueState: {\n\t\t\ttype: String,\n\t\t},\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tvalid: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n})\nclass StepInput extends UI5Element implements IFormElement {\n\t/**\n\t * Defines a value of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ validator: Float, defaultValue: 0 })\n\tvalue!: number;\n\n\t/**\n\t * Defines a minimum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ validator: Float })\n\tmin?: number;\n\n\t/**\n\t * Defines a maximum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ validator: Float })\n\tmax?: number;\n\n\t/**\n\t * Defines a step of increasing/decreasing the value of the component.\n\t * @default 1\n\t * @public\n\t */\n\t@property({ validator: Float, defaultValue: 1 })\n\tstep!: number;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property({ type: ValueState, defaultValue: ValueState.None })\n\tvalueState!: `${ValueState}`;\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\trequired!: boolean;\n\n\t/**\n\t * Determines whether the component is displayed as disabled.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled!: boolean;\n\n\t/**\n\t * Determines whether the component is displayed as read-only.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\treadonly!: boolean;\n\n\t/**\n\t * Defines a short hint, intended to aid the user with data entry when the\n\t * component has no value.\n\t *\n\t * **Note:** When no placeholder is set, the format pattern is displayed as a placeholder.\n\t * Passing an empty string as the value of this property will make the component appear empty - without placeholder or format pattern.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ defaultValue: undefined })\n\tplaceholder?: string;\n\n\t/**\n\t * Determines the name with which the component will be submitted in an HTML form.\n\t *\n\t * **Important:** For the `name` property to have effect, you must add the following import to your project:\n\t * `import \"@ui5/webcomponents/dist/features/InputElementsFormSupport.js\";`\n\t *\n\t * **Note:** When set, a native `input` HTML element\n\t * will be created inside the component so that it can be submitted as\n\t * part of an HTML form. Do not use this property unless you need to submit a form.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tname!: string;\n\n\t/**\n\t * Determines the number of digits after the decimal point of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ validator: Integer, defaultValue: 0 })\n\tvaluePrecision!: number;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default \"\"\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName!: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default \"\"\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property({ defaultValue: \"\" })\n\taccessibleNameRef!: string;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_decIconDisabled!: boolean;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_incIconDisabled!: boolean;\n\n\t@property({ type: Boolean })\n\tfocused!: boolean;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_inputFocused!: boolean;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_previousValue!: number;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_waitTimeout!: number;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_speed!: number;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_btnDown!: boolean;\n\n\t@property({ validator: Integer, noAttribute: true })\n\t_spinTimeoutId!: Timeout;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_spinStarted!: boolean;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Warning` or `Error` value state.\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Array<HTMLElement>;\n\n\t/**\n\t * The slot is used to render native `input` HTML element within Light DOM to enable form submit,\n\t * when `name` property is set.\n\t * @private\n\t */\n\t@slot()\n\tformSupport!: Array<HTMLElement>;\n\n\t_initialValueState?: `${ValueState}`;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tStepInput.i18nBundle = await getI18nBundle(\"@ui5/webcomponents\");\n\t}\n\n\tget type() {\n\t\treturn InputType.Number;\n\t}\n\n\t// icons-related\n\n\tget decIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_DEC_ICON_TITLE);\n\t}\n\n\tget decIconName() {\n\t\treturn \"less\";\n\t}\n\n\tget incIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_INC_ICON_TITLE);\n\t}\n\n\tget incIconName() {\n\t\treturn \"add\";\n\t}\n\n\tget _decIconClickable() {\n\t\treturn !this._decIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _incIconClickable() {\n\t\treturn !this._incIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _isFocused() {\n\t\treturn this.focused;\n\t}\n\n\tget _valuePrecisioned() {\n\t\treturn this.value.toFixed(this.valuePrecision);\n\t}\n\n\tget accInfo() {\n\t\treturn {\n\t\t\t\"ariaRequired\": this.required,\n\t\t\t\"ariaLabel\": getEffectiveAriaLabelText(this),\n\t\t};\n\t}\n\n\tget inputAttributes() {\n\t\treturn {\n\t\t\tmin: this.min === undefined ? undefined : this.min,\n\t\t\tmax: this.max === undefined ? undefined : this.max,\n\t\t\tstep: this.step,\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._setButtonState();\n\t\tif (this._previousValue === undefined) {\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\n\t\tconst formSupport = getFeature<typeof FormSupport>(\"FormSupport\");\n\t\tif (formSupport) {\n\t\t\tformSupport.syncNativeHiddenInput(this);\n\t\t} else if (this.name) {\n\t\t\tconsole.warn(`In order for the \"name\" property to have effect, you should also: import \"@ui5/webcomponents/dist/features/InputElementsFormSupport.js\";`); // eslint-disable-line\n\t\t}\n\t}\n\n\tget input(): Input {\n\t\treturn this.shadowRoot!.querySelector<Input>(\"[ui5-input]\")!;\n\t}\n\n\tget inputOuter() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-step-input-input\")!;\n\t}\n\n\t_onButtonFocusOut() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this._inputFocused) {\n\t\t\t\tthis.inputOuter.removeAttribute(\"focused\");\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\t_onInputFocusIn() {\n\t\tthis._inputFocused = true;\n\t\tif (this.value !== this._previousValue) {\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_onInputFocusOut() {\n\t\tthis._inputFocused = false;\n\t\tthis._onInputChange();\n\t}\n\n\t_setButtonState() {\n\t\tthis._decIconDisabled = this.min !== undefined && this.value <= this.min;\n\t\tthis._incIconDisabled = this.max !== undefined && this.value >= this.max;\n\t}\n\n\t_validate() {\n\t\tif (this._initialValueState === undefined) {\n\t\t\tthis._initialValueState = this.valueState;\n\t\t}\n\n\t\tthis._updateValueState();\n\t}\n\n\t_updateValueState() {\n\t\tconst valid = !((this.min !== undefined && this.value < this.min) || (this.max !== undefined && this.value > this.max));\n\t\tconst previousValueState = this.valueState;\n\n\t\tthis.valueState = valid ? ValueState.None : ValueState.Error;\n\n\t\tconst eventPrevented = !this.fireEvent<StepInputValueStateChangeEventDetail>(\"value-state-change\", { valueState: this.valueState, valid }, true);\n\n\t\tif (eventPrevented) {\n\t\t\tthis.valueState = previousValueState;\n\t\t}\n\t}\n\n\t_preciseValue(value: number) {\n\t\tconst pow = 10 ** this.valuePrecision;\n\t\treturn Math.round(value * pow) / pow;\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this._previousValue !== this.value) {\n\t\t\tthis._previousValue = this.value;\n\t\t\tthis.fireEvent(\"change\", { value: this.value });\n\t\t}\n\t}\n\n\t/**\n\t * Value modifier - modifies the value of the component, validates the new value and enables/disables increment and\n\t * decrement buttons according to the value and min/max values (if set). Fires `change` event when requested\n\t * @private\n\t * @param modifier modifies the value of the component with the given modifier (positive or negative)\n\t * @param fireChangeEvent if `true`, fires `change` event when the value is changed\n\t */\n\t_modifyValue(modifier: number, fireChangeEvent = false) {\n\t\tlet value;\n\t\tthis.value = this._preciseValue(parseFloat(this.input.value));\n\t\tvalue = this.value + modifier;\n\t\tif (this.min !== undefined && value < this.min) {\n\t\t\tvalue = this.min;\n\t\t}\n\t\tif (this.max !== undefined && value > this.max) {\n\t\t\tvalue = this.max;\n\t\t}\n\t\tvalue = this._preciseValue(value);\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis._validate();\n\t\t\tthis._setButtonState();\n\t\t\tthis.focused = true;\n\t\t\tthis.inputOuter.setAttribute(\"focused\", \"\");\n\t\t\tif (fireChangeEvent) {\n\t\t\t\tthis._fireChangeEvent();\n\t\t\t} else {\n\t\t\t\tthis.input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t_incValue(e: CustomEvent) {\n\t\tif (this._incIconClickable && e.isTrusted && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_decValue(e: CustomEvent) {\n\t\tif (this._decIconClickable && e.isTrusted && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(-this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_onInputChange() {\n\t\tif (this.input.value === \"\") {\n\t\t\tthis.input.value = (this.min || 0) as unknown as string;\n\t\t}\n\t\tconst inputValue = this._preciseValue(parseFloat(this.input.value));\n\t\tif (this.value !== this._previousValue || this.value !== inputValue) {\n\t\t\tthis.value = inputValue;\n\t\t\tthis._validate();\n\t\t\tthis._setButtonState();\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._onInputChange();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isUp(e)) {\n\t\t\t// step up\n\t\t\tthis._modifyValue(this.step);\n\t\t} else if (isDown(e)) {\n\t\t\t// step down\n\t\t\tthis._modifyValue(-this.step);\n\t\t} else if (isEscape(e)) {\n\t\t\t// return previous value\n\t\t\tthis.value = this._previousValue;\n\t\t\tthis.input.value = this.value.toFixed(this.valuePrecision);\n\t\t} else if (this.max !== undefined && (isPageUpShift(e) || isUpShiftCtrl(e))) {\n\t\t\t// step to max\n\t\t\tthis._modifyValue(this.max - this.value);\n\t\t} else if (this.min !== undefined && (isPageDownShift(e) || isDownShiftCtrl(e))) {\n\t\t\t// step to min\n\t\t\tthis._modifyValue(this.min - this.value);\n\t\t} else if (!isUpCtrl(e) && !isDownCtrl(e) && !isUpShift(e) && !isDownShift(e)) {\n\t\t\tpreventDefault = false;\n\t\t}\n\t\tif (preventDefault) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_decSpin() {\n\t\tif (!this._decIconDisabled) {\n\t\t\tthis._spinValue(false, true);\n\t\t}\n\t}\n\n\t_incSpin() {\n\t\tif (!this._incIconDisabled) {\n\t\t\tthis._spinValue(true, true);\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the time which should be waited until _spinValue function is called.\n\t */\n\t_calcWaitTimeout() {\n\t\tthis._speed *= ACCELERATION;\n\t\tthis._waitTimeout = ((this._waitTimeout - this._speed) < MIN_WAIT_TIMEOUT ? MIN_WAIT_TIMEOUT : (this._waitTimeout - this._speed));\n\t\treturn this._waitTimeout;\n\t}\n\n\t/**\n\t * Called when the increment or decrement button is pressed and held to set new value.\n\t * @private\n\t * @param increment - is this the increment button or not so the values should be spin accordingly up or down\n\t * @param resetVariables - whether to reset the spin-related variables or not\n\t */\n\t_spinValue(increment: boolean, resetVariables = false) {\n\t\tif (resetVariables) {\n\t\t\tthis._waitTimeout = INITIAL_WAIT_TIMEOUT;\n\t\t\tthis._speed = INITIAL_SPEED;\n\t\t\tthis._btnDown = true;\n\t\t}\n\t\tthis._spinTimeoutId = setTimeout(() => {\n\t\t\tif (this._btnDown) {\n\t\t\t\tthis._spinStarted = true;\n\t\t\t\tthis._modifyValue(increment ? this.step : -this.step);\n\t\t\t\tthis._setButtonState();\n\t\t\t\tif ((!this._incIconDisabled && increment) || (!this._decIconDisabled && !increment)) {\n\t\t\t\t\tthis._spinValue(increment);\n\t\t\t\t} else {\n\t\t\t\t\tthis._resetSpin();\n\t\t\t\t\tthis._fireChangeEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._calcWaitTimeout());\n\t}\n\n\t/**\n\t* Resets spin process\n\t*/\n\t_resetSpin() {\n\t\tclearTimeout(this._spinTimeoutId);\n\t\tthis._btnDown = false;\n\t\tthis._spinStarted = false;\n\t}\n\n\t/**\n\t* Resets spin process when mouse outs + or - buttons\n\t*/\n\t_resetSpinOut() {\n\t\tif (this._btnDown) {\n\t\t\tthis._resetSpin();\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\t}\n}\nStepInput.define();\n\nexport default StepInput;\nexport type {\n\tStepInputValueStateChangeEventDetail,\n};\n"]}
1
+ {"version":3,"file":"StepInput.js","sourceRoot":"","sources":["../src/StepInput.ts"],"names":[],"mappings":"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","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 slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport {\n\tisUp,\n\tisDown,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisPageUpShift,\n\tisPageDownShift,\n\tisEscape,\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AriaLabelHelper.js\";\nimport { getFeature } from \"@ui5/webcomponents-base/dist/FeaturesRegistry.js\";\nimport Float from \"@ui5/webcomponents-base/dist/types/Float.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type FormSupport from \"./features/InputElementsFormSupport.js\";\nimport type { IFormElement } from \"./features/InputElementsFormSupport.js\";\nimport StepInputTemplate from \"./generated/templates/StepInputTemplate.lit.js\";\nimport { STEPINPUT_DEC_ICON_TITLE, STEPINPUT_INC_ICON_TITLE } from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/less.js\";\nimport \"@ui5/webcomponents-icons/dist/add.js\";\n\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport InputType from \"./types/InputType.js\";\n\n// Styles\nimport StepInputCss from \"./generated/themes/StepInput.css.js\";\n\n// Spin variables\nconst INITIAL_WAIT_TIMEOUT = 500; // milliseconds\nconst ACCELERATION = 0.8;\nconst MIN_WAIT_TIMEOUT = 50; // milliseconds\nconst INITIAL_SPEED = 120; // milliseconds\n\ntype StepInputValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\n\tvalid: boolean,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-step-input` consists of an input field and buttons with icons to increase/decrease the value\n * with the predefined step.\n *\n * The user can change the value of the component by pressing the increase/decrease buttons,\n * by typing a number directly, by using the keyboard up/down and page up/down,\n * or by using the mouse scroll wheel. Decimal values are supported.\n *\n * ### Usage\n *\n * The default step is 1 but the app developer can set a different one.\n *\n * App developers can set a maximum and minimum value for the `StepInput`.\n * The increase/decrease button and the up/down keyboard navigation become disabled when\n * the value reaches the max/min or a new value is entered from the input which is greater/less than the max/min.\n *\n * #### When to use:\n *\n * - To adjust amounts, quantities, or other values quickly.\n * - To adjust values for a specific step.\n *\n * #### When not to use:\n *\n * - To enter a static number (for example, postal code, phone number, or ID). In this case,\n * use the regular `ui5-input` instead.\n * - To display a value that rarely needs to be adjusted and does not pertain to a particular step.\n * In this case, use the regular `ui5-input` instead.\n * - To enter dates and times. In this case, use date/time related components instead.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/StepInput.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.13\n * @public\n */\n@customElement({\n\ttag: \"ui5-step-input\",\n\trenderer: litRender,\n\tstyles: StepInputCss,\n\ttemplate: StepInputTemplate,\n\tdependencies: [\n\t\tIcon,\n\t\tInput,\n\t],\n})\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n * @public\n */\n@event(\"change\")\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @allowPreventDefault\n * @since 1.23.0\n * @public\n * @param {string} valueState The new `valueState` that will be set.\n * @param {boolean} valid Indicator if the value is in between the min and max value.\n */\n@event<StepInputValueStateChangeEventDetail>(\"value-state-change\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tvalueState: {\n\t\t\ttype: String,\n\t\t},\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tvalid: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n})\nclass StepInput extends UI5Element implements IFormElement {\n\t/**\n\t * Defines a value of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ validator: Float, defaultValue: 0 })\n\tvalue!: number;\n\n\t/**\n\t * Defines a minimum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ validator: Float })\n\tmin?: number;\n\n\t/**\n\t * Defines a maximum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ validator: Float })\n\tmax?: number;\n\n\t/**\n\t * Defines a step of increasing/decreasing the value of the component.\n\t * @default 1\n\t * @public\n\t */\n\t@property({ validator: Float, defaultValue: 1 })\n\tstep!: number;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property({ type: ValueState, defaultValue: ValueState.None })\n\tvalueState!: `${ValueState}`;\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\trequired!: boolean;\n\n\t/**\n\t * Determines whether the component is displayed as disabled.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled!: boolean;\n\n\t/**\n\t * Determines whether the component is displayed as read-only.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\treadonly!: boolean;\n\n\t/**\n\t * Defines a short hint, intended to aid the user with data entry when the\n\t * component has no value.\n\t *\n\t * **Note:** When no placeholder is set, the format pattern is displayed as a placeholder.\n\t * Passing an empty string as the value of this property will make the component appear empty - without placeholder or format pattern.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ defaultValue: undefined })\n\tplaceholder?: string;\n\n\t/**\n\t * Determines the name with which the component will be submitted in an HTML form.\n\t *\n\t * **Important:** For the `name` property to have effect, you must add the following import to your project:\n\t * `import \"@ui5/webcomponents/dist/features/InputElementsFormSupport.js\";`\n\t *\n\t * **Note:** When set, a native `input` HTML element\n\t * will be created inside the component so that it can be submitted as\n\t * part of an HTML form. Do not use this property unless you need to submit a form.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tname!: string;\n\n\t/**\n\t * Determines the number of digits after the decimal point of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ validator: Integer, defaultValue: 0 })\n\tvaluePrecision!: number;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default \"\"\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName!: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default \"\"\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property({ defaultValue: \"\" })\n\taccessibleNameRef!: string;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_decIconDisabled!: boolean;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_incIconDisabled!: boolean;\n\n\t@property({ type: Boolean })\n\tfocused!: boolean;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_inputFocused!: boolean;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_previousValue!: number;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_waitTimeout!: number;\n\n\t@property({ validator: Float, noAttribute: true })\n\t_speed!: number;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_btnDown!: boolean;\n\n\t@property({ validator: Integer, noAttribute: true })\n\t_spinTimeoutId!: Timeout;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_spinStarted!: boolean;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Warning` or `Error` value state.\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Array<HTMLElement>;\n\n\t/**\n\t * The slot is used to render native `input` HTML element within Light DOM to enable form submit,\n\t * when `name` property is set.\n\t * @private\n\t */\n\t@slot()\n\tformSupport!: Array<HTMLElement>;\n\n\t_initialValueState?: `${ValueState}`;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tStepInput.i18nBundle = await getI18nBundle(\"@ui5/webcomponents\");\n\t}\n\n\tget type() {\n\t\treturn InputType.Number;\n\t}\n\n\t// icons-related\n\n\tget decIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_DEC_ICON_TITLE);\n\t}\n\n\tget decIconName() {\n\t\treturn \"less\";\n\t}\n\n\tget incIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_INC_ICON_TITLE);\n\t}\n\n\tget incIconName() {\n\t\treturn \"add\";\n\t}\n\n\tget _decIconClickable() {\n\t\treturn !this._decIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _incIconClickable() {\n\t\treturn !this._incIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _isFocused() {\n\t\treturn this.focused;\n\t}\n\n\tget _displayValue() {\n\t\tif ((this.value === 0) || (Number.isInteger(this.value))) {\n\t\t\treturn this.value.toFixed(this.valuePrecision);\n\t\t}\n\n\t\tif (this.value === Number(this.input.value)) { // For the cases where the number is fractional and is ending with 0s.\n\t\t\treturn this.input.value;\n\t\t}\n\n\t\treturn this.value.toString();\n\t}\n\n\tget accInfo() {\n\t\treturn {\n\t\t\t\"ariaRequired\": this.required,\n\t\t\t\"ariaLabel\": getEffectiveAriaLabelText(this),\n\t\t};\n\t}\n\n\tget inputAttributes() {\n\t\treturn {\n\t\t\tmin: this.min === undefined ? undefined : this.min,\n\t\t\tmax: this.max === undefined ? undefined : this.max,\n\t\t\tstep: this.step,\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._setButtonState();\n\t\tif (this._previousValue === undefined) {\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\n\t\tconst formSupport = getFeature<typeof FormSupport>(\"FormSupport\");\n\t\tif (formSupport) {\n\t\t\tformSupport.syncNativeHiddenInput(this);\n\t\t} else if (this.name) {\n\t\t\tconsole.warn(`In order for the \"name\" property to have effect, you should also: import \"@ui5/webcomponents/dist/features/InputElementsFormSupport.js\";`); // eslint-disable-line\n\t\t}\n\t}\n\n\tget input(): Input {\n\t\treturn this.shadowRoot!.querySelector<Input>(\"[ui5-input]\")!;\n\t}\n\n\tget innerInput(): HTMLInputElement {\n\t\treturn this.input.shadowRoot!.querySelector<HTMLInputElement>(\"input\")!;\n\t}\n\n\tget inputOuter() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-step-input-input\")!;\n\t}\n\n\t_onButtonFocusOut() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this._inputFocused) {\n\t\t\t\tthis.inputOuter.removeAttribute(\"focused\");\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\t_onInputFocusIn() {\n\t\tthis._inputFocused = true;\n\t\tif (this.value !== this._previousValue) {\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_onInputFocusOut() {\n\t\tthis._inputFocused = false;\n\t\tthis._onInputChange();\n\t}\n\n\t_setButtonState() {\n\t\tthis._decIconDisabled = this.min !== undefined && this.value <= this.min;\n\t\tthis._incIconDisabled = this.max !== undefined && this.value >= this.max;\n\t}\n\n\t_validate() {\n\t\tif (this._initialValueState === undefined) {\n\t\t\tthis._initialValueState = this.valueState;\n\t\t}\n\n\t\tthis._updateValueState();\n\t}\n\n\t_updateValueState() {\n\t\tconst isWithinRange = (this.min === undefined || Number(this.input.value) >= this.min)\n\t\t\t\t\t\t\t && (this.max === undefined || Number(this.input.value) <= this.max);\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\tconst previousValueState = this.valueState;\n\t\tconst isValid = isWithinRange && isValueWithCorrectPrecision;\n\n\t\tthis.valueState = isValid ? ValueState.None : ValueState.Error;\n\n\t\tconst eventPrevented = !this.fireEvent<StepInputValueStateChangeEventDetail>(\"value-state-change\", {\n\t\t\tvalueState: this.valueState,\n\t\t\tvalid: isValid,\n\t\t}, true);\n\n\t\tif (eventPrevented) {\n\t\t\tthis.valueState = previousValueState;\n\t\t}\n\t}\n\n\t_preciseValue(value: number) {\n\t\tconst pow = 10 ** this.valuePrecision;\n\t\treturn Math.round(value * pow) / pow;\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this._previousValue !== this.value) {\n\t\t\tthis._previousValue = this.value;\n\t\t\tthis.fireEvent(\"change\", { value: this.value });\n\t\t}\n\t}\n\n\t/**\n\t * Value modifier - modifies the value of the component, validates the new value and enables/disables increment and\n\t * decrement buttons according to the value and min/max values (if set). Fires `change` event when requested\n\t * @private\n\t * @param modifier modifies the value of the component with the given modifier (positive or negative)\n\t * @param fireChangeEvent if `true`, fires `change` event when the value is changed\n\t */\n\t_modifyValue(modifier: number, fireChangeEvent = false) {\n\t\tlet value;\n\t\tvalue = this.value + modifier;\n\t\tif (this.min !== undefined && value < this.min) {\n\t\t\tvalue = this.min;\n\t\t}\n\t\tif (this.max !== undefined && value > this.max) {\n\t\t\tvalue = this.max;\n\t\t}\n\t\tvalue = this._preciseValue(value);\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.input.value = value.toFixed(this.valuePrecision);\n\t\t\tthis._validate();\n\t\t\tthis._setButtonState();\n\t\t\tthis.focused = true;\n\t\t\tthis.inputOuter.setAttribute(\"focused\", \"\");\n\t\t\tif (fireChangeEvent) {\n\t\t\t\tthis._fireChangeEvent();\n\t\t\t} else {\n\t\t\t\tthis.input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t_incValue(e: CustomEvent) {\n\t\tif (this._incIconClickable && e.isTrusted && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_decValue(e: CustomEvent) {\n\t\tif (this._decIconClickable && e.isTrusted && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(-this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\tget _isValueWithCorrectPrecision() {\n\t\t// gets either \".\" or \",\" as delimiter which is based on locale, and splits the number by it\n\t\tconst delimiter = this.input.value.includes(\".\") ? \".\" : \",\";\n\t\tconst numberParts = this.input.value.split(delimiter);\n\t\tconst decimalPartLength = numberParts.length > 1 ? numberParts[1].length : 0;\n\n\t\treturn decimalPartLength === this.valuePrecision;\n\t}\n\n\t_onInputChange() {\n\t\tthis._setDefaultInputValueIfNeeded();\n\n\t\tconst inputValue = Number(this.input.value);\n\t\tif (this._isValueChanged(inputValue)) {\n\t\t\tthis._updateValueAndValidate(inputValue);\n\t\t}\n\t}\n\n\t_setDefaultInputValueIfNeeded() {\n\t\tif (this.input.value === \"\") {\n\t\t\tconst defaultValue = (this.min || 0).toFixed(this.valuePrecision);\n\t\t\tthis.input.value = defaultValue;\n\t\t\tthis.innerInput.value = defaultValue; // we need to update inner input value as well, to avoid empty input scenario\n\t\t}\n\t}\n\n\t_isValueChanged(inputValue: number) {\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\t// Treat values as distinct when modified to match a specific precision (e.g., from 3.4000 to 3.40),\n\t\t// even if JavaScript sees them as equal, to correctly update valueState based on expected valuePrecision.\n\t\tconst isPrecisionCorrectButValueStateError = isValueWithCorrectPrecision && this.valueState === ValueState.Error;\n\n\t\treturn this.value !== this._previousValue\n\t\t\t|| this.value !== inputValue\n\t\t\t|| inputValue === 0\n\t\t\t|| !isValueWithCorrectPrecision\n\t\t\t|| isPrecisionCorrectButValueStateError;\n\t}\n\n\t_updateValueAndValidate(inputValue: number) {\n\t\tthis.value = inputValue;\n\t\tthis._validate();\n\t\tthis._setButtonState();\n\t\tthis._fireChangeEvent();\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._onInputChange();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isUp(e)) {\n\t\t\t// step up\n\t\t\tthis._modifyValue(this.step);\n\t\t} else if (isDown(e)) {\n\t\t\t// step down\n\t\t\tthis._modifyValue(-this.step);\n\t\t} else if (isEscape(e)) {\n\t\t\t// return previous value\n\t\t\tthis.value = this._previousValue;\n\t\t\tthis.input.value = this.value.toFixed(this.valuePrecision);\n\t\t} else if (this.max !== undefined && (isPageUpShift(e) || isUpShiftCtrl(e))) {\n\t\t\t// step to max\n\t\t\tthis._modifyValue(this.max - this.value);\n\t\t} else if (this.min !== undefined && (isPageDownShift(e) || isDownShiftCtrl(e))) {\n\t\t\t// step to min\n\t\t\tthis._modifyValue(this.min - this.value);\n\t\t} else if (!isUpCtrl(e) && !isDownCtrl(e) && !isUpShift(e) && !isDownShift(e)) {\n\t\t\tpreventDefault = false;\n\t\t}\n\t\tif (preventDefault) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_decSpin() {\n\t\tif (!this._decIconDisabled) {\n\t\t\tthis._spinValue(false, true);\n\t\t}\n\t}\n\n\t_incSpin() {\n\t\tif (!this._incIconDisabled) {\n\t\t\tthis._spinValue(true, true);\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the time which should be waited until _spinValue function is called.\n\t */\n\t_calcWaitTimeout() {\n\t\tthis._speed *= ACCELERATION;\n\t\tthis._waitTimeout = ((this._waitTimeout - this._speed) < MIN_WAIT_TIMEOUT ? MIN_WAIT_TIMEOUT : (this._waitTimeout - this._speed));\n\t\treturn this._waitTimeout;\n\t}\n\n\t/**\n\t * Called when the increment or decrement button is pressed and held to set new value.\n\t * @private\n\t * @param increment - is this the increment button or not so the values should be spin accordingly up or down\n\t * @param resetVariables - whether to reset the spin-related variables or not\n\t */\n\t_spinValue(increment: boolean, resetVariables = false) {\n\t\tif (resetVariables) {\n\t\t\tthis._waitTimeout = INITIAL_WAIT_TIMEOUT;\n\t\t\tthis._speed = INITIAL_SPEED;\n\t\t\tthis._btnDown = true;\n\t\t}\n\t\tthis._spinTimeoutId = setTimeout(() => {\n\t\t\tif (this._btnDown) {\n\t\t\t\tthis._spinStarted = true;\n\t\t\t\tthis._modifyValue(increment ? this.step : -this.step);\n\t\t\t\tthis._setButtonState();\n\t\t\t\tif ((!this._incIconDisabled && increment) || (!this._decIconDisabled && !increment)) {\n\t\t\t\t\tthis._spinValue(increment);\n\t\t\t\t} else {\n\t\t\t\t\tthis._resetSpin();\n\t\t\t\t\tthis._fireChangeEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._calcWaitTimeout());\n\t}\n\n\t/**\n\t* Resets spin process\n\t*/\n\t_resetSpin() {\n\t\tclearTimeout(this._spinTimeoutId);\n\t\tthis._btnDown = false;\n\t\tthis._spinStarted = false;\n\t}\n\n\t/**\n\t* Resets spin process when mouse outs + or - buttons\n\t*/\n\t_resetSpinOut() {\n\t\tif (this._btnDown) {\n\t\t\tthis._resetSpin();\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\t}\n}\nStepInput.define();\n\nexport default StepInput;\nexport type {\n\tStepInputValueStateChangeEventDetail,\n};\n"]}
@@ -37,5 +37,9 @@ declare class ToggleSpinButton extends ToggleButton {
37
37
  * Override of the handler in order to prevent button toggle functionality
38
38
  */
39
39
  _onclick(): void;
40
+ /**
41
+ * Override
42
+ */
43
+ get buttonAccessibleRole(): string;
40
44
  }
41
45
  export default ToggleSpinButton;
@@ -30,6 +30,12 @@ let ToggleSpinButton = class ToggleSpinButton extends ToggleButton {
30
30
  * Override of the handler in order to prevent button toggle functionality
31
31
  */
32
32
  _onclick() { }
33
+ /**
34
+ * Override
35
+ */
36
+ get buttonAccessibleRole() {
37
+ return "spinbutton";
38
+ }
33
39
  };
34
40
  __decorate([
35
41
  property({ validator: Integer, defaultValue: -1 })
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleSpinButton.js","sourceRoot":"","sources":["../src/ToggleSpinButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAE7E,OAAO,OAAO,MAAM,+CAA+C,CAAC;AACpE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,WAAW;AACX,OAAO,wBAAwB,MAAM,uDAAuD,CAAC;AAE7F;;;;;;;;;;;;GAYG;AAQH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,YAAY;IA6B1C;;OAEG;IACH,QAAQ,KAAI,CAAC;CACb,CAAA;AA3BA;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,EAAE;mDACQ;AA3Bd,gBAAgB;IAPrB,aAAa,CAAC;QACd,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;QAC5C,QAAQ,EAAE,wBAAwB;KAClC,CAAC;GAEI,gBAAgB,CAiCrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\n\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport Button from \"./Button.js\";\nimport ToggleButton from \"./ToggleButton.js\";\n\n// Template\nimport ToggleSpinButtonTemplate from \"./generated/templates/ToggleSpinButtonTemplate.lit.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-toggle-spin-button` is explicitly used in the new design of `ui5-time-picker`.\n * It extends `ui5-toggle-button` with some specific accessibility-related properties in order to\n * have spin button look and feel from accessibility point of view. This component should not be used separately.\n * @constructor\n * @extends ToggleButton\n * @since 1.15.0\n * @private\n */\n@customElement({\n\ttag: \"ui5-toggle-spin-button\",\n\trenderer: litRender,\n\tstyles: [Button.styles, ToggleButton.styles],\n\ttemplate: ToggleSpinButtonTemplate,\n})\n\nclass ToggleSpinButton extends ToggleButton {\n\t/**\n\t * Defines the ARIA valuemin of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueMin!: number;\n\n\t/**\n\t * Defines the ARIA valuemax of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueMax!: number;\n\n\t/**\n\t * Defines the ARIA valuenow of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueNow!: number;\n\n\t/**\n\t * Defines the ARIA valuetext of the component.\n\t * @default \"\"\n\t */\n\t@property()\n\tvalueText?: string;\n\n\t/**\n\t * Override of the handler in order to prevent button toggle functionality\n\t */\n\t_onclick() {}\n}\n\nToggleSpinButton.define();\n\nexport default ToggleSpinButton;\n"]}
1
+ {"version":3,"file":"ToggleSpinButton.js","sourceRoot":"","sources":["../src/ToggleSpinButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAE7E,OAAO,OAAO,MAAM,+CAA+C,CAAC;AACpE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,WAAW;AACX,OAAO,wBAAwB,MAAM,uDAAuD,CAAC;AAE7F;;;;;;;;;;;;GAYG;AAQH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,YAAY;IA6B1C;;OAEG;IACH,QAAQ,KAAI,CAAC;IAEb;;OAEG;IACH,IAAI,oBAAoB;QACvB,OAAO,YAAY,CAAC;IACrB,CAAC;CACD,CAAA;AAlCA;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;kDACjC;AAOlB;IADC,QAAQ,EAAE;mDACQ;AA3Bd,gBAAgB;IAPrB,aAAa,CAAC;QACd,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;QAC5C,QAAQ,EAAE,wBAAwB;KAClC,CAAC;GAEI,gBAAgB,CAwCrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\n\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport Button from \"./Button.js\";\nimport ToggleButton from \"./ToggleButton.js\";\n\n// Template\nimport ToggleSpinButtonTemplate from \"./generated/templates/ToggleSpinButtonTemplate.lit.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-toggle-spin-button` is explicitly used in the new design of `ui5-time-picker`.\n * It extends `ui5-toggle-button` with some specific accessibility-related properties in order to\n * have spin button look and feel from accessibility point of view. This component should not be used separately.\n * @constructor\n * @extends ToggleButton\n * @since 1.15.0\n * @private\n */\n@customElement({\n\ttag: \"ui5-toggle-spin-button\",\n\trenderer: litRender,\n\tstyles: [Button.styles, ToggleButton.styles],\n\ttemplate: ToggleSpinButtonTemplate,\n})\n\nclass ToggleSpinButton extends ToggleButton {\n\t/**\n\t * Defines the ARIA valuemin of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueMin!: number;\n\n\t/**\n\t * Defines the ARIA valuemax of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueMax!: number;\n\n\t/**\n\t * Defines the ARIA valuenow of the component.\n\t * @default -1\n\t */\n\t@property({ validator: Integer, defaultValue: -1 })\n\tvalueNow!: number;\n\n\t/**\n\t * Defines the ARIA valuetext of the component.\n\t * @default \"\"\n\t */\n\t@property()\n\tvalueText?: string;\n\n\t/**\n\t * Override of the handler in order to prevent button toggle functionality\n\t */\n\t_onclick() {}\n\n\t/**\n\t * Override\n\t */\n\tget buttonAccessibleRole() {\n\t\treturn \"spinbutton\";\n\t}\n}\n\nToggleSpinButton.define();\n\nexport default ToggleSpinButton;\n"]}
@@ -56,6 +56,7 @@ declare class Tokenizer extends UI5Element {
56
56
  _itemNav: ItemNavigation;
57
57
  _scrollEnablement: ScrollEnablement;
58
58
  _expandedScrollWidth?: number;
59
+ _isOpen: boolean;
59
60
  _handleResize(): void;
60
61
  constructor();
61
62
  onBeforeRendering(): void;
package/dist/Tokenizer.js CHANGED
@@ -61,6 +61,7 @@ let Tokenizer = Tokenizer_1 = class Tokenizer extends UI5Element {
61
61
  getItemsCallback: this._getVisibleTokens.bind(this),
62
62
  });
63
63
  this._scrollEnablement = new ScrollEnablement(this);
64
+ this._isOpen = false;
64
65
  }
65
66
  onBeforeRendering() {
66
67
  this._tokensCount = this._getTokens().length;
@@ -85,6 +86,7 @@ let Tokenizer = Tokenizer_1 = class Tokenizer extends UI5Element {
85
86
  }
86
87
  async openMorePopover() {
87
88
  (await this.getPopover()).showAt(this.morePopoverOpener || this);
89
+ this._isOpen = true;
88
90
  }
89
91
  _getTokens() {
90
92
  return this.getSlottedNodes("tokens");
@@ -405,6 +407,7 @@ let Tokenizer = Tokenizer_1 = class Tokenizer extends UI5Element {
405
407
  }
406
408
  async closeMorePopover() {
407
409
  (await this.getPopover()).close(false, false, true);
410
+ this._isOpen = false;
408
411
  }
409
412
  get _nMoreText() {
410
413
  if (!this._nMoreCount) {