iss-ctrl 0.0.4 → 0.0.6

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 (462) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/.editorconfig +13 -0
  3. package/.eslintrc.json +90 -0
  4. package/README.md +17 -16
  5. package/angular.json +190 -0
  6. package/bun.lock +1866 -0
  7. package/package.json +47 -21
  8. package/projects/iss/.eslintrc.json +37 -0
  9. package/projects/iss/README.md +24 -0
  10. package/projects/iss/ng-package.json +11 -0
  11. package/projects/iss/package.json +17 -0
  12. package/projects/iss/src/components/controls/base/control-base.ts +75 -0
  13. package/projects/iss/src/components/controls/base/field-base.ts +84 -0
  14. package/projects/iss/src/components/controls/base/viewer-base.ts +6 -0
  15. package/projects/iss/src/components/controls/checkbox/checkbox.control.ts +90 -0
  16. package/projects/iss/src/components/controls/checkbox/checkbox.field.ts +34 -0
  17. package/projects/iss/src/components/controls/checkbox/checkbox.viewer.ts +15 -0
  18. package/projects/iss/src/components/controls/chips/chips.control.ts +99 -0
  19. package/projects/iss/src/components/controls/chips/chips.field.ts +26 -0
  20. package/projects/iss/src/components/controls/chips/chips.viewer.ts +23 -0
  21. package/projects/iss/src/components/controls/date-picker/date-picker.control.ts +85 -0
  22. package/projects/iss/src/components/controls/date-picker/date-picker.field.ts +28 -0
  23. package/projects/iss/src/components/controls/date-picker/date-picker.viewer.ts +14 -0
  24. package/projects/iss/src/components/controls/date-range-picker/date-range-emission.ts +5 -0
  25. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.control.ts +143 -0
  26. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.field.ts +28 -0
  27. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.viewer.ts +22 -0
  28. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.control.ts +109 -0
  29. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.field.ts +31 -0
  30. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.viewer.ts +17 -0
  31. package/projects/iss/src/components/controls/file-picker/attachment.ts +6 -0
  32. package/projects/iss/src/components/controls/file-picker/attachment.viewer.ts +165 -0
  33. package/projects/iss/src/components/controls/file-picker/droppable.ts +25 -0
  34. package/projects/iss/src/components/controls/file-picker/file-handler.ts +109 -0
  35. package/projects/iss/src/components/controls/file-picker/file-picker.control.ts +189 -0
  36. package/projects/iss/src/components/controls/file-picker/file-picker.field.ts +117 -0
  37. package/projects/iss/src/components/controls/file-picker/file.ts +9 -0
  38. package/projects/iss/src/components/controls/file-picker/format-file-size.util.ts +9 -0
  39. package/projects/iss/src/components/controls/input/input.control.ts +95 -0
  40. package/projects/iss/src/components/controls/input/input.field.ts +31 -0
  41. package/projects/iss/src/components/controls/input/input.viewer.ts +10 -0
  42. package/projects/iss/src/components/controls/mobile/countries.const.ts +2051 -0
  43. package/projects/iss/src/components/controls/mobile/country.ts +11 -0
  44. package/projects/iss/src/components/controls/mobile/flags/ad.svg +282 -0
  45. package/projects/iss/src/components/controls/mobile/flags/ae.svg +6 -0
  46. package/projects/iss/src/components/controls/mobile/flags/af.svg +9 -0
  47. package/projects/iss/src/components/controls/mobile/flags/ag.svg +15 -0
  48. package/projects/iss/src/components/controls/mobile/flags/ai.svg +35 -0
  49. package/projects/iss/src/components/controls/mobile/flags/al.svg +7 -0
  50. package/projects/iss/src/components/controls/mobile/flags/am.svg +5 -0
  51. package/projects/iss/src/components/controls/mobile/flags/ao.svg +19 -0
  52. package/projects/iss/src/components/controls/mobile/flags/aq.svg +45 -0
  53. package/projects/iss/src/components/controls/mobile/flags/ar.svg +66 -0
  54. package/projects/iss/src/components/controls/mobile/flags/as.svg +225 -0
  55. package/projects/iss/src/components/controls/mobile/flags/at.svg +4 -0
  56. package/projects/iss/src/components/controls/mobile/flags/au.svg +32 -0
  57. package/projects/iss/src/components/controls/mobile/flags/aw.svg +11 -0
  58. package/projects/iss/src/components/controls/mobile/flags/ax.svg +11 -0
  59. package/projects/iss/src/components/controls/mobile/flags/az.svg +11 -0
  60. package/projects/iss/src/components/controls/mobile/flags/ba.svg +18 -0
  61. package/projects/iss/src/components/controls/mobile/flags/bb.svg +11 -0
  62. package/projects/iss/src/components/controls/mobile/flags/bd.svg +4 -0
  63. package/projects/iss/src/components/controls/mobile/flags/be.svg +5 -0
  64. package/projects/iss/src/components/controls/mobile/flags/bf.svg +14 -0
  65. package/projects/iss/src/components/controls/mobile/flags/bg.svg +5 -0
  66. package/projects/iss/src/components/controls/mobile/flags/bh.svg +4 -0
  67. package/projects/iss/src/components/controls/mobile/flags/bi.svg +26 -0
  68. package/projects/iss/src/components/controls/mobile/flags/bj.svg +5 -0
  69. package/projects/iss/src/components/controls/mobile/flags/bl.svg +5 -0
  70. package/projects/iss/src/components/controls/mobile/flags/bm.svg +374 -0
  71. package/projects/iss/src/components/controls/mobile/flags/bn.svg +70 -0
  72. package/projects/iss/src/components/controls/mobile/flags/bo.svg +3625 -0
  73. package/projects/iss/src/components/controls/mobile/flags/bq.svg +5 -0
  74. package/projects/iss/src/components/controls/mobile/flags/br.svg +92 -0
  75. package/projects/iss/src/components/controls/mobile/flags/bs.svg +5 -0
  76. package/projects/iss/src/components/controls/mobile/flags/bt.svg +487 -0
  77. package/projects/iss/src/components/controls/mobile/flags/bv.svg +11 -0
  78. package/projects/iss/src/components/controls/mobile/flags/bw.svg +5 -0
  79. package/projects/iss/src/components/controls/mobile/flags/by.svg +15 -0
  80. package/projects/iss/src/components/controls/mobile/flags/bz.svg +629 -0
  81. package/projects/iss/src/components/controls/mobile/flags/ca.svg +7 -0
  82. package/projects/iss/src/components/controls/mobile/flags/cc.svg +33 -0
  83. package/projects/iss/src/components/controls/mobile/flags/cd.svg +5 -0
  84. package/projects/iss/src/components/controls/mobile/flags/cf.svg +7 -0
  85. package/projects/iss/src/components/controls/mobile/flags/cg.svg +5 -0
  86. package/projects/iss/src/components/controls/mobile/flags/ch.svg +4 -0
  87. package/projects/iss/src/components/controls/mobile/flags/ci.svg +5 -0
  88. package/projects/iss/src/components/controls/mobile/flags/ck.svg +29 -0
  89. package/projects/iss/src/components/controls/mobile/flags/cl.svg +14 -0
  90. package/projects/iss/src/components/controls/mobile/flags/cm.svg +15 -0
  91. package/projects/iss/src/components/controls/mobile/flags/cn.svg +11 -0
  92. package/projects/iss/src/components/controls/mobile/flags/co.svg +5 -0
  93. package/projects/iss/src/components/controls/mobile/flags/cr.svg +1332 -0
  94. package/projects/iss/src/components/controls/mobile/flags/cu.svg +6 -0
  95. package/projects/iss/src/components/controls/mobile/flags/cv.svg +24 -0
  96. package/projects/iss/src/components/controls/mobile/flags/cw.svg +16 -0
  97. package/projects/iss/src/components/controls/mobile/flags/cx.svg +24 -0
  98. package/projects/iss/src/components/controls/mobile/flags/cy.svg +13 -0
  99. package/projects/iss/src/components/controls/mobile/flags/cz.svg +5 -0
  100. package/projects/iss/src/components/controls/mobile/flags/de.svg +5 -0
  101. package/projects/iss/src/components/controls/mobile/flags/dj.svg +6 -0
  102. package/projects/iss/src/components/controls/mobile/flags/dk.svg +5 -0
  103. package/projects/iss/src/components/controls/mobile/flags/dm.svg +198 -0
  104. package/projects/iss/src/components/controls/mobile/flags/do.svg +238 -0
  105. package/projects/iss/src/components/controls/mobile/flags/dz.svg +5 -0
  106. package/projects/iss/src/components/controls/mobile/flags/ec.svg +1292 -0
  107. package/projects/iss/src/components/controls/mobile/flags/ee.svg +5 -0
  108. package/projects/iss/src/components/controls/mobile/flags/eg.svg +125 -0
  109. package/projects/iss/src/components/controls/mobile/flags/eh.svg +12 -0
  110. package/projects/iss/src/components/controls/mobile/flags/er.svg +9 -0
  111. package/projects/iss/src/components/controls/mobile/flags/es.svg +445 -0
  112. package/projects/iss/src/components/controls/mobile/flags/et.svg +16 -0
  113. package/projects/iss/src/components/controls/mobile/flags/eu.svg +28 -0
  114. package/projects/iss/src/components/controls/mobile/flags/fi.svg +5 -0
  115. package/projects/iss/src/components/controls/mobile/flags/fj.svg +203 -0
  116. package/projects/iss/src/components/controls/mobile/flags/fk.svg +922 -0
  117. package/projects/iss/src/components/controls/mobile/flags/flags.png +0 -0
  118. package/projects/iss/src/components/controls/mobile/flags/flags@2x.png +0 -0
  119. package/projects/iss/src/components/controls/mobile/flags/fm.svg +16 -0
  120. package/projects/iss/src/components/controls/mobile/flags/fo.svg +11 -0
  121. package/projects/iss/src/components/controls/mobile/flags/fonts.css +271 -0
  122. package/projects/iss/src/components/controls/mobile/flags/fr.svg +5 -0
  123. package/projects/iss/src/components/controls/mobile/flags/ga.svg +5 -0
  124. package/projects/iss/src/components/controls/mobile/flags/gb-eng.svg +7 -0
  125. package/projects/iss/src/components/controls/mobile/flags/gb-nir.svg +15 -0
  126. package/projects/iss/src/components/controls/mobile/flags/gb-sct.svg +11 -0
  127. package/projects/iss/src/components/controls/mobile/flags/gb-wls.svg +16 -0
  128. package/projects/iss/src/components/controls/mobile/flags/gb.svg +15 -0
  129. package/projects/iss/src/components/controls/mobile/flags/gd.svg +11 -0
  130. package/projects/iss/src/components/controls/mobile/flags/ge.svg +17 -0
  131. package/projects/iss/src/components/controls/mobile/flags/gf.svg +5 -0
  132. package/projects/iss/src/components/controls/mobile/flags/gg.svg +8 -0
  133. package/projects/iss/src/components/controls/mobile/flags/gh.svg +6 -0
  134. package/projects/iss/src/components/controls/mobile/flags/gi.svg +69 -0
  135. package/projects/iss/src/components/controls/mobile/flags/gl.svg +4 -0
  136. package/projects/iss/src/components/controls/mobile/flags/gm.svg +7 -0
  137. package/projects/iss/src/components/controls/mobile/flags/gn.svg +5 -0
  138. package/projects/iss/src/components/controls/mobile/flags/gp.svg +5 -0
  139. package/projects/iss/src/components/controls/mobile/flags/gq.svg +88 -0
  140. package/projects/iss/src/components/controls/mobile/flags/gr.svg +4 -0
  141. package/projects/iss/src/components/controls/mobile/flags/gs.svg +693 -0
  142. package/projects/iss/src/components/controls/mobile/flags/gt.svg +317 -0
  143. package/projects/iss/src/components/controls/mobile/flags/gu.svg +58 -0
  144. package/projects/iss/src/components/controls/mobile/flags/gw.svg +13 -0
  145. package/projects/iss/src/components/controls/mobile/flags/gy.svg +7 -0
  146. package/projects/iss/src/components/controls/mobile/flags/hk.svg +17 -0
  147. package/projects/iss/src/components/controls/mobile/flags/hm.svg +32 -0
  148. package/projects/iss/src/components/controls/mobile/flags/hn.svg +10 -0
  149. package/projects/iss/src/components/controls/mobile/flags/hr.svg +282 -0
  150. package/projects/iss/src/components/controls/mobile/flags/ht.svg +1470 -0
  151. package/projects/iss/src/components/controls/mobile/flags/hu.svg +5 -0
  152. package/projects/iss/src/components/controls/mobile/flags/id.svg +4 -0
  153. package/projects/iss/src/components/controls/mobile/flags/ie.svg +5 -0
  154. package/projects/iss/src/components/controls/mobile/flags/il.svg +5 -0
  155. package/projects/iss/src/components/controls/mobile/flags/im.svg +33 -0
  156. package/projects/iss/src/components/controls/mobile/flags/in.svg +25 -0
  157. package/projects/iss/src/components/controls/mobile/flags/io.svg +895 -0
  158. package/projects/iss/src/components/controls/mobile/flags/iq.svg +12 -0
  159. package/projects/iss/src/components/controls/mobile/flags/ir.svg +31 -0
  160. package/projects/iss/src/components/controls/mobile/flags/is.svg +5 -0
  161. package/projects/iss/src/components/controls/mobile/flags/it.svg +5 -0
  162. package/projects/iss/src/components/controls/mobile/flags/je.svg +40 -0
  163. package/projects/iss/src/components/controls/mobile/flags/jm.svg +9 -0
  164. package/projects/iss/src/components/controls/mobile/flags/jo.svg +10 -0
  165. package/projects/iss/src/components/controls/mobile/flags/jp.svg +4 -0
  166. package/projects/iss/src/components/controls/mobile/flags/ke.svg +28 -0
  167. package/projects/iss/src/components/controls/mobile/flags/kg.svg +7 -0
  168. package/projects/iss/src/components/controls/mobile/flags/kh.svg +133 -0
  169. package/projects/iss/src/components/controls/mobile/flags/ki.svg +54 -0
  170. package/projects/iss/src/components/controls/mobile/flags/km.svg +13 -0
  171. package/projects/iss/src/components/controls/mobile/flags/kn.svg +24 -0
  172. package/projects/iss/src/components/controls/mobile/flags/kp.svg +16 -0
  173. package/projects/iss/src/components/controls/mobile/flags/kr.svg +16 -0
  174. package/projects/iss/src/components/controls/mobile/flags/kw.svg +6 -0
  175. package/projects/iss/src/components/controls/mobile/flags/ky.svg +153 -0
  176. package/projects/iss/src/components/controls/mobile/flags/kz.svg +49 -0
  177. package/projects/iss/src/components/controls/mobile/flags/la.svg +5 -0
  178. package/projects/iss/src/components/controls/mobile/flags/lb.svg +8 -0
  179. package/projects/iss/src/components/controls/mobile/flags/lc.svg +6 -0
  180. package/projects/iss/src/components/controls/mobile/flags/li.svg +75 -0
  181. package/projects/iss/src/components/controls/mobile/flags/lk.svg +50 -0
  182. package/projects/iss/src/components/controls/mobile/flags/lr.svg +15 -0
  183. package/projects/iss/src/components/controls/mobile/flags/ls.svg +32 -0
  184. package/projects/iss/src/components/controls/mobile/flags/lt.svg +5 -0
  185. package/projects/iss/src/components/controls/mobile/flags/lu.svg +5 -0
  186. package/projects/iss/src/components/controls/mobile/flags/lv.svg +4 -0
  187. package/projects/iss/src/components/controls/mobile/flags/ly.svg +8 -0
  188. package/projects/iss/src/components/controls/mobile/flags/ma.svg +4 -0
  189. package/projects/iss/src/components/controls/mobile/flags/mc.svg +4 -0
  190. package/projects/iss/src/components/controls/mobile/flags/md.svg +102 -0
  191. package/projects/iss/src/components/controls/mobile/flags/me.svg +240 -0
  192. package/projects/iss/src/components/controls/mobile/flags/mf.svg +5 -0
  193. package/projects/iss/src/components/controls/mobile/flags/mg.svg +5 -0
  194. package/projects/iss/src/components/controls/mobile/flags/mh.svg +18 -0
  195. package/projects/iss/src/components/controls/mobile/flags/mk.svg +6 -0
  196. package/projects/iss/src/components/controls/mobile/flags/ml.svg +5 -0
  197. package/projects/iss/src/components/controls/mobile/flags/mm.svg +12 -0
  198. package/projects/iss/src/components/controls/mobile/flags/mn.svg +12 -0
  199. package/projects/iss/src/components/controls/mobile/flags/mo.svg +13 -0
  200. package/projects/iss/src/components/controls/mobile/flags/mp.svg +2919 -0
  201. package/projects/iss/src/components/controls/mobile/flags/mq.svg +5 -0
  202. package/projects/iss/src/components/controls/mobile/flags/mr.svg +5 -0
  203. package/projects/iss/src/components/controls/mobile/flags/ms.svg +59 -0
  204. package/projects/iss/src/components/controls/mobile/flags/mt.svg +52 -0
  205. package/projects/iss/src/components/controls/mobile/flags/mu.svg +6 -0
  206. package/projects/iss/src/components/controls/mobile/flags/mv.svg +8 -0
  207. package/projects/iss/src/components/controls/mobile/flags/mw.svg +24 -0
  208. package/projects/iss/src/components/controls/mobile/flags/mx.svg +1129 -0
  209. package/projects/iss/src/components/controls/mobile/flags/my.svg +12 -0
  210. package/projects/iss/src/components/controls/mobile/flags/mz.svg +50 -0
  211. package/projects/iss/src/components/controls/mobile/flags/na.svg +17 -0
  212. package/projects/iss/src/components/controls/mobile/flags/nc.svg +5 -0
  213. package/projects/iss/src/components/controls/mobile/flags/ne.svg +6 -0
  214. package/projects/iss/src/components/controls/mobile/flags/nf.svg +8 -0
  215. package/projects/iss/src/components/controls/mobile/flags/ng.svg +4 -0
  216. package/projects/iss/src/components/controls/mobile/flags/ni.svg +281 -0
  217. package/projects/iss/src/components/controls/mobile/flags/nl.svg +5 -0
  218. package/projects/iss/src/components/controls/mobile/flags/no.svg +11 -0
  219. package/projects/iss/src/components/controls/mobile/flags/np.svg +33 -0
  220. package/projects/iss/src/components/controls/mobile/flags/nr.svg +8 -0
  221. package/projects/iss/src/components/controls/mobile/flags/nu.svg +23 -0
  222. package/projects/iss/src/components/controls/mobile/flags/nz.svg +37 -0
  223. package/projects/iss/src/components/controls/mobile/flags/om.svg +307 -0
  224. package/projects/iss/src/components/controls/mobile/flags/pa.svg +15 -0
  225. package/projects/iss/src/components/controls/mobile/flags/pe.svg +767 -0
  226. package/projects/iss/src/components/controls/mobile/flags/pf.svg +38 -0
  227. package/projects/iss/src/components/controls/mobile/flags/pg.svg +16 -0
  228. package/projects/iss/src/components/controls/mobile/flags/ph.svg +28 -0
  229. package/projects/iss/src/components/controls/mobile/flags/pk.svg +7 -0
  230. package/projects/iss/src/components/controls/mobile/flags/pl.svg +4 -0
  231. package/projects/iss/src/components/controls/mobile/flags/pm.svg +5 -0
  232. package/projects/iss/src/components/controls/mobile/flags/pn.svg +131 -0
  233. package/projects/iss/src/components/controls/mobile/flags/pr.svg +6 -0
  234. package/projects/iss/src/components/controls/mobile/flags/ps.svg +6 -0
  235. package/projects/iss/src/components/controls/mobile/flags/pt.svg +79 -0
  236. package/projects/iss/src/components/controls/mobile/flags/pw.svg +4 -0
  237. package/projects/iss/src/components/controls/mobile/flags/py.svg +192 -0
  238. package/projects/iss/src/components/controls/mobile/flags/qa.svg +7 -0
  239. package/projects/iss/src/components/controls/mobile/flags/re.svg +5 -0
  240. package/projects/iss/src/components/controls/mobile/flags/ro.svg +5 -0
  241. package/projects/iss/src/components/controls/mobile/flags/rs.svg +1143 -0
  242. package/projects/iss/src/components/controls/mobile/flags/ru.svg +5 -0
  243. package/projects/iss/src/components/controls/mobile/flags/rw.svg +17 -0
  244. package/projects/iss/src/components/controls/mobile/flags/sa.svg +23 -0
  245. package/projects/iss/src/components/controls/mobile/flags/sb.svg +30 -0
  246. package/projects/iss/src/components/controls/mobile/flags/sc.svg +7 -0
  247. package/projects/iss/src/components/controls/mobile/flags/sd.svg +6 -0
  248. package/projects/iss/src/components/controls/mobile/flags/se.svg +5 -0
  249. package/projects/iss/src/components/controls/mobile/flags/sg.svg +15 -0
  250. package/projects/iss/src/components/controls/mobile/flags/sh.svg +15 -0
  251. package/projects/iss/src/components/controls/mobile/flags/si.svg +30 -0
  252. package/projects/iss/src/components/controls/mobile/flags/sj.svg +11 -0
  253. package/projects/iss/src/components/controls/mobile/flags/sk.svg +21 -0
  254. package/projects/iss/src/components/controls/mobile/flags/sl.svg +5 -0
  255. package/projects/iss/src/components/controls/mobile/flags/sm.svg +847 -0
  256. package/projects/iss/src/components/controls/mobile/flags/sn.svg +15 -0
  257. package/projects/iss/src/components/controls/mobile/flags/so.svg +13 -0
  258. package/projects/iss/src/components/controls/mobile/flags/sr.svg +6 -0
  259. package/projects/iss/src/components/controls/mobile/flags/ss.svg +8 -0
  260. package/projects/iss/src/components/controls/mobile/flags/st.svg +16 -0
  261. package/projects/iss/src/components/controls/mobile/flags/stc-icons.css +1 -0
  262. package/projects/iss/src/components/controls/mobile/flags/sv.svg +3368 -0
  263. package/projects/iss/src/components/controls/mobile/flags/sx.svg +172 -0
  264. package/projects/iss/src/components/controls/mobile/flags/sy.svg +6 -0
  265. package/projects/iss/src/components/controls/mobile/flags/sz.svg +54 -0
  266. package/projects/iss/src/components/controls/mobile/flags/tc.svg +88 -0
  267. package/projects/iss/src/components/controls/mobile/flags/td.svg +5 -0
  268. package/projects/iss/src/components/controls/mobile/flags/tf.svg +18 -0
  269. package/projects/iss/src/components/controls/mobile/flags/tg.svg +15 -0
  270. package/projects/iss/src/components/controls/mobile/flags/th.svg +5 -0
  271. package/projects/iss/src/components/controls/mobile/flags/tj.svg +32 -0
  272. package/projects/iss/src/components/controls/mobile/flags/tk.svg +25 -0
  273. package/projects/iss/src/components/controls/mobile/flags/tl.svg +6 -0
  274. package/projects/iss/src/components/controls/mobile/flags/tm.svg +349 -0
  275. package/projects/iss/src/components/controls/mobile/flags/tn.svg +9 -0
  276. package/projects/iss/src/components/controls/mobile/flags/to.svg +8 -0
  277. package/projects/iss/src/components/controls/mobile/flags/tr.svg +6 -0
  278. package/projects/iss/src/components/controls/mobile/flags/tt.svg +5 -0
  279. package/projects/iss/src/components/controls/mobile/flags/tv.svg +18 -0
  280. package/projects/iss/src/components/controls/mobile/flags/tw.svg +12 -0
  281. package/projects/iss/src/components/controls/mobile/flags/tz.svg +13 -0
  282. package/projects/iss/src/components/controls/mobile/flags/ua.svg +4 -0
  283. package/projects/iss/src/components/controls/mobile/flags/ug.svg +46 -0
  284. package/projects/iss/src/components/controls/mobile/flags/um.svg +25 -0
  285. package/projects/iss/src/components/controls/mobile/flags/us.svg +25 -0
  286. package/projects/iss/src/components/controls/mobile/flags/uy.svg +138 -0
  287. package/projects/iss/src/components/controls/mobile/flags/uz.svg +30 -0
  288. package/projects/iss/src/components/controls/mobile/flags/va.svg +277 -0
  289. package/projects/iss/src/components/controls/mobile/flags/vc.svg +9 -0
  290. package/projects/iss/src/components/controls/mobile/flags/ve.svg +28 -0
  291. package/projects/iss/src/components/controls/mobile/flags/vg.svg +96 -0
  292. package/projects/iss/src/components/controls/mobile/flags/vi.svg +311 -0
  293. package/projects/iss/src/components/controls/mobile/flags/vn.svg +12 -0
  294. package/projects/iss/src/components/controls/mobile/flags/vu.svg +20 -0
  295. package/projects/iss/src/components/controls/mobile/flags/wf.svg +7 -0
  296. package/projects/iss/src/components/controls/mobile/flags/ws.svg +14 -0
  297. package/projects/iss/src/components/controls/mobile/flags/xk.svg +11 -0
  298. package/projects/iss/src/components/controls/mobile/flags/ye.svg +5 -0
  299. package/projects/iss/src/components/controls/mobile/flags/yt.svg +5 -0
  300. package/projects/iss/src/components/controls/mobile/flags/za.svg +17 -0
  301. package/projects/iss/src/components/controls/mobile/flags/zm.svg +20 -0
  302. package/projects/iss/src/components/controls/mobile/flags/zw.svg +130 -0
  303. package/projects/iss/src/components/controls/mobile/iso2.type.ts +244 -0
  304. package/projects/iss/src/components/controls/mobile/mobile.control.ts +222 -0
  305. package/projects/iss/src/components/controls/mobile/mobile.field.ts +28 -0
  306. package/projects/iss/src/components/controls/mobile/mobile.ts +12 -0
  307. package/projects/iss/src/components/controls/mobile/mobile.viewer.ts +10 -0
  308. package/projects/iss/src/components/controls/mobile/phone.ts +96 -0
  309. package/projects/iss/src/components/controls/note/note.field.ts +25 -0
  310. package/projects/iss/src/components/controls/plate/plate-letter.pipe.ts +14 -0
  311. package/projects/iss/src/components/controls/plate/plate-letter.ts +7 -0
  312. package/projects/iss/src/components/controls/plate/plate-letters.const.ts +21 -0
  313. package/projects/iss/src/components/controls/plate/plate.control.ts +481 -0
  314. package/projects/iss/src/components/controls/plate/plate.field.ts +36 -0
  315. package/projects/iss/src/components/controls/plate/plate.viewer.ts +289 -0
  316. package/projects/iss/src/components/controls/radio/radio.control.ts +48 -0
  317. package/projects/iss/src/components/controls/radio/radio.field.ts +38 -0
  318. package/projects/iss/src/components/controls/radio/radio.viewer.ts +14 -0
  319. package/projects/iss/src/components/controls/select/select.control.ts +242 -0
  320. package/projects/iss/src/components/controls/select/select.field.ts +32 -0
  321. package/projects/iss/src/components/controls/select/select.viewer.ts +14 -0
  322. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.control.ts +24 -0
  323. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.field.ts +31 -0
  324. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.viewer.ts +14 -0
  325. package/projects/iss/src/components/controls/table/field.viewer.ts +23 -0
  326. package/projects/iss/src/components/controls/table/table.field.ts +233 -0
  327. package/projects/iss/src/components/controls/textarea/textarea.control.ts +54 -0
  328. package/projects/iss/src/components/controls/textarea/textarea.field.ts +31 -0
  329. package/projects/iss/src/components/controls/textarea/textarea.viewer.ts +11 -0
  330. package/projects/iss/src/components/controls/time-picker/time-picker.control.ts +86 -0
  331. package/projects/iss/src/components/controls/time-picker/time-picker.field.ts +28 -0
  332. package/projects/iss/src/components/controls/time-picker/time-picker.viewer.ts +10 -0
  333. package/projects/iss/src/components/controls/toggle-button/toggle-button.control.ts +105 -0
  334. package/projects/iss/src/components/controls/toggle-button/toggle-button.field.ts +40 -0
  335. package/projects/iss/src/components/controls/toggle-button/toggle-button.viewer.ts +14 -0
  336. package/projects/iss/src/components/controls/user-picker/employee.ts +73 -0
  337. package/projects/iss/src/components/controls/user-picker/user-picker.field.ts +124 -0
  338. package/projects/iss/src/components/outlet/component-outlet.ts +8 -0
  339. package/projects/iss/src/components/outlet/field-data-injector.ts +20 -0
  340. package/projects/iss/src/components/outlet/iss-form-group.ts +5 -0
  341. package/projects/iss/src/components/outlet/outlet.ts +154 -0
  342. package/projects/iss/src/components/shared/hints.component.ts +38 -0
  343. package/projects/iss/src/components/shared/validation-message.component.ts +36 -0
  344. package/projects/iss/src/events/event-handler.ts +47 -0
  345. package/projects/iss/src/events/load/after-fetch.ts +29 -0
  346. package/projects/iss/src/events/load/load-event.ts +26 -0
  347. package/projects/iss/src/events/load/load-options-event.ts +49 -0
  348. package/projects/iss/src/events/load/load-value-event.ts +50 -0
  349. package/projects/iss/src/events/load/replace-api-keys.ts +55 -0
  350. package/projects/iss/src/events/set-value/get-value-to-set.ts +29 -0
  351. package/projects/iss/src/events/set-value/set-value-event.ts +33 -0
  352. package/projects/iss/src/events/show/show-event.ts +11 -0
  353. package/projects/iss/src/events/triggers/event-trigger-manager.ts +51 -0
  354. package/projects/iss/src/events/triggers/event-trigger.ts +30 -0
  355. package/projects/iss/src/events/triggers/trigger-based-on-json-value.ts +19 -0
  356. package/projects/iss/src/public-api.ts +131 -0
  357. package/projects/iss/src/shared/classes/field-action-config.ts +56 -0
  358. package/projects/iss/src/shared/classes/field-async-validation.ts +7 -0
  359. package/projects/iss/src/shared/classes/field-config.ts +58 -0
  360. package/projects/iss/src/shared/classes/field-event.ts +28 -0
  361. package/projects/iss/src/shared/classes/field-option.ts +9 -0
  362. package/projects/iss/src/shared/classes/field-validation.ts +15 -0
  363. package/projects/iss/src/shared/classes/iss-field.ts +102 -0
  364. package/projects/iss/src/shared/constants/date-format.const.ts +18 -0
  365. package/projects/iss/src/shared/constants/placeholder-regex.const.ts +1 -0
  366. package/projects/iss/src/shared/constants/validation.const.ts +115 -0
  367. package/projects/iss/src/shared/constants/view-provider.const.ts +7 -0
  368. package/projects/iss/src/shared/indexes/components.index.ts +27 -0
  369. package/projects/iss/src/shared/indexes/services.index.ts +11 -0
  370. package/projects/iss/src/shared/indexes/validators.index.ts +21 -0
  371. package/projects/iss/src/shared/interfaces/dto.ts +12 -0
  372. package/projects/iss/src/shared/interfaces/event-strategy.ts +27 -0
  373. package/projects/iss/src/shared/interfaces/event-trigger-fn.ts +7 -0
  374. package/projects/iss/src/shared/interfaces/hint.ts +8 -0
  375. package/projects/iss/src/shared/interfaces/i18n.ts +4 -0
  376. package/projects/iss/src/shared/interfaces/import.ts +3 -0
  377. package/projects/iss/src/shared/interfaces/option.ts +4 -0
  378. package/projects/iss/src/shared/interfaces/validation.ts +5 -0
  379. package/projects/iss/src/shared/pipes/arabic-number.pipe.ts +14 -0
  380. package/projects/iss/src/shared/pipes/select-status.pipe.ts +10 -0
  381. package/projects/iss/src/shared/pipes/translate.pipe.ts +20 -0
  382. package/projects/iss/src/shared/services/form-engine.ts +130 -0
  383. package/projects/iss/src/shared/services/loader.ts +51 -0
  384. package/projects/iss/src/shared/tokens/api-response-mapper.token.ts +4 -0
  385. package/projects/iss/src/shared/tokens/attachment.token.ts +6 -0
  386. package/projects/iss/src/shared/tokens/field.token.ts +4 -0
  387. package/projects/iss/src/shared/tokens/host.token.ts +3 -0
  388. package/projects/iss/src/shared/tokens/language.token.ts +3 -0
  389. package/projects/iss/src/shared/tokens/user-search-api.token.ts +3 -0
  390. package/projects/iss/src/shared/types/validation.type.ts +3 -0
  391. package/projects/iss/src/shared/utilities/array-from.util.ts +7 -0
  392. package/projects/iss/src/shared/utilities/get-property-by-path.util.ts +30 -0
  393. package/projects/iss/src/shared/utilities/http.util.service.ts +19 -0
  394. package/projects/iss/src/shared/utilities/is-valid-api.util.ts +8 -0
  395. package/projects/iss/src/shared/utilities/replace-placeholder.util.ts +12 -0
  396. package/projects/iss/src/upgrade.scss +68 -0
  397. package/projects/iss/src/validators/core.validator.ts +39 -0
  398. package/projects/iss/src/validators/file.validator.ts +100 -0
  399. package/projects/iss/src/validators/time.validator.ts +31 -0
  400. package/projects/iss/tsconfig.lib.json +13 -0
  401. package/projects/iss/tsconfig.lib.prod.json +9 -0
  402. package/projects/iss/tsconfig.spec.json +13 -0
  403. package/tsconfig.json +31 -0
  404. package/fesm2022/iss-ctrl-checkbox.wrapper-BVw3Pu1B.mjs +0 -81
  405. package/fesm2022/iss-ctrl-checkbox.wrapper-BVw3Pu1B.mjs.map +0 -1
  406. package/fesm2022/iss-ctrl-chips.wrapper-FY02vbu1.mjs +0 -83
  407. package/fesm2022/iss-ctrl-chips.wrapper-FY02vbu1.mjs.map +0 -1
  408. package/fesm2022/iss-ctrl-date-picker.wrapper-BTyZyhiU.mjs +0 -79
  409. package/fesm2022/iss-ctrl-date-picker.wrapper-BTyZyhiU.mjs.map +0 -1
  410. package/fesm2022/iss-ctrl-date-range-picker.wrapper-BW1pwRKg.mjs +0 -87
  411. package/fesm2022/iss-ctrl-date-range-picker.wrapper-BW1pwRKg.mjs.map +0 -1
  412. package/fesm2022/iss-ctrl-datetime-picker.wrapper-h0P56I6e.mjs +0 -83
  413. package/fesm2022/iss-ctrl-datetime-picker.wrapper-h0P56I6e.mjs.map +0 -1
  414. package/fesm2022/iss-ctrl-file-picker.wrapper-D_4dLsqz.mjs +0 -245
  415. package/fesm2022/iss-ctrl-file-picker.wrapper-D_4dLsqz.mjs.map +0 -1
  416. package/fesm2022/iss-ctrl-input.wrapper-dK79kSim.mjs +0 -83
  417. package/fesm2022/iss-ctrl-input.wrapper-dK79kSim.mjs.map +0 -1
  418. package/fesm2022/iss-ctrl-iss-ctrl-BhZGHw0A.mjs +0 -6024
  419. package/fesm2022/iss-ctrl-iss-ctrl-BhZGHw0A.mjs.map +0 -1
  420. package/fesm2022/iss-ctrl-load-event.service-D_O5gUmg.mjs +0 -62
  421. package/fesm2022/iss-ctrl-load-event.service-D_O5gUmg.mjs.map +0 -1
  422. package/fesm2022/iss-ctrl-load-options-event.service-CylOcoz4.mjs +0 -51
  423. package/fesm2022/iss-ctrl-load-options-event.service-CylOcoz4.mjs.map +0 -1
  424. package/fesm2022/iss-ctrl-load-value-event.service-BRz28bIm.mjs +0 -52
  425. package/fesm2022/iss-ctrl-load-value-event.service-BRz28bIm.mjs.map +0 -1
  426. package/fesm2022/iss-ctrl-mobile.wrapper-DOvO-cRi.mjs +0 -70
  427. package/fesm2022/iss-ctrl-mobile.wrapper-DOvO-cRi.mjs.map +0 -1
  428. package/fesm2022/iss-ctrl-note.wrapper-BW6WOulk.mjs +0 -43
  429. package/fesm2022/iss-ctrl-note.wrapper-BW6WOulk.mjs.map +0 -1
  430. package/fesm2022/iss-ctrl-plate-number.wrapper-B_NXePR_.mjs +0 -228
  431. package/fesm2022/iss-ctrl-plate-number.wrapper-B_NXePR_.mjs.map +0 -1
  432. package/fesm2022/iss-ctrl-radio.wrapper-BHXkIyX9.mjs +0 -84
  433. package/fesm2022/iss-ctrl-radio.wrapper-BHXkIyX9.mjs.map +0 -1
  434. package/fesm2022/iss-ctrl-replace-api-keys.service-DNns4c2U.mjs +0 -57
  435. package/fesm2022/iss-ctrl-replace-api-keys.service-DNns4c2U.mjs.map +0 -1
  436. package/fesm2022/iss-ctrl-select.viewer-Bd4flLOk.mjs +0 -30
  437. package/fesm2022/iss-ctrl-select.viewer-Bd4flLOk.mjs.map +0 -1
  438. package/fesm2022/iss-ctrl-select.wrapper-B78Aap__.mjs +0 -66
  439. package/fesm2022/iss-ctrl-select.wrapper-B78Aap__.mjs.map +0 -1
  440. package/fesm2022/iss-ctrl-set-value-event.service-Dc4bcaTp.mjs +0 -61
  441. package/fesm2022/iss-ctrl-set-value-event.service-Dc4bcaTp.mjs.map +0 -1
  442. package/fesm2022/iss-ctrl-show-event.service-Bg9VNotN.mjs +0 -18
  443. package/fesm2022/iss-ctrl-show-event.service-Bg9VNotN.mjs.map +0 -1
  444. package/fesm2022/iss-ctrl-slide-toggle.wrapper-CRTpag4Q.mjs +0 -75
  445. package/fesm2022/iss-ctrl-slide-toggle.wrapper-CRTpag4Q.mjs.map +0 -1
  446. package/fesm2022/iss-ctrl-table.wrapper-B1q8mXCB.mjs +0 -312
  447. package/fesm2022/iss-ctrl-table.wrapper-B1q8mXCB.mjs.map +0 -1
  448. package/fesm2022/iss-ctrl-textarea.wrapper-LR5_KMxK.mjs +0 -70
  449. package/fesm2022/iss-ctrl-textarea.wrapper-LR5_KMxK.mjs.map +0 -1
  450. package/fesm2022/iss-ctrl-time-picker.wrapper-D_td2M3Z.mjs +0 -67
  451. package/fesm2022/iss-ctrl-time-picker.wrapper-D_td2M3Z.mjs.map +0 -1
  452. package/fesm2022/iss-ctrl-toggle-button.wrapper-DxA2jL1S.mjs +0 -89
  453. package/fesm2022/iss-ctrl-toggle-button.wrapper-DxA2jL1S.mjs.map +0 -1
  454. package/fesm2022/iss-ctrl-trigger-based-on-json-value.service-CAnJWl6G.mjs +0 -24
  455. package/fesm2022/iss-ctrl-trigger-based-on-json-value.service-CAnJWl6G.mjs.map +0 -1
  456. package/fesm2022/iss-ctrl-user-picker.wrapper-UeA0dCqd.mjs +0 -190
  457. package/fesm2022/iss-ctrl-user-picker.wrapper-UeA0dCqd.mjs.map +0 -1
  458. package/fesm2022/iss-ctrl-viewer.base-BCFfZsDG.mjs +0 -17
  459. package/fesm2022/iss-ctrl-viewer.base-BCFfZsDG.mjs.map +0 -1
  460. package/fesm2022/iss-ctrl.mjs +0 -2
  461. package/fesm2022/iss-ctrl.mjs.map +0 -1
  462. package/types/iss-ctrl.d.ts +0 -712
