telpick 2.0.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 (532) hide show
  1. package/LICENSE +21 -0
  2. package/README.es.md +225 -0
  3. package/README.md +225 -0
  4. package/dist/assets/country-code.json +94 -0
  5. package/dist/assets/flags/ad.webp +0 -0
  6. package/dist/assets/flags/ae.webp +0 -0
  7. package/dist/assets/flags/af.png +0 -0
  8. package/dist/assets/flags/ag.webp +0 -0
  9. package/dist/assets/flags/ai.webp +0 -0
  10. package/dist/assets/flags/al.webp +0 -0
  11. package/dist/assets/flags/am.webp +0 -0
  12. package/dist/assets/flags/ao.webp +0 -0
  13. package/dist/assets/flags/aq.webp +0 -0
  14. package/dist/assets/flags/ar.webp +0 -0
  15. package/dist/assets/flags/as.webp +0 -0
  16. package/dist/assets/flags/at.webp +0 -0
  17. package/dist/assets/flags/au.webp +0 -0
  18. package/dist/assets/flags/aw.webp +0 -0
  19. package/dist/assets/flags/ax.webp +0 -0
  20. package/dist/assets/flags/az.webp +0 -0
  21. package/dist/assets/flags/ba.webp +0 -0
  22. package/dist/assets/flags/bb.webp +0 -0
  23. package/dist/assets/flags/bd.webp +0 -0
  24. package/dist/assets/flags/be.webp +0 -0
  25. package/dist/assets/flags/bf.webp +0 -0
  26. package/dist/assets/flags/bg.webp +0 -0
  27. package/dist/assets/flags/bh.webp +0 -0
  28. package/dist/assets/flags/bi.webp +0 -0
  29. package/dist/assets/flags/bj.webp +0 -0
  30. package/dist/assets/flags/bl.webp +0 -0
  31. package/dist/assets/flags/bm.webp +0 -0
  32. package/dist/assets/flags/bn.webp +0 -0
  33. package/dist/assets/flags/bo.webp +0 -0
  34. package/dist/assets/flags/bq.webp +0 -0
  35. package/dist/assets/flags/br.webp +0 -0
  36. package/dist/assets/flags/bs.webp +0 -0
  37. package/dist/assets/flags/bt.webp +0 -0
  38. package/dist/assets/flags/bv.webp +0 -0
  39. package/dist/assets/flags/bw.webp +0 -0
  40. package/dist/assets/flags/by.webp +0 -0
  41. package/dist/assets/flags/bz.webp +0 -0
  42. package/dist/assets/flags/ca.webp +0 -0
  43. package/dist/assets/flags/cc.webp +0 -0
  44. package/dist/assets/flags/cd.webp +0 -0
  45. package/dist/assets/flags/cf.webp +0 -0
  46. package/dist/assets/flags/cg.webp +0 -0
  47. package/dist/assets/flags/ch.webp +0 -0
  48. package/dist/assets/flags/ci.webp +0 -0
  49. package/dist/assets/flags/ck.webp +0 -0
  50. package/dist/assets/flags/cl.webp +0 -0
  51. package/dist/assets/flags/cm.webp +0 -0
  52. package/dist/assets/flags/cn.webp +0 -0
  53. package/dist/assets/flags/co.webp +0 -0
  54. package/dist/assets/flags/cr.webp +0 -0
  55. package/dist/assets/flags/cu.webp +0 -0
  56. package/dist/assets/flags/cv.webp +0 -0
  57. package/dist/assets/flags/cw.webp +0 -0
  58. package/dist/assets/flags/cx.webp +0 -0
  59. package/dist/assets/flags/cy.webp +0 -0
  60. package/dist/assets/flags/cz.webp +0 -0
  61. package/dist/assets/flags/de.webp +0 -0
  62. package/dist/assets/flags/dj.webp +0 -0
  63. package/dist/assets/flags/dk.webp +0 -0
  64. package/dist/assets/flags/dm.webp +0 -0
  65. package/dist/assets/flags/do.webp +0 -0
  66. package/dist/assets/flags/dz.webp +0 -0
  67. package/dist/assets/flags/ec.webp +0 -0
  68. package/dist/assets/flags/ee.webp +0 -0
  69. package/dist/assets/flags/eg.webp +0 -0
  70. package/dist/assets/flags/eh.webp +0 -0
  71. package/dist/assets/flags/er.webp +0 -0
  72. package/dist/assets/flags/es.webp +0 -0
  73. package/dist/assets/flags/et.webp +0 -0
  74. package/dist/assets/flags/fi.webp +0 -0
  75. package/dist/assets/flags/fj.webp +0 -0
  76. package/dist/assets/flags/fk.webp +0 -0
  77. package/dist/assets/flags/fm.webp +0 -0
  78. package/dist/assets/flags/fo.webp +0 -0
  79. package/dist/assets/flags/fr.webp +0 -0
  80. package/dist/assets/flags/ga.webp +0 -0
  81. package/dist/assets/flags/gb-eng.webp +0 -0
  82. package/dist/assets/flags/gb-nir.webp +0 -0
  83. package/dist/assets/flags/gb-sct.webp +0 -0
  84. package/dist/assets/flags/gb-wls.webp +0 -0
  85. package/dist/assets/flags/gb.webp +0 -0
  86. package/dist/assets/flags/gd.webp +0 -0
  87. package/dist/assets/flags/ge.webp +0 -0
  88. package/dist/assets/flags/gf.webp +0 -0
  89. package/dist/assets/flags/gg.webp +0 -0
  90. package/dist/assets/flags/gh.webp +0 -0
  91. package/dist/assets/flags/gi.webp +0 -0
  92. package/dist/assets/flags/gl.webp +0 -0
  93. package/dist/assets/flags/gm.webp +0 -0
  94. package/dist/assets/flags/gn.webp +0 -0
  95. package/dist/assets/flags/gp.webp +0 -0
  96. package/dist/assets/flags/gq.webp +0 -0
  97. package/dist/assets/flags/gr.webp +0 -0
  98. package/dist/assets/flags/gs.webp +0 -0
  99. package/dist/assets/flags/gt.webp +0 -0
  100. package/dist/assets/flags/gu.webp +0 -0
  101. package/dist/assets/flags/gw.webp +0 -0
  102. package/dist/assets/flags/gy.webp +0 -0
  103. package/dist/assets/flags/hk.webp +0 -0
  104. package/dist/assets/flags/hm.webp +0 -0
  105. package/dist/assets/flags/hn.webp +0 -0
  106. package/dist/assets/flags/hr.webp +0 -0
  107. package/dist/assets/flags/ht.webp +0 -0
  108. package/dist/assets/flags/hu.webp +0 -0
  109. package/dist/assets/flags/id.webp +0 -0
  110. package/dist/assets/flags/ie.webp +0 -0
  111. package/dist/assets/flags/il.webp +0 -0
  112. package/dist/assets/flags/im.webp +0 -0
  113. package/dist/assets/flags/in.webp +0 -0
  114. package/dist/assets/flags/io.webp +0 -0
  115. package/dist/assets/flags/iq.webp +0 -0
  116. package/dist/assets/flags/ir.webp +0 -0
  117. package/dist/assets/flags/is.webp +0 -0
  118. package/dist/assets/flags/it.webp +0 -0
  119. package/dist/assets/flags/je.webp +0 -0
  120. package/dist/assets/flags/jm.webp +0 -0
  121. package/dist/assets/flags/jo.webp +0 -0
  122. package/dist/assets/flags/jp.webp +0 -0
  123. package/dist/assets/flags/ke.webp +0 -0
  124. package/dist/assets/flags/kg.webp +0 -0
  125. package/dist/assets/flags/kh.webp +0 -0
  126. package/dist/assets/flags/ki.webp +0 -0
  127. package/dist/assets/flags/km.webp +0 -0
  128. package/dist/assets/flags/kn.webp +0 -0
  129. package/dist/assets/flags/kp.webp +0 -0
  130. package/dist/assets/flags/kr.webp +0 -0
  131. package/dist/assets/flags/kw.webp +0 -0
  132. package/dist/assets/flags/ky.webp +0 -0
  133. package/dist/assets/flags/kz.webp +0 -0
  134. package/dist/assets/flags/la.webp +0 -0
  135. package/dist/assets/flags/lb.webp +0 -0
  136. package/dist/assets/flags/lc.webp +0 -0
  137. package/dist/assets/flags/li.webp +0 -0
  138. package/dist/assets/flags/lista.txt +0 -0
  139. package/dist/assets/flags/lk.webp +0 -0
  140. package/dist/assets/flags/lr.webp +0 -0
  141. package/dist/assets/flags/ls.webp +0 -0
  142. package/dist/assets/flags/lt.webp +0 -0
  143. package/dist/assets/flags/lu.webp +0 -0
  144. package/dist/assets/flags/lv.webp +0 -0
  145. package/dist/assets/flags/ly.webp +0 -0
  146. package/dist/assets/flags/ma.webp +0 -0
  147. package/dist/assets/flags/mc.webp +0 -0
  148. package/dist/assets/flags/md.webp +0 -0
  149. package/dist/assets/flags/me.webp +0 -0
  150. package/dist/assets/flags/mf.webp +0 -0
  151. package/dist/assets/flags/mg.webp +0 -0
  152. package/dist/assets/flags/mh.webp +0 -0
  153. package/dist/assets/flags/mk.webp +0 -0
  154. package/dist/assets/flags/ml.webp +0 -0
  155. package/dist/assets/flags/mm.webp +0 -0
  156. package/dist/assets/flags/mn.webp +0 -0
  157. package/dist/assets/flags/mo.webp +0 -0
  158. package/dist/assets/flags/mp.webp +0 -0
  159. package/dist/assets/flags/mq.webp +0 -0
  160. package/dist/assets/flags/mr.webp +0 -0
  161. package/dist/assets/flags/ms.webp +0 -0
  162. package/dist/assets/flags/mt.webp +0 -0
  163. package/dist/assets/flags/mu.webp +0 -0
  164. package/dist/assets/flags/mv.webp +0 -0
  165. package/dist/assets/flags/mw.webp +0 -0
  166. package/dist/assets/flags/mx.webp +0 -0
  167. package/dist/assets/flags/my.webp +0 -0
  168. package/dist/assets/flags/mz.webp +0 -0
  169. package/dist/assets/flags/na.webp +0 -0
  170. package/dist/assets/flags/nc.webp +0 -0
  171. package/dist/assets/flags/ne.webp +0 -0
  172. package/dist/assets/flags/nf.webp +0 -0
  173. package/dist/assets/flags/ng.webp +0 -0
  174. package/dist/assets/flags/ni.webp +0 -0
  175. package/dist/assets/flags/nl.webp +0 -0
  176. package/dist/assets/flags/no.webp +0 -0
  177. package/dist/assets/flags/np.webp +0 -0
  178. package/dist/assets/flags/nr.webp +0 -0
  179. package/dist/assets/flags/nu.webp +0 -0
  180. package/dist/assets/flags/nz.webp +0 -0
  181. package/dist/assets/flags/om.webp +0 -0
  182. package/dist/assets/flags/pa.webp +0 -0
  183. package/dist/assets/flags/pe.webp +0 -0
  184. package/dist/assets/flags/pf.webp +0 -0
  185. package/dist/assets/flags/pg.webp +0 -0
  186. package/dist/assets/flags/ph.webp +0 -0
  187. package/dist/assets/flags/pk.webp +0 -0
  188. package/dist/assets/flags/pl.webp +0 -0
  189. package/dist/assets/flags/pm.webp +0 -0
  190. package/dist/assets/flags/pn.webp +0 -0
  191. package/dist/assets/flags/pr.webp +0 -0
  192. package/dist/assets/flags/ps.webp +0 -0
  193. package/dist/assets/flags/pt.webp +0 -0
  194. package/dist/assets/flags/pw.webp +0 -0
  195. package/dist/assets/flags/py.webp +0 -0
  196. package/dist/assets/flags/qa.webp +0 -0
  197. package/dist/assets/flags/re.webp +0 -0
  198. package/dist/assets/flags/ro.webp +0 -0
  199. package/dist/assets/flags/rs.webp +0 -0
  200. package/dist/assets/flags/ru.webp +0 -0
  201. package/dist/assets/flags/rw.webp +0 -0
  202. package/dist/assets/flags/sa.webp +0 -0
  203. package/dist/assets/flags/sb.webp +0 -0
  204. package/dist/assets/flags/sc.webp +0 -0
  205. package/dist/assets/flags/sd.webp +0 -0
  206. package/dist/assets/flags/se (1).webp +0 -0
  207. package/dist/assets/flags/se.webp +0 -0
  208. package/dist/assets/flags/sg.webp +0 -0
  209. package/dist/assets/flags/sh.webp +0 -0
  210. package/dist/assets/flags/si.webp +0 -0
  211. package/dist/assets/flags/sj.webp +0 -0
  212. package/dist/assets/flags/sk.webp +0 -0
  213. package/dist/assets/flags/sl.webp +0 -0
  214. package/dist/assets/flags/sm.webp +0 -0
  215. package/dist/assets/flags/sn.webp +0 -0
  216. package/dist/assets/flags/so.webp +0 -0
  217. package/dist/assets/flags/sr.webp +0 -0
  218. package/dist/assets/flags/ss.webp +0 -0
  219. package/dist/assets/flags/st.webp +0 -0
  220. package/dist/assets/flags/sv.webp +0 -0
  221. package/dist/assets/flags/sx.webp +0 -0
  222. package/dist/assets/flags/sy.webp +0 -0
  223. package/dist/assets/flags/sz.webp +0 -0
  224. package/dist/assets/flags/tc.webp +0 -0
  225. package/dist/assets/flags/td.webp +0 -0
  226. package/dist/assets/flags/tf.webp +0 -0
  227. package/dist/assets/flags/tg.webp +0 -0
  228. package/dist/assets/flags/th.webp +0 -0
  229. package/dist/assets/flags/tj.webp +0 -0
  230. package/dist/assets/flags/tk.webp +0 -0
  231. package/dist/assets/flags/tl.webp +0 -0
  232. package/dist/assets/flags/tm.webp +0 -0
  233. package/dist/assets/flags/tn.webp +0 -0
  234. package/dist/assets/flags/to.webp +0 -0
  235. package/dist/assets/flags/tr.webp +0 -0
  236. package/dist/assets/flags/tt.webp +0 -0
  237. package/dist/assets/flags/tv.webp +0 -0
  238. package/dist/assets/flags/tw.webp +0 -0
  239. package/dist/assets/flags/tz.webp +0 -0
  240. package/dist/assets/flags/ua.webp +0 -0
  241. package/dist/assets/flags/ug.webp +0 -0
  242. package/dist/assets/flags/um.webp +0 -0
  243. package/dist/assets/flags/us.webp +0 -0
  244. package/dist/assets/flags/uy.webp +0 -0
  245. package/dist/assets/flags/uz.webp +0 -0
  246. package/dist/assets/flags/va.webp +0 -0
  247. package/dist/assets/flags/vc.webp +0 -0
  248. package/dist/assets/flags/ve.webp +0 -0
  249. package/dist/assets/flags/vg.webp +0 -0
  250. package/dist/assets/flags/vi.webp +0 -0
  251. package/dist/assets/flags/vn.webp +0 -0
  252. package/dist/assets/flags/vu.webp +0 -0
  253. package/dist/assets/flags/wf.webp +0 -0
  254. package/dist/assets/flags/ws.webp +0 -0
  255. package/dist/assets/flags/xk.webp +0 -0
  256. package/dist/assets/flags/ye.webp +0 -0
  257. package/dist/assets/flags/yt.webp +0 -0
  258. package/dist/assets/flags/za.webp +0 -0
  259. package/dist/assets/flags/zm.webp +0 -0
  260. package/dist/assets/flags/zw.webp +0 -0
  261. package/dist/style.css +1 -0
  262. package/dist/telpick.es.js +787 -0
  263. package/dist/telpick.react.es.js +14 -0
  264. package/dist/telpick.umd.js +1 -0
  265. package/dist/telpick.vue.es.js +27 -0
  266. package/package.json +103 -0
  267. package/src/assets/country-code.json +94 -0
  268. package/src/assets/flags/ad.webp +0 -0
  269. package/src/assets/flags/ae.webp +0 -0
  270. package/src/assets/flags/af.png +0 -0
  271. package/src/assets/flags/ag.webp +0 -0
  272. package/src/assets/flags/ai.webp +0 -0
  273. package/src/assets/flags/al.webp +0 -0
  274. package/src/assets/flags/am.webp +0 -0
  275. package/src/assets/flags/ao.webp +0 -0
  276. package/src/assets/flags/aq.webp +0 -0
  277. package/src/assets/flags/ar.webp +0 -0
  278. package/src/assets/flags/as.webp +0 -0
  279. package/src/assets/flags/at.webp +0 -0
  280. package/src/assets/flags/au.webp +0 -0
  281. package/src/assets/flags/aw.webp +0 -0
  282. package/src/assets/flags/ax.webp +0 -0
  283. package/src/assets/flags/az.webp +0 -0
  284. package/src/assets/flags/ba.webp +0 -0
  285. package/src/assets/flags/bb.webp +0 -0
  286. package/src/assets/flags/bd.webp +0 -0
  287. package/src/assets/flags/be.webp +0 -0
  288. package/src/assets/flags/bf.webp +0 -0
  289. package/src/assets/flags/bg.webp +0 -0
  290. package/src/assets/flags/bh.webp +0 -0
  291. package/src/assets/flags/bi.webp +0 -0
  292. package/src/assets/flags/bj.webp +0 -0
  293. package/src/assets/flags/bl.webp +0 -0
  294. package/src/assets/flags/bm.webp +0 -0
  295. package/src/assets/flags/bn.webp +0 -0
  296. package/src/assets/flags/bo.webp +0 -0
  297. package/src/assets/flags/bq.webp +0 -0
  298. package/src/assets/flags/br.webp +0 -0
  299. package/src/assets/flags/bs.webp +0 -0
  300. package/src/assets/flags/bt.webp +0 -0
  301. package/src/assets/flags/bv.webp +0 -0
  302. package/src/assets/flags/bw.webp +0 -0
  303. package/src/assets/flags/by.webp +0 -0
  304. package/src/assets/flags/bz.webp +0 -0
  305. package/src/assets/flags/ca.webp +0 -0
  306. package/src/assets/flags/cc.webp +0 -0
  307. package/src/assets/flags/cd.webp +0 -0
  308. package/src/assets/flags/cf.webp +0 -0
  309. package/src/assets/flags/cg.webp +0 -0
  310. package/src/assets/flags/ch.webp +0 -0
  311. package/src/assets/flags/ci.webp +0 -0
  312. package/src/assets/flags/ck.webp +0 -0
  313. package/src/assets/flags/cl.webp +0 -0
  314. package/src/assets/flags/cm.webp +0 -0
  315. package/src/assets/flags/cn.webp +0 -0
  316. package/src/assets/flags/co.webp +0 -0
  317. package/src/assets/flags/cr.webp +0 -0
  318. package/src/assets/flags/cu.webp +0 -0
  319. package/src/assets/flags/cv.webp +0 -0
  320. package/src/assets/flags/cw.webp +0 -0
  321. package/src/assets/flags/cx.webp +0 -0
  322. package/src/assets/flags/cy.webp +0 -0
  323. package/src/assets/flags/cz.webp +0 -0
  324. package/src/assets/flags/de.webp +0 -0
  325. package/src/assets/flags/dj.webp +0 -0
  326. package/src/assets/flags/dk.webp +0 -0
  327. package/src/assets/flags/dm.webp +0 -0
  328. package/src/assets/flags/do.webp +0 -0
  329. package/src/assets/flags/dz.webp +0 -0
  330. package/src/assets/flags/ec.webp +0 -0
  331. package/src/assets/flags/ee.webp +0 -0
  332. package/src/assets/flags/eg.webp +0 -0
  333. package/src/assets/flags/eh.webp +0 -0
  334. package/src/assets/flags/er.webp +0 -0
  335. package/src/assets/flags/es.webp +0 -0
  336. package/src/assets/flags/et.webp +0 -0
  337. package/src/assets/flags/fi.webp +0 -0
  338. package/src/assets/flags/fj.webp +0 -0
  339. package/src/assets/flags/fk.webp +0 -0
  340. package/src/assets/flags/fm.webp +0 -0
  341. package/src/assets/flags/fo.webp +0 -0
  342. package/src/assets/flags/fr.webp +0 -0
  343. package/src/assets/flags/ga.webp +0 -0
  344. package/src/assets/flags/gb-eng.webp +0 -0
  345. package/src/assets/flags/gb-nir.webp +0 -0
  346. package/src/assets/flags/gb-sct.webp +0 -0
  347. package/src/assets/flags/gb-wls.webp +0 -0
  348. package/src/assets/flags/gb.webp +0 -0
  349. package/src/assets/flags/gd.webp +0 -0
  350. package/src/assets/flags/ge.webp +0 -0
  351. package/src/assets/flags/gf.webp +0 -0
  352. package/src/assets/flags/gg.webp +0 -0
  353. package/src/assets/flags/gh.webp +0 -0
  354. package/src/assets/flags/gi.webp +0 -0
  355. package/src/assets/flags/gl.webp +0 -0
  356. package/src/assets/flags/gm.webp +0 -0
  357. package/src/assets/flags/gn.webp +0 -0
  358. package/src/assets/flags/gp.webp +0 -0
  359. package/src/assets/flags/gq.webp +0 -0
  360. package/src/assets/flags/gr.webp +0 -0
  361. package/src/assets/flags/gs.webp +0 -0
  362. package/src/assets/flags/gt.webp +0 -0
  363. package/src/assets/flags/gu.webp +0 -0
  364. package/src/assets/flags/gw.webp +0 -0
  365. package/src/assets/flags/gy.webp +0 -0
  366. package/src/assets/flags/hk.webp +0 -0
  367. package/src/assets/flags/hm.webp +0 -0
  368. package/src/assets/flags/hn.webp +0 -0
  369. package/src/assets/flags/hr.webp +0 -0
  370. package/src/assets/flags/ht.webp +0 -0
  371. package/src/assets/flags/hu.webp +0 -0
  372. package/src/assets/flags/id.webp +0 -0
  373. package/src/assets/flags/ie.webp +0 -0
  374. package/src/assets/flags/il.webp +0 -0
  375. package/src/assets/flags/im.webp +0 -0
  376. package/src/assets/flags/in.webp +0 -0
  377. package/src/assets/flags/io.webp +0 -0
  378. package/src/assets/flags/iq.webp +0 -0
  379. package/src/assets/flags/ir.webp +0 -0
  380. package/src/assets/flags/is.webp +0 -0
  381. package/src/assets/flags/it.webp +0 -0
  382. package/src/assets/flags/je.webp +0 -0
  383. package/src/assets/flags/jm.webp +0 -0
  384. package/src/assets/flags/jo.webp +0 -0
  385. package/src/assets/flags/jp.webp +0 -0
  386. package/src/assets/flags/ke.webp +0 -0
  387. package/src/assets/flags/kg.webp +0 -0
  388. package/src/assets/flags/kh.webp +0 -0
  389. package/src/assets/flags/ki.webp +0 -0
  390. package/src/assets/flags/km.webp +0 -0
  391. package/src/assets/flags/kn.webp +0 -0
  392. package/src/assets/flags/kp.webp +0 -0
  393. package/src/assets/flags/kr.webp +0 -0
  394. package/src/assets/flags/kw.webp +0 -0
  395. package/src/assets/flags/ky.webp +0 -0
  396. package/src/assets/flags/kz.webp +0 -0
  397. package/src/assets/flags/la.webp +0 -0
  398. package/src/assets/flags/lb.webp +0 -0
  399. package/src/assets/flags/lc.webp +0 -0
  400. package/src/assets/flags/li.webp +0 -0
  401. package/src/assets/flags/lista.txt +0 -0
  402. package/src/assets/flags/lk.webp +0 -0
  403. package/src/assets/flags/lr.webp +0 -0
  404. package/src/assets/flags/ls.webp +0 -0
  405. package/src/assets/flags/lt.webp +0 -0
  406. package/src/assets/flags/lu.webp +0 -0
  407. package/src/assets/flags/lv.webp +0 -0
  408. package/src/assets/flags/ly.webp +0 -0
  409. package/src/assets/flags/ma.webp +0 -0
  410. package/src/assets/flags/mc.webp +0 -0
  411. package/src/assets/flags/md.webp +0 -0
  412. package/src/assets/flags/me.webp +0 -0
  413. package/src/assets/flags/mf.webp +0 -0
  414. package/src/assets/flags/mg.webp +0 -0
  415. package/src/assets/flags/mh.webp +0 -0
  416. package/src/assets/flags/mk.webp +0 -0
  417. package/src/assets/flags/ml.webp +0 -0
  418. package/src/assets/flags/mm.webp +0 -0
  419. package/src/assets/flags/mn.webp +0 -0
  420. package/src/assets/flags/mo.webp +0 -0
  421. package/src/assets/flags/mp.webp +0 -0
  422. package/src/assets/flags/mq.webp +0 -0
  423. package/src/assets/flags/mr.webp +0 -0
  424. package/src/assets/flags/ms.webp +0 -0
  425. package/src/assets/flags/mt.webp +0 -0
  426. package/src/assets/flags/mu.webp +0 -0
  427. package/src/assets/flags/mv.webp +0 -0
  428. package/src/assets/flags/mw.webp +0 -0
  429. package/src/assets/flags/mx.webp +0 -0
  430. package/src/assets/flags/my.webp +0 -0
  431. package/src/assets/flags/mz.webp +0 -0
  432. package/src/assets/flags/na.webp +0 -0
  433. package/src/assets/flags/nc.webp +0 -0
  434. package/src/assets/flags/ne.webp +0 -0
  435. package/src/assets/flags/nf.webp +0 -0
  436. package/src/assets/flags/ng.webp +0 -0
  437. package/src/assets/flags/ni.webp +0 -0
  438. package/src/assets/flags/nl.webp +0 -0
  439. package/src/assets/flags/no.webp +0 -0
  440. package/src/assets/flags/np.webp +0 -0
  441. package/src/assets/flags/nr.webp +0 -0
  442. package/src/assets/flags/nu.webp +0 -0
  443. package/src/assets/flags/nz.webp +0 -0
  444. package/src/assets/flags/om.webp +0 -0
  445. package/src/assets/flags/pa.webp +0 -0
  446. package/src/assets/flags/pe.webp +0 -0
  447. package/src/assets/flags/pf.webp +0 -0
  448. package/src/assets/flags/pg.webp +0 -0
  449. package/src/assets/flags/ph.webp +0 -0
  450. package/src/assets/flags/pk.webp +0 -0
  451. package/src/assets/flags/pl.webp +0 -0
  452. package/src/assets/flags/pm.webp +0 -0
  453. package/src/assets/flags/pn.webp +0 -0
  454. package/src/assets/flags/pr.webp +0 -0
  455. package/src/assets/flags/ps.webp +0 -0
  456. package/src/assets/flags/pt.webp +0 -0
  457. package/src/assets/flags/pw.webp +0 -0
  458. package/src/assets/flags/py.webp +0 -0
  459. package/src/assets/flags/qa.webp +0 -0
  460. package/src/assets/flags/re.webp +0 -0
  461. package/src/assets/flags/ro.webp +0 -0
  462. package/src/assets/flags/rs.webp +0 -0
  463. package/src/assets/flags/ru.webp +0 -0
  464. package/src/assets/flags/rw.webp +0 -0
  465. package/src/assets/flags/sa.webp +0 -0
  466. package/src/assets/flags/sb.webp +0 -0
  467. package/src/assets/flags/sc.webp +0 -0
  468. package/src/assets/flags/sd.webp +0 -0
  469. package/src/assets/flags/se (1).webp +0 -0
  470. package/src/assets/flags/se.webp +0 -0
  471. package/src/assets/flags/sg.webp +0 -0
  472. package/src/assets/flags/sh.webp +0 -0
  473. package/src/assets/flags/si.webp +0 -0
  474. package/src/assets/flags/sj.webp +0 -0
  475. package/src/assets/flags/sk.webp +0 -0
  476. package/src/assets/flags/sl.webp +0 -0
  477. package/src/assets/flags/sm.webp +0 -0
  478. package/src/assets/flags/sn.webp +0 -0
  479. package/src/assets/flags/so.webp +0 -0
  480. package/src/assets/flags/sr.webp +0 -0
  481. package/src/assets/flags/ss.webp +0 -0
  482. package/src/assets/flags/st.webp +0 -0
  483. package/src/assets/flags/sv.webp +0 -0
  484. package/src/assets/flags/sx.webp +0 -0
  485. package/src/assets/flags/sy.webp +0 -0
  486. package/src/assets/flags/sz.webp +0 -0
  487. package/src/assets/flags/tc.webp +0 -0
  488. package/src/assets/flags/td.webp +0 -0
  489. package/src/assets/flags/tf.webp +0 -0
  490. package/src/assets/flags/tg.webp +0 -0
  491. package/src/assets/flags/th.webp +0 -0
  492. package/src/assets/flags/tj.webp +0 -0
  493. package/src/assets/flags/tk.webp +0 -0
  494. package/src/assets/flags/tl.webp +0 -0
  495. package/src/assets/flags/tm.webp +0 -0
  496. package/src/assets/flags/tn.webp +0 -0
  497. package/src/assets/flags/to.webp +0 -0
  498. package/src/assets/flags/tr.webp +0 -0
  499. package/src/assets/flags/tt.webp +0 -0
  500. package/src/assets/flags/tv.webp +0 -0
  501. package/src/assets/flags/tw.webp +0 -0
  502. package/src/assets/flags/tz.webp +0 -0
  503. package/src/assets/flags/ua.webp +0 -0
  504. package/src/assets/flags/ug.webp +0 -0
  505. package/src/assets/flags/um.webp +0 -0
  506. package/src/assets/flags/us.webp +0 -0
  507. package/src/assets/flags/uy.webp +0 -0
  508. package/src/assets/flags/uz.webp +0 -0
  509. package/src/assets/flags/va.webp +0 -0
  510. package/src/assets/flags/vc.webp +0 -0
  511. package/src/assets/flags/ve.webp +0 -0
  512. package/src/assets/flags/vg.webp +0 -0
  513. package/src/assets/flags/vi.webp +0 -0
  514. package/src/assets/flags/vn.webp +0 -0
  515. package/src/assets/flags/vu.webp +0 -0
  516. package/src/assets/flags/wf.webp +0 -0
  517. package/src/assets/flags/ws.webp +0 -0
  518. package/src/assets/flags/xk.webp +0 -0
  519. package/src/assets/flags/ye.webp +0 -0
  520. package/src/assets/flags/yt.webp +0 -0
  521. package/src/assets/flags/za.webp +0 -0
  522. package/src/assets/flags/zm.webp +0 -0
  523. package/src/assets/flags/zw.webp +0 -0
  524. package/src/demo-init.js +34 -0
  525. package/src/telpick.cdn.js +7 -0
  526. package/src/telpick.css +289 -0
  527. package/src/telpick.js +314 -0
  528. package/src/telpick.react.tsx +140 -0
  529. package/src/telpick.ts +157 -0
  530. package/src/telpick.vanilla.js +199 -0
  531. package/src/telpick.vue.ts +144 -0
  532. package/src/telpick.wrappers.jsx +37 -0
