primevue 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/README.md +2 -94
  2. package/accordion/index.d.ts +2 -2
  3. package/accordion/index.mjs.map +1 -1
  4. package/accordion/style/index.mjs +1 -1
  5. package/accordion/style/index.mjs.map +1 -1
  6. package/accordioncontent/index.d.ts +2 -2
  7. package/accordioncontent/index.mjs.map +1 -1
  8. package/accordioncontent/style/index.mjs.map +1 -1
  9. package/accordionheader/index.d.ts +2 -2
  10. package/accordionheader/index.mjs.map +1 -1
  11. package/accordionheader/style/index.mjs.map +1 -1
  12. package/accordionpanel/index.d.ts +2 -2
  13. package/accordionpanel/index.mjs.map +1 -1
  14. package/accordionpanel/style/index.mjs.map +1 -1
  15. package/accordiontab/index.d.ts +2 -2
  16. package/accordiontab/index.mjs.map +1 -1
  17. package/accordiontab/style/index.mjs.map +1 -1
  18. package/animateonscroll/index.mjs.map +1 -1
  19. package/animateonscroll/style/index.mjs.map +1 -1
  20. package/autocomplete/AutoComplete.vue +36 -32
  21. package/autocomplete/BaseAutoComplete.vue +2 -19
  22. package/autocomplete/index.d.ts +23 -2
  23. package/autocomplete/index.mjs +40 -53
  24. package/autocomplete/index.mjs.map +1 -1
  25. package/autocomplete/style/index.mjs +7 -7
  26. package/autocomplete/style/index.mjs.map +1 -1
  27. package/avatar/index.d.ts +2 -2
  28. package/avatar/index.mjs.map +1 -1
  29. package/avatar/style/index.mjs +1 -1
  30. package/avatar/style/index.mjs.map +1 -1
  31. package/avatargroup/index.d.ts +2 -2
  32. package/avatargroup/index.mjs.map +1 -1
  33. package/avatargroup/style/index.mjs.map +1 -1
  34. package/badge/index.d.ts +2 -2
  35. package/badge/index.mjs.map +1 -1
  36. package/badge/style/index.mjs.map +1 -1
  37. package/badgedirective/index.d.ts +2 -2
  38. package/badgedirective/index.mjs.map +1 -1
  39. package/badgedirective/style/index.mjs.map +1 -1
  40. package/blockui/index.d.ts +2 -2
  41. package/blockui/index.mjs.map +1 -1
  42. package/blockui/style/index.mjs.map +1 -1
  43. package/breadcrumb/Breadcrumb.vue +1 -1
  44. package/breadcrumb/index.d.ts +2 -2
  45. package/breadcrumb/index.mjs +2 -1
  46. package/breadcrumb/index.mjs.map +1 -1
  47. package/breadcrumb/style/index.d.ts +4 -0
  48. package/breadcrumb/style/index.mjs +2 -1
  49. package/breadcrumb/style/index.mjs.map +1 -1
  50. package/button/BaseButton.vue +4 -0
  51. package/button/index.d.ts +8 -2
  52. package/button/index.mjs +4 -0
  53. package/button/index.mjs.map +1 -1
  54. package/button/style/index.mjs +3 -3
  55. package/button/style/index.mjs.map +1 -1
  56. package/buttongroup/index.d.ts +2 -2
  57. package/buttongroup/index.mjs.map +1 -1
  58. package/buttongroup/style/index.mjs +1 -1
  59. package/buttongroup/style/index.mjs.map +1 -1
  60. package/calendar/index.d.ts +2 -2
  61. package/calendar/index.mjs.map +1 -1
  62. package/calendar/style/index.mjs.map +1 -1
  63. package/card/index.d.ts +2 -2
  64. package/card/index.mjs.map +1 -1
  65. package/card/style/index.mjs.map +1 -1
  66. package/carousel/index.d.ts +2 -2
  67. package/carousel/index.mjs.map +1 -1
  68. package/carousel/style/index.mjs +1 -1
  69. package/carousel/style/index.mjs.map +1 -1
  70. package/cascadeselect/BaseCascadeSelect.vue +8 -14
  71. package/cascadeselect/CascadeSelect.vue +86 -55
  72. package/cascadeselect/CascadeSelectSub.vue +8 -17
  73. package/cascadeselect/index.d.ts +47 -2
  74. package/cascadeselect/index.mjs +148 -99
  75. package/cascadeselect/index.mjs.map +1 -1
  76. package/cascadeselect/style/index.d.ts +4 -0
  77. package/cascadeselect/style/index.mjs +9 -6
  78. package/cascadeselect/style/index.mjs.map +1 -1
  79. package/chart/index.d.ts +2 -2
  80. package/chart/index.mjs.map +1 -1
  81. package/chart/style/index.mjs.map +1 -1
  82. package/checkbox/BaseCheckbox.vue +2 -19
  83. package/checkbox/Checkbox.vue +18 -6
  84. package/checkbox/index.d.ts +19 -2
  85. package/checkbox/index.mjs +20 -25
  86. package/checkbox/index.mjs.map +1 -1
  87. package/checkbox/style/index.mjs +5 -3
  88. package/checkbox/style/index.mjs.map +1 -1
  89. package/checkboxgroup/BaseCheckboxGroup.vue +16 -0
  90. package/checkboxgroup/CheckboxGroup.vue +29 -0
  91. package/checkboxgroup/index.d.ts +160 -0
  92. package/checkboxgroup/index.mjs +46 -0
  93. package/checkboxgroup/index.mjs.map +1 -0
  94. package/checkboxgroup/package.json +11 -0
  95. package/checkboxgroup/style/index.d.ts +19 -0
  96. package/checkboxgroup/style/index.mjs +17 -0
  97. package/checkboxgroup/style/index.mjs.map +1 -0
  98. package/checkboxgroup/style/package.json +6 -0
  99. package/chip/index.d.ts +2 -2
  100. package/chip/index.mjs.map +1 -1
  101. package/chip/style/index.mjs +1 -1
  102. package/chip/style/index.mjs.map +1 -1
  103. package/chips/index.d.ts +2 -2
  104. package/chips/index.mjs.map +1 -1
  105. package/chips/style/index.mjs.map +1 -1
  106. package/colorpicker/BaseColorPicker.vue +2 -10
  107. package/colorpicker/ColorPicker.vue +7 -4
  108. package/colorpicker/index.d.ts +24 -2
  109. package/colorpicker/index.mjs +21 -23
  110. package/colorpicker/index.mjs.map +1 -1
  111. package/colorpicker/style/index.mjs +5 -3
  112. package/colorpicker/style/index.mjs.map +1 -1
  113. package/column/index.d.ts +2 -2
  114. package/column/index.mjs.map +1 -1
  115. package/column/style/index.mjs.map +1 -1
  116. package/columngroup/index.d.ts +2 -2
  117. package/columngroup/index.mjs.map +1 -1
  118. package/columngroup/style/index.mjs.map +1 -1
  119. package/config/index.d.ts +4 -0
  120. package/confirmationservice/index.mjs.map +1 -1
  121. package/confirmdialog/index.d.ts +2 -2
  122. package/confirmdialog/index.mjs.map +1 -1
  123. package/confirmdialog/style/index.mjs.map +1 -1
  124. package/confirmpopup/index.d.ts +2 -2
  125. package/confirmpopup/index.mjs.map +1 -1
  126. package/confirmpopup/style/index.mjs +1 -1
  127. package/confirmpopup/style/index.mjs.map +1 -1
  128. package/contextmenu/ContextMenu.vue +8 -3
  129. package/contextmenu/index.d.ts +2 -2
  130. package/contextmenu/index.mjs +6 -3
  131. package/contextmenu/index.mjs.map +1 -1
  132. package/contextmenu/style/index.mjs +1 -1
  133. package/contextmenu/style/index.mjs.map +1 -1
  134. package/datatable/BodyCell.vue +15 -6
  135. package/datatable/DataTable.vue +58 -4
  136. package/datatable/FooterCell.vue +15 -6
  137. package/datatable/HeaderCell.vue +15 -6
  138. package/datatable/index.d.ts +14 -10
  139. package/datatable/index.mjs +167 -82
  140. package/datatable/index.mjs.map +1 -1
  141. package/datatable/style/index.mjs +1 -1
  142. package/datatable/style/index.mjs.map +1 -1
  143. package/dataview/DataView.vue +33 -1
  144. package/dataview/index.d.ts +6 -2
  145. package/dataview/index.mjs +42 -6
  146. package/dataview/index.mjs.map +1 -1
  147. package/dataview/style/index.mjs.map +1 -1
  148. package/datepicker/BaseDatePicker.vue +2 -23
  149. package/datepicker/DatePicker.vue +39 -40
  150. package/datepicker/index.d.ts +23 -6
  151. package/datepicker/index.mjs +45 -65
  152. package/datepicker/index.mjs.map +1 -1
  153. package/datepicker/style/index.mjs +4 -5
  154. package/datepicker/style/index.mjs.map +1 -1
  155. package/deferredcontent/index.d.ts +2 -2
  156. package/deferredcontent/index.mjs.map +1 -1
  157. package/deferredcontent/style/index.mjs.map +1 -1
  158. package/dialog/index.d.ts +2 -2
  159. package/dialog/index.mjs.map +1 -1
  160. package/dialog/style/index.mjs +1 -1
  161. package/dialog/style/index.mjs.map +1 -1
  162. package/dialogservice/index.mjs.map +1 -1
  163. package/divider/index.d.ts +2 -2
  164. package/divider/index.mjs.map +1 -1
  165. package/divider/style/index.mjs +1 -1
  166. package/divider/style/index.mjs.map +1 -1
  167. package/dock/index.d.ts +2 -2
  168. package/dock/index.mjs.map +1 -1
  169. package/dock/style/index.mjs +1 -1
  170. package/dock/style/index.mjs.map +1 -1
  171. package/drawer/index.d.ts +2 -2
  172. package/drawer/index.mjs.map +1 -1
  173. package/drawer/style/index.mjs +1 -1
  174. package/drawer/style/index.mjs.map +1 -1
  175. package/dropdown/index.d.ts +2 -2
  176. package/dropdown/index.mjs.map +1 -1
  177. package/dropdown/style/index.mjs.map +1 -1
  178. package/dynamicdialog/index.d.ts +2 -2
  179. package/dynamicdialog/index.mjs.map +1 -1
  180. package/dynamicdialog/style/index.mjs.map +1 -1
  181. package/editor/BaseEditor.vue +2 -3
  182. package/editor/Editor.vue +3 -3
  183. package/editor/index.d.ts +24 -2
  184. package/editor/index.mjs +5 -6
  185. package/editor/index.mjs.map +1 -1
  186. package/editor/style/index.mjs +7 -2
  187. package/editor/style/index.mjs.map +1 -1
  188. package/fieldset/index.d.ts +2 -2
  189. package/fieldset/index.mjs.map +1 -1
  190. package/fieldset/style/index.mjs +1 -1
  191. package/fieldset/style/index.mjs.map +1 -1
  192. package/fileupload/index.d.ts +2 -2
  193. package/fileupload/index.mjs.map +1 -1
  194. package/fileupload/style/index.mjs +1 -1
  195. package/fileupload/style/index.mjs.map +1 -1
  196. package/floatlabel/index.d.ts +2 -2
  197. package/floatlabel/index.mjs.map +1 -1
  198. package/floatlabel/style/index.mjs +1 -1
  199. package/floatlabel/style/index.mjs.map +1 -1
  200. package/fluid/index.d.ts +2 -2
  201. package/fluid/index.mjs.map +1 -1
  202. package/fluid/style/index.mjs.map +1 -1
  203. package/focustrap/index.mjs.map +1 -1
  204. package/focustrap/style/index.mjs.map +1 -1
  205. package/galleria/index.d.ts +2 -2
  206. package/galleria/index.mjs.map +1 -1
  207. package/galleria/style/index.mjs +1 -1
  208. package/galleria/style/index.mjs.map +1 -1
  209. package/iconfield/index.d.ts +2 -2
  210. package/iconfield/index.mjs.map +1 -1
  211. package/iconfield/style/index.mjs +1 -1
  212. package/iconfield/style/index.mjs.map +1 -1
  213. package/iftalabel/index.d.ts +2 -2
  214. package/iftalabel/index.mjs.map +1 -1
  215. package/iftalabel/style/index.mjs +1 -1
  216. package/iftalabel/style/index.mjs.map +1 -1
  217. package/image/index.d.ts +2 -2
  218. package/image/index.mjs.map +1 -1
  219. package/image/style/index.mjs +1 -1
  220. package/image/style/index.mjs.map +1 -1
  221. package/imagecompare/ImageCompare.vue +33 -1
  222. package/imagecompare/index.d.ts +2 -2
  223. package/imagecompare/index.mjs +35 -1
  224. package/imagecompare/index.mjs.map +1 -1
  225. package/imagecompare/style/index.mjs +1 -1
  226. package/imagecompare/style/index.mjs.map +1 -1
  227. package/index.d.ts +811 -0
  228. package/index.mjs +531 -0
  229. package/index.mjs.map +1 -0
  230. package/inlinemessage/index.d.ts +2 -2
  231. package/inlinemessage/index.mjs.map +1 -1
  232. package/inlinemessage/style/index.mjs.map +1 -1
  233. package/inplace/index.d.ts +2 -6
  234. package/inplace/index.mjs.map +1 -1
  235. package/inplace/style/index.mjs.map +1 -1
  236. package/inputchips/index.d.ts +2 -2
  237. package/inputchips/index.mjs.map +1 -1
  238. package/inputchips/style/index.mjs.map +1 -1
  239. package/inputgroup/index.d.ts +2 -2
  240. package/inputgroup/index.mjs.map +1 -1
  241. package/inputgroup/style/index.mjs +1 -1
  242. package/inputgroup/style/index.mjs.map +1 -1
  243. package/inputgroupaddon/index.d.ts +2 -2
  244. package/inputgroupaddon/index.mjs.map +1 -1
  245. package/inputgroupaddon/style/index.mjs.map +1 -1
  246. package/inputicon/index.d.ts +2 -2
  247. package/inputicon/index.mjs.map +1 -1
  248. package/inputicon/style/index.mjs.map +1 -1
  249. package/inputmask/BaseInputMask.vue +2 -23
  250. package/inputmask/InputMask.vue +9 -14
  251. package/inputmask/index.d.ts +15 -2
  252. package/inputmask/index.mjs +13 -38
  253. package/inputmask/index.mjs.map +1 -1
  254. package/inputmask/style/index.mjs +1 -1
  255. package/inputmask/style/index.mjs.map +1 -1
  256. package/inputnumber/BaseInputNumber.vue +2 -22
  257. package/inputnumber/InputNumber.vue +14 -16
  258. package/inputnumber/index.d.ts +28 -2
  259. package/inputnumber/index.mjs +22 -39
  260. package/inputnumber/index.mjs.map +1 -1
  261. package/inputnumber/style/index.mjs +3 -3
  262. package/inputnumber/style/index.mjs.map +1 -1
  263. package/inputotp/BaseInputOtp.vue +2 -18
  264. package/inputotp/InputOtp.vue +4 -2
  265. package/inputotp/index.d.ts +23 -2
  266. package/inputotp/index.mjs +7 -21
  267. package/inputotp/index.mjs.map +1 -1
  268. package/inputotp/style/index.mjs +2 -2
  269. package/inputotp/style/index.mjs.map +1 -1
  270. package/inputswitch/index.d.ts +2 -2
  271. package/inputswitch/index.mjs.map +1 -1
  272. package/inputswitch/style/index.mjs.map +1 -1
  273. package/inputtext/BaseInputText.vue +2 -21
  274. package/inputtext/InputText.vue +13 -22
  275. package/inputtext/index.d.ts +19 -2
  276. package/inputtext/index.mjs +16 -48
  277. package/inputtext/index.mjs.map +1 -1
  278. package/inputtext/style/index.mjs +7 -7
  279. package/inputtext/style/index.mjs.map +1 -1
  280. package/keyfilter/index.mjs.map +1 -1
  281. package/keyfilter/style/index.mjs.map +1 -1
  282. package/knob/BaseKnob.vue +2 -10
  283. package/knob/Knob.vue +23 -19
  284. package/knob/index.d.ts +26 -4
  285. package/knob/index.mjs +31 -32
  286. package/knob/index.mjs.map +1 -1
  287. package/knob/style/index.mjs +4 -2
  288. package/knob/style/index.mjs.map +1 -1
  289. package/listbox/BaseListbox.vue +2 -11
  290. package/listbox/Listbox.vue +21 -20
  291. package/listbox/index.d.ts +19 -2
  292. package/listbox/index.mjs +23 -31
  293. package/listbox/index.mjs.map +1 -1
  294. package/listbox/style/index.mjs +4 -3
  295. package/listbox/style/index.mjs.map +1 -1
  296. package/megamenu/BaseMegaMenu.vue +4 -0
  297. package/megamenu/MegaMenu.vue +15 -5
  298. package/megamenu/index.d.ts +7 -2
  299. package/megamenu/index.mjs +23 -6
  300. package/megamenu/index.mjs.map +1 -1
  301. package/megamenu/style/index.mjs +5 -5
  302. package/megamenu/style/index.mjs.map +1 -1
  303. package/menu/index.d.ts +2 -2
  304. package/menu/index.mjs.map +1 -1
  305. package/menu/style/index.mjs +1 -1
  306. package/menu/style/index.mjs.map +1 -1
  307. package/menubar/Menubar.vue +8 -3
  308. package/menubar/index.d.ts +2 -2
  309. package/menubar/index.mjs +6 -3
  310. package/menubar/index.mjs.map +1 -1
  311. package/menubar/style/index.mjs +1 -1
  312. package/menubar/style/index.mjs.map +1 -1
  313. package/message/BaseMessage.vue +8 -0
  314. package/message/index.d.ts +11 -2
  315. package/message/index.mjs +8 -0
  316. package/message/index.mjs.map +1 -1
  317. package/message/style/index.mjs +7 -2
  318. package/message/style/index.mjs.map +1 -1
  319. package/metergroup/index.d.ts +2 -2
  320. package/metergroup/index.mjs.map +1 -1
  321. package/metergroup/style/index.mjs +1 -1
  322. package/metergroup/style/index.mjs.map +1 -1
  323. package/multiselect/BaseMultiSelect.vue +14 -19
  324. package/multiselect/MultiSelect.vue +45 -31
  325. package/multiselect/index.d.ts +52 -2
  326. package/multiselect/index.mjs +71 -52
  327. package/multiselect/index.mjs.map +1 -1
  328. package/multiselect/style/index.d.ts +4 -0
  329. package/multiselect/style/index.mjs +8 -5
  330. package/multiselect/style/index.mjs.map +1 -1
  331. package/orderlist/index.d.ts +2 -2
  332. package/orderlist/index.mjs.map +1 -1
  333. package/orderlist/style/index.mjs.map +1 -1
  334. package/organizationchart/index.d.ts +2 -2
  335. package/organizationchart/index.mjs.map +1 -1
  336. package/organizationchart/style/index.mjs +1 -1
  337. package/organizationchart/style/index.mjs.map +1 -1
  338. package/overlaybadge/index.d.ts +2 -2
  339. package/overlaybadge/index.mjs.map +1 -1
  340. package/overlaybadge/style/index.mjs +1 -1
  341. package/overlaybadge/style/index.mjs.map +1 -1
  342. package/overlaypanel/index.d.ts +2 -2
  343. package/overlaypanel/index.mjs.map +1 -1
  344. package/overlaypanel/style/index.mjs.map +1 -1
  345. package/package.json +15 -6
  346. package/paginator/Paginator.vue +104 -84
  347. package/paginator/index.d.ts +56 -2
  348. package/paginator/index.mjs +21 -3
  349. package/paginator/index.mjs.map +1 -1
  350. package/paginator/style/index.mjs +1 -1
  351. package/paginator/style/index.mjs.map +1 -1
  352. package/panel/index.d.ts +2 -2
  353. package/panel/index.mjs.map +1 -1
  354. package/panel/style/index.mjs.map +1 -1
  355. package/panelmenu/index.d.ts +2 -2
  356. package/panelmenu/index.mjs.map +1 -1
  357. package/panelmenu/style/index.mjs +1 -1
  358. package/panelmenu/style/index.mjs.map +1 -1
  359. package/passthrough/index.mjs.map +1 -1
  360. package/password/BasePassword.vue +2 -15
  361. package/password/Password.vue +13 -18
  362. package/password/index.d.ts +23 -2
  363. package/password/index.mjs +14 -32
  364. package/password/index.mjs.map +1 -1
  365. package/password/style/index.mjs +3 -3
  366. package/password/style/index.mjs.map +1 -1
  367. package/picklist/index.d.ts +2 -2
  368. package/picklist/index.mjs.map +1 -1
  369. package/picklist/style/index.mjs.map +1 -1
  370. package/popover/index.d.ts +2 -2
  371. package/popover/index.mjs.map +1 -1
  372. package/popover/style/index.mjs +1 -1
  373. package/popover/style/index.mjs.map +1 -1
  374. package/portal/index.d.ts +2 -2
  375. package/portal/index.mjs.map +1 -1
  376. package/portal/style/index.mjs.map +1 -1
  377. package/progressbar/index.d.ts +2 -2
  378. package/progressbar/index.mjs.map +1 -1
  379. package/progressbar/style/index.mjs +1 -1
  380. package/progressbar/style/index.mjs.map +1 -1
  381. package/progressspinner/index.d.ts +2 -2
  382. package/progressspinner/index.mjs.map +1 -1
  383. package/progressspinner/style/index.mjs.map +1 -1
  384. package/radiobutton/BaseRadioButton.vue +2 -19
  385. package/radiobutton/RadioButton.vue +15 -4
  386. package/radiobutton/index.d.ts +19 -2
  387. package/radiobutton/index.mjs +17 -23
  388. package/radiobutton/index.mjs.map +1 -1
  389. package/radiobutton/style/index.mjs +5 -3
  390. package/radiobutton/style/index.mjs.map +1 -1
  391. package/radiobuttongroup/BaseRadioButtonGroup.vue +16 -0
  392. package/radiobuttongroup/RadioButtonGroup.vue +29 -0
  393. package/radiobuttongroup/index.d.ts +160 -0
  394. package/radiobuttongroup/index.mjs +46 -0
  395. package/radiobuttongroup/index.mjs.map +1 -0
  396. package/radiobuttongroup/package.json +11 -0
  397. package/radiobuttongroup/style/index.d.ts +19 -0
  398. package/radiobuttongroup/style/index.mjs +17 -0
  399. package/radiobuttongroup/style/index.mjs.map +1 -0
  400. package/radiobuttongroup/style/package.json +6 -0
  401. package/rating/BaseRating.vue +2 -10
  402. package/rating/Rating.vue +17 -16
  403. package/rating/index.d.ts +20 -2
  404. package/rating/index.mjs +17 -23
  405. package/rating/index.mjs.map +1 -1
  406. package/rating/style/index.mjs +14 -5
  407. package/rating/style/index.mjs.map +1 -1
  408. package/ripple/index.mjs.map +1 -1
  409. package/ripple/style/index.mjs.map +1 -1
  410. package/row/index.d.ts +2 -2
  411. package/row/index.mjs.map +1 -1
  412. package/row/style/index.mjs.map +1 -1
  413. package/scrollpanel/ScrollPanel.vue +38 -5
  414. package/scrollpanel/index.d.ts +2 -2
  415. package/scrollpanel/index.mjs +58 -28
  416. package/scrollpanel/index.mjs.map +1 -1
  417. package/scrollpanel/style/index.mjs +1 -1
  418. package/scrollpanel/style/index.mjs.map +1 -1
  419. package/scrolltop/index.d.ts +2 -2
  420. package/scrolltop/index.mjs.map +1 -1
  421. package/scrolltop/style/index.mjs +1 -1
  422. package/scrolltop/style/index.mjs.map +1 -1
  423. package/select/BaseSelect.vue +2 -19
  424. package/select/Select.vue +15 -19
  425. package/select/index.d.ts +23 -2
  426. package/select/index.mjs +18 -40
  427. package/select/index.mjs.map +1 -1
  428. package/select/style/index.mjs +7 -5
  429. package/select/style/index.mjs.map +1 -1
  430. package/selectbutton/BaseSelectButton.vue +6 -8
  431. package/selectbutton/SelectButton.vue +9 -8
  432. package/selectbutton/index.d.ts +23 -2
  433. package/selectbutton/index.mjs +15 -16
  434. package/selectbutton/index.mjs.map +1 -1
  435. package/selectbutton/style/index.mjs +3 -3
  436. package/selectbutton/style/index.mjs.map +1 -1
  437. package/sidebar/index.d.ts +2 -2
  438. package/sidebar/index.mjs.map +1 -1
  439. package/sidebar/style/index.mjs.map +1 -1
  440. package/skeleton/index.d.ts +2 -2
  441. package/skeleton/index.mjs.map +1 -1
  442. package/skeleton/style/index.mjs +1 -1
  443. package/skeleton/style/index.mjs.map +1 -1
  444. package/slider/BaseSlider.vue +2 -7
  445. package/slider/Slider.vue +94 -38
  446. package/slider/index.d.ts +24 -2
  447. package/slider/index.mjs +145 -72
  448. package/slider/index.mjs.map +1 -1
  449. package/slider/style/index.mjs +4 -2
  450. package/slider/style/index.mjs.map +1 -1
  451. package/speeddial/index.d.ts +2 -2
  452. package/speeddial/index.mjs.map +1 -1
  453. package/speeddial/style/index.mjs +1 -1
  454. package/speeddial/style/index.mjs.map +1 -1
  455. package/splitbutton/index.d.ts +2 -2
  456. package/splitbutton/index.mjs.map +1 -1
  457. package/splitbutton/style/index.mjs +1 -1
  458. package/splitbutton/style/index.mjs.map +1 -1
  459. package/splitter/Splitter.vue +31 -3
  460. package/splitter/index.d.ts +2 -2
  461. package/splitter/index.mjs +50 -20
  462. package/splitter/index.mjs.map +1 -1
  463. package/splitter/style/index.mjs.map +1 -1
  464. package/splitterpanel/index.d.ts +2 -2
  465. package/splitterpanel/index.mjs.map +1 -1
  466. package/splitterpanel/style/index.mjs.map +1 -1
  467. package/step/index.d.ts +2 -2
  468. package/step/index.mjs.map +1 -1
  469. package/step/style/index.mjs.map +1 -1
  470. package/stepitem/index.d.ts +2 -2
  471. package/stepitem/index.mjs.map +1 -1
  472. package/stepitem/style/index.mjs.map +1 -1
  473. package/steplist/index.d.ts +2 -2
  474. package/steplist/index.mjs.map +1 -1
  475. package/steplist/style/index.mjs.map +1 -1
  476. package/steppanel/index.d.ts +2 -2
  477. package/steppanel/index.mjs.map +1 -1
  478. package/steppanel/style/index.mjs.map +1 -1
  479. package/steppanels/index.d.ts +2 -2
  480. package/steppanels/index.mjs.map +1 -1
  481. package/steppanels/style/index.mjs.map +1 -1
  482. package/stepper/index.d.ts +2 -2
  483. package/stepper/index.mjs.map +1 -1
  484. package/stepper/style/index.mjs +1 -1
  485. package/stepper/style/index.mjs.map +1 -1
  486. package/steps/index.d.ts +2 -2
  487. package/steps/index.mjs.map +1 -1
  488. package/steps/style/index.mjs +1 -1
  489. package/steps/style/index.mjs.map +1 -1
  490. package/styleclass/index.mjs.map +1 -1
  491. package/styleclass/style/index.mjs.map +1 -1
  492. package/tab/index.d.ts +2 -2
  493. package/tab/index.mjs.map +1 -1
  494. package/tab/style/index.mjs.map +1 -1
  495. package/tablist/TabList.vue +40 -5
  496. package/tablist/index.d.ts +2 -2
  497. package/tablist/index.mjs +38 -5
  498. package/tablist/index.mjs.map +1 -1
  499. package/tablist/style/index.mjs.map +1 -1
  500. package/tabmenu/index.d.ts +2 -2
  501. package/tabmenu/index.mjs.map +1 -1
  502. package/tabmenu/style/index.mjs.map +1 -1
  503. package/tabpanel/index.d.ts +2 -2
  504. package/tabpanel/index.mjs.map +1 -1
  505. package/tabpanel/style/index.mjs.map +1 -1
  506. package/tabpanels/index.d.ts +2 -2
  507. package/tabpanels/index.mjs.map +1 -1
  508. package/tabpanels/style/index.mjs.map +1 -1
  509. package/tabs/index.d.ts +2 -2
  510. package/tabs/index.mjs.map +1 -1
  511. package/tabs/style/index.mjs +1 -1
  512. package/tabs/style/index.mjs.map +1 -1
  513. package/tabview/index.d.ts +2 -2
  514. package/tabview/index.mjs.map +1 -1
  515. package/tabview/style/index.mjs.map +1 -1
  516. package/tag/index.d.ts +2 -2
  517. package/tag/index.mjs.map +1 -1
  518. package/tag/style/index.mjs.map +1 -1
  519. package/terminal/index.d.ts +2 -2
  520. package/terminal/index.mjs.map +1 -1
  521. package/terminal/style/index.mjs +1 -1
  522. package/terminal/style/index.mjs.map +1 -1
  523. package/textarea/BaseTextarea.vue +3 -16
  524. package/textarea/Textarea.vue +13 -19
  525. package/textarea/index.d.ts +23 -2
  526. package/textarea/index.mjs +14 -38
  527. package/textarea/index.mjs.map +1 -1
  528. package/textarea/style/index.mjs +7 -5
  529. package/textarea/style/index.mjs.map +1 -1
  530. package/tieredmenu/TieredMenu.vue +8 -3
  531. package/tieredmenu/index.d.ts +2 -2
  532. package/tieredmenu/index.mjs +6 -3
  533. package/tieredmenu/index.mjs.map +1 -1
  534. package/tieredmenu/style/index.mjs +1 -1
  535. package/tieredmenu/style/index.mjs.map +1 -1
  536. package/timeline/index.d.ts +2 -2
  537. package/timeline/index.mjs.map +1 -1
  538. package/timeline/style/index.mjs.map +1 -1
  539. package/toast/Toast.vue +0 -1
  540. package/toast/index.d.ts +2 -2
  541. package/toast/index.mjs.map +1 -1
  542. package/toast/style/index.mjs +1 -1
  543. package/toast/style/index.mjs.map +1 -1
  544. package/toastservice/index.mjs.map +1 -1
  545. package/togglebutton/BaseToggleButton.vue +6 -11
  546. package/togglebutton/ToggleButton.vue +11 -7
  547. package/togglebutton/index.d.ts +23 -2
  548. package/togglebutton/index.mjs +20 -18
  549. package/togglebutton/index.mjs.map +1 -1
  550. package/togglebutton/style/index.mjs +4 -2
  551. package/togglebutton/style/index.mjs.map +1 -1
  552. package/toggleswitch/BaseToggleSwitch.vue +2 -14
  553. package/toggleswitch/ToggleSwitch.vue +4 -3
  554. package/toggleswitch/index.d.ts +19 -2
  555. package/toggleswitch/index.mjs +7 -17
  556. package/toggleswitch/index.mjs.map +1 -1
  557. package/toggleswitch/style/index.mjs +2 -2
  558. package/toggleswitch/style/index.mjs.map +1 -1
  559. package/toolbar/index.d.ts +2 -2
  560. package/toolbar/index.mjs.map +1 -1
  561. package/toolbar/style/index.mjs.map +1 -1
  562. package/tooltip/index.mjs.map +1 -1
  563. package/tooltip/style/index.mjs +1 -1
  564. package/tooltip/style/index.mjs.map +1 -1
  565. package/tree/Tree.vue +1 -1
  566. package/tree/TreeNode.vue +1 -1
  567. package/tree/index.d.ts +2 -2
  568. package/tree/index.mjs +5 -4
  569. package/tree/index.mjs.map +1 -1
  570. package/tree/style/index.mjs +2 -1
  571. package/tree/style/index.mjs.map +1 -1
  572. package/treeselect/BaseTreeSelect.vue +18 -19
  573. package/treeselect/TreeSelect.vue +61 -18
  574. package/treeselect/index.d.ts +82 -28
  575. package/treeselect/index.mjs +87 -38
  576. package/treeselect/index.mjs.map +1 -1
  577. package/treeselect/style/index.d.ts +4 -0
  578. package/treeselect/style/index.mjs +8 -5
  579. package/treeselect/style/index.mjs.map +1 -1
  580. package/treetable/BodyCell.vue +21 -12
  581. package/treetable/FooterCell.vue +15 -6
  582. package/treetable/HeaderCell.vue +15 -6
  583. package/treetable/TreeTable.vue +57 -2
  584. package/treetable/index.d.ts +14 -10
  585. package/treetable/index.mjs +146 -59
  586. package/treetable/index.mjs.map +1 -1
  587. package/treetable/style/index.mjs +1 -1
  588. package/treetable/style/index.mjs.map +1 -1
  589. package/umd/primevue.min.js +1 -1
  590. package/useconfirm/index.mjs.map +1 -1
  591. package/usedialog/index.mjs.map +1 -1
  592. package/usetoast/index.mjs.map +1 -1
  593. package/virtualscroller/index.d.ts +2 -2
  594. package/virtualscroller/index.mjs.map +1 -1
  595. package/virtualscroller/style/index.mjs.map +1 -1
  596. package/web-types.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/inputnumber/BaseInputNumber.vue","../../src/inputnumber/InputNumber.vue","../../src/inputnumber/InputNumber.vue?vue&type=template&id=78ce497a&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport InputNumberStyle from 'primevue/inputnumber/style';\n\nexport default {\n name: 'BaseInputNumber',\n extends: BaseComponent,\n props: {\n modelValue: {\n type: Number,\n default: null\n },\n format: {\n type: Boolean,\n default: true\n },\n showButtons: {\n type: Boolean,\n default: false\n },\n buttonLayout: {\n type: String,\n default: 'stacked'\n },\n incrementButtonClass: {\n type: String,\n default: null\n },\n decrementButtonClass: {\n type: String,\n default: null\n },\n incrementButtonIcon: {\n type: String,\n default: undefined\n },\n incrementIcon: {\n type: String,\n default: undefined\n },\n decrementButtonIcon: {\n type: String,\n default: undefined\n },\n decrementIcon: {\n type: String,\n default: undefined\n },\n locale: {\n type: String,\n default: undefined\n },\n localeMatcher: {\n type: String,\n default: undefined\n },\n mode: {\n type: String,\n default: 'decimal'\n },\n prefix: {\n type: String,\n default: null\n },\n suffix: {\n type: String,\n default: null\n },\n currency: {\n type: String,\n default: undefined\n },\n currencyDisplay: {\n type: String,\n default: undefined\n },\n useGrouping: {\n type: Boolean,\n default: true\n },\n minFractionDigits: {\n type: Number,\n default: undefined\n },\n maxFractionDigits: {\n type: Number,\n default: undefined\n },\n roundingMode: {\n type: String,\n default: 'halfExpand',\n validator(value) {\n return ['ceil', 'floor', 'expand', 'trunc', 'halfCeil', 'halfFloor', 'halfExpand', 'halfTrunc', 'halfEven'].includes(value);\n }\n },\n min: {\n type: Number,\n default: null\n },\n max: {\n type: Number,\n default: null\n },\n step: {\n type: Number,\n default: 1\n },\n allowEmpty: {\n type: Boolean,\n default: true\n },\n highlightOnFocus: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: null\n },\n invalid: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: null\n },\n fluid: {\n type: Boolean,\n default: null\n },\n inputId: {\n type: String,\n default: null\n },\n inputClass: {\n type: [String, Object],\n default: null\n },\n inputStyle: {\n type: Object,\n default: null\n },\n ariaLabelledby: {\n type: String,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n }\n },\n style: InputNumberStyle,\n provide() {\n return {\n $pcInputNumber: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <span :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <InputText\n ref=\"input\"\n :id=\"inputId\"\n role=\"spinbutton\"\n :class=\"[cx('pcInputText'), inputClass]\"\n :style=\"inputStyle\"\n :value=\"formattedValue\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"modelValue\"\n :inputmode=\"mode === 'decimal' && !minFractionDigits ? 'numeric' : 'decimal'\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :placeholder=\"placeholder\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-label=\"ariaLabel\"\n :invalid=\"invalid\"\n :variant=\"variant\"\n @input=\"onUserInput\"\n @keydown=\"onInputKeyDown\"\n @keypress=\"onInputKeyPress\"\n @paste=\"onPaste\"\n @click=\"onInputClick\"\n @focus=\"onInputFocus\"\n @blur=\"onInputBlur\"\n :pt=\"ptm('pcInputText')\"\n :unstyled=\"unstyled\"\n />\n <span v-if=\"showButtons && buttonLayout === 'stacked'\" :class=\"cx('buttonGroup')\" v-bind=\"ptm('buttonGroup')\">\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button :class=\"[cx('decrementButton'), decrementButtonClass]\" v-on=\"downButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('decrementButton')\">\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n </span>\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button v-if=\"showButtons && buttonLayout !== 'stacked'\" :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button\n v-if=\"showButtons && buttonLayout !== 'stacked'\"\n :class=\"[cx('decrementButton'), decrementButtonClass]\"\n v-on=\"downButtonListeners\"\n :disabled=\"disabled\"\n :tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"button\"\n v-bind=\"ptm('decrementButton')\"\n >\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n <!-- TODO: decrementButton* and incrementButton* are deprecated since v4.0-->\n </span>\n</template>\n\n<script>\nimport { clearSelection, getSelection } from '@primeuix/utils/dom';\nimport { isEmpty, isNotEmpty } from '@primeuix/utils/object';\nimport AngleDownIcon from '@primevue/icons/angledown';\nimport AngleUpIcon from '@primevue/icons/angleup';\nimport InputText from 'primevue/inputtext';\nimport BaseInputNumber from './BaseInputNumber.vue';\n\nexport default {\n name: 'InputNumber',\n extends: BaseInputNumber,\n inheritAttrs: false,\n emits: ['update:modelValue', 'input', 'focus', 'blur'],\n inject: {\n $pcFluid: { default: null }\n },\n numberFormat: null,\n _numeral: null,\n _decimal: null,\n _group: null,\n _minusSign: null,\n _currency: null,\n _suffix: null,\n _prefix: null,\n _index: null,\n groupChar: '',\n isSpecialChar: null,\n prefixChar: null,\n suffixChar: null,\n timer: null,\n data() {\n return {\n d_modelValue: this.modelValue,\n focused: false\n };\n },\n watch: {\n modelValue(newValue) {\n this.d_modelValue = newValue;\n },\n locale(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n localeMatcher(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n mode(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currency(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currencyDisplay(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n useGrouping(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n minFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n maxFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n suffix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n prefix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n }\n },\n created() {\n this.constructParser();\n },\n methods: {\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits,\n roundingMode: this.roundingMode\n };\n },\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = (d) => index.get(d);\n },\n updateConstructParser(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.constructParser();\n }\n },\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n },\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n },\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n\n return new RegExp(`[${this.groupChar}]`, 'g');\n },\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n },\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`, 'g');\n },\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n },\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n },\n formatValue(value) {\n if (value != null) {\n if (value === '-') {\n // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n },\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-')\n // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n },\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n },\n spin(event, dir) {\n if (this.$refs.input) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.$refs.input.$el.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n onUpButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n },\n onUpButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, 1);\n }\n },\n onDownButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n },\n onDownButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, -1);\n }\n },\n onUserInput() {\n if (this.isSpecialChar) {\n this.$refs.input.$el.value = this.lastValue;\n }\n\n this.isSpecialChar = false;\n },\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n this.isSpecialChar = true;\n this.lastValue = this.$refs.input.$el.value;\n\n return;\n }\n\n this.lastValue = event.target.value;\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n switch (event.code) {\n case 'ArrowUp':\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = this.validateValue(this.parseValue(inputValue));\n this.$refs.input.$el.value = this.formatValue(newValueStr);\n this.$refs.input.$el.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(this.min)) {\n this.updateModel(event, this.min);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(this.max)) {\n this.updateModel(event, this.max);\n }\n\n break;\n\n default:\n break;\n }\n },\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n\n let char = event.key;\n let isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n },\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n\n if (data) {\n let filteredData = this.parseValue(data);\n\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n },\n allowMinusSign() {\n return this.min === null || this.min < 0;\n },\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalMode() {\n return this.mode === 'decimal';\n },\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n },\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n\n this._currency.lastIndex = 0;\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n },\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = this.$refs.input.$el.selectionStart;\n const selectionEnd = this.$refs.input.$el.selectionEnd;\n let inputValue = this.$refs.input.$el.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n },\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : this.formatValue(text) || value;\n } else if (end - start === value.length) {\n return this.formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n },\n deleteRange(value, start, end) {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n },\n initCursor() {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let inputValue = this.$refs.input.$el.value;\n let valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n },\n onInputClick() {\n const currentValue = this.$refs.input.$el.value;\n\n if (!this.readonly && currentValue !== getSelection()) {\n this.initCursor();\n }\n },\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n\n return true;\n }\n\n return false;\n },\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n },\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.$refs.input.$el.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.$emit('input', { originalEvent: event, value: newValue, formattedValue: currentValue });\n }\n },\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n },\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (this.min != null && value < this.min) {\n return this.min;\n }\n\n if (this.max != null && value > this.max) {\n return this.max;\n }\n\n return value;\n },\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.$refs.input.$el.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n this.$refs.input.$el.value = newValue;\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let selectionEnd = this.$refs.input.$el.selectionEnd;\n\n this.$refs.input.$el.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n this._group.lastIndex = 0;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.$refs.input.$el.setAttribute('aria-valuenow', value);\n },\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n if (this.suffixChar) {\n return decimalCharIndex !== -1 ? val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar : val1;\n } else {\n return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n },\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n }\n }\n\n return 0;\n },\n updateModel(event, value) {\n this.d_modelValue = value;\n this.$emit('update:modelValue', value);\n },\n onInputFocus(event) {\n this.focused = true;\n\n if (!this.disabled && !this.readonly && this.$refs.input.$el.value !== getSelection() && this.highlightOnFocus) {\n event.target.select();\n }\n\n this.$emit('focus', event);\n },\n onInputBlur(event) {\n this.focused = false;\n\n let input = event.target;\n let newValue = this.validateValue(this.parseValue(input.value));\n\n this.$emit('blur', { originalEvent: event, value: input.value });\n\n input.value = this.formatValue(newValue);\n input.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n if (!this.disabled && !this.readonly && this.highlightOnFocus) {\n clearSelection();\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n },\n maxBoundry() {\n return this.d_modelValue >= this.max;\n },\n minBoundry() {\n return this.d_modelValue <= this.min;\n }\n },\n computed: {\n filled() {\n return this.modelValue != null && this.modelValue.toString().length > 0;\n },\n upButtonListeners() {\n return {\n mousedown: (event) => this.onUpButtonMouseDown(event),\n mouseup: (event) => this.onUpButtonMouseUp(event),\n mouseleave: (event) => this.onUpButtonMouseLeave(event),\n keydown: (event) => this.onUpButtonKeyDown(event),\n keyup: (event) => this.onUpButtonKeyUp(event)\n };\n },\n downButtonListeners() {\n return {\n mousedown: (event) => this.onDownButtonMouseDown(event),\n mouseup: (event) => this.onDownButtonMouseUp(event),\n mouseleave: (event) => this.onDownButtonMouseLeave(event),\n keydown: (event) => this.onDownButtonKeyDown(event),\n keyup: (event) => this.onDownButtonKeyUp(event)\n };\n },\n formattedValue() {\n const val = !this.modelValue && !this.allowEmpty ? 0 : this.modelValue;\n\n return this.formatValue(val);\n },\n getFormatter() {\n return this.numberFormat;\n },\n hasFluid() {\n return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n }\n },\n components: {\n InputText,\n AngleUpIcon,\n AngleDownIcon\n }\n};\n</script>\n","<template>\n <span :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <InputText\n ref=\"input\"\n :id=\"inputId\"\n role=\"spinbutton\"\n :class=\"[cx('pcInputText'), inputClass]\"\n :style=\"inputStyle\"\n :value=\"formattedValue\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"modelValue\"\n :inputmode=\"mode === 'decimal' && !minFractionDigits ? 'numeric' : 'decimal'\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :placeholder=\"placeholder\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-label=\"ariaLabel\"\n :invalid=\"invalid\"\n :variant=\"variant\"\n @input=\"onUserInput\"\n @keydown=\"onInputKeyDown\"\n @keypress=\"onInputKeyPress\"\n @paste=\"onPaste\"\n @click=\"onInputClick\"\n @focus=\"onInputFocus\"\n @blur=\"onInputBlur\"\n :pt=\"ptm('pcInputText')\"\n :unstyled=\"unstyled\"\n />\n <span v-if=\"showButtons && buttonLayout === 'stacked'\" :class=\"cx('buttonGroup')\" v-bind=\"ptm('buttonGroup')\">\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button :class=\"[cx('decrementButton'), decrementButtonClass]\" v-on=\"downButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('decrementButton')\">\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n </span>\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button v-if=\"showButtons && buttonLayout !== 'stacked'\" :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button\n v-if=\"showButtons && buttonLayout !== 'stacked'\"\n :class=\"[cx('decrementButton'), decrementButtonClass]\"\n v-on=\"downButtonListeners\"\n :disabled=\"disabled\"\n :tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"button\"\n v-bind=\"ptm('decrementButton')\"\n >\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n <!-- TODO: decrementButton* and incrementButton* are deprecated since v4.0-->\n </span>\n</template>\n\n<script>\nimport { clearSelection, getSelection } from '@primeuix/utils/dom';\nimport { isEmpty, isNotEmpty } from '@primeuix/utils/object';\nimport AngleDownIcon from '@primevue/icons/angledown';\nimport AngleUpIcon from '@primevue/icons/angleup';\nimport InputText from 'primevue/inputtext';\nimport BaseInputNumber from './BaseInputNumber.vue';\n\nexport default {\n name: 'InputNumber',\n extends: BaseInputNumber,\n inheritAttrs: false,\n emits: ['update:modelValue', 'input', 'focus', 'blur'],\n inject: {\n $pcFluid: { default: null }\n },\n numberFormat: null,\n _numeral: null,\n _decimal: null,\n _group: null,\n _minusSign: null,\n _currency: null,\n _suffix: null,\n _prefix: null,\n _index: null,\n groupChar: '',\n isSpecialChar: null,\n prefixChar: null,\n suffixChar: null,\n timer: null,\n data() {\n return {\n d_modelValue: this.modelValue,\n focused: false\n };\n },\n watch: {\n modelValue(newValue) {\n this.d_modelValue = newValue;\n },\n locale(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n localeMatcher(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n mode(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currency(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currencyDisplay(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n useGrouping(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n minFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n maxFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n suffix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n prefix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n }\n },\n created() {\n this.constructParser();\n },\n methods: {\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits,\n roundingMode: this.roundingMode\n };\n },\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = (d) => index.get(d);\n },\n updateConstructParser(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.constructParser();\n }\n },\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n },\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n },\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n\n return new RegExp(`[${this.groupChar}]`, 'g');\n },\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n },\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`, 'g');\n },\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n },\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n },\n formatValue(value) {\n if (value != null) {\n if (value === '-') {\n // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n },\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-')\n // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n },\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n },\n spin(event, dir) {\n if (this.$refs.input) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.$refs.input.$el.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n onUpButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n },\n onUpButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, 1);\n }\n },\n onDownButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n },\n onDownButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, -1);\n }\n },\n onUserInput() {\n if (this.isSpecialChar) {\n this.$refs.input.$el.value = this.lastValue;\n }\n\n this.isSpecialChar = false;\n },\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n this.isSpecialChar = true;\n this.lastValue = this.$refs.input.$el.value;\n\n return;\n }\n\n this.lastValue = event.target.value;\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n switch (event.code) {\n case 'ArrowUp':\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = this.validateValue(this.parseValue(inputValue));\n this.$refs.input.$el.value = this.formatValue(newValueStr);\n this.$refs.input.$el.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(this.min)) {\n this.updateModel(event, this.min);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(this.max)) {\n this.updateModel(event, this.max);\n }\n\n break;\n\n default:\n break;\n }\n },\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n\n let char = event.key;\n let isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n },\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n\n if (data) {\n let filteredData = this.parseValue(data);\n\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n },\n allowMinusSign() {\n return this.min === null || this.min < 0;\n },\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalMode() {\n return this.mode === 'decimal';\n },\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n },\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n\n this._currency.lastIndex = 0;\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n },\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = this.$refs.input.$el.selectionStart;\n const selectionEnd = this.$refs.input.$el.selectionEnd;\n let inputValue = this.$refs.input.$el.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n },\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : this.formatValue(text) || value;\n } else if (end - start === value.length) {\n return this.formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n },\n deleteRange(value, start, end) {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n },\n initCursor() {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let inputValue = this.$refs.input.$el.value;\n let valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n },\n onInputClick() {\n const currentValue = this.$refs.input.$el.value;\n\n if (!this.readonly && currentValue !== getSelection()) {\n this.initCursor();\n }\n },\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n\n return true;\n }\n\n return false;\n },\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n },\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.$refs.input.$el.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.$emit('input', { originalEvent: event, value: newValue, formattedValue: currentValue });\n }\n },\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n },\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (this.min != null && value < this.min) {\n return this.min;\n }\n\n if (this.max != null && value > this.max) {\n return this.max;\n }\n\n return value;\n },\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.$refs.input.$el.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n this.$refs.input.$el.value = newValue;\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let selectionEnd = this.$refs.input.$el.selectionEnd;\n\n this.$refs.input.$el.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n this._group.lastIndex = 0;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.$refs.input.$el.setAttribute('aria-valuenow', value);\n },\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n if (this.suffixChar) {\n return decimalCharIndex !== -1 ? val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar : val1;\n } else {\n return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n },\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n }\n }\n\n return 0;\n },\n updateModel(event, value) {\n this.d_modelValue = value;\n this.$emit('update:modelValue', value);\n },\n onInputFocus(event) {\n this.focused = true;\n\n if (!this.disabled && !this.readonly && this.$refs.input.$el.value !== getSelection() && this.highlightOnFocus) {\n event.target.select();\n }\n\n this.$emit('focus', event);\n },\n onInputBlur(event) {\n this.focused = false;\n\n let input = event.target;\n let newValue = this.validateValue(this.parseValue(input.value));\n\n this.$emit('blur', { originalEvent: event, value: input.value });\n\n input.value = this.formatValue(newValue);\n input.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n if (!this.disabled && !this.readonly && this.highlightOnFocus) {\n clearSelection();\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n },\n maxBoundry() {\n return this.d_modelValue >= this.max;\n },\n minBoundry() {\n return this.d_modelValue <= this.min;\n }\n },\n computed: {\n filled() {\n return this.modelValue != null && this.modelValue.toString().length > 0;\n },\n upButtonListeners() {\n return {\n mousedown: (event) => this.onUpButtonMouseDown(event),\n mouseup: (event) => this.onUpButtonMouseUp(event),\n mouseleave: (event) => this.onUpButtonMouseLeave(event),\n keydown: (event) => this.onUpButtonKeyDown(event),\n keyup: (event) => this.onUpButtonKeyUp(event)\n };\n },\n downButtonListeners() {\n return {\n mousedown: (event) => this.onDownButtonMouseDown(event),\n mouseup: (event) => this.onDownButtonMouseUp(event),\n mouseleave: (event) => this.onDownButtonMouseLeave(event),\n keydown: (event) => this.onDownButtonKeyDown(event),\n keyup: (event) => this.onDownButtonKeyUp(event)\n };\n },\n formattedValue() {\n const val = !this.modelValue && !this.allowEmpty ? 0 : this.modelValue;\n\n return this.formatValue(val);\n },\n getFormatter() {\n return this.numberFormat;\n },\n hasFluid() {\n return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n }\n },\n components: {\n InputText,\n AngleUpIcon,\n AngleDownIcon\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","modelValue","type","Number","format","Boolean","showButtons","buttonLayout","String","incrementButtonClass","decrementButtonClass","incrementButtonIcon","undefined","incrementIcon","decrementButtonIcon","decrementIcon","locale","localeMatcher","mode","prefix","suffix","currency","currencyDisplay","useGrouping","minFractionDigits","maxFractionDigits","roundingMode","validator","value","includes","min","max","step","allowEmpty","highlightOnFocus","readonly","variant","invalid","disabled","placeholder","fluid","inputId","inputClass","Object","inputStyle","ariaLabelledby","ariaLabel","style","InputNumberStyle","provide","$pcInputNumber","$parentInstance","BaseInputNumber","inheritAttrs","emits","inject","$pcFluid","numberFormat","_numeral","_decimal","_group","_minusSign","_currency","_suffix","_prefix","_index","groupChar","isSpecialChar","prefixChar","suffixChar","timer","data","d_modelValue","focused","watch","newValue","oldValue","updateConstructParser","created","constructParser","methods","getOptions","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","numerals","_toConsumableArray","reverse","index","Map","map","d","i","RegExp","concat","join","getGroupingExpression","getMinusSignExpression","getCurrencyExpression","getDecimalExpression","getSuffixExpression","getPrefixExpression","get","escapeRegExp","text","replace","formatter","_objectSpread","trim","charAt","split","formatValue","formattedValue","toString","parseValue","filteredText","parsedValue","isNaN","repeat","event","interval","dir","_this","clearTimer","setTimeout","spin","$refs","input","currentValue","$el","validateValue","updateInput","updateModel","handleOnInput","onUpButtonMouseDown","focus","preventDefault","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyUp","onUpButtonKeyDown","code","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","onUserInput","lastValue","onInputKeyDown","altKey","ctrlKey","metaKey","target","selectionStart","selectionEnd","inputValue","newValueStr","isNumeralChar","setAttribute","deleteChar","_this$getDecimalCharI","getDecimalCharIndexes","decimalCharIndex","decimalCharIndexWithoutPrefix","decimalLength","getDecimalLength","test","lastIndex","slice","setSelectionRange","insertedText","isDecimalMode","updateValue","deleteRange","_this$getDecimalCharI2","isNotEmpty","onInputKeyPress","char","key","isDecimalSign","isMinusSign","insert","onPaste","clipboardData","window","getData","filteredData","allowMinusSign","val","search","filteredVal","getCharIndexes","minusCharIndex","suffixCharIndex","currencyCharIndex","sign","arguments","length","minusCharIndexOnText","_this$getCharIndexes","insertText","resolvedOptions","operation","charIndex","start","end","textSplit","initCursor","valueLength","prefixLength","onInputClick","getSelection","resetRegex","valueStr","insertedValueStr","isValueChanged","$emit","originalEvent","parsedCurrentValue","currentLength","concatValues","newLength","startValue","startValueStr","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","val1","val2","valueSplit","onInputFocus","select","onInputBlur","clearSelection","clearInterval","maxBoundry","minBoundry","computed","filled","upButtonListeners","_this2","mousedown","mouseup","mouseleave","keydown","keyup","downButtonListeners","_this3","getFormatter","hasFluid","isEmpty","components","InputText","AngleUpIcon","AngleDownIcon","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","ptmi","_createVNode","_component_InputText","ref","id","role","_normalizeClass","$options","inputmode","onInput","onKeydown","onKeypress","onClick","onFocus","onBlur","pt","ptm","unstyled","_renderSlot","$slots","listeners","_createElementVNode","_toHandlers","tabindex","incrementicon","_createBlock","_resolveDynamicComponent","decrementicon"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/inputnumber/BaseInputNumber.vue","../../src/inputnumber/InputNumber.vue","../../src/inputnumber/InputNumber.vue?vue&type=template&id=b855ed66&lang.js"],"sourcesContent":["<script>\nimport BaseInput from '@primevue/core/baseinput';\nimport InputNumberStyle from 'primevue/inputnumber/style';\n\nexport default {\n name: 'BaseInputNumber',\n extends: BaseInput,\n props: {\n format: {\n type: Boolean,\n default: true\n },\n showButtons: {\n type: Boolean,\n default: false\n },\n buttonLayout: {\n type: String,\n default: 'stacked'\n },\n incrementButtonClass: {\n type: String,\n default: null\n },\n decrementButtonClass: {\n type: String,\n default: null\n },\n incrementButtonIcon: {\n type: String,\n default: undefined\n },\n incrementIcon: {\n type: String,\n default: undefined\n },\n decrementButtonIcon: {\n type: String,\n default: undefined\n },\n decrementIcon: {\n type: String,\n default: undefined\n },\n locale: {\n type: String,\n default: undefined\n },\n localeMatcher: {\n type: String,\n default: undefined\n },\n mode: {\n type: String,\n default: 'decimal'\n },\n prefix: {\n type: String,\n default: null\n },\n suffix: {\n type: String,\n default: null\n },\n currency: {\n type: String,\n default: undefined\n },\n currencyDisplay: {\n type: String,\n default: undefined\n },\n useGrouping: {\n type: Boolean,\n default: true\n },\n minFractionDigits: {\n type: Number,\n default: undefined\n },\n maxFractionDigits: {\n type: Number,\n default: undefined\n },\n roundingMode: {\n type: String,\n default: 'halfExpand',\n validator(value) {\n return ['ceil', 'floor', 'expand', 'trunc', 'halfCeil', 'halfFloor', 'halfExpand', 'halfTrunc', 'halfEven'].includes(value);\n }\n },\n min: {\n type: Number,\n default: null\n },\n max: {\n type: Number,\n default: null\n },\n step: {\n type: Number,\n default: 1\n },\n allowEmpty: {\n type: Boolean,\n default: true\n },\n highlightOnFocus: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: null\n },\n inputId: {\n type: String,\n default: null\n },\n inputClass: {\n type: [String, Object],\n default: null\n },\n inputStyle: {\n type: Object,\n default: null\n },\n ariaLabelledby: {\n type: String,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n }\n },\n style: InputNumberStyle,\n provide() {\n return {\n $pcInputNumber: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <span :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <InputText\n ref=\"input\"\n :id=\"inputId\"\n role=\"spinbutton\"\n :class=\"[cx('pcInputText'), inputClass]\"\n :style=\"inputStyle\"\n :value=\"formattedValue\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"d_value\"\n :inputmode=\"mode === 'decimal' && !minFractionDigits ? 'numeric' : 'decimal'\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :placeholder=\"placeholder\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-label=\"ariaLabel\"\n :size=\"size\"\n :invalid=\"invalid\"\n :variant=\"variant\"\n @input=\"onUserInput\"\n @keydown=\"onInputKeyDown\"\n @keypress=\"onInputKeyPress\"\n @paste=\"onPaste\"\n @click=\"onInputClick\"\n @focus=\"onInputFocus\"\n @blur=\"onInputBlur\"\n :pt=\"ptm('pcInputText')\"\n :unstyled=\"unstyled\"\n />\n <span v-if=\"showButtons && buttonLayout === 'stacked'\" :class=\"cx('buttonGroup')\" v-bind=\"ptm('buttonGroup')\">\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button :class=\"[cx('decrementButton'), decrementButtonClass]\" v-on=\"downButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('decrementButton')\">\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n </span>\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button v-if=\"showButtons && buttonLayout !== 'stacked'\" :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button\n v-if=\"showButtons && buttonLayout !== 'stacked'\"\n :class=\"[cx('decrementButton'), decrementButtonClass]\"\n v-on=\"downButtonListeners\"\n :disabled=\"disabled\"\n :tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"button\"\n v-bind=\"ptm('decrementButton')\"\n >\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n <!-- TODO: decrementButton* and incrementButton* are deprecated since v4.0-->\n </span>\n</template>\n\n<script>\nimport { clearSelection, getSelection } from '@primeuix/utils/dom';\nimport { isNotEmpty } from '@primeuix/utils/object';\nimport AngleDownIcon from '@primevue/icons/angledown';\nimport AngleUpIcon from '@primevue/icons/angleup';\nimport InputText from 'primevue/inputtext';\nimport BaseInputNumber from './BaseInputNumber.vue';\n\nexport default {\n name: 'InputNumber',\n extends: BaseInputNumber,\n inheritAttrs: false,\n emits: ['input', 'focus', 'blur'],\n inject: {\n $pcFluid: { default: null }\n },\n numberFormat: null,\n _numeral: null,\n _decimal: null,\n _group: null,\n _minusSign: null,\n _currency: null,\n _suffix: null,\n _prefix: null,\n _index: null,\n groupChar: '',\n isSpecialChar: null,\n prefixChar: null,\n suffixChar: null,\n timer: null,\n data() {\n return {\n // @deprecated\n d_modelValue: this.d_value,\n focused: false\n };\n },\n watch: {\n d_value(newValue) {\n // @deprecated since v4.2.0\n this.d_modelValue = newValue;\n },\n locale(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n localeMatcher(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n mode(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currency(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currencyDisplay(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n useGrouping(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n minFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n maxFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n suffix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n prefix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n }\n },\n created() {\n this.constructParser();\n },\n methods: {\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits,\n roundingMode: this.roundingMode\n };\n },\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = (d) => index.get(d);\n },\n updateConstructParser(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.constructParser();\n }\n },\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n },\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n },\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n\n return new RegExp(`[${this.groupChar}]`, 'g');\n },\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n },\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`, 'g');\n },\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n },\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n },\n formatValue(value) {\n if (value != null) {\n if (value === '-') {\n // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n },\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-')\n // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n },\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n },\n spin(event, dir) {\n if (this.$refs.input) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.$refs.input.$el.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n onUpButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n },\n onUpButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, 1);\n }\n },\n onDownButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n },\n onDownButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, -1);\n }\n },\n onUserInput() {\n if (this.isSpecialChar) {\n this.$refs.input.$el.value = this.lastValue;\n }\n\n this.isSpecialChar = false;\n },\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n this.isSpecialChar = true;\n this.lastValue = this.$refs.input.$el.value;\n\n return;\n }\n\n this.lastValue = event.target.value;\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n switch (event.code) {\n case 'ArrowUp':\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = this.validateValue(this.parseValue(inputValue));\n this.$refs.input.$el.value = this.formatValue(newValueStr);\n this.$refs.input.$el.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(this.min)) {\n this.updateModel(event, this.min);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(this.max)) {\n this.updateModel(event, this.max);\n }\n\n break;\n\n default:\n break;\n }\n },\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n\n let char = event.key;\n let isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n },\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n\n if (data) {\n let filteredData = this.parseValue(data);\n\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n },\n allowMinusSign() {\n return this.min === null || this.min < 0;\n },\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalMode() {\n return this.mode === 'decimal';\n },\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n },\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n\n this._currency.lastIndex = 0;\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n },\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = this.$refs.input.$el.selectionStart;\n const selectionEnd = this.$refs.input.$el.selectionEnd;\n let inputValue = this.$refs.input.$el.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n },\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : this.formatValue(text) || value;\n } else if (end - start === value.length) {\n return this.formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n },\n deleteRange(value, start, end) {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n },\n initCursor() {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let inputValue = this.$refs.input.$el.value;\n let valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n },\n onInputClick() {\n const currentValue = this.$refs.input.$el.value;\n\n if (!this.readonly && currentValue !== getSelection()) {\n this.initCursor();\n }\n },\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n\n return true;\n }\n\n return false;\n },\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n },\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.$refs.input.$el.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.$emit('input', { originalEvent: event, value: newValue, formattedValue: currentValue });\n this.formField.onInput?.({ originalEvent: event, value: newValue });\n }\n },\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n },\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (this.min != null && value < this.min) {\n return this.min;\n }\n\n if (this.max != null && value > this.max) {\n return this.max;\n }\n\n return value;\n },\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.$refs.input.$el.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n this.$refs.input.$el.value = newValue;\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let selectionEnd = this.$refs.input.$el.selectionEnd;\n\n this.$refs.input.$el.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n this._group.lastIndex = 0;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.$refs.input.$el.setAttribute('aria-valuenow', value);\n },\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n if (this.suffixChar) {\n return decimalCharIndex !== -1 ? val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar : val1;\n } else {\n return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n },\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n }\n }\n\n return 0;\n },\n updateModel(event, value) {\n this.writeValue(value, event);\n },\n onInputFocus(event) {\n this.focused = true;\n\n if (!this.disabled && !this.readonly && this.$refs.input.$el.value !== getSelection() && this.highlightOnFocus) {\n event.target.select();\n }\n\n this.$emit('focus', event);\n },\n onInputBlur(event) {\n this.focused = false;\n\n let input = event.target;\n let newValue = this.validateValue(this.parseValue(input.value));\n\n this.$emit('blur', { originalEvent: event, value: input.value });\n this.formField.onBlur?.(event);\n\n input.value = this.formatValue(newValue);\n input.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n if (!this.disabled && !this.readonly && this.highlightOnFocus) {\n clearSelection();\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n },\n maxBoundry() {\n return this.d_value >= this.max;\n },\n minBoundry() {\n return this.d_value <= this.min;\n }\n },\n computed: {\n upButtonListeners() {\n return {\n mousedown: (event) => this.onUpButtonMouseDown(event),\n mouseup: (event) => this.onUpButtonMouseUp(event),\n mouseleave: (event) => this.onUpButtonMouseLeave(event),\n keydown: (event) => this.onUpButtonKeyDown(event),\n keyup: (event) => this.onUpButtonKeyUp(event)\n };\n },\n downButtonListeners() {\n return {\n mousedown: (event) => this.onDownButtonMouseDown(event),\n mouseup: (event) => this.onDownButtonMouseUp(event),\n mouseleave: (event) => this.onDownButtonMouseLeave(event),\n keydown: (event) => this.onDownButtonKeyDown(event),\n keyup: (event) => this.onDownButtonKeyUp(event)\n };\n },\n formattedValue() {\n const val = !this.d_value && !this.allowEmpty ? 0 : this.d_value;\n\n return this.formatValue(val);\n },\n getFormatter() {\n return this.numberFormat;\n }\n },\n components: {\n InputText,\n AngleUpIcon,\n AngleDownIcon\n }\n};\n</script>\n","<template>\n <span :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <InputText\n ref=\"input\"\n :id=\"inputId\"\n role=\"spinbutton\"\n :class=\"[cx('pcInputText'), inputClass]\"\n :style=\"inputStyle\"\n :value=\"formattedValue\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"d_value\"\n :inputmode=\"mode === 'decimal' && !minFractionDigits ? 'numeric' : 'decimal'\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :placeholder=\"placeholder\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-label=\"ariaLabel\"\n :size=\"size\"\n :invalid=\"invalid\"\n :variant=\"variant\"\n @input=\"onUserInput\"\n @keydown=\"onInputKeyDown\"\n @keypress=\"onInputKeyPress\"\n @paste=\"onPaste\"\n @click=\"onInputClick\"\n @focus=\"onInputFocus\"\n @blur=\"onInputBlur\"\n :pt=\"ptm('pcInputText')\"\n :unstyled=\"unstyled\"\n />\n <span v-if=\"showButtons && buttonLayout === 'stacked'\" :class=\"cx('buttonGroup')\" v-bind=\"ptm('buttonGroup')\">\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button :class=\"[cx('decrementButton'), decrementButtonClass]\" v-on=\"downButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('decrementButton')\">\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n </span>\n <slot name=\"incrementbutton\" :listeners=\"upButtonListeners\">\n <button v-if=\"showButtons && buttonLayout !== 'stacked'\" :class=\"[cx('incrementButton'), incrementButtonClass]\" v-on=\"upButtonListeners\" :disabled=\"disabled\" :tabindex=\"-1\" aria-hidden=\"true\" type=\"button\" v-bind=\"ptm('incrementButton')\">\n <slot :name=\"$slots.incrementicon ? 'incrementicon' : 'incrementbuttonicon'\">\n <component :is=\"incrementIcon || incrementButtonIcon ? 'span' : 'AngleUpIcon'\" :class=\"[incrementIcon, incrementButtonIcon]\" v-bind=\"ptm('incrementIcon')\" data-pc-section=\"incrementicon\" />\n </slot>\n </button>\n </slot>\n <slot name=\"decrementbutton\" :listeners=\"downButtonListeners\">\n <button\n v-if=\"showButtons && buttonLayout !== 'stacked'\"\n :class=\"[cx('decrementButton'), decrementButtonClass]\"\n v-on=\"downButtonListeners\"\n :disabled=\"disabled\"\n :tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"button\"\n v-bind=\"ptm('decrementButton')\"\n >\n <slot :name=\"$slots.decrementicon ? 'decrementicon' : 'decrementbuttonicon'\">\n <component :is=\"decrementIcon || decrementButtonIcon ? 'span' : 'AngleDownIcon'\" :class=\"[decrementIcon, decrementButtonIcon]\" v-bind=\"ptm('decrementIcon')\" data-pc-section=\"decrementicon\" />\n </slot>\n </button>\n </slot>\n <!-- TODO: decrementButton* and incrementButton* are deprecated since v4.0-->\n </span>\n</template>\n\n<script>\nimport { clearSelection, getSelection } from '@primeuix/utils/dom';\nimport { isNotEmpty } from '@primeuix/utils/object';\nimport AngleDownIcon from '@primevue/icons/angledown';\nimport AngleUpIcon from '@primevue/icons/angleup';\nimport InputText from 'primevue/inputtext';\nimport BaseInputNumber from './BaseInputNumber.vue';\n\nexport default {\n name: 'InputNumber',\n extends: BaseInputNumber,\n inheritAttrs: false,\n emits: ['input', 'focus', 'blur'],\n inject: {\n $pcFluid: { default: null }\n },\n numberFormat: null,\n _numeral: null,\n _decimal: null,\n _group: null,\n _minusSign: null,\n _currency: null,\n _suffix: null,\n _prefix: null,\n _index: null,\n groupChar: '',\n isSpecialChar: null,\n prefixChar: null,\n suffixChar: null,\n timer: null,\n data() {\n return {\n // @deprecated\n d_modelValue: this.d_value,\n focused: false\n };\n },\n watch: {\n d_value(newValue) {\n // @deprecated since v4.2.0\n this.d_modelValue = newValue;\n },\n locale(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n localeMatcher(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n mode(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currency(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n currencyDisplay(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n useGrouping(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n minFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n maxFractionDigits(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n suffix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n },\n prefix(newValue, oldValue) {\n this.updateConstructParser(newValue, oldValue);\n }\n },\n created() {\n this.constructParser();\n },\n methods: {\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits,\n roundingMode: this.roundingMode\n };\n },\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = (d) => index.get(d);\n },\n updateConstructParser(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.constructParser();\n }\n },\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n },\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });\n\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n },\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n\n return new RegExp(`[${this.groupChar}]`, 'g');\n },\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n },\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`, 'g');\n },\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n },\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n } else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: this.roundingMode });\n\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n },\n formatValue(value) {\n if (value != null) {\n if (value === '-') {\n // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n },\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-')\n // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n },\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n },\n spin(event, dir) {\n if (this.$refs.input) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.$refs.input.$el.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n onUpButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n },\n onUpButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onUpButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, 1);\n }\n },\n onDownButtonMouseDown(event) {\n if (!this.disabled) {\n this.$refs.input.$el.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n },\n onDownButtonMouseUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonMouseLeave() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyUp() {\n if (!this.disabled) {\n this.clearTimer();\n }\n },\n onDownButtonKeyDown(event) {\n if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.repeat(event, null, -1);\n }\n },\n onUserInput() {\n if (this.isSpecialChar) {\n this.$refs.input.$el.value = this.lastValue;\n }\n\n this.isSpecialChar = false;\n },\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n this.isSpecialChar = true;\n this.lastValue = this.$refs.input.$el.value;\n\n return;\n }\n\n this.lastValue = event.target.value;\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n switch (event.code) {\n case 'ArrowUp':\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = this.validateValue(this.parseValue(inputValue));\n this.$refs.input.$el.value = this.formatValue(newValueStr);\n this.$refs.input.$el.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n\n if (decimalLength) {\n this.$refs.input.$el.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n } else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(this.min)) {\n this.updateModel(event, this.min);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(this.max)) {\n this.updateModel(event, this.max);\n }\n\n break;\n\n default:\n break;\n }\n },\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n\n let char = event.key;\n let isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n },\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n\n if (data) {\n let filteredData = this.parseValue(data);\n\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n },\n allowMinusSign() {\n return this.min === null || this.min < 0;\n },\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n\n return true;\n }\n\n return false;\n },\n isDecimalMode() {\n return this.mode === 'decimal';\n },\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n },\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n\n this._currency.lastIndex = 0;\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n },\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n\n this._minusSign.lastIndex = 0;\n\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = this.$refs.input.$el.selectionStart;\n const selectionEnd = this.$refs.input.$el.selectionEnd;\n let inputValue = this.$refs.input.$el.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n },\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : this.formatValue(text) || value;\n } else if (end - start === value.length) {\n return this.formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n },\n deleteRange(value, start, end) {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n },\n initCursor() {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let inputValue = this.$refs.input.$el.value;\n let valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n this.$refs.input.$el.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n },\n onInputClick() {\n const currentValue = this.$refs.input.$el.value;\n\n if (!this.readonly && currentValue !== getSelection()) {\n this.initCursor();\n }\n },\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n\n return true;\n }\n\n return false;\n },\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n },\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.$refs.input.$el.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n },\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.$emit('input', { originalEvent: event, value: newValue, formattedValue: currentValue });\n this.formField.onInput?.({ originalEvent: event, value: newValue });\n }\n },\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n },\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (this.min != null && value < this.min) {\n return this.min;\n }\n\n if (this.max != null && value > this.max) {\n return this.max;\n }\n\n return value;\n },\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.$refs.input.$el.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n this.$refs.input.$el.value = newValue;\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n let selectionStart = this.$refs.input.$el.selectionStart;\n let selectionEnd = this.$refs.input.$el.selectionEnd;\n\n this.$refs.input.$el.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n this.$refs.input.$el.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n this._group.lastIndex = 0;\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n this.$refs.input.$el.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.$refs.input.$el.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.$refs.input.$el.setAttribute('aria-valuenow', value);\n },\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n\n this._decimal.lastIndex = 0;\n\n if (this.suffixChar) {\n return decimalCharIndex !== -1 ? val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar : val1;\n } else {\n return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n },\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '').trim().replace(/\\s/g, '').replace(this._currency, '').length;\n }\n }\n\n return 0;\n },\n updateModel(event, value) {\n this.writeValue(value, event);\n },\n onInputFocus(event) {\n this.focused = true;\n\n if (!this.disabled && !this.readonly && this.$refs.input.$el.value !== getSelection() && this.highlightOnFocus) {\n event.target.select();\n }\n\n this.$emit('focus', event);\n },\n onInputBlur(event) {\n this.focused = false;\n\n let input = event.target;\n let newValue = this.validateValue(this.parseValue(input.value));\n\n this.$emit('blur', { originalEvent: event, value: input.value });\n this.formField.onBlur?.(event);\n\n input.value = this.formatValue(newValue);\n input.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n if (!this.disabled && !this.readonly && this.highlightOnFocus) {\n clearSelection();\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n },\n maxBoundry() {\n return this.d_value >= this.max;\n },\n minBoundry() {\n return this.d_value <= this.min;\n }\n },\n computed: {\n upButtonListeners() {\n return {\n mousedown: (event) => this.onUpButtonMouseDown(event),\n mouseup: (event) => this.onUpButtonMouseUp(event),\n mouseleave: (event) => this.onUpButtonMouseLeave(event),\n keydown: (event) => this.onUpButtonKeyDown(event),\n keyup: (event) => this.onUpButtonKeyUp(event)\n };\n },\n downButtonListeners() {\n return {\n mousedown: (event) => this.onDownButtonMouseDown(event),\n mouseup: (event) => this.onDownButtonMouseUp(event),\n mouseleave: (event) => this.onDownButtonMouseLeave(event),\n keydown: (event) => this.onDownButtonKeyDown(event),\n keyup: (event) => this.onDownButtonKeyUp(event)\n };\n },\n formattedValue() {\n const val = !this.d_value && !this.allowEmpty ? 0 : this.d_value;\n\n return this.formatValue(val);\n },\n getFormatter() {\n return this.numberFormat;\n }\n },\n components: {\n InputText,\n AngleUpIcon,\n AngleDownIcon\n }\n};\n</script>\n"],"names":["name","BaseInput","props","format","type","Boolean","showButtons","buttonLayout","String","incrementButtonClass","decrementButtonClass","incrementButtonIcon","undefined","incrementIcon","decrementButtonIcon","decrementIcon","locale","localeMatcher","mode","prefix","suffix","currency","currencyDisplay","useGrouping","minFractionDigits","Number","maxFractionDigits","roundingMode","validator","value","includes","min","max","step","allowEmpty","highlightOnFocus","readonly","placeholder","inputId","inputClass","Object","inputStyle","ariaLabelledby","ariaLabel","style","InputNumberStyle","provide","$pcInputNumber","$parentInstance","BaseInputNumber","inheritAttrs","emits","inject","$pcFluid","numberFormat","_numeral","_decimal","_group","_minusSign","_currency","_suffix","_prefix","_index","groupChar","isSpecialChar","prefixChar","suffixChar","timer","data","d_modelValue","d_value","focused","watch","newValue","oldValue","updateConstructParser","created","constructParser","methods","getOptions","minimumFractionDigits","maximumFractionDigits","Intl","NumberFormat","numerals","_toConsumableArray","reverse","index","Map","map","d","i","RegExp","concat","join","getGroupingExpression","getMinusSignExpression","getCurrencyExpression","getDecimalExpression","getSuffixExpression","getPrefixExpression","get","escapeRegExp","text","replace","formatter","_objectSpread","trim","charAt","split","formatValue","formattedValue","toString","parseValue","filteredText","parsedValue","isNaN","repeat","event","interval","dir","_this","clearTimer","setTimeout","spin","$refs","input","currentValue","$el","validateValue","updateInput","updateModel","handleOnInput","onUpButtonMouseDown","disabled","focus","preventDefault","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyUp","onUpButtonKeyDown","code","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","onUserInput","lastValue","onInputKeyDown","altKey","ctrlKey","metaKey","target","selectionStart","selectionEnd","inputValue","newValueStr","isNumeralChar","setAttribute","deleteChar","_this$getDecimalCharI","getDecimalCharIndexes","decimalCharIndex","decimalCharIndexWithoutPrefix","decimalLength","getDecimalLength","test","lastIndex","slice","setSelectionRange","insertedText","isDecimalMode","updateValue","deleteRange","_this$getDecimalCharI2","isNotEmpty","onInputKeyPress","char","key","isDecimalSign","isMinusSign","insert","onPaste","clipboardData","window","getData","filteredData","allowMinusSign","val","search","filteredVal","getCharIndexes","minusCharIndex","suffixCharIndex","currencyCharIndex","sign","arguments","length","minusCharIndexOnText","_this$getCharIndexes","insertText","resolvedOptions","operation","charIndex","start","end","textSplit","initCursor","valueLength","prefixLength","onInputClick","getSelection","resetRegex","valueStr","insertedValueStr","isValueChanged","_this$formField$onInp","_this$formField","$emit","originalEvent","formField","onInput","call","parsedCurrentValue","currentLength","concatValues","newLength","startValue","startValueStr","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","val1","val2","valueSplit","writeValue","onInputFocus","select","onInputBlur","_this$formField$onBlu","_this$formField2","onBlur","clearSelection","clearInterval","maxBoundry","minBoundry","computed","upButtonListeners","_this2","mousedown","mouseup","mouseleave","keydown","keyup","downButtonListeners","_this3","getFormatter","components","InputText","AngleUpIcon","AngleDownIcon","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","ptmi","_createVNode","_component_InputText","ref","id","role","_normalizeClass","$options","inputmode","size","invalid","variant","onKeydown","onKeypress","onClick","onFocus","pt","ptm","unstyled","_renderSlot","$slots","listeners","_createElementVNode","_toHandlers","tabindex","incrementicon","_createBlock","_resolveDynamicComponent","decrementicon"],"mappings":"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"}