@@ -0,0 +1,130 @@
1
+ <svg id="svg30" viewBox="0 0 1260 630" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <clipPath id="clip-path">
4
+ <path d="M0 0h1260v630H0z" fill="none" />
5
+ </clipPath>
6
+ <style>.cls-8 {
7
+ fill: #ffd200
8
+ }
9
+
10
+ .cls-4 {
11
+ fill: #d40000
12
+ }
13
+
14
+ .cls-8 {
15
+ fill-rule: evenodd
16
+ }</style>
17
+ </defs>
18
+ <path d="M0 0h1260v630H0z" fill="#006400" id="path7" />
19
+ <path d="M0 90h1260v450H0z" fill="#ffd200" id="path9" />
20
+ <path class="cls-4" d="M0 180h1260v270H0z" id="path11" />
21
+ <path d="M0 270h1260v90H0z" id="path13" />
22
+ <g clip-path="url(#clip-path)">
23
+ <path d="M0 0v630l420-315z" id="path15" stroke="#000" stroke-width="30" />
24
+ </g>
25
+ <path d="M0 0v630l420-315z" fill="#fff" id="path17" />
26
+ <path class="cls-4" d="M159.78 156.62l83.19 256-217.79-158.2h269.2L76.59 412.65z" id="path19" />
27
+ <path
28
+ class="cls-8"
29
+ d="M152.88 218.67a14.16 14.16 0 00-22.58 1.66 39.57 39.57 0 00-7.61.56 7.86 7.86 0 00-5.93 10.74l8.59-.51a11.53 11.53 0 015.86 9.7l1 34.13a24.54 24.54 0 00-2.45 11 101.46 101.46 0 001.09 13.7 14.74 14.74 0 01-4 12.45 86 86 0 00-12.93 17 13.09 13.09 0 001.14 14.9l9.78 37.86h73.45l4.08-32.12a45.72 45.72 0 0121.18-33.05l2.89.82a4.22 4.22 0 003.75-7.38l-69.48-54.34-1.83-22.86a24.69 24.69 0 00-6-14.26"
30
+ id="path636"
31
+ />
32
+ <path
33
+ d="M152.17 219.29l-.06-.07 1.41-1.24.06.07zm-.06-.07a15.48 15.48 0 00-1.22-1.21l1.23-1.42a15.3 15.3 0 011.4 1.39zm0-2.63l-.62.71zm-1.22 1.41a13.25 13.25 0 00-1.36-1l1-1.57a15.27 15.27 0 011.56 1.19zm-1.36-1a13.22 13.22 0 00-8.29-2.16l-.13-1.89a15.12 15.12 0 019.46 2.48zm-8.29-2.16h-.09l-.13-1.88h.09zm-.23-1.88l.07.94zm.15 1.88a12.78 12.78 0 00-1.71.25l-.39-1.85a15.26 15.26 0 011.95-.28zm-1.71.25a12.82 12.82 0 00-1.64.46l-.63-1.77a15 15 0 011.88-.54zm-1.64.46a13.22 13.22 0 00-6.71 5.32l-1.59-1a15.05 15.05 0 017.67-6.08zm-6.71 5.32l-.82.44v-.95zm-.82.44H130v-1.88h.28l-.05 1.89zm-.25 0zm0 0h-1v-1.89h1.08zm-1 0h-1l-.07-1.88h1.08zm-1 0a37.82 37.82 0 00-5.11.53l-.31-1.86a40.43 40.43 0 015.35-.55zm-5.11.53l-.42-1.84.31 1.86zm-.36-1.85l.16.93-.17-.93zm.33 1.86a7 7 0 00-.85.2l-.55-1.8a8.33 8.33 0 011.07-.26zm-.85.2a6.72 6.72 0 00-.81.31l-.77-1.72a9.58 9.58 0 011-.39zm-1.59-1.41l.38.86zm.79 1.72a6.91 6.91 0 00-3.19 2.95l-1.65-.91a8.83 8.83 0 014-3.76zm-4.85 2l.82.45zm1.66.89v.1l-1.66-.9v-.09zm-1.71-.79l.83.45-.83-.44zm1.66.88a8.2 8.2 0 00-.36.79l-1.76-.67a8.75 8.75 0 01.46-1zm-2.12.13l.88.34-.88-.33zm1.76.66a8 8 0 00-.26.83l-1.82-.45a7.79 7.79 0 01.32-1zm-2.08.38l.91.22zm1.82.44a7 7 0 00.33 4.29l-1.74.71a8.77 8.77 0 01-.41-5.44zm-.49 5.59l-.92-.59.87-.36zm-.11-1.89l8.59-.51.11 1.89-8.59.51zm8.59-.51l.51.12-.45.83zm.51.12l.22.13-1 1.62-.17-.1.91-1.65zm.22.13a12.54 12.54 0 011.48 1l-1.18 1.47a9.38 9.38 0 00-1.26-.87zm1.48 1a13.68 13.68 0 011.3 1.22l-1.37 1.28a9.88 9.88 0 00-1.11-1zm1.3 1.22a12.42 12.42 0 013.34 8.14h-1.88a10.63 10.63 0 00-2.83-6.91zm3.34 8.14l1 34.13-1.88.05-1-34.13zm1 34.13l-.09.43-.85-.41h.94zm-.09.43c-.06.12-.14.28-.21.45l-1.71-.79c.06-.14.13-.28.22-.47zm-1.92-.34l.85.39-.85-.39zm1.71.78c-.21.46-.41.93-.59 1.4l-1.75-.67c.19-.5.4-1 .63-1.51zm-2.35.73l.88.33zm1.76.67c-.18.47-.34.95-.49 1.43l-1.8-.56c.16-.52.34-1 .53-1.54zm-.49 1.43a23.51 23.51 0 00-1.07 7.32h-1.88a25.15 25.15 0 011.15-7.9l1.8.56zm-1.17 7.42v.49h-1.89V286h1.88zm0 .49v1.89l-1.88.07c0-.63 0-1.27-.06-1.93h1.89zm0 1.89q0 .9.09 1.89l-1.89.1c0-.61-.06-1.26-.08-1.92zm.09 1.89q.26 4.69.93 9.3l-1.86.27c-.47-3.15-.79-6.32-1-9.47zm.93 9.3v.05l-1.86.27zm0 .05l-.93.13zm0 0a15.56 15.56 0 01.16 2h-1.88a15.24 15.24 0 00-.14-1.79l1.86-.26zm.16 2a15 15 0 01-.1 2l-1.75-.22a17.39 17.39 0 00.09-1.78h1.88zm-.1 2a15.69 15.69 0 01-4.38 9.16l-1.34-1.32a13.82 13.82 0 003.97-8.06zm-4.38 9.16l-.67-.67zm0 0s.16-.21.11-.13l-1.57-1a.72.72 0 01.13-.15zm.11-.13l-.11.13-.67-.66zm-.11.13q-1 1-2 2.16l-1.37-1.28c.64-.7 1.33-1.43 2.09-2.2zm-3.43.88l.7.64zm1.39 1.27c-.68.75-1.33 1.49-2 2.22l-1.33-1.22c.67-.78 1.34-1.54 2-2.27zm-3.39 1l.72.61-.72-.61zm1.44 1.22a85.09 85.09 0 00-8.79 12.4l-1.63-.94a87.7 87.7 0 019-12.68zM113 328.61l.82.47-.82-.47zm1.63.94v.06l-1.64-.94v-.06zm0 .06a12.15 12.15 0 00-.89 1.91l-1.77-.64a14.31 14.31 0 011-2.21zm-.89 1.91a11.73 11.73 0 00-.54 2l-1.85-.33a14.21 14.21 0 01.62-2.3zm-.54 2a12.15 12.15 0 002.59 9.89l-1.45 1.2a14 14 0 01-3-11.42zm2.59 9.89l.18.36-.91.24zm.18.36l9.79 37.87-1.82.47-9.79-37.86zm8.88 39.05l-.91-.71.91-.24zm0-1.89h73.45v1.89h-73.45zm74.38 1.07l-.93.83v-.95zm-1.86-.23l4.07-32.13 1.87.23-4.08 32.13zm5.94-31.9l-.93-.11zm-1.87-.23v-.05l1.87.24c0 .25 0-.11 0 0l-1.87-.23zm1.87.19l-.93-.12.93.11zm-1.86-.24a46.57 46.57 0 011.1-5.74l1.83.46a45.19 45.19 0 00-1.07 5.52zm1.1-5.74a48.56 48.56 0 011.79-5.51l1.76.69a44.57 44.57 0 00-1.72 5.28zm1.79-5.51a46.64 46.64 0 0118.71-22.42l1 1.59a44.74 44.74 0 00-18 21.52zm18.71-22.42l.76-.11-.26.9zm.76-.11l2.89.82-.51 1.81-2.89-.82zm2.89.82l-.26.91zm0 0l-.51 1.81zm-.49 1.82l.25-.91zm.51-1.82a3 3 0 00.63.11l-.14 1.89a6.62 6.62 0 01-1-.18zm.63.11a4.32 4.32 0 00.63 0l.22 1.87a5.49 5.49 0 01-1 0zm.63 0a3.3 3.3 0 002.54-1.77l1.68.85a5.17 5.17 0 01-4 2.79zm4.22-.93l-.84-.43zm-1.69-.84l1.68.84zm0 0a3 3 0 00.23-.6l1.81.5a5.36 5.36 0 01-.36.94zm2.05-.11l-.9-.25zm-1.82-.49a3.21 3.21 0 00.1-.62l1.89.14a5 5 0 01-.17 1zm2-.49l-.94-.07zm-1.89-.13a3.28 3.28 0 00-1.24-2.83l1.15-1.48a5.15 5.15 0 012 4.44zm-1.24-2.83l-69.49-54.33 1.16-1.49 69.48 54.34zm-69.49-54.33l-.36-.67.94-.08zm-.36-.67L157.94 233l1.89-.15 1.83 22.87zM157.94 233v-.08l1.89-.15v.08zm1.88-.23l-.94.08zm-1.88.15c-.06-.74-.15-1.44-.27-2.11l1.86-.31c.13.78.23 1.54.29 2.27zm-.27-2.11a21.08 21.08 0 00-.46-2.06l1.82-.49c.2.73.37 1.48.5 2.24zm-.46-2.06a23.71 23.71 0 00-5-9.46l1.42-1.24a25.59 25.59 0 015.37 10.21"
34
+ id="path638"
35
+ />
36
+ <path
37
+ d="M152.69 280.72l-1.81-.55v-.11l1.78.62zm0 0l-.9-.29zm0 0a13 13 0 00-.41 1.5l-1.84-.38a13.42 13.42 0 01.46-1.71zm-.41 1.5a12.05 12.05 0 00-.23 1.53l-1.87-.17a14.31 14.31 0 01.26-1.74zm-.23 1.53a13.55 13.55 0 001.51 7.63l-1.67.88a15.56 15.56 0 01-1.71-8.68zm1.51 7.63l-1.67.88 1.67-.88zm0 0a11.36 11.36 0 00.81 1.34l-1.56 1.06a16.59 16.59 0 01-.92-1.52zm.81 1.34a14.26 14.26 0 00.94 1.23l-1.42 1.22a14.37 14.37 0 01-1.08-1.39zm.94 1.23a13.65 13.65 0 006.6 4.19l-.51 1.82a15.45 15.45 0 01-7.51-4.79"
38
+ id="path870"
39
+ />
40
+ <path d="M161.24 256.57l-28.52 19.49-1.07-1.55L160.18 255" id="path872" />
41
+ <path class="cls-8" d="M145.54 225.66a3.74 3.74 0 10-3.74 3.74 3.74 3.74 0 003.74-3.74" id="path874" />
42
+ <path
43
+ d="M144.6 225.66zm0 0a2.75 2.75 0 00-.82-2l1.33-1.34a4.67 4.67 0 011.38 3.31zm-.82-2a2.75 2.75 0 00-2-.82V221a4.66 4.66 0 013.29 1.37l-1.32 1.34zm-2-2.71zm0 1.89V221zm0 0V221zm0 0a2.75 2.75 0 00-2 .82l-1.33-1.33a4.65 4.65 0 013.3-1.38zm-2 .82a2.83 2.83 0 00-.82 2h-1.88a4.6 4.6 0 011.37-3.29l1.33 1.32zm-2.7 2zm1.88 0h-1.88zm0 0zm0 0a2.81 2.81 0 00.82 2l-1.29 1.34a4.71 4.71 0 01-1.37-3.31zm.82 2a2.83 2.83 0 002 .82v1.88a4.66 4.66 0 01-3.29-1.37l1.33-1.33zm2 2.7zm0-1.88v1.88zm0 0v1.88zm0 0a2.83 2.83 0 002-.82l1.34 1.32a4.67 4.67 0 01-3.31 1.38zm2-.82a2.81 2.81 0 00.82-2h1.89a4.72 4.72 0 01-1.37 3.29l-1.34-1.33zm2.71-2zm-1.89 0h1.89"
44
+ id="path876"
45
+ />
46
+ <path
47
+ d="M138 315h.07l.84 1.69h-.06L138 315zm.91 1.65l-.42-.84zM138 315a14.86 14.86 0 002.17-1.34l1.12 1.51a16.43 16.43 0 01-2.45 1.51zm2.17-1.34a15 15 0 001.93-1.66l1.35 1.31a16.51 16.51 0 01-2.12 1.86zm1.93-1.66a15.08 15.08 0 004.14-11.74l1.89-.16a17 17 0 01-4.68 13.21"
48
+ id="path878"
49
+ />
50
+ <path
51
+ d="M150.92 295.09h-.07l-.84-1.69h.07l.84 1.69zm-.92-1.65l.42.85zm.86 1.68a4.31 4.31 0 00-.73.45l-1.13-1.51a6.6 6.6 0 011-.62zm-.73.45a4.84 4.84 0 00-.63.56l-1.36-1.3a8 8 0 01.86-.77zm-.63.56a5.07 5.07 0 00-1.37 3.94l-1.89.16a6.92 6.92 0 011.9-5.4"
52
+ id="path880"
53
+ />
54
+ <path
55
+ d="M161.51 322.76l-.7-1.74zm0 0l-3 1.24-.72-1.74 3-1.24zm-3 1.24c-1 .41-2 .84-3 1.26l-.74-1.73c1-.43 2-.86 3-1.27zm-3 1.26q-7.69 3.28-15.23 7l-.83-1.69q7.56-3.71 15.32-7"
56
+ id="path882"
57
+ />
58
+ <path
59
+ d="M160.82 321l.68 1.76zm.73 1.74l-.34-.87zm-.71-1.75a22.26 22.26 0 003.06-1.5l.95 1.63a25.85 25.85 0 01-3.3 1.62zm3.06-1.5a23.08 23.08 0 002.78-1.89l1.18 1.48a26.9 26.9 0 01-3 2zm2.78-1.89a24 24 0 008.72-14.48l1.85.34a25.79 25.79 0 01-9.39 15.62"
60
+ id="path884"
61
+ />
62
+ <path d="M151.54 325h61.3v1.89h-61.3" id="path886" />
63
+ <path class="cls-8" d="M165.67 337.44a7.11 7.11 0 10-7.11 7.11 7.11 7.11 0 007.11-7.11" id="path888" />
64
+ <path
65
+ d="M164.73 337.44zm0 0a6.16 6.16 0 00-1.81-4.35l1.33-1.34a8 8 0 012.36 5.69zm-.48-5.69l-.67.67.67-.67zm-1.33 1.34a6.13 6.13 0 00-4.34-1.8v-1.89a8 8 0 015.67 2.35zm-4.34-1.8v-1.89zm0 0v-1.89zm0 0a6.14 6.14 0 00-4.36 1.8l-1.33-1.33a8 8 0 015.69-2.36zm-4.36 1.8a6.13 6.13 0 00-1.8 4.34h-1.89a8.07 8.07 0 012.36-5.67zm-1.8 4.34h-1.89zm0 0zm0 0a6.14 6.14 0 001.8 4.35l-1.32 1.34a8.09 8.09 0 01-2.37-5.69zm1.8 4.35a6.15 6.15 0 004.35 1.8v1.89a8 8 0 01-5.67-2.35zm4.35 1.8v1.89zm0 0v1.89zm0 0a6.14 6.14 0 004.35-1.8l1.34 1.33a8.06 8.06 0 01-5.69 2.36zm5.69-.47l-.67-.67.67.66zm-1.34-1.33a6.18 6.18 0 001.81-4.34h1.88a8 8 0 01-2.35 5.67zm1.81-4.34h1.88"
66
+ id="path890"
67
+ />
68
+ <path class="cls-8" d="M194 337.44a7.11 7.11 0 10-7.11 7.11 7.12 7.12 0 007.11-7.11" id="path892" />
69
+ <path
70
+ d="M193 337.44zm0 0a6.12 6.12 0 00-1.81-4.35l1.34-1.34a8.06 8.06 0 012.36 5.69zm-.47-5.69l-.67.67.66-.67zm-1.33 1.34a6.13 6.13 0 00-4.34-1.8v-1.89a8 8 0 015.67 2.35zm-4.34-1.8v-1.89zm0 0v-1.89zm0 0a6.14 6.14 0 00-4.35 1.8l-1.34-1.33a8.06 8.06 0 015.69-2.36zm-4.35 1.8a6.13 6.13 0 00-1.8 4.34h-1.89a8 8 0 012.35-5.67zm-1.8 4.34h-1.89zm0 0zm0 0a6.14 6.14 0 001.8 4.35l-1.33 1.34a8 8 0 01-2.36-5.69zm1.8 4.35a6.13 6.13 0 004.34 1.8v1.89a8 8 0 01-5.67-2.35zm4.34 1.8v1.89zm0 0v1.89zm0 0a6.15 6.15 0 004.35-1.8l1.33 1.33a8 8 0 01-5.68 2.36zm5.68-.47l-.66-.67.66.66zm-1.33-1.33a6.13 6.13 0 001.8-4.34h1.89a8 8 0 01-2.36 5.67zm1.8-4.34h1.89"
71
+ id="path894"
72
+ />
73
+ <path
74
+ d="M172.41 312.32l1 .28-.48 1.82-1-.29zm1 .28c.53.14 1 .27 1.51.38l-.41 1.83c-.55-.12-1.08-.25-1.58-.39zm1.51.38c.51.11 1 .22 1.52.31l-.34 1.85q-.81-.15-1.59-.33zm1.52.31a38.51 38.51 0 007.21.63v1.89a40.87 40.87 0 01-7.56-.67"
75
+ id="path896"
76
+ />
77
+ <path
78
+ d="M183.64 313.92c.33 0 .65 0 1-.05l.19 1.88c-.39 0-.77.06-1.13.06v-1.89zm1-.05l.09.94-.1-.94zm0 0a10.67 10.67 0 001.58-.28l.48 1.82a13 13 0 01-1.88.34zm1.58-.28a10.17 10.17 0 001.49-.53l.76 1.73a12 12 0 01-1.77.62zm1.49-.53a10.11 10.11 0 005.2-5.2l1.72.75a12 12 0 01-6.16 6.18"
79
+ id="path898"
80
+ />
81
+ <path d="M223.29 317.6l-61.9-17.6.51-1.82 61.9 17.57" id="path900" />
82
+ <path d="M116.3 347.88h86.2v1.88h-86.2" id="path902" />
83
+ <path d="M136.2 366.61h63.91v1.88H136.2" id="path904" />
84
+ <path d="M166.08 360.2l-7 6.88-1.32-1.34 7-6.88" id="path906" />
85
+ <path d="M152.79 359.53l7 6.88-1.32 1.34-7-6.88" id="path908" />
86
+ <path d="M153.45 360.2l-7 6.88-1.32-1.34 7-6.88" id="path910" />
87
+ <path d="M140.16 359.53l7 6.88-1.32 1.34-7-6.88" id="path912" />
88
+ <path d="M178.71 360.2l-7 6.88-1.32-1.34 7-6.88" id="path914" />
89
+ <path d="M165.42 359.53l7 6.21-1.32 1.34-7-6.21" id="path916" />
90
+ <path d="M191.34 360.2l-7 6.88-1.34-1.34 7-6.88" id="path918" />
91
+ <path d="M178.05 359.53l7 6.21-1.31 1.34-7-6.21" id="path920" />
92
+ <path d="M201.47 362.68l-4.48 4.4-1.31-1.34 4.47-4.4" id="path922" />
93
+ <path d="M190.68 359.53l7 6.88-1.31 1.34-7-6.88" id="path924" />
94
+ <path d="M166.08 350.63l-7 6.88-1.32-1.34 7-6.88" id="path926" />
95
+ <path d="M152.79 350l7 6.88-1.32 1.34-7-6.88" id="path928" />
96
+ <path d="M153.45 350.63l-7 6.88-1.32-1.34 7-6.88" id="path930" />
97
+ <path d="M140.16 350l7 6.88-1.32 1.34-7-6.88" id="path932" />
98
+ <path d="M178.71 350.63l-7 6.88-1.32-1.34 7-6.88" id="path934" />
99
+ <path d="M165.42 350l7 6.88-1.32 1.34-7-6.88" id="path936" />
100
+ <path d="M191.34 350.63l-7 6.88-1.34-1.34 7-6.88" id="path938" />
101
+ <path d="M178.05 350l7 6.88-1.31 1.34-7-6.88" id="path940" />
102
+ <path d="M202.86 351.75l-5.86 5.76-1.31-1.34 5.86-5.76" id="path942" />
103
+ <path d="M190.68 350l7 6.88-1.31 1.34-7-6.88" id="path944" />
104
+ <path d="M133.66 231.57l-8.25.49-.11-1.89 8.25-.49" id="path946" />
105
+ <path
106
+ d="M138.8 316.69L138 315l.81 1.7zM138 315l.41.85zm.84 1.69a27.78 27.78 0 00-4.47 2.79l-1.15-1.5a30.67 30.67 0 014.78-3zm-4.47 2.79a27.4 27.4 0 00-3.79 3.5l-1.4-1.26a30 30 0 014-3.74zm-3.79 3.5a27.88 27.88 0 00-6.58 24.63l-1.84.4a29.75 29.75 0 016.93-26.28"
107
+ id="path948"
108
+ />
109
+ <path
110
+ d="M140.25 332.24l-.12.06-.82-1.7.11-.05zm-.95-1.63l.41.85zm.84 1.69a16.68 16.68 0 00-2.27 1.37l-1.11-1.52a17.71 17.71 0 012.54-1.54zm-2.27 1.37a16.25 16.25 0 00-2 1.7l-1.34-1.32a17.43 17.43 0 012.21-1.9zm-2 1.7a16.52 16.52 0 00-4.62 12.3l-1.86.06a18.29 18.29 0 015.14-13.68"
111
+ id="path950"
112
+ />
113
+ <path
114
+ d="M118.12 338.77l-1.77-.12 1.77.12zm-1.79.57l1.8-.56-1.78-.13zm1.8-.56c.13.46.29.91.46 1.36l-1.75.68c-.19-.49-.36-1-.51-1.48zm.46 1.36c.17.44.37.88.57 1.3l-1.68.83a15.57 15.57 0 01-.64-1.45zm.57 1.3a16.55 16.55 0 004.55 5.63l-1.17 1.48a18.33 18.33 0 01-5.06-6.28"
115
+ id="path952"
116
+ />
117
+ <path d="M118.08 339.4l-2.16 5-1.73-.75 2.16-5" id="path954" />
118
+ <path
119
+ d="M122.2 348l.09-.64 1.68.84zm1.77.2l-1.67-.85zm-1.67-.85c.23-.45.45-.88.66-1.31l1.69.83-.68 1.35zm.66-1.31l.63-1.31 1.7.78c-.24.52-.45 1-.64 1.36zm.63-1.31a56.72 56.72 0 002.67-7l1.79.55a56.93 56.93 0 01-2.76 7.23"
120
+ id="path956"
121
+ />
122
+ <path
123
+ d="M129.41 347.73l1.83-.42zm1.83-.45l-.92.21.92-.21zm-1.84.43c-.11-.49-.23-.95-.33-1.34l1.82-.47c.13.5.25 1 .35 1.38zm-.33-1.34c-.1-.38-.22-.82-.37-1.33l1.82-.52c.11.39.23.85.37 1.38zm1.44-1.85l-.91.26.9-.26zm-1.8.52a53.83 53.83 0 00-2.41-6.64v-.66l1.76-.1a54.18 54.18 0 012.49 6.88"
124
+ id="path958"
125
+ />
126
+ <path d="M138 381.66l-2.73-14.05 1.85-.36 2.73 14.05" id="path960" />
127
+ <path d="M135.31 367.85l-6.41-18.73 1.78-.6 6.41 18.73" id="path962" />
128
+ <path d="M140.82 360.2l-5 4.95-1.32-1.34 5-4.95" id="path964" />
129
+ <path d="M140.82 350.63l-7.46 7.37-1.36-1.35 7.46-7.36" id="path966" />
130
+ </svg>
@@ -0,0 +1,244 @@
1
+ export type ISO2 =
2
+ "AF" |
3
+ "AL" |
4
+ "DZ" |
5
+ "AS" |
6
+ "AD" |
7
+ "AO" |
8
+ "AI" |
9
+ "AG" |
10
+ "AR" |
11
+ "AM" |
12
+ "AW" |
13
+ "AU" |
14
+ "AT" |
15
+ "AZ" |
16
+ "BS" |
17
+ "BH" |
18
+ "BD" |
19
+ "BB" |
20
+ "BY" |
21
+ "BE" |
22
+ "BZ" |
23
+ "BJ" |
24
+ "BM" |
25
+ "BT" |
26
+ "BO" |
27
+ "BA" |
28
+ "BW" |
29
+ "BR" |
30
+ "IO" |
31
+ "VG" |
32
+ "BN" |
33
+ "BG" |
34
+ "BF" |
35
+ "BI" |
36
+ "KH" |
37
+ "CM" |
38
+ "CA" |
39
+ "CV" |
40
+ "BQ" |
41
+ "KY" |
42
+ "CF" |
43
+ "TD" |
44
+ "CL" |
45
+ "CN" |
46
+ "CX" |
47
+ "CC" |
48
+ "CO" |
49
+ "KM" |
50
+ "CD" |
51
+ "CG" |
52
+ "CK" |
53
+ "CR" |
54
+ "CI" |
55
+ "HR" |
56
+ "CU" |
57
+ "CW" |
58
+ "CY" |
59
+ "CZ" |
60
+ "DK" |
61
+ "DJ" |
62
+ "DM" |
63
+ "DO" |
64
+ "EC" |
65
+ "EG" |
66
+ "SV" |
67
+ "GQ" |
68
+ "ER" |
69
+ "EE" |
70
+ "ET" |
71
+ "FK" |
72
+ "FO" |
73
+ "FJ" |
74
+ "FI" |
75
+ "FR" |
76
+ "GF" |
77
+ "PF" |
78
+ "GA" |
79
+ "GM" |
80
+ "GE" |
81
+ "DE" |
82
+ "GH" |
83
+ "GI" |
84
+ "GR" |
85
+ "GL" |
86
+ "GD" |
87
+ "GP" |
88
+ "GU" |
89
+ "GT" |
90
+ "GG" |
91
+ "GN" |
92
+ "GW" |
93
+ "GY" |
94
+ "HT" |
95
+ "HN" |
96
+ "HK" |
97
+ "HU" |
98
+ "IS" |
99
+ "IN" |
100
+ "ID" |
101
+ "IR" |
102
+ "IQ" |
103
+ "IE" |
104
+ "IM" |
105
+ "IL" |
106
+ "IT" |
107
+ "JM" |
108
+ "JP" |
109
+ "JE" |
110
+ "JO" |
111
+ "KZ" |
112
+ "KE" |
113
+ "KI" |
114
+ "XK" |
115
+ "KW" |
116
+ "KG" |
117
+ "LA" |
118
+ "LV" |
119
+ "LB" |
120
+ "LS" |
121
+ "LR" |
122
+ "LY" |
123
+ "LI" |
124
+ "LT" |
125
+ "LU" |
126
+ "MO" |
127
+ "MK" |
128
+ "MG" |
129
+ "MW" |
130
+ "MY" |
131
+ "MV" |
132
+ "ML" |
133
+ "MT" |
134
+ "MH" |
135
+ "MQ" |
136
+ "MR" |
137
+ "MU" |
138
+ "YT" |
139
+ "MX" |
140
+ "FM" |
141
+ "MD" |
142
+ "MC" |
143
+ "MN" |
144
+ "ME" |
145
+ "MS" |
146
+ "MA" |
147
+ "MZ" |
148
+ "MM" |
149
+ "NA" |
150
+ "NR" |
151
+ "NP" |
152
+ "NL" |
153
+ "NC" |
154
+ "NZ" |
155
+ "NI" |
156
+ "NE" |
157
+ "NG" |
158
+ "NU" |
159
+ "NF" |
160
+ "KP" |
161
+ "MP" |
162
+ "NO" |
163
+ "OM" |
164
+ "PK" |
165
+ "PW" |
166
+ "PS" |
167
+ "PA" |
168
+ "PG" |
169
+ "PY" |
170
+ "PE" |
171
+ "PH" |
172
+ "PL" |
173
+ "PT" |
174
+ "PR" |
175
+ "QA" |
176
+ "RE" |
177
+ "RO" |
178
+ "RU" |
179
+ "RW" |
180
+ "BL" |
181
+ "SH" |
182
+ "KN" |
183
+ "LC" |
184
+ "MF" |
185
+ "PM" |
186
+ "VC" |
187
+ "WS" |
188
+ "SM" |
189
+ "ST" |
190
+ "SA" |
191
+ "SN" |
192
+ "RS" |
193
+ "SC" |
194
+ "SL" |
195
+ "SG" |
196
+ "SX" |
197
+ "SK" |
198
+ "SI" |
199
+ "SB" |
200
+ "SO" |
201
+ "ZA" |
202
+ "KR" |
203
+ "SS" |
204
+ "ES" |
205
+ "LK" |
206
+ "SD" |
207
+ "SR" |
208
+ "SJ" |
209
+ "SZ" |
210
+ "SE" |
211
+ "CH" |
212
+ "SY" |
213
+ "TW" |
214
+ "TJ" |
215
+ "TZ" |
216
+ "TH" |
217
+ "TL" |
218
+ "TG" |
219
+ "TK" |
220
+ "TO" |
221
+ "TT" |
222
+ "TN" |
223
+ "TR" |
224
+ "TM" |
225
+ "TC" |
226
+ "TV" |
227
+ "VI" |
228
+ "UG" |
229
+ "UA" |
230
+ "AE" |
231
+ "GB" |
232
+ "US" |
233
+ "UY" |
234
+ "UZ" |
235
+ "VU" |
236
+ "VA" |
237
+ "VE" |
238
+ "VN" |
239
+ "WF" |
240
+ "EH" |
241
+ "YE" |
242
+ "ZM" |
243
+ "ZW" |
244
+ "AX";
@@ -0,0 +1,222 @@
1
+ import { CdkConnectedOverlay, CdkOverlayOrigin } from "@angular/cdk/overlay";
2
+ import { NgClass, NgOptimizedImage } from "@angular/common";
3
+ import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, inject, input, InputSignal, OnDestroy, Signal, signal, WritableSignal } from "@angular/core";
4
+ import { toSignal } from "@angular/core/rxjs-interop";
5
+ import { AbstractControl, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from "@angular/forms";
6
+ import { MatFormField, MatPrefix } from "@angular/material/form-field";
7
+ import { MatInput, MatInputModule } from "@angular/material/input";
8
+ import { ControlBase } from "../base/control-base";
9
+ import { COUNTRIES, DEFAULT_COUNTRY } from "./countries.const";
10
+ import { Country } from "./country";
11
+ import { ISO2 } from "./iso2.type";
12
+ import { Mobile } from "./mobile";
13
+ import { Phone } from "./phone";
14
+
15
+ @Component({
16
+ selector: "iss-ctrl-mobile",
17
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
18
+ imports: [
19
+ ReactiveFormsModule,
20
+ NgClass,
21
+ CdkConnectedOverlay,
22
+ CdkOverlayOrigin,
23
+ MatFormField,
24
+ MatInput,
25
+ MatPrefix,
26
+ NgOptimizedImage,
27
+ MatInputModule,
28
+ ],
29
+ providers: [
30
+ {provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true},
31
+ {provide: NG_VALIDATORS, useExisting: MobileControl, multi: true}
32
+ ],
33
+ template: `
34
+ <mat-form-field floatLabel="auto" cdkOverlayOrigin #trigger="cdkOverlayOrigin">
35
+ <mat-label class="fs-16 fc-black">
36
+ <ng-content select="label"></ng-content>
37
+ </mat-label>
38
+ <div class="d-inline-flex align-items-center gap-1 country-flag" matPrefix (click)="toggleCountryCodeMenu()">
39
+ <img
40
+ ngSrc="./flags/{{selectedCountry().code.toLowerCase()}}.svg"
41
+ width="20"
42
+ height="20"
43
+ [alt]="selectedCountry().code.toLowerCase()"
44
+ class="country-flag--image"
45
+ [priority]="true"
46
+ >
47
+ <ds-icon icon="arrow-down" class="fs-12 fc-dark-gray"></ds-icon>
48
+ </div>
49
+ <input
50
+ matInput
51
+ type="tel"
52
+ autocomplete="off"
53
+ (blur)="markAsTouched()"
54
+ (keydown)="onInput($event)"
55
+ (input)="emit()"
56
+ [formControl]="ctrl"
57
+ [placeholder]="selectedCountry().placeholder"
58
+ />
59
+ </mat-form-field>
60
+ <ng-template
61
+ cdkConnectedOverlay
62
+ [cdkConnectedOverlayHasBackdrop]="true"
63
+ (backdropClick)="closeCountryCodeMenu()"
64
+ [cdkConnectedOverlayGrowAfterOpen]="true"
65
+ [cdkConnectedOverlayOrigin]="trigger"
66
+ [cdkConnectedOverlayOpen]="isOpen()"
67
+ >
68
+ <div class="country-dropdown bc-white box-shadow p-2">
69
+ <div class="search-container">
70
+ <mat-form-field>
71
+ <input matInput id="country-search-box" [formControl]="searchInput" (click)="$event.stopPropagation()" />
72
+ </mat-form-field>
73
+ </div>
74
+ <ul class="country-list">
75
+ @for (country of filteredCountries(); track $index) {
76
+ <li
77
+ #countryEl
78
+ [ngClass]="country.order > 1 ? 'preferredCounty' : ''"
79
+ class="d-flex align-items-center gap-2 cursor-pointer p-2"
80
+ (click)="onSelectCountry(country)"
81
+ >
82
+ @defer (on viewport(countryEl)) {
83
+ <img ngSrc="./flags/{{country.code.toLowerCase()}}.svg" width="20" height="20" alt="" class="country-flag--image">
84
+ }
85
+ <span class="fs-12 fc-dark-gray">(+{{ country.dailCode }})</span>
86
+ <span class="fs-12 fc-black">{{ country.name }}</span>
87
+ </li>
88
+ }
89
+ </ul>
90
+ </div>
91
+ </ng-template>
92
+ `,
93
+ styles: `
94
+ .country-flag {
95
+ border-inline-end: var(--input-border);
96
+ padding-inline-end: .5rem;
97
+ margin-inline-end: .5rem;
98
+ cursor: pointer;
99
+ }
100
+ `
101
+ })
102
+ export class MobileControl extends ControlBase implements OnDestroy, Validator {
103
+ phoneService: Phone = inject(Phone);
104
+ isOpen: WritableSignal<boolean> = signal(false);
105
+ selectedCountry: WritableSignal<Country> = signal<Country>(DEFAULT_COUNTRY);
106
+ preferredCountries: InputSignal<ISO2[]> = input<ISO2[]>(["SA"]);
107
+ searchInput: FormControl = new FormControl("");
108
+ filteredCountries: Signal<Country[]> = computed(() => this.#searchInCountries());
109
+ #ctrlChanges: Signal<string> = toSignal(this.ctrl.valueChanges);
110
+ #searchQuery: Signal<string> = toSignal(this.searchInput.valueChanges);
111
+ #disabledEffect: EffectRef = effect(() => {
112
+ if (this.disabled()) {
113
+ this.ctrl.disable();
114
+ } else {
115
+ this.ctrl.enable();
116
+ }
117
+ });
118
+
119
+ override writeValue(value: string) {
120
+ if (value) {
121
+ const mobileObject = this.phoneService.getPhoneNumberObject(value);
122
+ if (mobileObject) {
123
+ this.selectedCountry.set(mobileObject);
124
+ this.emitOnChangeEvent(this.selectedCountry());
125
+ }
126
+ this.ctrl.setValue(mobileObject?.nationalNumber);
127
+ }
128
+ }
129
+
130
+ emit() {
131
+ if (this.#ctrlChanges()) {
132
+ const mobileInput = `+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`;
133
+ const numberObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(mobileInput);
134
+ if (numberObject) {
135
+ this.selectedCountry.set(numberObject);
136
+ this.propagateValue(`+${numberObject.dailCode}${numberObject.nationalNumber}`);
137
+ this.emitOnChangeEvent(this.selectedCountry());
138
+ } else {
139
+ this.propagateValue(mobileInput);
140
+ this.emitOnChangeEvent(this.selectedCountry());
141
+ }
142
+ } else {
143
+ this.propagateValue(null);
144
+ this.emitOnChangeEvent(null);
145
+ }
146
+ }
147
+
148
+ override validate(control: AbstractControl): ValidationErrors | null {
149
+ if (!control.getRawValue()) {
150
+ return null;
151
+ }
152
+
153
+ const error: any = {invalidPhoneNumber: {accepted: this.selectedCountry().placeholder, input: control.getRawValue()}};
154
+ const isValid: boolean = this.phoneService.validate(control.getRawValue());
155
+ if (isValid) {
156
+ return null;
157
+ }
158
+
159
+ return error;
160
+ }
161
+
162
+ ngOnDestroy() {
163
+ this.#disabledEffect.destroy();
164
+ }
165
+
166
+ protected onInput(event: KeyboardEvent) {
167
+ const allowedChars = /[0-9+\-()]/;
168
+ const allowedCtrlChars = /[axcv]/; // Allows copy-pasting
169
+ const allowedOtherKeys = [
170
+ "ArrowLeft",
171
+ "ArrowUp",
172
+ "ArrowRight",
173
+ "ArrowDown",
174
+ "Home",
175
+ "End",
176
+ "Insert",
177
+ "Delete",
178
+ "Backspace",
179
+ ];
180
+ if (!allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key)) {
181
+ event.preventDefault();
182
+ }
183
+ }
184
+
185
+ protected onSelectCountry(country: Country) {
186
+ this.selectedCountry.set(country);
187
+ this.searchInput.setValue("");
188
+ this.closeCountryCodeMenu();
189
+ this.propagateValue(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
190
+ this.emitOnChangeEvent(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
191
+ }
192
+
193
+ protected closeCountryCodeMenu() {
194
+ this.isOpen.set(false);
195
+ }
196
+
197
+ protected toggleCountryCodeMenu() {
198
+ this.isOpen.update((isOpen: boolean) => !isOpen);
199
+ }
200
+
201
+ #sortCountries() {
202
+ return COUNTRIES.map((country: Country) => {
203
+ if (this.preferredCountries().includes(country.code)) {
204
+ country.order = country.priority + (-1 * (this.preferredCountries().indexOf(country.code) - this.preferredCountries().length)) * 100;
205
+ }
206
+ return country;
207
+ }).sort((a, b) => b.order - a.order);
208
+ }
209
+
210
+ #searchInCountries(): Country[] {
211
+ if (this.#searchQuery()) {
212
+ return this.#sortCountries().filter((country: Country) => {
213
+ return (
214
+ country.code.toLowerCase().includes(this.#searchQuery())
215
+ || country.name.toLowerCase().includes(this.#searchQuery())
216
+ || country.dailCode.toLowerCase().includes(this.#searchQuery())
217
+ );
218
+ });
219
+ }
220
+ return this.#sortCountries();
221
+ }
222
+ }
@@ -0,0 +1,28 @@
1
+ import { Component } from "@angular/core";
2
+ import { ReactiveFormsModule } from "@angular/forms";
3
+ import { VIEW_PROVIDER } from "../../../shared/constants/view-provider.const";
4
+ import { FieldBase } from "../base/field-base";
5
+ import { MobileControl } from "./mobile.control";
6
+ import { MobileViewer } from "./mobile.viewer";
7
+
8
+ @Component({
9
+ selector: "iss-field-mobile",
10
+ viewProviders: [VIEW_PROVIDER],
11
+ imports: [
12
+ ReactiveFormsModule,
13
+ MobileControl,
14
+ MobileViewer
15
+ ],
16
+ template: `
17
+ @if (field.visible()) {
18
+ @if (field.mode() === "edit") {
19
+ <iss-ctrl-mobile [formControlName]="field.name">
20
+ <label>{{ field.label() }}</label>
21
+ </iss-ctrl-mobile>
22
+ } @else {
23
+ <iss-viewer-mobile [field]="field" />
24
+ }
25
+ }
26
+ `
27
+ })
28
+ export class MobileField extends FieldBase {}
@@ -0,0 +1,12 @@
1
+ import { ISO2 } from "./iso2.type";
2
+
3
+ export interface Mobile {
4
+ dailCode: string;
5
+ code: ISO2;
6
+ nationalNumber: string;
7
+ internationalNumber: string;
8
+ placeholder: string;
9
+ name: string;
10
+ priority: 0,
11
+ order: 0
12
+ }
@@ -0,0 +1,10 @@
1
+ import { Component } from "@angular/core";
2
+ import { ViewerBase } from "../base/viewer-base";
3
+
4
+ @Component({
5
+ selector: "iss-viewer-mobile",
6
+ template: `
7
+ <p>{{ field().value }}</p>
8
+ `,
9
+ })
10
+ export class MobileViewer extends ViewerBase {}