@expcat/tigercat-vue 2.0.19 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +20 -10
  2. package/dist/chunk-26QCTL2E.mjs +180 -0
  3. package/dist/{chunk-7W3NALIL.mjs → chunk-3FPS7XVB.mjs} +26 -27
  4. package/dist/{chunk-2OI6GWOT.mjs → chunk-3KAHJF7D.mjs} +12 -11
  5. package/dist/chunk-3OCHBGPF.mjs +835 -0
  6. package/dist/chunk-3ONCXHE5.mjs +184 -0
  7. package/dist/{chunk-4HUYX5WW.mjs → chunk-4PQZMDBK.mjs} +29 -8
  8. package/dist/{chunk-DI6RRAGQ.mjs → chunk-562Z32GR.mjs} +3 -3
  9. package/dist/{chunk-OQVGB7X6.mjs → chunk-626VUZ2Q.mjs} +1 -1
  10. package/dist/{chunk-WUQMFKQ6.mjs → chunk-67VS6QHJ.mjs} +29 -15
  11. package/dist/chunk-6GR3XC5V.mjs +281 -0
  12. package/dist/chunk-6GR5U4UB.mjs +225 -0
  13. package/dist/{chunk-KFJIZED5.mjs → chunk-6JAAXPBW.mjs} +7 -6
  14. package/dist/{chunk-XGXZF27U.mjs → chunk-6NYC7EY2.mjs} +32 -18
  15. package/dist/{chunk-6BDDX2R4.mjs → chunk-73Z7N7VG.mjs} +1 -4
  16. package/dist/chunk-7C7SG3SS.mjs +269 -0
  17. package/dist/{chunk-NNC75I7F.mjs → chunk-7TJE7OYH.mjs} +7 -6
  18. package/dist/{chunk-AU6IC6K7.mjs → chunk-ABNS4B5V.mjs} +35 -15
  19. package/dist/chunk-AECXFT7D.mjs +121 -0
  20. package/dist/chunk-AOLRZG4E.mjs +347 -0
  21. package/dist/chunk-AY7CGLMO.mjs +368 -0
  22. package/dist/chunk-BBNCP55O.mjs +156 -0
  23. package/dist/{chunk-EGIMTTZA.mjs → chunk-BOHE5URZ.mjs} +18 -3
  24. package/dist/{chunk-5RIHHZF6.mjs → chunk-BQK7LH2L.mjs} +4 -1
  25. package/dist/{chunk-E6EZHSGY.mjs → chunk-BSOLH6R5.mjs} +0 -1
  26. package/dist/{chunk-RSM6FOWX.mjs → chunk-CCC3S6LK.mjs} +6 -3
  27. package/dist/{chunk-U75YXWSA.mjs → chunk-CLTRADS7.mjs} +17 -5
  28. package/dist/{chunk-BEIPGX74.mjs → chunk-DRLQCY7R.mjs} +162 -7
  29. package/dist/{chunk-KBJANUZZ.mjs → chunk-E523VGZP.mjs} +1 -1
  30. package/dist/{chunk-D3U2NJ32.mjs → chunk-FEQ7PZXI.mjs} +8 -2
  31. package/dist/{chunk-PE5OA4YG.mjs → chunk-FHUGOSEY.mjs} +8 -2
  32. package/dist/{chunk-OAPIT53X.mjs → chunk-FIEECAJV.mjs} +7 -10
  33. package/dist/{chunk-7SFB77JR.mjs → chunk-GBPMQJJJ.mjs} +8 -1
  34. package/dist/{chunk-KOG3HKOF.mjs → chunk-GQOPDD44.mjs} +2 -5
  35. package/dist/{chunk-5RXYJWNA.mjs → chunk-H4DEIGEG.mjs} +77 -25
  36. package/dist/{chunk-ZGA66PSG.mjs → chunk-IK2WHKDA.mjs} +32 -18
  37. package/dist/{chunk-HGXD57QM.mjs → chunk-JBS3AESR.mjs} +65 -23
  38. package/dist/{chunk-PYRKFQ6J.mjs → chunk-JIU5UEOU.mjs} +70 -26
  39. package/dist/{chunk-JALHMWKW.mjs → chunk-K5MHUMKR.mjs} +2 -2
  40. package/dist/{chunk-5E4LINDO.mjs → chunk-LH2V2JMZ.mjs} +26 -10
  41. package/dist/{chunk-PQBKN2NH.mjs → chunk-LRFKHJDU.mjs} +14 -5
  42. package/dist/{chunk-OTHJIFDV.mjs → chunk-M4FWWEMX.mjs} +18 -9
  43. package/dist/{chunk-NGAA73CV.mjs → chunk-N2XV37BL.mjs} +40 -44
  44. package/dist/{chunk-2LIIMWBR.mjs → chunk-OYU47A57.mjs} +1 -2
  45. package/dist/{chunk-KU2Q5V3L.mjs → chunk-P62TYR3M.mjs} +18 -2
  46. package/dist/chunk-P6FMU4AT.mjs +54 -0
  47. package/dist/{chunk-P5FDKBXG.mjs → chunk-P7X46BAW.mjs} +70 -3
  48. package/dist/chunk-PFIV5MXD.mjs +48 -0
  49. package/dist/{chunk-KROVW4AW.mjs → chunk-PJQTRDIG.mjs} +13 -3
  50. package/dist/{chunk-26OI3TEA.mjs → chunk-PMQSXEMT.mjs} +42 -6
  51. package/dist/{chunk-XLNK3Z2P.mjs → chunk-POWDTOMF.mjs} +88 -79
  52. package/dist/{chunk-AXDBME5A.mjs → chunk-PSGVG4TN.mjs} +38 -21
  53. package/dist/chunk-PWWWACHC.mjs +302 -0
  54. package/dist/{chunk-UUWTKCMY.mjs → chunk-QWLD5FMJ.mjs} +1 -1
  55. package/dist/{chunk-ALIUAGJO.mjs → chunk-QZLOF36M.mjs} +7 -13
  56. package/dist/{chunk-WLYQHKLZ.mjs → chunk-QZRSFGZZ.mjs} +50 -11
  57. package/dist/{chunk-MAKOSWR6.mjs → chunk-RHQWQJ4I.mjs} +7 -6
  58. package/dist/{chunk-GS4SV2HK.mjs → chunk-RRLE7QRH.mjs} +43 -22
  59. package/dist/{chunk-RID7A5V7.mjs → chunk-RRNQL6MJ.mjs} +23 -6
  60. package/dist/{chunk-VJ6YM2EW.mjs → chunk-S4BKVFQ7.mjs} +1 -1
  61. package/dist/{chunk-LPZBXTJ6.mjs → chunk-SAC4PAG3.mjs} +4 -4
  62. package/dist/{chunk-W5RZPTFD.mjs → chunk-SNNT64HK.mjs} +13 -2
  63. package/dist/{chunk-N3C6YI7I.mjs → chunk-SWMYIORV.mjs} +22 -7
  64. package/dist/{chunk-2XCXK3NQ.mjs → chunk-SX3NAN4M.mjs} +1 -1
  65. package/dist/chunk-TBOXTAIA.mjs +94 -0
  66. package/dist/{chunk-JL3CN4UK.mjs → chunk-TDBMAKTJ.mjs} +10 -3
  67. package/dist/{chunk-EDBMWZKH.mjs → chunk-TPESRDUG.mjs} +5 -1
  68. package/dist/chunk-UEGNXN5B.mjs +28 -0
  69. package/dist/{chunk-NEEGXKJW.mjs → chunk-UGHLEKEZ.mjs} +22 -3
  70. package/dist/{chunk-HKYRRQS7.mjs → chunk-UNQO7EVG.mjs} +1 -1
  71. package/dist/chunk-UR5F74ZB.mjs +601 -0
  72. package/dist/{chunk-VCCK4CDT.mjs → chunk-URPXBKK4.mjs} +23 -5
  73. package/dist/chunk-UUWPSRNV.mjs +337 -0
  74. package/dist/chunk-UXJRH72H.mjs +834 -0
  75. package/dist/chunk-VFS5XAZ3.mjs +602 -0
  76. package/dist/{chunk-7KCOF5US.mjs → chunk-VY6FVIOZ.mjs} +10 -8
  77. package/dist/{chunk-KICZSLOX.mjs → chunk-W2ICYZVU.mjs} +1 -1
  78. package/dist/{chunk-FIVVKBBF.mjs → chunk-W3QOMJKQ.mjs} +8 -6
  79. package/dist/{chunk-DCMRB3HR.mjs → chunk-WV25G4M3.mjs} +4 -3
  80. package/dist/{chunk-3KITFMBJ.mjs → chunk-X5LJT76O.mjs} +52 -35
  81. package/dist/{chunk-BNYA5IUB.mjs → chunk-YNXP34KO.mjs} +39 -38
  82. package/dist/{chunk-2T2NEZRZ.mjs → chunk-YVDTXHQ6.mjs} +1 -1
  83. package/dist/{chunk-AUMTHL6N.mjs → chunk-ZOP7PEKY.mjs} +2 -1
  84. package/dist/components/ActivityFeed.d.mts +29 -11
  85. package/dist/components/ActivityFeed.mjs +3 -3
  86. package/dist/components/Affix.d.mts +4 -4
  87. package/dist/components/Affix.mjs +1 -1
  88. package/dist/components/Alert.d.mts +4 -4
  89. package/dist/components/Anchor.d.mts +2 -2
  90. package/dist/components/Anchor.mjs +1 -1
  91. package/dist/components/AreaChart.d.mts +3 -3
  92. package/dist/components/AreaChart.mjs +5 -4
  93. package/dist/components/AspectRatio.d.mts +44 -0
  94. package/dist/components/AspectRatio.mjs +8 -0
  95. package/dist/components/AutoComplete.d.mts +3 -3
  96. package/dist/components/AutoComplete.mjs +1 -1
  97. package/dist/components/Avatar.d.mts +2 -2
  98. package/dist/components/AvatarGroup.d.mts +2 -2
  99. package/dist/components/BackTop.d.mts +2 -2
  100. package/dist/components/Badge.d.mts +5 -5
  101. package/dist/components/BarChart.d.mts +2 -2
  102. package/dist/components/BarChart.mjs +5 -4
  103. package/dist/components/Breadcrumb.d.mts +2 -2
  104. package/dist/components/Button.d.mts +5 -5
  105. package/dist/components/ButtonGroup.d.mts +1 -1
  106. package/dist/components/Calendar.d.mts +2 -2
  107. package/dist/components/Calendar.mjs +1 -1
  108. package/dist/components/Card.d.mts +3 -3
  109. package/dist/components/Carousel.d.mts +3 -3
  110. package/dist/components/Cascader.d.mts +37 -3
  111. package/dist/components/Cascader.mjs +1 -1
  112. package/dist/components/ChartCanvas.d.mts +8 -4
  113. package/dist/components/ChartCanvas.mjs +1 -1
  114. package/dist/components/ChartGrid.d.mts +1 -1
  115. package/dist/components/ChartLegend.d.mts +2 -2
  116. package/dist/components/ChartTooltip.d.mts +1 -1
  117. package/dist/components/ChatWindow.d.mts +29 -11
  118. package/dist/components/ChatWindow.mjs +4 -4
  119. package/dist/components/Checkbox.d.mts +1 -1
  120. package/dist/components/Code.d.mts +33 -6
  121. package/dist/components/Code.mjs +3 -1
  122. package/dist/components/CodeEditor.d.mts +1 -1
  123. package/dist/components/CodeEditor.mjs +1 -1
  124. package/dist/components/Collapse.d.mts +1 -1
  125. package/dist/components/CollapsePanel.mjs +1 -1
  126. package/dist/components/ColorPicker.mjs +1 -1
  127. package/dist/components/ColorSwatch.d.mts +8 -2
  128. package/dist/components/ColorSwatch.mjs +1 -1
  129. package/dist/components/CommentThread.d.mts +63 -27
  130. package/dist/components/CommentThread.mjs +2 -2
  131. package/dist/components/Container.d.mts +1 -1
  132. package/dist/components/ContextMenu.d.mts +234 -0
  133. package/dist/components/ContextMenu.mjs +17 -0
  134. package/dist/components/Countdown.d.mts +1 -1
  135. package/dist/components/CronEditor.d.mts +3 -3
  136. package/dist/components/CropUpload.d.mts +1 -1
  137. package/dist/components/DataExport.d.mts +1 -1
  138. package/dist/components/DataExport.mjs +2 -2
  139. package/dist/components/DataTableWithToolbar.d.mts +11 -11
  140. package/dist/components/DataTableWithToolbar.mjs +8 -8
  141. package/dist/components/DatePicker.d.mts +5 -5
  142. package/dist/components/Descriptions.d.mts +3 -3
  143. package/dist/components/DonutChart.d.mts +3 -3
  144. package/dist/components/DonutChart.mjs +5 -5
  145. package/dist/components/Drawer.d.mts +6 -6
  146. package/dist/components/Dropdown.d.mts +21 -2
  147. package/dist/components/Dropdown.mjs +1 -1
  148. package/dist/components/Empty.d.mts +1 -1
  149. package/dist/components/FileManager.d.mts +10 -4
  150. package/dist/components/FileManager.mjs +1 -1
  151. package/dist/components/FloatButton.d.mts +37 -7
  152. package/dist/components/FloatButton.mjs +1 -1
  153. package/dist/components/Form.d.mts +2 -2
  154. package/dist/components/FormWizard.d.mts +4 -4
  155. package/dist/components/FormWizard.mjs +1 -1
  156. package/dist/components/FunnelChart.d.mts +4 -4
  157. package/dist/components/FunnelChart.mjs +4 -4
  158. package/dist/components/Gantt.d.mts +6 -4
  159. package/dist/components/Gantt.mjs +2 -2
  160. package/dist/components/GaugeChart.d.mts +4 -4
  161. package/dist/components/GaugeChart.mjs +2 -2
  162. package/dist/components/Header.d.mts +1 -1
  163. package/dist/components/HeatmapChart.d.mts +3 -3
  164. package/dist/components/HeatmapChart.mjs +3 -3
  165. package/dist/components/Highlight.d.mts +146 -0
  166. package/dist/components/Highlight.mjs +8 -0
  167. package/dist/components/Icon.d.mts +2 -2
  168. package/dist/components/Image.d.mts +2 -2
  169. package/dist/components/Image.mjs +3 -3
  170. package/dist/components/ImageAnnotation.d.mts +4 -4
  171. package/dist/components/ImageCompare.d.mts +284 -0
  172. package/dist/components/ImageCompare.mjs +8 -0
  173. package/dist/components/ImageCropper.d.mts +1 -1
  174. package/dist/components/ImageGroup.mjs +2 -2
  175. package/dist/components/ImagePreview.d.mts +1 -1
  176. package/dist/components/ImagePreview.mjs +1 -1
  177. package/dist/components/ImageViewer.d.mts +1 -1
  178. package/dist/components/InfiniteScroll.d.mts +4 -4
  179. package/dist/components/Input.d.mts +7 -7
  180. package/dist/components/Input.mjs +1 -1
  181. package/dist/components/InputGroup.d.mts +2 -2
  182. package/dist/components/InputNumber.d.mts +3 -3
  183. package/dist/components/InputNumber.mjs +1 -1
  184. package/dist/components/InputOTP.d.mts +261 -0
  185. package/dist/components/InputOTP.mjs +11 -0
  186. package/dist/components/Kanban.d.mts +1 -1
  187. package/dist/components/Kanban.mjs +2 -2
  188. package/dist/components/Kbd.d.mts +118 -0
  189. package/dist/components/Kbd.mjs +8 -0
  190. package/dist/components/LineChart.d.mts +2 -2
  191. package/dist/components/LineChart.mjs +5 -4
  192. package/dist/components/Link.d.mts +1 -1
  193. package/dist/components/List.d.mts +7 -7
  194. package/dist/components/List.mjs +2 -2
  195. package/dist/components/Loading.d.mts +7 -7
  196. package/dist/components/Loading.mjs +1 -1
  197. package/dist/components/LoadingBar.d.mts +8 -0
  198. package/dist/components/LoadingBar.mjs +114 -0
  199. package/dist/components/LoadingBarContainer.d.mts +78 -0
  200. package/dist/components/LoadingBarContainer.mjs +8 -0
  201. package/dist/components/LoadingBarRoot.d.mts +6 -0
  202. package/dist/components/LoadingBarRoot.mjs +6 -0
  203. package/dist/components/MarkdownEditor.d.mts +4 -4
  204. package/dist/components/Marquee.d.mts +158 -0
  205. package/dist/components/Marquee.mjs +8 -0
  206. package/dist/components/MaskInput.d.mts +207 -0
  207. package/dist/components/MaskInput.mjs +11 -0
  208. package/dist/components/Masonry.d.mts +66 -0
  209. package/dist/components/Masonry.mjs +8 -0
  210. package/dist/components/Mentions.d.mts +1 -1
  211. package/dist/components/Menu.d.mts +4 -4
  212. package/dist/components/Modal.d.mts +7 -7
  213. package/dist/components/NavigationMenu.d.mts +411 -0
  214. package/dist/components/NavigationMenu.mjs +25 -0
  215. package/dist/components/NotificationCenter.d.mts +48 -30
  216. package/dist/components/NotificationCenter.mjs +4 -4
  217. package/dist/components/NumberKeyboard.d.mts +4 -4
  218. package/dist/components/OrgChart.d.mts +4 -4
  219. package/dist/components/OrgChart.mjs +2 -2
  220. package/dist/components/PageHeader.d.mts +140 -0
  221. package/dist/components/PageHeader.mjs +11 -0
  222. package/dist/components/Pagination.d.mts +5 -5
  223. package/dist/components/Pagination.mjs +1 -1
  224. package/dist/components/PieChart.d.mts +3 -3
  225. package/dist/components/PieChart.mjs +4 -4
  226. package/dist/components/Popconfirm.d.mts +4 -4
  227. package/dist/components/Popconfirm.mjs +2 -2
  228. package/dist/components/Popover.d.mts +5 -5
  229. package/dist/components/Popover.mjs +2 -2
  230. package/dist/components/Progress.d.mts +7 -7
  231. package/dist/components/QRCode.d.mts +4 -13
  232. package/dist/components/QRCode.mjs +1 -1
  233. package/dist/components/RadarChart.d.mts +3 -3
  234. package/dist/components/RadarChart.mjs +4 -4
  235. package/dist/components/Radio.d.mts +1 -1
  236. package/dist/components/Radio.mjs +1 -1
  237. package/dist/components/Rate.d.mts +1 -1
  238. package/dist/components/Rate.mjs +1 -1
  239. package/dist/components/Result.d.mts +1 -1
  240. package/dist/components/RichTextEditor.d.mts +4 -4
  241. package/dist/components/Row.d.mts +1 -1
  242. package/dist/components/ScatterChart.d.mts +3 -3
  243. package/dist/components/ScatterChart.mjs +5 -4
  244. package/dist/components/ScrollArea.d.mts +136 -0
  245. package/dist/components/ScrollArea.mjs +8 -0
  246. package/dist/components/ScrollSpy.d.mts +2 -2
  247. package/dist/components/ScrollSpy.mjs +1 -1
  248. package/dist/components/Segmented.d.mts +2 -2
  249. package/dist/components/Select.d.mts +3 -3
  250. package/dist/components/Signature.d.mts +6 -6
  251. package/dist/components/Signature.mjs +1 -1
  252. package/dist/components/Skeleton.d.mts +2 -2
  253. package/dist/components/Slider.d.mts +19 -1
  254. package/dist/components/Slider.mjs +1 -1
  255. package/dist/components/Space.d.mts +2 -2
  256. package/dist/components/SplitButton.d.mts +286 -0
  257. package/dist/components/SplitButton.mjs +12 -0
  258. package/dist/components/Splitter.d.mts +4 -4
  259. package/dist/components/Splitter.mjs +1 -1
  260. package/dist/components/Spotlight.d.mts +6 -6
  261. package/dist/components/Statistic.d.mts +1 -1
  262. package/dist/components/Stepper.d.mts +7 -1
  263. package/dist/components/Stepper.mjs +1 -1
  264. package/dist/components/Steps.d.mts +1 -1
  265. package/dist/components/SunburstChart.d.mts +2 -2
  266. package/dist/components/SunburstChart.mjs +4 -4
  267. package/dist/components/Switch.d.mts +22 -6
  268. package/dist/components/Switch.mjs +1 -1
  269. package/dist/components/Table.d.mts +9 -9
  270. package/dist/components/Table.mjs +3 -3
  271. package/dist/components/Tabs.d.mts +5 -5
  272. package/dist/components/Tag.d.mts +3 -3
  273. package/dist/components/TagsInput.d.mts +214 -0
  274. package/dist/components/TagsInput.mjs +12 -0
  275. package/dist/components/TaskBoard.d.mts +2 -2
  276. package/dist/components/TaskBoard.mjs +1 -1
  277. package/dist/components/Text.d.mts +3 -3
  278. package/dist/components/Textarea.d.mts +4 -4
  279. package/dist/components/Textarea.mjs +1 -1
  280. package/dist/components/TimePicker.d.mts +6 -6
  281. package/dist/components/Timeline.d.mts +2 -2
  282. package/dist/components/Tooltip.d.mts +2 -2
  283. package/dist/components/Tooltip.mjs +2 -2
  284. package/dist/components/Tour.d.mts +4 -4
  285. package/dist/components/Tour.mjs +1 -1
  286. package/dist/components/Transfer.d.mts +5 -4
  287. package/dist/components/Transfer.mjs +1 -1
  288. package/dist/components/Tree.d.mts +6 -6
  289. package/dist/components/TreeMapChart.d.mts +3 -3
  290. package/dist/components/TreeMapChart.mjs +4 -4
  291. package/dist/components/TreeSelect.d.mts +54 -3
  292. package/dist/components/TreeSelect.mjs +2 -1
  293. package/dist/components/Upload.d.mts +4 -4
  294. package/dist/components/Upload.mjs +1 -1
  295. package/dist/components/VirtualTable.d.mts +5 -5
  296. package/dist/components/Watermark.d.mts +6 -6
  297. package/dist/composables/useChartInteraction.d.mts +5 -0
  298. package/dist/composables/useChartInteraction.mjs +1 -1
  299. package/dist/index.d.mts +17 -1
  300. package/dist/index.mjs +406 -0
  301. package/package.json +117 -2
  302. package/dist/chunk-OTGGPXDT.mjs +0 -433
  303. package/dist/chunk-WC5MKASU.mjs +0 -393