@@ -0,0 +1,289 @@
1
+ :root {
2
+ --telpick-bg: #ffffff;
3
+ --telpick-border: #e5e7eb;
4
+ --telpick-radius: 12px;
5
+ --telpick-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
6
+ --telpick-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
7
+ --telpick-flag-size: 24px;
8
+ --telpick-font-size: 14px;
9
+ --telpick-hover-bg: #f3f4f6;
10
+ --telpick-active-bg: #eff6ff;
11
+ --telpick-selected-bg: #eff6ff;
12
+ --telpick-selected-border: #3b82f6;
13
+ --telpick-selected-shadow: 2px 0 4px rgba(59, 130, 246, 0.3);
14
+ --telpick-selected-text: #1f2937;
15
+ --telpick-text: #1f2937;
16
+ --telpick-text-secondary: #6b7280;
17
+ --telpick-border-focus: #3b82f6;
18
+ --telpick-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
19
+ --telpick-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
20
+ }
21
+
22
+ .telpick-wrapper,
23
+ .telpick-wrapper * {
24
+ font-family: var(--telpick-font-family);
25
+ }
26
+
27
+ .telpick-wrapper {
28
+ position: relative;
29
+ display: inline-block;
30
+ }
31
+
32
+ .telpick-btn {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ gap: 0.75rem;
36
+ padding: 0.625rem 1rem;
37
+ background: var(--telpick-bg);
38
+ border: 1.5px solid var(--telpick-border);
39
+ border-radius: var(--telpick-radius);
40
+ font-size: var(--telpick-font-size);
41
+ color: var(--telpick-text);
42
+ cursor: pointer;
43
+ transition: var(--telpick-transition);
44
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
45
+ font-weight: 500;
46
+ min-width: 120px;
47
+ }
48
+
49
+ .telpick-btn:hover {
50
+ border-color: #d1d5db;
51
+ box-shadow: var(--telpick-shadow);
52
+ transform: translateY(-1px);
53
+ }
54
+
55
+ .telpick-btn:active {
56
+ transform: translateY(0);
57
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
58
+ }
59
+
60
+ .telpick-btn:focus {
61
+ outline: none;
62
+ border-color: var(--telpick-border-focus);
63
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
64
+ }
65
+
66
+ .telpick-btn .telpick-arrow {
67
+ margin-left: auto;
68
+ transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
69
+ font-size: 0.75rem;
70
+ color: var(--telpick-text-secondary);
71
+ }
72
+
73
+ .telpick-btn[aria-expanded="true"] .telpick-arrow {
74
+ transform: rotate(180deg);
75
+ }
76
+
77
+ .telpick-flag {
78
+ width: var(--telpick-flag-size);
79
+ height: calc(var(--telpick-flag-size) * 0.75);
80
+ border-radius: 4px;
81
+ object-fit: cover;
82
+ overflow: hidden;
83
+ flex-shrink: 0;
84
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
85
+ }
86
+
87
+ .telpick-flag img {
88
+ width: 100%;
89
+ height: 100%;
90
+ object-fit: cover;
91
+ display: block;
92
+ }
93
+
94
+ .telpick-dropdown {
95
+ background: var(--telpick-bg);
96
+ border: 1.5px solid var(--telpick-border);
97
+ border-radius: var(--telpick-radius);
98
+ box-shadow: var(--telpick-shadow-lg);
99
+ width: 280px;
100
+ position: absolute;
101
+ z-index: 1000;
102
+ margin-top: 0.5rem;
103
+ overflow: hidden;
104
+ opacity: 0;
105
+ transform: translateY(-10px) scale(0.95);
106
+ animation: telpick-dropdown-open 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
107
+ }
108
+
109
+ @keyframes telpick-dropdown-open {
110
+ to {
111
+ opacity: 1;
112
+ transform: translateY(0) scale(1);
113
+ }
114
+ }
115
+
116
+ .telpick-dropdown.telpick-dropdown-closing {
117
+ animation: telpick-dropdown-close 0.15s cubic-bezier(0.4, 0, 0.2, 1) forwards;
118
+ }
119
+
120
+ @keyframes telpick-dropdown-close {
121
+ from {
122
+ opacity: 1;
123
+ transform: translateY(0) scale(1);
124
+ }
125
+ to {
126
+ opacity: 0;
127
+ transform: translateY(-10px) scale(0.95);
128
+ }
129
+ }
130
+
131
+ .telpick-search {
132
+ width: 100%;
133
+ padding: 0.75rem 1rem;
134
+ border: none;
135
+ border-bottom: 1.5px solid var(--telpick-border);
136
+ font-size: var(--telpick-font-size);
137
+ outline: none;
138
+ background: var(--telpick-bg);
139
+ color: var(--telpick-text);
140
+ transition: var(--telpick-transition);
141
+ }
142
+
143
+ .telpick-search::placeholder {
144
+ color: var(--telpick-text-secondary);
145
+ }
146
+
147
+ .telpick-search:focus {
148
+ border-bottom-color: var(--telpick-border-focus);
149
+ background: #fafafa;
150
+ }
151
+
152
+ .telpick-dropdown ul {
153
+ max-height: 300px;
154
+ overflow-y: auto;
155
+ margin: 0;
156
+ padding: 0.25rem 0;
157
+ list-style: none;
158
+ }
159
+
160
+ .telpick-dropdown ul::-webkit-scrollbar {
161
+ width: 6px;
162
+ }
163
+
164
+ .telpick-dropdown ul::-webkit-scrollbar-track {
165
+ background: transparent;
166
+ }
167
+
168
+ .telpick-dropdown ul::-webkit-scrollbar-thumb {
169
+ background: #d1d5db;
170
+ border-radius: 3px;
171
+ }
172
+
173
+ .telpick-dropdown ul::-webkit-scrollbar-thumb:hover {
174
+ background: #9ca3af;
175
+ }
176
+
177
+ .telpick-item {
178
+ display: flex;
179
+ align-items: center;
180
+ gap: 0.75rem;
181
+ padding: 0.75rem 1rem;
182
+ font-size: var(--telpick-font-size);
183
+ color: var(--telpick-text);
184
+ cursor: pointer;
185
+ transition: var(--telpick-transition);
186
+ position: relative;
187
+ }
188
+
189
+ .telpick-item::before {
190
+ content: '';
191
+ position: absolute;
192
+ left: 0;
193
+ top: 0;
194
+ bottom: 0;
195
+ width: 3px;
196
+ background: var(--telpick-border-focus);
197
+ transform: scaleY(0);
198
+ transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
199
+ }
200
+
201
+ .telpick-item:hover {
202
+ background: var(--telpick-hover-bg);
203
+ padding-left: 1.25rem;
204
+ }
205
+
206
+ .telpick-item:hover::before {
207
+ transform: scaleY(1);
208
+ }
209
+
210
+ .telpick-item:active {
211
+ background: var(--telpick-active-bg);
212
+ }
213
+
214
+ .telpick-item-selected {
215
+ background: var(--telpick-selected-bg) !important;
216
+ box-shadow: var(--telpick-selected-shadow) !important;
217
+ padding-left: 1.25rem !important;
218
+ font-weight: 600;
219
+ color: var(--telpick-selected-text) !important;
220
+ position: relative;
221
+ }
222
+
223
+ .telpick-item-selected::before {
224
+ content: '';
225
+ position: absolute;
226
+ left: 0;
227
+ top: 0;
228
+ bottom: 0;
229
+ width: 3px;
230
+ background: var(--telpick-selected-border);
231
+ transform: scaleY(1) !important;
232
+ }
233
+
234
+ .telpick-item-selected:hover {
235
+ background: var(--telpick-selected-bg) !important;
236
+ box-shadow: var(--telpick-selected-shadow) !important;
237
+ color: var(--telpick-selected-text) !important;
238
+ }
239
+
240
+ .telpick-item-selected span,
241
+ .telpick-item-selected span:last-child {
242
+ color: var(--telpick-selected-text) !important;
243
+ font-weight: 600;
244
+ }
245
+
246
+ .telpick-item span:last-child {
247
+ margin-left: auto;
248
+ color: var(--telpick-text-secondary);
249
+ font-weight: 600;
250
+ font-size: 0.875rem;
251
+ }
252
+
253
+ .telpick-item .telpick-flag {
254
+ flex-shrink: 0;
255
+ }
256
+
257
+ .telpick-dropdown-enter-active,
258
+ .telpick-dropdown-leave-active {
259
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
260
+ transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
261
+ }
262
+
263
+ .telpick-dropdown-enter-from {
264
+ opacity: 0;
265
+ transform: translateY(-10px) scale(0.95);
266
+ }
267
+
268
+ .telpick-dropdown-enter-to {
269
+ opacity: 1;
270
+ transform: translateY(0) scale(1);
271
+ }
272
+
273
+ .telpick-dropdown-leave-from {
274
+ opacity: 1;
275
+ transform: translateY(0) scale(1);
276
+ }
277
+
278
+ .telpick-dropdown-leave-to {
279
+ opacity: 0;
280
+ transform: translateY(-10px) scale(0.95);
281
+ }
282
+
283
+ .relative {
284
+ position: relative;
285
+ }
286
+
287
+ .ml-auto {
288
+ margin-left: auto;
289
+ }
package/src/telpick.js ADDED
@@ -0,0 +1,314 @@
1
+ import countryCodesData from './assets/country-code.json'
2
+
3
+ // Al cargar por <script src="...">, guardar la URL base para resolver assets (banderas) en CDN
4
+ ;(function () {
5
+ if (typeof document !== 'undefined' && document.currentScript && document.currentScript.src) {
6
+ const base = document.currentScript.src.replace(/\/[^/]*$/, '')
7
+ if (typeof globalThis !== 'undefined') globalThis.__TELPICK_SCRIPT_BASE__ = base
8
+ else if (typeof window !== 'undefined') window.__TELPICK_SCRIPT_BASE__ = base
9
+ }
10
+ })()
11
+
12
+ function _getDefaultBaseFlagUrl() {
13
+ const base = typeof globalThis !== 'undefined' && globalThis.__TELPICK_SCRIPT_BASE__
14
+ ? globalThis.__TELPICK_SCRIPT_BASE__
15
+ : (typeof window !== 'undefined' && window.__TELPICK_SCRIPT_BASE__) || ''
16
+ return base ? `${base.replace(/\/$/, '')}/assets/flags` : ''
17
+ }
18
+
19
+ class Telpick {
20
+ constructor({ code = null, onChange = () => {}, styleOverrides = {}, baseFlagUrl = '' } = {}) {
21
+ this.code = code
22
+ this.onChange = onChange
23
+ this.styleOverrides = styleOverrides
24
+ this.baseFlagUrl = baseFlagUrl || _getDefaultBaseFlagUrl()
25
+ this.codes = []
26
+ this.selectedCode = code
27
+ this.isDropdownOpen = false
28
+ this.searchQuery = ''
29
+ this.container = null
30
+ this.dropdown = null
31
+ this._outsideHandler = null
32
+ this._getFlagUrl = this._getFlagUrl.bind(this)
33
+ }
34
+
35
+ _getFlagUrl(flagPathFromJson, countryCode) {
36
+ const filename = flagPathFromJson ? flagPathFromJson.replace(/^.*\//, '') : (countryCode ? `${String(countryCode).toLowerCase()}.webp` : '')
37
+ if (!filename) return ''
38
+ if (this.baseFlagUrl) {
39
+ const base = this.baseFlagUrl.replace(/\/$/, '')
40
+ return `${base}/${filename}`
41
+ }
42
+ return flagPathFromJson || (countryCode ? `/flags/${String(countryCode).toLowerCase()}.webp` : '')
43
+ }
44
+
45
+ async init(container) {
46
+ this.container = container
47
+ this.codes = [...countryCodesData].sort((a, b) => a.country.localeCompare(b.country, 'es'))
48
+ if (!this.code) {
49
+ const services = [
50
+ async () => {
51
+ try {
52
+ const res = await fetch('https://ip-api.com/json/?fields=countryCode')
53
+ const data = await res.json()
54
+ if (data.countryCode) {
55
+ return this.codes.find(c => c.country_code === data.countryCode)
56
+ }
57
+ } catch {}
58
+ return null
59
+ },
60
+ async () => {
61
+ try {
62
+ const res = await fetch('https://get.geojs.io/v1/ip/country.json')
63
+ const data = await res.json()
64
+ if (data.country) {
65
+ return this.codes.find(c => c.country_code === data.country)
66
+ }
67
+ } catch {}
68
+ return null
69
+ },
70
+ async () => {
71
+ try {
72
+ const res = await fetch('https://ipapi.co/json/')
73
+ const data = await res.json()
74
+ if (data.country_code) {
75
+ return this.codes.find(c => c.country_code === data.country_code)
76
+ }
77
+ } catch {}
78
+ return null
79
+ }
80
+ ]
81
+
82
+ let found = null
83
+ for (const service of services) {
84
+ try {
85
+ found = await Promise.race([
86
+ service(),
87
+ new Promise((resolve) => setTimeout(() => resolve(null), 3000))
88
+ ])
89
+ if (found) break
90
+ } catch {}
91
+ }
92
+
93
+ if (!found) {
94
+ try {
95
+ const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone
96
+ const timezoneToCountry = {
97
+ 'America/Lima': 'PE', 'America/Bogota': 'CO', 'America/Mexico_City': 'MX',
98
+ 'America/Argentina/Buenos_Aires': 'AR', 'America/Santiago': 'CL',
99
+ 'America/Caracas': 'VE', 'America/Montevideo': 'UY', 'America/Asuncion': 'PY',
100
+ 'America/La_Paz': 'BO', 'America/Guayaquil': 'EC', 'America/Panama': 'PA',
101
+ 'America/Costa_Rica': 'CR', 'America/Managua': 'NI', 'America/Tegucigalpa': 'HN',
102
+ 'America/Guatemala': 'GT', 'America/El_Salvador': 'SV', 'America/Havana': 'CU',
103
+ 'America/Santo_Domingo': 'DO', 'America/Jamaica': 'JM', 'America/Port-au-Prince': 'HT',
104
+ 'Europe/Madrid': 'ES', 'Europe/London': 'GB', 'Europe/Paris': 'FR',
105
+ 'Europe/Berlin': 'DE', 'Europe/Rome': 'IT', 'Europe/Amsterdam': 'NL',
106
+ 'Europe/Brussels': 'BE', 'Europe/Vienna': 'AT', 'Europe/Zurich': 'CH',
107
+ 'Europe/Stockholm': 'SE', 'Europe/Oslo': 'NO', 'Europe/Copenhagen': 'DK',
108
+ 'Europe/Helsinki': 'FI', 'Europe/Warsaw': 'PL', 'Europe/Prague': 'CZ',
109
+ 'Europe/Bucharest': 'RO', 'Europe/Moscow': 'RU',
110
+ 'America/New_York': 'US', 'America/Chicago': 'US', 'America/Denver': 'US',
111
+ 'America/Los_Angeles': 'US', 'America/Toronto': 'CA', 'America/Vancouver': 'CA',
112
+ 'Asia/Tokyo': 'JP', 'Asia/Shanghai': 'CN', 'Asia/Hong_Kong': 'CN',
113
+ 'Asia/Seoul': 'KR', 'Asia/Singapore': 'SG', 'Asia/Bangkok': 'TH',
114
+ 'Asia/Jakarta': 'ID', 'Asia/Manila': 'PH', 'Asia/Kolkata': 'IN',
115
+ 'Asia/Dubai': 'AE', 'Asia/Riyadh': 'SA',
116
+ 'Australia/Sydney': 'AU', 'Australia/Melbourne': 'AU', 'Pacific/Auckland': 'NZ',
117
+ 'Africa/Cairo': 'EG', 'Africa/Johannesburg': 'ZA', 'Africa/Nairobi': 'KE',
118
+ 'Africa/Lagos': 'NG'
119
+ }
120
+ const countryCode = timezoneToCountry[timezone]
121
+ if (countryCode) {
122
+ found = this.codes.find(c => c.country_code === countryCode)
123
+ }
124
+ } catch {}
125
+ }
126
+
127
+ if (found) {
128
+ this.selectedCode = found.country_code
129
+ } else {
130
+ const defaultCountry = this.codes.find(c => c.country_code === 'CO')
131
+ if (defaultCountry) this.selectedCode = defaultCountry.country_code
132
+ }
133
+ } else {
134
+ const found = this.codes.find(c => c.country_code === this.code)
135
+ if (found) this.selectedCode = found.country_code
136
+ }
137
+ this.render()
138
+ const selected = this.codes.find(c => c.country_code === this.selectedCode)
139
+ if (selected) this.onChange(selected)
140
+ this._setupOutsideClick()
141
+ }
142
+
143
+ render() {
144
+ this.container.innerHTML = ''
145
+ const btn = document.createElement('button')
146
+ btn.className = 'telpick-btn'
147
+ Object.assign(btn.style, this.styleOverrides)
148
+ btn.onclick = () => {
149
+ this.isDropdownOpen = !this.isDropdownOpen
150
+ this.render()
151
+ }
152
+ const flagDiv = document.createElement('div')
153
+ flagDiv.className = 'telpick-flag'
154
+ const selectedCountry = this.codes.find(c => c.country_code === this.selectedCode) || { country_code: '', code: '', country: '', flag: '' }
155
+ const flagUrl = this._getFlagUrl(selectedCountry.flag, selectedCountry.country_code)
156
+ if (flagUrl) {
157
+ const img = document.createElement('img')
158
+ img.src = flagUrl
159
+ img.className = 'w-full h-full object-cover'
160
+ img.alt = selectedCountry.country || 'flag'
161
+ img.loading = 'lazy'
162
+ img.referrerPolicy = 'no-referrer'
163
+ flagDiv.appendChild(img)
164
+ }
165
+ btn.appendChild(flagDiv)
166
+ const codeSpan = document.createElement('span')
167
+ codeSpan.textContent = selectedCountry.code
168
+ btn.appendChild(codeSpan)
169
+ const arrowSpan = document.createElement('span')
170
+ arrowSpan.className = 'ml-auto'
171
+ arrowSpan.textContent = '▼'
172
+ btn.appendChild(arrowSpan)
173
+ this.container.appendChild(btn)
174
+
175
+ if (this.isDropdownOpen) {
176
+ this.dropdown = document.createElement('div')
177
+ this.dropdown.className = 'telpick-dropdown'
178
+ this.dropdown.onclick = e => e.stopPropagation()
179
+ this.dropdown.onmousedown = e => e.stopPropagation()
180
+
181
+ const input = document.createElement('input')
182
+ input.className = 'telpick-search'
183
+ input.type = 'text'
184
+ input.placeholder = 'Buscar país...'
185
+ input.value = this.searchQuery
186
+ input.oninput = e => {
187
+ e.stopPropagation()
188
+ const inputEl = e.target
189
+ const cursorPos = inputEl.selectionStart || 0
190
+ const newValue = inputEl.value
191
+ this.searchQuery = newValue
192
+ const ul = this.dropdown?.querySelector('ul')
193
+ if (ul) {
194
+ ul.innerHTML = ''
195
+ const filtered = !this.searchQuery ? this.codes : this.codes.filter(c => c.country.toLowerCase().includes(this.searchQuery.toLowerCase()))
196
+ filtered.forEach(item => {
197
+ const li = document.createElement('li')
198
+ const isSelected = item.country_code === this.selectedCode && this.selectedCode !== null && this.selectedCode !== undefined
199
+ li.className = `telpick-item ${isSelected ? 'telpick-item-selected' : ''}`
200
+ li.onclick = () => {
201
+ this.selectedCode = item.country_code
202
+ this.onChange(item)
203
+ this.isDropdownOpen = false
204
+ this.searchQuery = ''
205
+ this.render()
206
+ }
207
+ const flag = document.createElement('div')
208
+ flag.className = 'telpick-flag'
209
+ const flagUrl = this._getFlagUrl(item.flag, item.country_code)
210
+ if (flagUrl) {
211
+ const img = document.createElement('img')
212
+ img.src = flagUrl
213
+ img.className = 'w-full h-full object-cover'
214
+ img.alt = item.country || 'flag'
215
+ img.loading = 'lazy'
216
+ img.referrerPolicy = 'no-referrer'
217
+ flag.appendChild(img)
218
+ }
219
+ li.appendChild(flag)
220
+ const countrySpan = document.createElement('span')
221
+ countrySpan.textContent = item.country
222
+ li.appendChild(countrySpan)
223
+ const codeSpan = document.createElement('span')
224
+ codeSpan.className = 'ml-auto'
225
+ codeSpan.textContent = item.code
226
+ li.appendChild(codeSpan)
227
+ ul.appendChild(li)
228
+ })
229
+ requestAnimationFrame(() => {
230
+ if (input) {
231
+ input.focus()
232
+ const newCursorPos = Math.min(cursorPos + 1, newValue.length)
233
+ input.setSelectionRange(newCursorPos, newCursorPos)
234
+ }
235
+ })
236
+ } else {
237
+ this.render()
238
+ }
239
+ }
240
+ input.onclick = e => e.stopPropagation()
241
+ input.onmousedown = e => e.stopPropagation()
242
+ this.dropdown.appendChild(input)
243
+ const ul = document.createElement('ul')
244
+ ul.style.maxHeight = '130px'
245
+ ul.style.overflowY = 'auto'
246
+ const filtered = !this.searchQuery ? this.codes : this.codes.filter(c => c.country.toLowerCase().includes(this.searchQuery.toLowerCase()))
247
+ filtered.forEach(item => {
248
+ const li = document.createElement('li')
249
+ const isSelected = item.country_code === this.selectedCode && this.selectedCode !== null && this.selectedCode !== undefined
250
+ li.className = `telpick-item ${isSelected ? 'telpick-item-selected' : ''}`
251
+ li.setAttribute('aria-selected', isSelected)
252
+ li.onclick = () => {
253
+ this.selectedCode = item.country_code
254
+ this.onChange(item)
255
+ this.isDropdownOpen = false
256
+ this.searchQuery = ''
257
+ this.render()
258
+ }
259
+ const flag = document.createElement('div')
260
+ flag.className = 'telpick-flag'
261
+ const flagUrl = this._getFlagUrl(item.flag, item.country_code)
262
+ if (flagUrl) {
263
+ const img = document.createElement('img')
264
+ img.src = flagUrl
265
+ img.className = 'w-full h-full object-cover'
266
+ img.alt = item.country || 'flag'
267
+ img.loading = 'lazy'
268
+ img.referrerPolicy = 'no-referrer'
269
+ flag.appendChild(img)
270
+ }
271
+ li.appendChild(flag)
272
+ const countrySpan = document.createElement('span')
273
+ countrySpan.textContent = item.country
274
+ li.appendChild(countrySpan)
275
+ const codeSpan = document.createElement('span')
276
+ codeSpan.className = 'ml-auto'
277
+ codeSpan.textContent = item.code
278
+ li.appendChild(codeSpan)
279
+ ul.appendChild(li)
280
+ })
281
+ this.dropdown.appendChild(ul)
282
+ this.container.appendChild(this.dropdown)
283
+
284
+ requestAnimationFrame(() => {
285
+ if (input) {
286
+ input.focus()
287
+ }
288
+ })
289
+ }
290
+ }
291
+
292
+ _setupOutsideClick() {
293
+ if (this._outsideHandler) document.removeEventListener('click', this._outsideHandler)
294
+ this._outsideHandler = e => {
295
+ const target = e.target
296
+ if (this.isDropdownOpen && this.container && target) {
297
+ const dropdown = this.container.querySelector('.telpick-dropdown')
298
+ if (!this.container.contains(target) && (!dropdown || !dropdown.contains(target))) {
299
+ this.isDropdownOpen = false
300
+ this.render()
301
+ }
302
+ }
303
+ }
304
+ document.addEventListener('click', this._outsideHandler, true)
305
+ }
306
+
307
+ destroy() {
308
+ if (this._outsideHandler) document.removeEventListener('mousedown', this._outsideHandler)
309
+ this.container.innerHTML = ''
310
+ }
311
+ }
312
+
313
+ window.Telpick = Telpick
314
+ export default Telpick