@@ -0,0 +1,337 @@
1
+ import {
2
+ FORM_ITEM_CONTROL_INJECTION_KEY
3
+ } from "./chunk-P2LZ2MR5.mjs";
4
+ import {
5
+ useTigerConfig
6
+ } from "./chunk-UOJOJBEU.mjs";
7
+
8
+ // src/components/InputOTP.ts
9
+ import { computed, defineComponent, h, inject, onMounted, ref, watch } from "vue";
10
+ import {
11
+ applyOtpBackspace,
12
+ applyOtpCharInput,
13
+ applyOtpDelete,
14
+ classNames,
15
+ coerceClassValue,
16
+ devWarn,
17
+ distributeOtpPaste,
18
+ formatOtpSlotLabel,
19
+ getInputOTPLabels,
20
+ getOtpContainerClasses,
21
+ getOtpErrorClasses,
22
+ getOtpSeparatorClasses,
23
+ getOtpSeparatorIndices,
24
+ getOtpSlotClasses,
25
+ injectShakeStyle,
26
+ isOtpComplete,
27
+ mergeStyleValues,
28
+ normalizeOtpValue,
29
+ SHAKE_CLASS
30
+ } from "@expcat/tigercat-core";
31
+ var inputOtpIdCounter = 0;
32
+ var InputOTP = defineComponent({
33
+ name: "TigerInputOTP",
34
+ inheritAttrs: false,
35
+ props: {
36
+ /**
37
+ * Value (for v-model) — the joined characters
38
+ */
39
+ modelValue: { type: String, default: void 0 },
40
+ /**
41
+ * Default value (for uncontrolled mode)
42
+ */
43
+ defaultValue: { type: String, default: "" },
44
+ /**
45
+ * Input size
46
+ * @default 'md'
47
+ */
48
+ size: { type: String, default: "md" },
49
+ /**
50
+ * Validation status
51
+ * @default 'default'
52
+ */
53
+ status: { type: String, default: "default" },
54
+ /**
55
+ * Error message to display
56
+ */
57
+ errorMessage: String,
58
+ /**
59
+ * Number of character slots
60
+ * @default 6
61
+ */
62
+ length: { type: Number, default: 6 },
63
+ /**
64
+ * Allowed character set
65
+ * @default 'numeric'
66
+ */
67
+ type: { type: String, default: "numeric" },
68
+ /**
69
+ * Per-character validation regex; overrides `type` filtering
70
+ */
71
+ pattern: { type: RegExp, default: void 0 },
72
+ /**
73
+ * Hide entered characters (renders maskChar instead)
74
+ */
75
+ masked: Boolean,
76
+ /**
77
+ * Character shown per filled slot when masked
78
+ * @default '•'
79
+ */
80
+ maskChar: { type: String, default: "\u2022" },
81
+ /**
82
+ * Visual slot grouping, e.g. [3, 3]
83
+ */
84
+ groups: { type: Array, default: void 0 },
85
+ /**
86
+ * Separator rendered between groups
87
+ * @default '-'
88
+ */
89
+ separator: { type: String, default: "-" },
90
+ /** Whether the input is disabled */
91
+ disabled: Boolean,
92
+ /** Whether the input is readonly */
93
+ readonly: Boolean,
94
+ /** Whether to autofocus the first empty slot on mount */
95
+ autoFocus: Boolean,
96
+ /** Name for the hidden input carrying the joined value */
97
+ name: String,
98
+ /** Id attribute applied to the group element */
99
+ id: String,
100
+ /** Accessible label for the slot group */
101
+ ariaLabel: String,
102
+ /**
103
+ * Internal shake trigger counter (used by FormItem)
104
+ * @internal
105
+ */
106
+ _shakeTrigger: { type: Number, default: void 0 },
107
+ /** Additional CSS classes */
108
+ className: String,
109
+ /** Inline styles */
110
+ style: { type: Object, default: void 0 }
111
+ },
112
+ emits: {
113
+ "update:modelValue": null,
114
+ complete: null,
115
+ focus: null,
116
+ blur: null
117
+ },
118
+ setup(props, { emit, attrs }) {
119
+ injectShakeStyle();
120
+ const config = useTigerConfig();
121
+ const formItemControl = inject(
122
+ FORM_ITEM_CONTROL_INJECTION_KEY,
123
+ null
124
+ );
125
+ const effectiveStatus = computed(
126
+ () => props.status !== "default" ? props.status : formItemControl?.status.value ?? props.status
127
+ );
128
+ const effectiveErrorMessage = computed(
129
+ () => props.errorMessage ?? formItemControl?.errorMessage.value
130
+ );
131
+ const effectiveShakeTrigger = computed(
132
+ () => props._shakeTrigger ?? formItemControl?.shakeTrigger.value
133
+ );
134
+ const labels = computed(() => getInputOTPLabels(config.value.locale));
135
+ const instanceId = ++inputOtpIdCounter;
136
+ const errorMsgId = `tiger-input-otp-error-${instanceId}`;
137
+ const containerRef = ref(null);
138
+ const slotRefs = ref([]);
139
+ const charOptions = computed(() => ({ type: props.type, pattern: props.pattern }));
140
+ const isControlled = computed(() => props.modelValue !== void 0);
141
+ const innerValue = ref(props.defaultValue ?? "");
142
+ const currentValue = computed(
143
+ () => normalizeOtpValue(
144
+ isControlled.value ? props.modelValue ?? "" : innerValue.value,
145
+ props.length,
146
+ charOptions.value
147
+ )
148
+ );
149
+ const separatorIndices = computed(() => {
150
+ const indices = getOtpSeparatorIndices(props.length, props.groups);
151
+ if (props.groups && props.groups.length > 0 && indices.length === 0) {
152
+ devWarn("InputOTP.groups", "[Tigercat] InputOTP: `groups` must sum to `length`; ignoring.");
153
+ }
154
+ return indices;
155
+ });
156
+ watch([effectiveStatus, effectiveShakeTrigger], ([newStatus]) => {
157
+ if (newStatus === "error" && containerRef.value) {
158
+ const el = containerRef.value;
159
+ el.classList.remove(SHAKE_CLASS);
160
+ void el.offsetWidth;
161
+ el.classList.add(SHAKE_CLASS);
162
+ }
163
+ });
164
+ const focusSlot = (index) => {
165
+ slotRefs.value[Math.max(0, Math.min(index, props.length - 1))]?.focus();
166
+ };
167
+ onMounted(() => {
168
+ if (props.autoFocus) {
169
+ focusSlot(Math.min(currentValue.value.length, props.length - 1));
170
+ }
171
+ });
172
+ const displayChar = (val, index) => {
173
+ const char = val[index] ?? "";
174
+ return char && props.masked ? props.maskChar : char;
175
+ };
176
+ const emitValue = (next) => {
177
+ if (next === currentValue.value) return;
178
+ if (!isControlled.value) innerValue.value = next;
179
+ emit("update:modelValue", next);
180
+ if (isOtpComplete(next, props.length)) emit("complete", next);
181
+ };
182
+ const isInteractive = computed(() => !props.disabled && !props.readonly);
183
+ const handleSlotInput = (index, event) => {
184
+ if (!isInteractive.value) return;
185
+ const target = event.target;
186
+ const result = applyOtpCharInput(
187
+ currentValue.value,
188
+ index,
189
+ target.value,
190
+ props.length,
191
+ charOptions.value
192
+ );
193
+ target.value = displayChar(result.value, index);
194
+ emitValue(result.value);
195
+ focusSlot(result.nextIndex);
196
+ };
197
+ const handleSlotKeydown = (index, event) => {
198
+ if (!isInteractive.value) return;
199
+ switch (event.key) {
200
+ case "Backspace": {
201
+ event.preventDefault();
202
+ const result = applyOtpBackspace(currentValue.value, index);
203
+ emitValue(result.value);
204
+ focusSlot(result.nextIndex);
205
+ break;
206
+ }
207
+ case "Delete": {
208
+ event.preventDefault();
209
+ const result = applyOtpDelete(currentValue.value, index);
210
+ emitValue(result.value);
211
+ break;
212
+ }
213
+ case "ArrowLeft":
214
+ event.preventDefault();
215
+ focusSlot(index - 1);
216
+ break;
217
+ case "ArrowRight":
218
+ event.preventDefault();
219
+ focusSlot(index + 1);
220
+ break;
221
+ case "Home":
222
+ event.preventDefault();
223
+ focusSlot(0);
224
+ break;
225
+ case "End":
226
+ event.preventDefault();
227
+ focusSlot(Math.min(currentValue.value.length, props.length - 1));
228
+ break;
229
+ }
230
+ };
231
+ const handlePaste = (event) => {
232
+ if (!isInteractive.value) return;
233
+ event.preventDefault();
234
+ const text = event.clipboardData?.getData("text") ?? "";
235
+ const result = distributeOtpPaste(text, props.length, charOptions.value);
236
+ if (!result) return;
237
+ emitValue(result.value);
238
+ focusSlot(result.nextIndex);
239
+ };
240
+ const handleSlotFocus = (event) => {
241
+ ;
242
+ event.target.select();
243
+ };
244
+ const containsNode = (node) => node instanceof Node && !!containerRef.value?.contains(node);
245
+ const handleGroupFocusin = (event) => {
246
+ if (!containsNode(event.relatedTarget)) emit("focus", event);
247
+ };
248
+ const handleGroupFocusout = (event) => {
249
+ if (!containsNode(event.relatedTarget)) emit("blur", event);
250
+ };
251
+ return () => {
252
+ const { class: attrClass, style: attrStyle, ...restAttrs } = attrs;
253
+ const activeError = effectiveStatus.value === "error" && !!effectiveErrorMessage.value;
254
+ const slotClasses = getOtpSlotClasses(props.size, effectiveStatus.value, {
255
+ disabled: props.disabled,
256
+ readonly: props.readonly
257
+ });
258
+ const children = [];
259
+ for (let i = 0; i < props.length; i++) {
260
+ children.push(
261
+ h("input", {
262
+ key: `slot-${i}`,
263
+ ref: (el) => {
264
+ slotRefs.value[i] = el;
265
+ },
266
+ class: slotClasses,
267
+ type: "text",
268
+ inputmode: props.type === "numeric" ? "numeric" : void 0,
269
+ autocomplete: i === 0 ? "one-time-code" : "off",
270
+ value: displayChar(currentValue.value, i),
271
+ disabled: props.disabled,
272
+ readonly: props.readonly,
273
+ "aria-label": formatOtpSlotLabel(labels.value.slotLabel, i + 1, props.length),
274
+ ...effectiveStatus.value === "error" ? { "aria-invalid": true } : {},
275
+ onInput: (event) => handleSlotInput(i, event),
276
+ onKeydown: (event) => handleSlotKeydown(i, event),
277
+ onFocus: handleSlotFocus
278
+ })
279
+ );
280
+ if (separatorIndices.value.includes(i) && props.separator) {
281
+ children.push(
282
+ h(
283
+ "span",
284
+ {
285
+ key: `separator-${i}`,
286
+ "aria-hidden": "true",
287
+ class: getOtpSeparatorClasses(props.size)
288
+ },
289
+ props.separator
290
+ )
291
+ );
292
+ }
293
+ }
294
+ if (props.name) {
295
+ children.push(
296
+ h("input", { key: "hidden", type: "hidden", name: props.name, value: currentValue.value })
297
+ );
298
+ }
299
+ const groupNode = h(
300
+ "div",
301
+ {
302
+ ...restAttrs,
303
+ ref: containerRef,
304
+ id: props.id,
305
+ role: "group",
306
+ "aria-label": props.ariaLabel ?? labels.value.groupLabel,
307
+ ...activeError ? { "aria-describedby": errorMsgId } : {},
308
+ class: getOtpContainerClasses(props.size),
309
+ onPaste: handlePaste,
310
+ onFocusin: handleGroupFocusin,
311
+ onFocusout: handleGroupFocusout
312
+ },
313
+ children
314
+ );
315
+ const nodes = [groupNode];
316
+ if (activeError) {
317
+ nodes.push(
318
+ h("div", { id: errorMsgId, class: getOtpErrorClasses() }, effectiveErrorMessage.value)
319
+ );
320
+ }
321
+ return h(
322
+ "div",
323
+ {
324
+ class: classNames("inline-block", props.className, coerceClassValue(attrClass)),
325
+ style: mergeStyleValues(props.style, attrStyle)
326
+ },
327
+ nodes
328
+ );
329
+ };
330
+ }
331
+ });
332
+ var InputOTP_default = InputOTP;
333
+
334
+ export {
335
+ InputOTP,
336
+ InputOTP_default
337
+ };