iss-ctrl 0.0.11 → 0.0.12

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 (287) hide show
  1. package/fesm2022/{iss-ctrl-iss-ctrl-hz0ibyPg.mjs → iss-ctrl-iss-ctrl-WfIqBEcL.mjs} +1348 -195
  2. package/fesm2022/iss-ctrl-iss-ctrl-WfIqBEcL.mjs.map +1 -0
  3. package/fesm2022/{iss-ctrl-load-event-BW5dKG8R.mjs → iss-ctrl-load-event-SlQmVmyf.mjs} +3 -3
  4. package/fesm2022/{iss-ctrl-load-event-BW5dKG8R.mjs.map → iss-ctrl-load-event-SlQmVmyf.mjs.map} +1 -1
  5. package/fesm2022/{iss-ctrl-load-options-event-ClX9TiiD.mjs → iss-ctrl-load-options-event-CBejHpME.mjs} +3 -3
  6. package/fesm2022/{iss-ctrl-load-options-event-ClX9TiiD.mjs.map → iss-ctrl-load-options-event-CBejHpME.mjs.map} +1 -1
  7. package/fesm2022/{iss-ctrl-load-value-event-DThpI9BA.mjs → iss-ctrl-load-value-event-Bu9-rZ6T.mjs} +3 -3
  8. package/fesm2022/{iss-ctrl-load-value-event-DThpI9BA.mjs.map → iss-ctrl-load-value-event-Bu9-rZ6T.mjs.map} +1 -1
  9. package/fesm2022/{iss-ctrl-note.field-4uLl0oS_.mjs → iss-ctrl-note.field-onDjqI_X.mjs} +24 -2
  10. package/fesm2022/iss-ctrl-note.field-onDjqI_X.mjs.map +1 -0
  11. package/fesm2022/{iss-ctrl-replace-api-keys-BQL9zimJ.mjs → iss-ctrl-replace-api-keys-Chwe42Nu.mjs} +2 -2
  12. package/fesm2022/{iss-ctrl-replace-api-keys-BQL9zimJ.mjs.map → iss-ctrl-replace-api-keys-Chwe42Nu.mjs.map} +1 -1
  13. package/fesm2022/{iss-ctrl-set-value-event-BbEYFBe3.mjs → iss-ctrl-set-value-event-DiHESiPT.mjs} +2 -2
  14. package/fesm2022/{iss-ctrl-set-value-event-BbEYFBe3.mjs.map → iss-ctrl-set-value-event-DiHESiPT.mjs.map} +1 -1
  15. package/fesm2022/{iss-ctrl-table.field-kPIwve-M.mjs → iss-ctrl-table.field-DxwfNXNc.mjs} +77 -2
  16. package/fesm2022/iss-ctrl-table.field-DxwfNXNc.mjs.map +1 -0
  17. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs → iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs} +2 -2
  18. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs.map → iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs.map} +1 -1
  19. package/fesm2022/{iss-ctrl-user-picker.field-l-0bW6lP.mjs → iss-ctrl-user-picker.field-Mqi37i7D.mjs} +33 -8
  20. package/fesm2022/iss-ctrl-user-picker.field-Mqi37i7D.mjs.map +1 -0
  21. package/fesm2022/iss-ctrl.mjs +1 -1
  22. package/package.json +1 -1
  23. package/types/iss-ctrl.d.ts +1117 -0
  24. package/fesm2022/iss-ctrl-iss-ctrl-hz0ibyPg.mjs.map +0 -1
  25. package/fesm2022/iss-ctrl-note.field-4uLl0oS_.mjs.map +0 -1
  26. package/fesm2022/iss-ctrl-table.field-kPIwve-M.mjs.map +0 -1
  27. package/fesm2022/iss-ctrl-user-picker.field-l-0bW6lP.mjs.map +0 -1
  28. package/src/components/controls/mobile/flags/ad.svg +0 -282
  29. package/src/components/controls/mobile/flags/ae.svg +0 -6
  30. package/src/components/controls/mobile/flags/af.svg +0 -9
  31. package/src/components/controls/mobile/flags/ag.svg +0 -15
  32. package/src/components/controls/mobile/flags/ai.svg +0 -35
  33. package/src/components/controls/mobile/flags/al.svg +0 -7
  34. package/src/components/controls/mobile/flags/am.svg +0 -5
  35. package/src/components/controls/mobile/flags/ao.svg +0 -19
  36. package/src/components/controls/mobile/flags/aq.svg +0 -45
  37. package/src/components/controls/mobile/flags/ar.svg +0 -66
  38. package/src/components/controls/mobile/flags/as.svg +0 -225
  39. package/src/components/controls/mobile/flags/at.svg +0 -4
  40. package/src/components/controls/mobile/flags/au.svg +0 -32
  41. package/src/components/controls/mobile/flags/aw.svg +0 -11
  42. package/src/components/controls/mobile/flags/ax.svg +0 -11
  43. package/src/components/controls/mobile/flags/az.svg +0 -11
  44. package/src/components/controls/mobile/flags/ba.svg +0 -18
  45. package/src/components/controls/mobile/flags/bb.svg +0 -11
  46. package/src/components/controls/mobile/flags/bd.svg +0 -4
  47. package/src/components/controls/mobile/flags/be.svg +0 -5
  48. package/src/components/controls/mobile/flags/bf.svg +0 -14
  49. package/src/components/controls/mobile/flags/bg.svg +0 -5
  50. package/src/components/controls/mobile/flags/bh.svg +0 -4
  51. package/src/components/controls/mobile/flags/bi.svg +0 -26
  52. package/src/components/controls/mobile/flags/bj.svg +0 -5
  53. package/src/components/controls/mobile/flags/bl.svg +0 -5
  54. package/src/components/controls/mobile/flags/bm.svg +0 -374
  55. package/src/components/controls/mobile/flags/bn.svg +0 -70
  56. package/src/components/controls/mobile/flags/bo.svg +0 -3625
  57. package/src/components/controls/mobile/flags/bq.svg +0 -5
  58. package/src/components/controls/mobile/flags/br.svg +0 -92
  59. package/src/components/controls/mobile/flags/bs.svg +0 -5
  60. package/src/components/controls/mobile/flags/bt.svg +0 -487
  61. package/src/components/controls/mobile/flags/bv.svg +0 -11
  62. package/src/components/controls/mobile/flags/bw.svg +0 -5
  63. package/src/components/controls/mobile/flags/by.svg +0 -15
  64. package/src/components/controls/mobile/flags/bz.svg +0 -629
  65. package/src/components/controls/mobile/flags/ca.svg +0 -7
  66. package/src/components/controls/mobile/flags/cc.svg +0 -33
  67. package/src/components/controls/mobile/flags/cd.svg +0 -5
  68. package/src/components/controls/mobile/flags/cf.svg +0 -7
  69. package/src/components/controls/mobile/flags/cg.svg +0 -5
  70. package/src/components/controls/mobile/flags/ch.svg +0 -4
  71. package/src/components/controls/mobile/flags/ci.svg +0 -5
  72. package/src/components/controls/mobile/flags/ck.svg +0 -29
  73. package/src/components/controls/mobile/flags/cl.svg +0 -14
  74. package/src/components/controls/mobile/flags/cm.svg +0 -15
  75. package/src/components/controls/mobile/flags/cn.svg +0 -11
  76. package/src/components/controls/mobile/flags/co.svg +0 -5
  77. package/src/components/controls/mobile/flags/cr.svg +0 -1332
  78. package/src/components/controls/mobile/flags/cu.svg +0 -6
  79. package/src/components/controls/mobile/flags/cv.svg +0 -24
  80. package/src/components/controls/mobile/flags/cw.svg +0 -16
  81. package/src/components/controls/mobile/flags/cx.svg +0 -24
  82. package/src/components/controls/mobile/flags/cy.svg +0 -13
  83. package/src/components/controls/mobile/flags/cz.svg +0 -5
  84. package/src/components/controls/mobile/flags/de.svg +0 -5
  85. package/src/components/controls/mobile/flags/dj.svg +0 -6
  86. package/src/components/controls/mobile/flags/dk.svg +0 -5
  87. package/src/components/controls/mobile/flags/dm.svg +0 -198
  88. package/src/components/controls/mobile/flags/do.svg +0 -238
  89. package/src/components/controls/mobile/flags/dz.svg +0 -5
  90. package/src/components/controls/mobile/flags/ec.svg +0 -1292
  91. package/src/components/controls/mobile/flags/ee.svg +0 -5
  92. package/src/components/controls/mobile/flags/eg.svg +0 -125
  93. package/src/components/controls/mobile/flags/eh.svg +0 -12
  94. package/src/components/controls/mobile/flags/er.svg +0 -9
  95. package/src/components/controls/mobile/flags/es.svg +0 -445
  96. package/src/components/controls/mobile/flags/et.svg +0 -16
  97. package/src/components/controls/mobile/flags/eu.svg +0 -28
  98. package/src/components/controls/mobile/flags/fi.svg +0 -5
  99. package/src/components/controls/mobile/flags/fj.svg +0 -203
  100. package/src/components/controls/mobile/flags/fk.svg +0 -922
  101. package/src/components/controls/mobile/flags/flags.png +0 -0
  102. package/src/components/controls/mobile/flags/flags@2x.png +0 -0
  103. package/src/components/controls/mobile/flags/fm.svg +0 -16
  104. package/src/components/controls/mobile/flags/fo.svg +0 -11
  105. package/src/components/controls/mobile/flags/fonts.css +0 -271
  106. package/src/components/controls/mobile/flags/fr.svg +0 -5
  107. package/src/components/controls/mobile/flags/ga.svg +0 -5
  108. package/src/components/controls/mobile/flags/gb-eng.svg +0 -7
  109. package/src/components/controls/mobile/flags/gb-nir.svg +0 -15
  110. package/src/components/controls/mobile/flags/gb-sct.svg +0 -11
  111. package/src/components/controls/mobile/flags/gb-wls.svg +0 -16
  112. package/src/components/controls/mobile/flags/gb.svg +0 -15
  113. package/src/components/controls/mobile/flags/gd.svg +0 -11
  114. package/src/components/controls/mobile/flags/ge.svg +0 -17
  115. package/src/components/controls/mobile/flags/gf.svg +0 -5
  116. package/src/components/controls/mobile/flags/gg.svg +0 -8
  117. package/src/components/controls/mobile/flags/gh.svg +0 -6
  118. package/src/components/controls/mobile/flags/gi.svg +0 -69
  119. package/src/components/controls/mobile/flags/gl.svg +0 -4
  120. package/src/components/controls/mobile/flags/gm.svg +0 -7
  121. package/src/components/controls/mobile/flags/gn.svg +0 -5
  122. package/src/components/controls/mobile/flags/gp.svg +0 -5
  123. package/src/components/controls/mobile/flags/gq.svg +0 -88
  124. package/src/components/controls/mobile/flags/gr.svg +0 -4
  125. package/src/components/controls/mobile/flags/gs.svg +0 -693
  126. package/src/components/controls/mobile/flags/gt.svg +0 -317
  127. package/src/components/controls/mobile/flags/gu.svg +0 -58
  128. package/src/components/controls/mobile/flags/gw.svg +0 -13
  129. package/src/components/controls/mobile/flags/gy.svg +0 -7
  130. package/src/components/controls/mobile/flags/hk.svg +0 -17
  131. package/src/components/controls/mobile/flags/hm.svg +0 -32
  132. package/src/components/controls/mobile/flags/hn.svg +0 -10
  133. package/src/components/controls/mobile/flags/hr.svg +0 -282
  134. package/src/components/controls/mobile/flags/ht.svg +0 -1470
  135. package/src/components/controls/mobile/flags/hu.svg +0 -5
  136. package/src/components/controls/mobile/flags/id.svg +0 -4
  137. package/src/components/controls/mobile/flags/ie.svg +0 -5
  138. package/src/components/controls/mobile/flags/il.svg +0 -5
  139. package/src/components/controls/mobile/flags/im.svg +0 -33
  140. package/src/components/controls/mobile/flags/in.svg +0 -25
  141. package/src/components/controls/mobile/flags/io.svg +0 -895
  142. package/src/components/controls/mobile/flags/iq.svg +0 -12
  143. package/src/components/controls/mobile/flags/ir.svg +0 -31
  144. package/src/components/controls/mobile/flags/is.svg +0 -5
  145. package/src/components/controls/mobile/flags/it.svg +0 -5
  146. package/src/components/controls/mobile/flags/je.svg +0 -40
  147. package/src/components/controls/mobile/flags/jm.svg +0 -9
  148. package/src/components/controls/mobile/flags/jo.svg +0 -10
  149. package/src/components/controls/mobile/flags/jp.svg +0 -4
  150. package/src/components/controls/mobile/flags/ke.svg +0 -28
  151. package/src/components/controls/mobile/flags/kg.svg +0 -7
  152. package/src/components/controls/mobile/flags/kh.svg +0 -133
  153. package/src/components/controls/mobile/flags/ki.svg +0 -54
  154. package/src/components/controls/mobile/flags/km.svg +0 -13
  155. package/src/components/controls/mobile/flags/kn.svg +0 -24
  156. package/src/components/controls/mobile/flags/kp.svg +0 -16
  157. package/src/components/controls/mobile/flags/kr.svg +0 -16
  158. package/src/components/controls/mobile/flags/kw.svg +0 -6
  159. package/src/components/controls/mobile/flags/ky.svg +0 -153
  160. package/src/components/controls/mobile/flags/kz.svg +0 -49
  161. package/src/components/controls/mobile/flags/la.svg +0 -5
  162. package/src/components/controls/mobile/flags/lb.svg +0 -8
  163. package/src/components/controls/mobile/flags/lc.svg +0 -6
  164. package/src/components/controls/mobile/flags/li.svg +0 -75
  165. package/src/components/controls/mobile/flags/lk.svg +0 -50
  166. package/src/components/controls/mobile/flags/lr.svg +0 -15
  167. package/src/components/controls/mobile/flags/ls.svg +0 -32
  168. package/src/components/controls/mobile/flags/lt.svg +0 -5
  169. package/src/components/controls/mobile/flags/lu.svg +0 -5
  170. package/src/components/controls/mobile/flags/lv.svg +0 -4
  171. package/src/components/controls/mobile/flags/ly.svg +0 -8
  172. package/src/components/controls/mobile/flags/ma.svg +0 -4
  173. package/src/components/controls/mobile/flags/mc.svg +0 -4
  174. package/src/components/controls/mobile/flags/md.svg +0 -102
  175. package/src/components/controls/mobile/flags/me.svg +0 -240
  176. package/src/components/controls/mobile/flags/mf.svg +0 -5
  177. package/src/components/controls/mobile/flags/mg.svg +0 -5
  178. package/src/components/controls/mobile/flags/mh.svg +0 -18
  179. package/src/components/controls/mobile/flags/mk.svg +0 -6
  180. package/src/components/controls/mobile/flags/ml.svg +0 -5
  181. package/src/components/controls/mobile/flags/mm.svg +0 -12
  182. package/src/components/controls/mobile/flags/mn.svg +0 -12
  183. package/src/components/controls/mobile/flags/mo.svg +0 -13
  184. package/src/components/controls/mobile/flags/mp.svg +0 -2919
  185. package/src/components/controls/mobile/flags/mq.svg +0 -5
  186. package/src/components/controls/mobile/flags/mr.svg +0 -5
  187. package/src/components/controls/mobile/flags/ms.svg +0 -59
  188. package/src/components/controls/mobile/flags/mt.svg +0 -52
  189. package/src/components/controls/mobile/flags/mu.svg +0 -6
  190. package/src/components/controls/mobile/flags/mv.svg +0 -8
  191. package/src/components/controls/mobile/flags/mw.svg +0 -24
  192. package/src/components/controls/mobile/flags/mx.svg +0 -1129
  193. package/src/components/controls/mobile/flags/my.svg +0 -12
  194. package/src/components/controls/mobile/flags/mz.svg +0 -50
  195. package/src/components/controls/mobile/flags/na.svg +0 -17
  196. package/src/components/controls/mobile/flags/nc.svg +0 -5
  197. package/src/components/controls/mobile/flags/ne.svg +0 -6
  198. package/src/components/controls/mobile/flags/nf.svg +0 -8
  199. package/src/components/controls/mobile/flags/ng.svg +0 -4
  200. package/src/components/controls/mobile/flags/ni.svg +0 -281
  201. package/src/components/controls/mobile/flags/nl.svg +0 -5
  202. package/src/components/controls/mobile/flags/no.svg +0 -11
  203. package/src/components/controls/mobile/flags/np.svg +0 -33
  204. package/src/components/controls/mobile/flags/nr.svg +0 -8
  205. package/src/components/controls/mobile/flags/nu.svg +0 -23
  206. package/src/components/controls/mobile/flags/nz.svg +0 -37
  207. package/src/components/controls/mobile/flags/om.svg +0 -307
  208. package/src/components/controls/mobile/flags/pa.svg +0 -15
  209. package/src/components/controls/mobile/flags/pe.svg +0 -767
  210. package/src/components/controls/mobile/flags/pf.svg +0 -38
  211. package/src/components/controls/mobile/flags/pg.svg +0 -16
  212. package/src/components/controls/mobile/flags/ph.svg +0 -28
  213. package/src/components/controls/mobile/flags/pk.svg +0 -7
  214. package/src/components/controls/mobile/flags/pl.svg +0 -4
  215. package/src/components/controls/mobile/flags/pm.svg +0 -5
  216. package/src/components/controls/mobile/flags/pn.svg +0 -131
  217. package/src/components/controls/mobile/flags/pr.svg +0 -6
  218. package/src/components/controls/mobile/flags/ps.svg +0 -6
  219. package/src/components/controls/mobile/flags/pt.svg +0 -79
  220. package/src/components/controls/mobile/flags/pw.svg +0 -4
  221. package/src/components/controls/mobile/flags/py.svg +0 -192
  222. package/src/components/controls/mobile/flags/qa.svg +0 -7
  223. package/src/components/controls/mobile/flags/re.svg +0 -5
  224. package/src/components/controls/mobile/flags/ro.svg +0 -5
  225. package/src/components/controls/mobile/flags/rs.svg +0 -1143
  226. package/src/components/controls/mobile/flags/ru.svg +0 -5
  227. package/src/components/controls/mobile/flags/rw.svg +0 -17
  228. package/src/components/controls/mobile/flags/sa.svg +0 -23
  229. package/src/components/controls/mobile/flags/sb.svg +0 -30
  230. package/src/components/controls/mobile/flags/sc.svg +0 -7
  231. package/src/components/controls/mobile/flags/sd.svg +0 -6
  232. package/src/components/controls/mobile/flags/se.svg +0 -5
  233. package/src/components/controls/mobile/flags/sg.svg +0 -15
  234. package/src/components/controls/mobile/flags/sh.svg +0 -15
  235. package/src/components/controls/mobile/flags/si.svg +0 -30
  236. package/src/components/controls/mobile/flags/sj.svg +0 -11
  237. package/src/components/controls/mobile/flags/sk.svg +0 -21
  238. package/src/components/controls/mobile/flags/sl.svg +0 -5
  239. package/src/components/controls/mobile/flags/sm.svg +0 -847
  240. package/src/components/controls/mobile/flags/sn.svg +0 -15
  241. package/src/components/controls/mobile/flags/so.svg +0 -13
  242. package/src/components/controls/mobile/flags/sr.svg +0 -6
  243. package/src/components/controls/mobile/flags/ss.svg +0 -8
  244. package/src/components/controls/mobile/flags/st.svg +0 -16
  245. package/src/components/controls/mobile/flags/stc-icons.css +0 -1
  246. package/src/components/controls/mobile/flags/sv.svg +0 -3368
  247. package/src/components/controls/mobile/flags/sx.svg +0 -172
  248. package/src/components/controls/mobile/flags/sy.svg +0 -6
  249. package/src/components/controls/mobile/flags/sz.svg +0 -54
  250. package/src/components/controls/mobile/flags/tc.svg +0 -88
  251. package/src/components/controls/mobile/flags/td.svg +0 -5
  252. package/src/components/controls/mobile/flags/tf.svg +0 -18
  253. package/src/components/controls/mobile/flags/tg.svg +0 -15
  254. package/src/components/controls/mobile/flags/th.svg +0 -5
  255. package/src/components/controls/mobile/flags/tj.svg +0 -32
  256. package/src/components/controls/mobile/flags/tk.svg +0 -25
  257. package/src/components/controls/mobile/flags/tl.svg +0 -6
  258. package/src/components/controls/mobile/flags/tm.svg +0 -349
  259. package/src/components/controls/mobile/flags/tn.svg +0 -9
  260. package/src/components/controls/mobile/flags/to.svg +0 -8
  261. package/src/components/controls/mobile/flags/tr.svg +0 -6
  262. package/src/components/controls/mobile/flags/tt.svg +0 -5
  263. package/src/components/controls/mobile/flags/tv.svg +0 -18
  264. package/src/components/controls/mobile/flags/tw.svg +0 -12
  265. package/src/components/controls/mobile/flags/tz.svg +0 -13
  266. package/src/components/controls/mobile/flags/ua.svg +0 -4
  267. package/src/components/controls/mobile/flags/ug.svg +0 -46
  268. package/src/components/controls/mobile/flags/um.svg +0 -25
  269. package/src/components/controls/mobile/flags/us.svg +0 -25
  270. package/src/components/controls/mobile/flags/uy.svg +0 -138
  271. package/src/components/controls/mobile/flags/uz.svg +0 -30
  272. package/src/components/controls/mobile/flags/va.svg +0 -277
  273. package/src/components/controls/mobile/flags/vc.svg +0 -9
  274. package/src/components/controls/mobile/flags/ve.svg +0 -28
  275. package/src/components/controls/mobile/flags/vg.svg +0 -96
  276. package/src/components/controls/mobile/flags/vi.svg +0 -311
  277. package/src/components/controls/mobile/flags/vn.svg +0 -12
  278. package/src/components/controls/mobile/flags/vu.svg +0 -20
  279. package/src/components/controls/mobile/flags/wf.svg +0 -7
  280. package/src/components/controls/mobile/flags/ws.svg +0 -14
  281. package/src/components/controls/mobile/flags/xk.svg +0 -11
  282. package/src/components/controls/mobile/flags/ye.svg +0 -5
  283. package/src/components/controls/mobile/flags/yt.svg +0 -5
  284. package/src/components/controls/mobile/flags/za.svg +0 -17
  285. package/src/components/controls/mobile/flags/zm.svg +0 -20
  286. package/src/components/controls/mobile/flags/zw.svg +0 -130
  287. package/src/upgrade.scss +0 -68
@@ -2,8 +2,8 @@ import { HttpClient } from '@angular/common/http';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, Injectable } from '@angular/core';
4
4
  import { map, EMPTY } from 'rxjs';
5
- import { P as PLACEHOLDER_REGEX, H as HOST } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
6
- import { ReplaceApiKeys } from './iss-ctrl-replace-api-keys-BQL9zimJ.mjs';
5
+ import { P as PLACEHOLDER_REGEX, H as HOST } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
6
+ import { ReplaceApiKeys } from './iss-ctrl-replace-api-keys-Chwe42Nu.mjs';
7
7
 
8
8
  const API_RESPONSE_MAPPER = new InjectionToken("Map backend response to required response interface.");
9
9
 
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
57
57
  }] });
58
58
 
59
59
  export { IssHttp as I, LoadEvent as L };
60
- //# sourceMappingURL=iss-ctrl-load-event-BW5dKG8R.mjs.map
60
+ //# sourceMappingURL=iss-ctrl-load-event-SlQmVmyf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-load-event-BW5dKG8R.mjs","sources":["../../../projects/iss/src/shared/tokens/api-response-mapper.token.ts","../../../projects/iss/src/shared/utilities/is-valid-api.util.ts","../../../projects/iss/src/shared/utilities/http.util.service.ts","../../../projects/iss/src/events/load/load-event.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport { Dto } from \"../interfaces/dto\";\r\n\r\nexport const API_RESPONSE_MAPPER: InjectionToken<(res: any) => Dto> = new InjectionToken(\"Map backend response to required response interface.\");\r\n","import { PLACEHOLDER_REGEX } from \"../constants/placeholder-regex.const\";\r\n\r\nexport function isValidEndpoint(api: string): boolean {\r\n if (api.includes(\"undefined\") || api.includes(\"null\")) {\r\n return false;\r\n }\r\n return !api.match(PLACEHOLDER_REGEX)?.length && ![\"undefined\", \"null\"].includes(api);\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { EMPTY, map, Observable } from \"rxjs\";\r\nimport { Dto } from \"../interfaces/dto\";\r\nimport { API_RESPONSE_MAPPER } from \"../tokens/api-response-mapper.token\";\r\nimport { isValidEndpoint } from \"./is-valid-api.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class IssHttp {\r\n #http: HttpClient = inject(HttpClient);\r\n #apiResponseMapper = inject(API_RESPONSE_MAPPER);\r\n\r\n get<T>(url: string): Observable<Dto> {\r\n if (isValidEndpoint(url)) {\r\n return this.#http.get<T>(url).pipe(map((res: any): Dto => this.#apiResponseMapper(res)));\r\n }\r\n return EMPTY;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { EventArgument } from \"../../shared/interfaces/event-strategy\";\r\nimport { HOST } from \"../../shared/tokens/host.token\";\r\nimport { ReplaceApiKeys } from \"./replace-api-keys\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadEvent {\r\n #replaceApiKeysService = inject(ReplaceApiKeys);\r\n #host: string = inject(HOST);\r\n\r\n getApi(args: EventArgument) {\r\n let api;\r\n if (args.action.config.fn) {\r\n api = args.action.config.fn.execute(args);\r\n } else {\r\n api = this.#replaceApiKeysService.execute(args);\r\n }\r\n\r\n return `${this.#host}${api}`;\r\n }\r\n\r\n fetchErrorHandler(args: EventArgument, err: any) {\r\n console.error(err);\r\n args.field.loading.set(false);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAGO,MAAM,mBAAmB,GAAsC,IAAI,cAAc,CAAC,sDAAsD,CAAC;;ACD1I,SAAU,eAAe,CAAC,GAAW,EAAA;AACzC,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrD,QAAA,OAAO,KAAK;IACd;IACA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtF;;MCCa,OAAO,CAAA;AAClB,IAAA,KAAK,GAAe,MAAM,CAAC,UAAU,CAAC;AACtC,IAAA,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEhD,IAAA,GAAG,CAAI,GAAW,EAAA;AAChB,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F;AACA,QAAA,OAAO,KAAK;IACd;uGATW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADK,MAAM,EAAA,CAAA;;2FAClB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCDnB,SAAS,CAAA;AACpB,IAAA,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,IAAA,KAAK,GAAW,MAAM,CAAC,IAAI,CAAC;AAE5B,IAAA,MAAM,CAAC,IAAmB,EAAA;AACxB,QAAA,IAAI,GAAG;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AACzB,YAAA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C;aAAO;YACL,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;QACjD;AAEA,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,EAAG,GAAG,EAAE;IAC9B;IAEA,iBAAiB,CAAC,IAAmB,EAAE,GAAQ,EAAA;AAC7C,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;uGAlBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADG,MAAM,EAAA,CAAA;;2FAClB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"iss-ctrl-load-event-SlQmVmyf.mjs","sources":["../../../projects/iss/src/shared/tokens/api-response-mapper.token.ts","../../../projects/iss/src/shared/utilities/is-valid-api.util.ts","../../../projects/iss/src/shared/utilities/http.util.service.ts","../../../projects/iss/src/events/load/load-event.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport { Dto } from \"../interfaces/dto\";\r\n\r\nexport const API_RESPONSE_MAPPER: InjectionToken<(res: any) => Dto> = new InjectionToken(\"Map backend response to required response interface.\");\r\n","import { PLACEHOLDER_REGEX } from \"../constants/placeholder-regex.const\";\r\n\r\nexport function isValidEndpoint(api: string): boolean {\r\n if (api.includes(\"undefined\") || api.includes(\"null\")) {\r\n return false;\r\n }\r\n return !api.match(PLACEHOLDER_REGEX)?.length && ![\"undefined\", \"null\"].includes(api);\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { EMPTY, map, Observable } from \"rxjs\";\r\nimport { Dto } from \"../interfaces/dto\";\r\nimport { API_RESPONSE_MAPPER } from \"../tokens/api-response-mapper.token\";\r\nimport { isValidEndpoint } from \"./is-valid-api.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class IssHttp {\r\n #http: HttpClient = inject(HttpClient);\r\n #apiResponseMapper = inject(API_RESPONSE_MAPPER);\r\n\r\n get<T>(url: string): Observable<Dto> {\r\n if (isValidEndpoint(url)) {\r\n return this.#http.get<T>(url).pipe(map((res: any): Dto => this.#apiResponseMapper(res)));\r\n }\r\n return EMPTY;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { EventArgument } from \"../../shared/interfaces/event-strategy\";\r\nimport { HOST } from \"../../shared/tokens/host.token\";\r\nimport { ReplaceApiKeys } from \"./replace-api-keys\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadEvent {\r\n #replaceApiKeysService = inject(ReplaceApiKeys);\r\n #host: string = inject(HOST);\r\n\r\n getApi(args: EventArgument) {\r\n let api;\r\n if (args.action.config.fn) {\r\n api = args.action.config.fn.execute(args);\r\n } else {\r\n api = this.#replaceApiKeysService.execute(args);\r\n }\r\n\r\n return `${this.#host}${api}`;\r\n }\r\n\r\n fetchErrorHandler(args: EventArgument, err: any) {\r\n console.error(err);\r\n args.field.loading.set(false);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAGO,MAAM,mBAAmB,GAAsC,IAAI,cAAc,CAAC,sDAAsD,CAAC;;ACD1I,SAAU,eAAe,CAAC,GAAW,EAAA;AACzC,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrD,QAAA,OAAO,KAAK;IACd;IACA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtF;;MCCa,OAAO,CAAA;AAClB,IAAA,KAAK,GAAe,MAAM,CAAC,UAAU,CAAC;AACtC,IAAA,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEhD,IAAA,GAAG,CAAI,GAAW,EAAA;AAChB,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F;AACA,QAAA,OAAO,KAAK;IACd;uGATW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADK,MAAM,EAAA,CAAA;;2FAClB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCDnB,SAAS,CAAA;AACpB,IAAA,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,IAAA,KAAK,GAAW,MAAM,CAAC,IAAI,CAAC;AAE5B,IAAA,MAAM,CAAC,IAAmB,EAAA;AACxB,QAAA,IAAI,GAAG;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AACzB,YAAA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C;aAAO;YACL,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;QACjD;AAEA,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,EAAG,GAAG,EAAE;IAC9B;IAEA,iBAAiB,CAAC,IAAmB,EAAE,GAAQ,EAAA;AAC7C,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;uGAlBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADG,MAAM,EAAA,CAAA;;2FAClB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
- import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
4
- import { L as LoadEvent, I as IssHttp } from './iss-ctrl-load-event-BW5dKG8R.mjs';
3
+ import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
4
+ import { L as LoadEvent, I as IssHttp } from './iss-ctrl-load-event-SlQmVmyf.mjs';
5
5
 
6
6
  class LoadOptionsEvent {
7
7
  loadEvent = inject(LoadEvent);
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
47
47
  }] });
48
48
 
49
49
  export { LoadOptionsEvent };
50
- //# sourceMappingURL=iss-ctrl-load-options-event-ClX9TiiD.mjs.map
50
+ //# sourceMappingURL=iss-ctrl-load-options-event-CBejHpME.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-load-options-event-ClX9TiiD.mjs","sources":["../../../projects/iss/src/events/load/load-options-event.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\r\nimport { Dto } from \"../../shared/interfaces/dto\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { IssHttp } from \"../../shared/utilities/http.util.service\";\r\nimport { LoadEvent } from \"./load-event\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadOptionsEvent implements EventStrategy {\r\n loadEvent = inject(LoadEvent);\r\n #http: IssHttp = inject(IssHttp);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Fired\", \"color: green\");\r\n const api = this.loadEvent.getApi(args);\r\n\r\n args.field.loading.set(true);\r\n this.#http.get(api).subscribe({\r\n next: (response: Dto) => {\r\n args.field.response.set(response.data);\r\n args.field.apiResponse.next(response.data);\r\n\r\n if (args.action.config.afterFetchFn) {\r\n args.action.config.afterFetchFn?.execute(args);\r\n } else {\r\n args.field.options.set(args.field.response());\r\n\r\n if (args.action.config.setValueFromApiResponse) {\r\n args.control.setValue(getPropertyByPath(args.field.response(), args.action.config.setValueFromApiResponse));\r\n }\r\n\r\n if (args.action.config.disableAfterFetching) {\r\n args.control.disable();\r\n }\r\n }\r\n args.field.loading.set(false);\r\n },\r\n error: (err) => {\r\n // todo handle errors\r\n this.loadEvent.fetchErrorHandler(args, err);\r\n },\r\n });\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Reverted\", \"color: red\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;MAQa,gBAAgB,CAAA;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK,GAAY,MAAM,CAAC,OAAO,CAAC;AAEhC,IAAA,IAAI,CAAC,IAAmB,EAAA;QACtB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,qBAAqB,EAAE,cAAc,CAAC;QACvH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE1C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;oBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;gBAChD;qBAAO;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;wBAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC7G;oBAEA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBACxB;gBACF;gBACA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;;gBAEb,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7C,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,IAAmB,EAAA;QACxB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,wBAAwB,EAAE,YAAY,CAAC;IAC1H;uGAvCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADJ,MAAM,EAAA,CAAA;;2FAClB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"iss-ctrl-load-options-event-CBejHpME.mjs","sources":["../../../projects/iss/src/events/load/load-options-event.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\r\nimport { Dto } from \"../../shared/interfaces/dto\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { IssHttp } from \"../../shared/utilities/http.util.service\";\r\nimport { LoadEvent } from \"./load-event\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadOptionsEvent implements EventStrategy {\r\n loadEvent = inject(LoadEvent);\r\n #http: IssHttp = inject(IssHttp);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Fired\", \"color: green\");\r\n const api = this.loadEvent.getApi(args);\r\n\r\n args.field.loading.set(true);\r\n this.#http.get(api).subscribe({\r\n next: (response: Dto) => {\r\n args.field.response.set(response.data);\r\n args.field.apiResponse.next(response.data);\r\n\r\n if (args.action.config.afterFetchFn) {\r\n args.action.config.afterFetchFn?.execute(args);\r\n } else {\r\n args.field.options.set(args.field.response());\r\n\r\n if (args.action.config.setValueFromApiResponse) {\r\n args.control.setValue(getPropertyByPath(args.field.response(), args.action.config.setValueFromApiResponse));\r\n }\r\n\r\n if (args.action.config.disableAfterFetching) {\r\n args.control.disable();\r\n }\r\n }\r\n args.field.loading.set(false);\r\n },\r\n error: (err) => {\r\n // todo handle errors\r\n this.loadEvent.fetchErrorHandler(args, err);\r\n },\r\n });\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Reverted\", \"color: red\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;MAQa,gBAAgB,CAAA;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK,GAAY,MAAM,CAAC,OAAO,CAAC;AAEhC,IAAA,IAAI,CAAC,IAAmB,EAAA;QACtB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,qBAAqB,EAAE,cAAc,CAAC;QACvH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE1C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;oBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;gBAChD;qBAAO;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;wBAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC7G;oBAEA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBACxB;gBACF;gBACA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;;gBAEb,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7C,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,IAAmB,EAAA;QACxB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,wBAAwB,EAAE,YAAY,CAAC;IAC1H;uGAvCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADJ,MAAM,EAAA,CAAA;;2FAClB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
- import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
4
- import { L as LoadEvent, I as IssHttp } from './iss-ctrl-load-event-BW5dKG8R.mjs';
3
+ import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
4
+ import { L as LoadEvent, I as IssHttp } from './iss-ctrl-load-event-SlQmVmyf.mjs';
5
5
 
6
6
  class LoadValueEvent {
7
7
  loadEvent = inject(LoadEvent);
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
49
49
  }] });
50
50
 
51
51
  export { LoadValueEvent };
52
- //# sourceMappingURL=iss-ctrl-load-value-event-DThpI9BA.mjs.map
52
+ //# sourceMappingURL=iss-ctrl-load-value-event-Bu9-rZ6T.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-load-value-event-DThpI9BA.mjs","sources":["../../../projects/iss/src/events/load/load-value-event.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\r\nimport { Dto } from \"../../shared/interfaces/dto\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { IssHttp } from \"../../shared/utilities/http.util.service\";\r\nimport { LoadEvent } from \"./load-event\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadValueEvent implements EventStrategy {\r\n loadEvent = inject(LoadEvent);\r\n #http: IssHttp = inject(IssHttp);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Fired\", \"color: green\");\r\n const api = this.loadEvent.getApi(args);\r\n\r\n args.field.loading.set(true);\r\n this.#http.get(api).subscribe({\r\n next: (response: Dto) => {\r\n args.field.response.set(response.data);\r\n args.field.apiResponse.next(response.data);\r\n\r\n if (args.action.config.afterFetchFn) {\r\n args.action.config.afterFetchFn?.execute(args);\r\n } else {\r\n if (args.action?.config?.setValueFromApiResponse) {\r\n args.control.setValue(getPropertyByPath(args.field.response(), args.action.config.setValueFromApiResponse));\r\n } else {\r\n args.control.setValue(args.field.response());\r\n }\r\n\r\n if (args.action.config.disableAfterFetching) {\r\n args.control.disable();\r\n }\r\n }\r\n\r\n args.field.loading.set(false);\r\n },\r\n error: (err) => {\r\n // todo handle errors\r\n this.loadEvent.fetchErrorHandler(args, err);\r\n },\r\n });\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Reverted\", \"color: red\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;MAQa,cAAc,CAAA;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK,GAAY,MAAM,CAAC,OAAO,CAAC;AAEhC,IAAA,IAAI,CAAC,IAAmB,EAAA;QACtB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,qBAAqB,EAAE,cAAc,CAAC;QACvH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE1C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;oBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;gBAChD;qBAAO;oBACL,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE;wBAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC7G;yBAAO;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC9C;oBAEA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBACxB;gBACF;gBAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;;gBAEb,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7C,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,IAAmB,EAAA;QACxB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,wBAAwB,EAAE,YAAY,CAAC;IAC1H;uGAxCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"iss-ctrl-load-value-event-Bu9-rZ6T.mjs","sources":["../../../projects/iss/src/events/load/load-value-event.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\r\nimport { Dto } from \"../../shared/interfaces/dto\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { IssHttp } from \"../../shared/utilities/http.util.service\";\r\nimport { LoadEvent } from \"./load-event\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class LoadValueEvent implements EventStrategy {\r\n loadEvent = inject(LoadEvent);\r\n #http: IssHttp = inject(IssHttp);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Fired\", \"color: green\");\r\n const api = this.loadEvent.getApi(args);\r\n\r\n args.field.loading.set(true);\r\n this.#http.get(api).subscribe({\r\n next: (response: Dto) => {\r\n args.field.response.set(response.data);\r\n args.field.apiResponse.next(response.data);\r\n\r\n if (args.action.config.afterFetchFn) {\r\n args.action.config.afterFetchFn?.execute(args);\r\n } else {\r\n if (args.action?.config?.setValueFromApiResponse) {\r\n args.control.setValue(getPropertyByPath(args.field.response(), args.action.config.setValueFromApiResponse));\r\n } else {\r\n args.control.setValue(args.field.response());\r\n }\r\n\r\n if (args.action.config.disableAfterFetching) {\r\n args.control.disable();\r\n }\r\n }\r\n\r\n args.field.loading.set(false);\r\n },\r\n error: (err) => {\r\n // todo handle errors\r\n this.loadEvent.fetchErrorHandler(args, err);\r\n },\r\n });\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Load Event Reverted\", \"color: red\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;MAQa,cAAc,CAAA;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK,GAAY,MAAM,CAAC,OAAO,CAAC;AAEhC,IAAA,IAAI,CAAC,IAAmB,EAAA;QACtB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,qBAAqB,EAAE,cAAc,CAAC;QACvH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE1C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;oBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;gBAChD;qBAAO;oBACL,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE;wBAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC7G;yBAAO;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC9C;oBAEA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC3C,wBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBACxB;gBACF;gBAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;;gBAEb,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7C,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,IAAmB,EAAA;QACxB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,wBAAwB,EAAE,YAAY,CAAC;IAC1H;uGAxCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -2,8 +2,30 @@ import * as i0 from '@angular/core';
2
2
  import { Component } from '@angular/core';
3
3
  import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatLabel } from '@angular/material/form-field';
5
- import { F as FieldBase, V as VIEW_PROVIDER } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
5
+ import { F as FieldBase, V as VIEW_PROVIDER } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
6
6
 
7
+ /**
8
+ * `<iss-field-note>` — read-only explanatory text shown inside the form.
9
+ *
10
+ * Rendered by the outlet for fields of type `enrichment`. It has no control and no viewer:
11
+ * it prints its own control value as a paragraph under the label, in both modes.
12
+ *
13
+ * ### Supported `config` keys
14
+ * | Key | Type | Description |
15
+ * | --- | --- | --- |
16
+ * | `hideLabel` | `boolean` | Hides the field label. |
17
+ *
18
+ * ### Other field members used
19
+ * `label()` · `ctrlValue()`
20
+ *
21
+ * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
22
+ * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
23
+ *
24
+ * @example
25
+ * ```json
26
+ * { "name": "intro", "type": "enrichment", "label": "Before you start", "value": "Fill in every required field before submitting." }
27
+ * ```
28
+ */
7
29
  class NoteField extends FieldBase {
8
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NoteField, deps: null, target: i0.ɵɵFactoryTarget.Component });
9
31
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NoteField, isStandalone: true, selector: "iss-field-note", usesInheritance: true, ngImport: i0, template: `
@@ -40,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
40
62
  }] });
41
63
 
42
64
  export { NoteField };
43
- //# sourceMappingURL=iss-ctrl-note.field-4uLl0oS_.mjs.map
65
+ //# sourceMappingURL=iss-ctrl-note.field-onDjqI_X.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iss-ctrl-note.field-onDjqI_X.mjs","sources":["../../../projects/iss/src/components/controls/note/note.field.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/form-field\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldBase } from \"../base/field-base\";\r\n\r\n/**\r\n * `<iss-field-note>` — read-only explanatory text shown inside the form.\r\n *\r\n * Rendered by the outlet for fields of type `enrichment`. It has no control and no viewer:\r\n * it prints its own control value as a paragraph under the label, in both modes.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `ctrlValue()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"intro\", \"type\": \"enrichment\", \"label\": \"Before you start\", \"value\": \"Fill in every required field before submitting.\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-note\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatLabel\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\r\n <p>\r\n {{ ctrlValueChange() }}\r\n </p>\r\n }\r\n `\r\n})\r\nexport class NoteField extends FieldBase {}\r\n"],"names":[],"mappings":";;;;;;AAMA;;;;;;;;;;;;;;;;;;;;;AAqBG;AAmBG,MAAO,SAAU,SAAQ,SAAS,CAAA;uGAA3B,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXV,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAHK,CAAC,aAAa,CAAC,EAAA,CAAA;;2FAgBnB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAlBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,aAAa,EAAE,CAAC,aAAa,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,EAAA;AACF,iBAAA;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable } from '@angular/core';
3
- import { P as PLACEHOLDER_REGEX, g as getPropertyByPath, r as replacePlaceholders } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
3
+ import { P as PLACEHOLDER_REGEX, g as getPropertyByPath, r as replacePlaceholders } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
4
4
 
5
5
  class ReplaceApiKeys {
6
6
  // todo replace {key} with tracked field value [will be deprecated]
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
54
54
  }] });
55
55
 
56
56
  export { ReplaceApiKeys };
57
- //# sourceMappingURL=iss-ctrl-replace-api-keys-BQL9zimJ.mjs.map
57
+ //# sourceMappingURL=iss-ctrl-replace-api-keys-Chwe42Nu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-replace-api-keys-BQL9zimJ.mjs","sources":["../../../projects/iss/src/events/load/replace-api-keys.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { PLACEHOLDER_REGEX } from \"../../shared/constants/placeholder-regex.const\";\r\nimport { EventArgument, EventConfigFn } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { replacePlaceholders } from \"../../shared/utilities/replace-placeholder.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class ReplaceApiKeys implements EventConfigFn {\r\n // todo replace {key} with tracked field value [will be deprecated]\r\n execute(args: EventArgument): string {\r\n // console.log(\"Replace API keys - Default Implementation\");\r\n const api = args.field.api();\r\n const matches = api.match(PLACEHOLDER_REGEX);\r\n if (matches) {\r\n const replacements: any = {};\r\n matches.forEach((match) => {\r\n const replacement = match.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n if (replacement.includes(\".\")) {\r\n const path = this.getPath(replacement);\r\n\r\n if (replacement.includes(args.change.trackedField.name)) {\r\n replacements[replacement] = getPropertyByPath(args.change.trackedField, path);\r\n }\r\n\r\n if (replacement.includes(\"loggedInUser\")) {\r\n const loggedInUserProfileStr = localStorage.getItem(\"profile\");\r\n if (loggedInUserProfileStr) {\r\n const loggedInUserProfile = JSON.parse(loggedInUserProfileStr);\r\n replacements[replacement] = getPropertyByPath(loggedInUserProfile, path);\r\n } else {\r\n throw new Error(\"User profile not found in localStorage. Make sure that localStorage has profile key with user profile.\");\r\n }\r\n }\r\n\r\n if (replacement.includes(\"requestDto\")) {\r\n // todo replace {fromRequestDto}\r\n // todo from where to get requestDto?\r\n }\r\n } else {\r\n replacements[replacement] = args.form.get(replacement)?.getRawValue();\r\n }\r\n });\r\n return replacePlaceholders(api, replacements);\r\n }\r\n\r\n return api;\r\n }\r\n\r\n getPath(replacement: string): string {\r\n const arr = replacement.split(\".\");\r\n arr.shift();\r\n return arr.join(\".\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;MAOa,cAAc,CAAA;;AAEzB,IAAA,OAAO,CAAC,IAAmB,EAAA;;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,MAAM,YAAY,GAAQ,EAAE;AAC5B,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAE3D,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAEtC,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACvD,wBAAA,YAAY,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;oBAC/E;AAEA,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;wBACxC,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;wBAC9D,IAAI,sBAAsB,EAAE;4BAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;4BAC9D,YAAY,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC;wBAC1E;6BAAO;AACL,4BAAA,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC;wBAC3H;oBACF;AAEA,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;;;oBAGxC;gBACF;qBAAO;AACL,oBAAA,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE;gBACvE;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC;QAC/C;AAEA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,CAAC,WAAmB,EAAA;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,GAAG,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB;uGA9CW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"iss-ctrl-replace-api-keys-Chwe42Nu.mjs","sources":["../../../projects/iss/src/events/load/replace-api-keys.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { PLACEHOLDER_REGEX } from \"../../shared/constants/placeholder-regex.const\";\r\nimport { EventArgument, EventConfigFn } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\nimport { replacePlaceholders } from \"../../shared/utilities/replace-placeholder.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class ReplaceApiKeys implements EventConfigFn {\r\n // todo replace {key} with tracked field value [will be deprecated]\r\n execute(args: EventArgument): string {\r\n // console.log(\"Replace API keys - Default Implementation\");\r\n const api = args.field.api();\r\n const matches = api.match(PLACEHOLDER_REGEX);\r\n if (matches) {\r\n const replacements: any = {};\r\n matches.forEach((match) => {\r\n const replacement = match.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n if (replacement.includes(\".\")) {\r\n const path = this.getPath(replacement);\r\n\r\n if (replacement.includes(args.change.trackedField.name)) {\r\n replacements[replacement] = getPropertyByPath(args.change.trackedField, path);\r\n }\r\n\r\n if (replacement.includes(\"loggedInUser\")) {\r\n const loggedInUserProfileStr = localStorage.getItem(\"profile\");\r\n if (loggedInUserProfileStr) {\r\n const loggedInUserProfile = JSON.parse(loggedInUserProfileStr);\r\n replacements[replacement] = getPropertyByPath(loggedInUserProfile, path);\r\n } else {\r\n throw new Error(\"User profile not found in localStorage. Make sure that localStorage has profile key with user profile.\");\r\n }\r\n }\r\n\r\n if (replacement.includes(\"requestDto\")) {\r\n // todo replace {fromRequestDto}\r\n // todo from where to get requestDto?\r\n }\r\n } else {\r\n replacements[replacement] = args.form.get(replacement)?.getRawValue();\r\n }\r\n });\r\n return replacePlaceholders(api, replacements);\r\n }\r\n\r\n return api;\r\n }\r\n\r\n getPath(replacement: string): string {\r\n const arr = replacement.split(\".\");\r\n arr.shift();\r\n return arr.join(\".\");\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;MAOa,cAAc,CAAA;;AAEzB,IAAA,OAAO,CAAC,IAAmB,EAAA;;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,MAAM,YAAY,GAAQ,EAAE;AAC5B,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAE3D,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAEtC,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACvD,wBAAA,YAAY,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;oBAC/E;AAEA,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;wBACxC,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;wBAC9D,IAAI,sBAAsB,EAAE;4BAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;4BAC9D,YAAY,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC;wBAC1E;6BAAO;AACL,4BAAA,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC;wBAC3H;oBACF;AAEA,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;;;oBAGxC;gBACF;qBAAO;AACL,oBAAA,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE;gBACvE;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC;QAC/C;AAEA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,CAAC,WAAmB,EAAA;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,GAAG,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB;uGA9CW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject } from '@angular/core';
3
3
  import { of, map } from 'rxjs';
4
- import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
4
+ import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
5
5
 
6
6
  class GetValueToSet {
7
7
  execute(args) {
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
58
58
  }] });
59
59
 
60
60
  export { SetValueEvent };
61
- //# sourceMappingURL=iss-ctrl-set-value-event-BbEYFBe3.mjs.map
61
+ //# sourceMappingURL=iss-ctrl-set-value-event-DiHESiPT.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-set-value-event-BbEYFBe3.mjs","sources":["../../../projects/iss/src/events/set-value/get-value-to-set.ts","../../../projects/iss/src/events/set-value/set-value-event.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { map, Observable, of } from \"rxjs\";\r\nimport { EventArgument, EventConfigFn } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class GetValueToSet implements EventConfigFn {\r\n execute(args: EventArgument): Observable<string> {\r\n if (args.action?.config?.setValueFromJsonValue) {\r\n return of(getPropertyByPath(args.field.ctrlJsonValue(), args.action.config.setValueFromJsonValue));\r\n }\r\n\r\n if (args.action?.config?.setValueFromApiResponse) {\r\n return args.field.apiResponse.pipe(\r\n map((value: any) => getPropertyByPath(value, args.action.config.setValueFromApiResponse))\r\n );\r\n }\r\n\r\n if (args.action?.config?.setValueFromLoggedInUser) {\r\n\r\n }\r\n\r\n if (args.action?.config?.setValueFromRequestDto) {\r\n\r\n }\r\n\r\n return of(args.change.value);\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { GetValueToSet } from \"./get-value-to-set\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class SetValueEvent implements EventStrategy {\r\n getValueToSetService = inject(GetValueToSet);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Set Value Event Fired\", \"color: green\");\r\n let valueToSet;\r\n if (args.action.config.fn) {\r\n valueToSet = args.action.config.fn.execute(args);\r\n } else {\r\n valueToSet = this.getValueToSetService.execute(args);\r\n }\r\n\r\n valueToSet.subscribe((value: string) => {\r\n args.control.setValue(value, {emitEvent: false});\r\n });\r\n\r\n if (args.action.config.disableAfterSetValue) {\r\n args.control.disable();\r\n }\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Set Value Event Reverted\", \"color: red\");\r\n args.control.setValue(null);\r\n args.action.triggered = false;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iss-ctrl-set-value-event-DiHESiPT.mjs","sources":["../../../projects/iss/src/events/set-value/get-value-to-set.ts","../../../projects/iss/src/events/set-value/set-value-event.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { map, Observable, of } from \"rxjs\";\r\nimport { EventArgument, EventConfigFn } from \"../../shared/interfaces/event-strategy\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class GetValueToSet implements EventConfigFn {\r\n execute(args: EventArgument): Observable<string> {\r\n if (args.action?.config?.setValueFromJsonValue) {\r\n return of(getPropertyByPath(args.field.ctrlJsonValue(), args.action.config.setValueFromJsonValue));\r\n }\r\n\r\n if (args.action?.config?.setValueFromApiResponse) {\r\n return args.field.apiResponse.pipe(\r\n map((value: any) => getPropertyByPath(value, args.action.config.setValueFromApiResponse))\r\n );\r\n }\r\n\r\n if (args.action?.config?.setValueFromLoggedInUser) {\r\n\r\n }\r\n\r\n if (args.action?.config?.setValueFromRequestDto) {\r\n\r\n }\r\n\r\n return of(args.change.value);\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { EventArgument, EventStrategy } from \"../../shared/interfaces/event-strategy\";\r\nimport { GetValueToSet } from \"./get-value-to-set\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class SetValueEvent implements EventStrategy {\r\n getValueToSetService = inject(GetValueToSet);\r\n\r\n fire(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Set Value Event Fired\", \"color: green\");\r\n let valueToSet;\r\n if (args.action.config.fn) {\r\n valueToSet = args.action.config.fn.execute(args);\r\n } else {\r\n valueToSet = this.getValueToSetService.execute(args);\r\n }\r\n\r\n valueToSet.subscribe((value: string) => {\r\n args.control.setValue(value, {emitEvent: false});\r\n });\r\n\r\n if (args.action.config.disableAfterSetValue) {\r\n args.control.disable();\r\n }\r\n args.action.triggered = true;\r\n }\r\n\r\n revert(args: EventArgument) {\r\n console.log(`${args.field.name} listens to ${args.action.trackedFieldName} =>` + \"%c Set Value Event Reverted\", \"color: red\");\r\n args.control.setValue(null);\r\n args.action.triggered = false;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;MAMa,aAAa,CAAA;AACxB,IAAA,OAAO,CAAC,IAAmB,EAAA;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE;YAC9C,OAAO,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACpG;QAEA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,KAAU,KAAK,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAC1F;QACH;QAEA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE;QAEnD;QAEA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE;QAEjD;QAEA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;uGArBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADD,MAAM,EAAA,CAAA;;2FAClB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCAnB,aAAa,CAAA;AACxB,IAAA,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC;AAE5C,IAAA,IAAI,CAAC,IAAmB,EAAA;QACtB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,0BAA0B,EAAE,cAAc,CAAC;AAC5H,QAAA,IAAI,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AACzB,YAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAClD;aAAO;YACL,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;QACtD;AAEA,QAAA,UAAU,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AAClD,QAAA,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC3C,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,IAAmB,EAAA;QACxB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA,GAAA,CAAK,GAAG,6BAA6B,EAAE,YAAY,CAAC;AAC7H,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK;IAC/B;uGA1BW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADD,MAAM,EAAA,CAAA;;2FAClB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { viewChild, ViewContainerRef, inject, DestroyRef, effect, Component, input, signal, computed, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
3
  import * as i1$1 from '@angular/forms';
4
4
  import { FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import { a as ViewerBase, L as Loader, C as ControlBase, b as FormEngine, I as IssField, O as Outlet, F as FieldBase, V as VIEW_PROVIDER, c as ValidationMessageComponent } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
5
+ import { b as ViewerBase, L as Loader, C as ControlBase, c as FormEngine, I as IssField, O as Outlet, F as FieldBase, V as VIEW_PROVIDER, a as ValidationMessageComponent } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { MatFormFieldModule } from '@angular/material/form-field';
8
8
  import * as i1 from '@angular/material/input';
@@ -58,17 +58,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
58
58
  }]
59
59
  }], propDecorators: { containerRef: [{ type: i0.ViewChild, args: ["container", { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
60
60
 
61
+ /**
62
+ * `<iss-ctrl-table>` — repeatable rows, where each row is itself a small form.
63
+ *
64
+ * `columns` are field definitions: the control renders them as the row editor and as the
65
+ * table columns. The form value holds the raw row values, while `jsonValue` carries the
66
+ * resolved payload of each row in and out.
67
+ *
68
+ * @example
69
+ * ```html
70
+ * <iss-ctrl-table
71
+ * formControlName="items"
72
+ * [columns]="columns"
73
+ * [withFilter]="true"
74
+ * [withSort]="true"
75
+ * [withPagination]="true"
76
+ * />
77
+ * ```
78
+ *
79
+ * ### Own inputs
80
+ * | Property | Type | Default | Description |
81
+ * | --- | --- | --- | --- |
82
+ * | `columns` | `any[]` | **required** | Field definitions rendered as columns and as the row editor. |
83
+ * | `jsonValue` | `any` | `null` | Resolved row payload pushed in from outside. |
84
+ * | `withFilter` | `boolean` | `false` | Shows the filter row. |
85
+ * | `withSort` | `boolean` | `false` | Enables column sorting. |
86
+ * | `withPagination` | `boolean` | `false` | Shows the paginator. |
87
+ *
88
+ * ### Inherited from {@link ControlBase}
89
+ * `formControlName` · `readonly` · `className` · `(onChange)`
90
+ *
91
+ * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
92
+ */
61
93
  class TableControl extends ControlBase {
62
94
  // raw child field configs (the same json shape IssField takes), not IssField/host-field
63
95
  // instances: this is what lets the control be dropped into a consumer's own wrapper
64
96
  // without depending on the outlet/form-engine machinery a host IssField carries
97
+ /**
98
+ * Field definitions rendered both as table columns and as the row editor. Required.
99
+ */
65
100
  columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
101
+ /**
102
+ * Shows the filter row above the table.
103
+ */
66
104
  withFilter = input(false, ...(ngDevMode ? [{ debugName: "withFilter" }] : /* istanbul ignore next */ []));
105
+ /**
106
+ * Enables sorting by clicking a column header.
107
+ */
67
108
  withSort = input(false, ...(ngDevMode ? [{ debugName: "withSort" }] : /* istanbul ignore next */ []));
109
+ /**
110
+ * Shows the paginator under the table.
111
+ */
68
112
  withPagination = input(false, ...(ngDevMode ? [{ debugName: "withPagination" }] : /* istanbul ignore next */ []));
69
113
  // the control value stays the "*"/null sentinel (see #emitRows); the row data itself is
70
114
  // carried separately here so a wrapper can push a value in on top of a plain ctrl.setValue,
71
115
  // e.g. `field.ctrl.setValue("*"); field.ctrlJsonValue.set(rows);`
116
+ /**
117
+ * Resolved row payload pushed in from outside; the control ignores payloads it emitted itself.
118
+ */
72
119
  jsonValue = input(null, ...(ngDevMode ? [{ debugName: "jsonValue" }] : /* istanbul ignore next */ []));
73
120
  loader = inject(Loader);
74
121
  drawer = viewChild("drawer", ...(ngDevMode ? [{ debugName: "drawer" }] : /* istanbul ignore next */ []));
@@ -463,6 +510,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
463
510
  `, styles: [".mat-drawer{position:fixed;left:0}\n"] }]
464
511
  }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], withFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "withFilter", required: false }] }], withSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "withSort", required: false }] }], withPagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "withPagination", required: false }] }], jsonValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "jsonValue", required: false }] }], drawer: [{ type: i0.ViewChild, args: ["drawer", { isSignal: true }] }], paginator: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatPaginator), { isSignal: true }] }], sort: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatSort), { isSignal: true }] }] } });
465
512
 
513
+ /**
514
+ * `<iss-field-table>` — repeatable rows, each row being a small form built from the child fields.
515
+ *
516
+ * Rendered by the outlet for fields of type `table`. It renders {@link TableControl} plus the
517
+ * validation message in `edit` mode; there is no `view` mode template, so the field renders
518
+ * nothing outside edit mode.
519
+ *
520
+ * ### Supported `config` keys
521
+ * | Key | Type | Description |
522
+ * | --- | --- | --- |
523
+ * | `tableWithFilter` | `boolean` | Shows the filter row. |
524
+ * | `tableWithSort` | `boolean` | Enables column sorting. |
525
+ * | `tableWithPagination` | `boolean` | Shows the paginator. |
526
+ * | `readonly` | `boolean` | Shows the value but blocks interaction. |
527
+ *
528
+ * ### Other field members used
529
+ * `children` · `ctrlJsonValue()`
530
+ *
531
+ * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
532
+ * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
533
+ *
534
+ * Columns come from `field.children`: every child is both a column and an editor input.
535
+ *
536
+ * @example
537
+ * ```json
538
+ * { "name": "items", "type": "table", "children": [{ "name": "qty", "type": "text_input", "label": "Qty" }] }
539
+ * ```
540
+ */
466
541
  class TableField extends FieldBase {
467
542
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableField, deps: null, target: i0.ɵɵFactoryTarget.Component });
468
543
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TableField, isStandalone: true, selector: "iss-field-table", usesInheritance: true, ngImport: i0, template: `
@@ -514,4 +589,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
514
589
  }] });
515
590
 
516
591
  export { TableField };
517
- //# sourceMappingURL=iss-ctrl-table.field-kPIwve-M.mjs.map
592
+ //# sourceMappingURL=iss-ctrl-table.field-DxwfNXNc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iss-ctrl-table.field-DxwfNXNc.mjs","sources":["../../../projects/iss/src/components/controls/table/field.viewer.ts","../../../projects/iss/src/components/controls/table/table.control.ts","../../../projects/iss/src/components/controls/table/table.field.ts"],"sourcesContent":["import { Component, ComponentRef, DestroyRef, effect, EffectRef, inject, OnDestroy, Signal, Type, viewChild, ViewContainerRef } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { take } from \"rxjs\";\nimport { Loader } from \"../../../shared/services/loader\";\nimport { ViewerBase } from \"../base/viewer-base\";\n\n@Component({\n selector: \"iss-viewer-field\",\n template: `\n <ng-container #container></ng-container>\n `,\n})\nexport class FieldViewer extends ViewerBase implements OnDestroy {\n containerRef: Signal<ViewContainerRef | undefined> = viewChild(\"container\", { read: ViewContainerRef });\n #loader: Loader = inject(Loader);\n #destroyRef: DestroyRef = inject(DestroyRef);\n #fieldEffectRef: EffectRef = effect(() => {\n const container: ViewContainerRef | undefined = this.containerRef();\n const field: any = this.field();\n if (!container || !field) {\n return;\n }\n\n this.#loader.loadViewer(field.type)\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\n .subscribe((viewer: Type<any> | null) => {\n // the effect re-runs whenever the field changes, so the previously rendered\n // viewer has to go before a new one takes its place\n container.clear();\n if (!viewer) {\n return;\n }\n const componentRef: ComponentRef<any> = container.createComponent(viewer);\n componentRef.setInput(\"field\", field);\n });\n });\n\n ngOnDestroy(): void {\n this.#fieldEffectRef.destroy();\n }\n}\n","import { AfterViewInit, Component, computed, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, effect, EffectRef, inject, input, InputSignal, OnDestroy, OnInit, signal, Signal, viewChild, WritableSignal } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatPaginator, MatPaginatorModule } from \"@angular/material/paginator\";\nimport { MatSidenav, MatSidenavModule } from \"@angular/material/sidenav\";\nimport { MatSort, MatSortModule } from \"@angular/material/sort\";\nimport { MatTableDataSource, MatTableModule } from \"@angular/material/table\";\nimport { IssField } from \"../../../shared/classes/iss-field\";\nimport { FormEngine } from \"../../../shared/services/form-engine\";\nimport { Loader } from \"../../../shared/services/loader\";\nimport { Outlet } from \"../../outlet/outlet\";\nimport { ControlBase } from \"../base/control-base\";\nimport { FieldViewer } from \"./field.viewer\";\n\n/**\n * `<iss-ctrl-table>` — repeatable rows, where each row is itself a small form.\n *\n * `columns` are field definitions: the control renders them as the row editor and as the\n * table columns. The form value holds the raw row values, while `jsonValue` carries the\n * resolved payload of each row in and out.\n *\n * @example\n * ```html\n * <iss-ctrl-table\n * formControlName=\"items\"\n * [columns]=\"columns\"\n * [withFilter]=\"true\"\n * [withSort]=\"true\"\n * [withPagination]=\"true\"\n * />\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `columns` | `any[]` | **required** | Field definitions rendered as columns and as the row editor. |\n * | `jsonValue` | `any` | `null` | Resolved row payload pushed in from outside. |\n * | `withFilter` | `boolean` | `false` | Shows the filter row. |\n * | `withSort` | `boolean` | `false` | Enables column sorting. |\n * | `withPagination` | `boolean` | `false` | Shows the paginator. |\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)`\n *\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\n */\n@Component({\n selector: \"iss-ctrl-table\",\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatSidenavModule,\n ReactiveFormsModule,\n Outlet,\n FieldViewer,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: TableControl, multi: true },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: `\n <mat-sidenav-container [hasBackdrop]=\"true\">\n <mat-sidenav #drawer [mode]=\"'over'\" [position]=\"'start'\" [autoFocus]=\"false\">\n <form [formGroup]=\"tableOutletForm\">\n <iss-form-outlet [fields]=\"fields()\"/>\n </form>\n <ds-button (click)=\"saveRow(true)\">save\n </ds-button>\n <ds-button (click)=\"saveRow(false)\">save and add more</ds-button>\n </mat-sidenav>\n <mat-sidenav-content>\n <div>\n <ds-button icon=\"true\" (click)=\"openNewRow()\">\n <ds-icon icon=\"plus\"></ds-icon>\n </ds-button>\n <!--<button mat-raised-button (click)=\"removeRow()\" class=\"demo-button\">Remove data</button>-->\n </div>\n @if (withFilter()) {\n <mat-form-field>\n <mat-label>Filter</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\" placeholder=\"Search in table\" #input>\n </mat-form-field>\n }\n <div class=\"mat-elevation-z8\">\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <tr mat-header-row *matHeaderRowDef=\"fieldNames()\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: fieldNames();\" (click)=\"onRowClick(row)\"></tr>\n\n @for (col of fieldNames(); track col) {\n @if (col !== \"actions\") {\n <ng-container [matColumnDef]=\"col\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header [disabled]=\"!fieldsMap().get(col)?.config?.tableWithSort()\">\n {{ columnLabels()[$index] }}\n </th>\n <td mat-cell *matCellDef=\"let row\">\n @if (viewFieldOf(row, $index); as viewField) {\n <iss-viewer-field [field]=\"viewField\"/>\n }\n </td>\n </ng-container>\n }\n }\n\n <!-- Actions -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header></th>\n <td mat-cell *matCellDef=\"let row\">\n <ds-icon icon=\"eye\" class=\"cursor-pointer\" (click)=\"viewRow(row)\"></ds-icon>\n <ds-icon icon=\"pen\" class=\"cursor-pointer\" (click)=\"editRow(row)\"></ds-icon>\n <ds-icon icon=\"trash\" class=\"cursor-pointer fc-red\" (click)=\"removeRow(row)\"></ds-icon>\n </td>\n </ng-container>\n\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" colspan=\"4\">\n <ds-message type=\"emptyCard\"></ds-message>\n </td>\n </tr>\n </table>\n\n @if (withPagination()) {\n <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page number\"></mat-paginator>\n }\n </div>\n </mat-sidenav-content>\n </mat-sidenav-container>\n `,\n styles: `\n .mat-drawer {\n position: fixed;\n left: 0;\n }\n `\n})\nexport class TableControl extends ControlBase implements OnInit, AfterViewInit, OnDestroy {\n // raw child field configs (the same json shape IssField takes), not IssField/host-field\n // instances: this is what lets the control be dropped into a consumer's own wrapper\n // without depending on the outlet/form-engine machinery a host IssField carries\n /**\n * Field definitions rendered both as table columns and as the row editor. Required.\n */\n columns: InputSignal<any[]> = input.required<any[]>();\n /**\n * Shows the filter row above the table.\n */\n withFilter: InputSignal<boolean> = input(false);\n /**\n * Enables sorting by clicking a column header.\n */\n withSort: InputSignal<boolean> = input(false);\n /**\n * Shows the paginator under the table.\n */\n withPagination: InputSignal<boolean> = input(false);\n // the control value stays the \"*\"/null sentinel (see #emitRows); the row data itself is\n // carried separately here so a wrapper can push a value in on top of a plain ctrl.setValue,\n // e.g. `field.ctrl.setValue(\"*\"); field.ctrlJsonValue.set(rows);`\n /**\n * Resolved row payload pushed in from outside; the control ignores payloads it emitted itself.\n */\n jsonValue: InputSignal<any> = input<any>(null);\n\n loader: Loader = inject(Loader);\n drawer: Signal<MatSidenav | undefined> = viewChild(\"drawer\");\n tableOutletForm: FormGroup = new FormGroup({});\n fields: WritableSignal<IssField[]> = signal<IssField[]>([]);\n columnLabels: Signal<string[]> = computed(() => {\n const labels: string[] = this.fields().map((f: IssField) => f.label());\n labels.push(\"\");\n return labels;\n });\n fieldNames: Signal<string[]> = computed(() => {\n const names = this.fields().map((f: IssField) => f.name);\n names.push(\"actions\");\n return names;\n });\n fieldsMap: Signal<Map<string, IssField>> = computed(() => {\n const m: Map<string, IssField> = new Map<string, IssField>();\n this.fields().forEach((f: IssField) => {\n m.set(f.name, f);\n });\n return m;\n });\n dataSource: MatTableDataSource<TableRow> = this.#newDataSource([]);\n clickedRows = new Set<any>();\n paginator: Signal<MatPaginator | undefined> = viewChild(MatPaginator);\n sort: Signal<MatSort | undefined> = viewChild(MatSort);\n #formEngine: FormEngine = inject(FormEngine);\n #destroyRef: DestroyRef = inject(DestroyRef);\n // view-mode cells are keyed by the row object itself, not by position: sorting and\n // paging reorder dataSource.data while keeping the row references, so an array indexed\n // by the rendered row index would show another row's values\n #rowViewFields: WeakMap<TableRow, IssField[]> = new WeakMap<TableRow, IssField[]>();\n // the values the row editor's fields were built with; viewRow overwrites them to show a\n // stored row, so they have to be put back before the editor is used to add a new one\n #pristineFieldValues: Map<string, string> = new Map<string, string>();\n #fieldValuesOverridden: boolean = false;\n // the last payload this control itself emitted; without this, feeding jsonValue() back\n // into the wrapper's ctrlJsonValue would echo straight back in as a hydration and rebuild\n // dataSource (and the WeakMap-cached view fields) on every single row edit\n #lastEmitted: any = null;\n #hydrateEffectRef: EffectRef = effect(() => {\n const incoming: any = this.jsonValue();\n if (incoming === null || incoming === undefined || incoming === this.#lastEmitted) {\n return;\n }\n this.#hydrateRows(incoming);\n });\n\n // columns() is an input, so it is only guaranteed to be set once Angular runs ngOnInit,\n // not while this class' field initializers run\n ngOnInit(): void {\n const built: IssField[] = this.constructFieldChildren(this.columns());\n this.fields.set(built);\n this.#pristineFieldValues = new Map<string, string>(built.map((f: IssField) => [f.name, f.value]));\n }\n\n // the drawer is a viewChild, so it only exists once the view is initialised\n ngAfterViewInit() {\n this.dataSource.paginator = this.paginator() ?? null;\n this.dataSource.sort = this.sort() ?? null;\n\n this.drawer()?.closedStart\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.tableOutletForm.reset();\n this.tableOutletForm.enable();\n this.#restoreFieldValues();\n });\n }\n\n ngOnDestroy(): void {\n this.#hydrateEffectRef.destroy();\n }\n\n applyFilter(event: Event) {\n const filterValue: string = (event.target as HTMLInputElement).value;\n this.dataSource.filter = filterValue.trim().toLowerCase();\n\n if (this.dataSource.paginator) {\n this.dataSource.paginator.firstPage();\n }\n }\n\n onRowClick(row: any) {\n this.clickedRows.add(row);\n }\n\n // the cell of a row rendered in view mode; the row's view fields are built once and cached\n // against the row itself, so they follow it through sorting, filtering and paging\n viewFieldOf(row: TableRow, index: number): IssField | undefined {\n let viewFields: IssField[] | undefined = this.#rowViewFields.get(row);\n if (!viewFields) {\n viewFields = this.#fieldValuesMapper(row);\n this.#rowViewFields.set(row, viewFields);\n }\n return viewFields[index];\n }\n\n // rows carry a stable id (see #buildRow) but sorting/filtering/paging only ever hand back\n // the same row references, so lookup by reference is simplest\n removeRow(row: TableRow) {\n if (!this.#canModify()) {\n return;\n }\n const index: number = this.dataSource.data.indexOf(row);\n if (index === -1) {\n return;\n }\n const newData = this.dataSource.data.filter((_, i: number) => i !== index);\n this.renderRows(newData);\n }\n\n addRow(values: any, jsonValues?: Map<string, any>) {\n if (!this.#canModify()) {\n return;\n }\n const row: TableRow = this.#buildRow(values, jsonValues);\n this.#rowViewFields.set(row, this.#fieldValuesMapper(row));\n this.renderRows([...this.dataSource.data, row]);\n }\n\n renderRows(rows: TableRow[]) {\n this.dataSource = this.#newDataSource(rows);\n this.dataSource.paginator = this.paginator() ?? null;\n this.dataSource.sort = this.sort() ?? null;\n this.#emitRows(rows);\n }\n\n viewRow(row: TableRow) {\n this.#applyFieldValues(\n (field: IssField) => this.#cellValue(row, field.name),\n (field: IssField) => this.#cellJsonValue(row, field.name)\n );\n this.#fieldValuesOverridden = true;\n this.tableOutletForm.patchValue(this.#toFlatValue(row));\n this.tableOutletForm.disable();\n this.drawer()?.open();\n }\n\n editRow(row: TableRow) {\n if (!this.#canModify()) {\n return;\n }\n this.tableOutletForm.enable();\n this.tableOutletForm.patchValue(this.#toFlatValue(row));\n this.drawer()?.open();\n }\n\n openNewRow(): void {\n if (!this.#canModify()) {\n return;\n }\n this.drawer()?.toggle();\n }\n\n saveRow(closeDrawer: boolean): void {\n if (!this.#canModify()) {\n return;\n }\n const jsonValues = new Map<string, any>(this.fields().map((f: IssField) => [f.name, f.ctrlJsonValue()]));\n this.addRow(this.tableOutletForm.getRawValue(), jsonValues);\n this.tableOutletForm.reset();\n if (closeDrawer) {\n this.drawer()?.close();\n }\n }\n\n private constructFieldChildren(fields: any): IssField[] {\n return fields.map((f: any) => new IssField(f, this.loader));\n }\n\n #restoreFieldValues(): void {\n if (!this.#fieldValuesOverridden) {\n return;\n }\n this.#applyFieldValues(\n (field: IssField) => this.#pristineFieldValues.get(field.name) as string,\n () => null\n );\n this.#fieldValuesOverridden = false;\n }\n\n #applyFieldValues(valueOf: (field: IssField) => string, jsonValueOf: (field: IssField) => any): void {\n this.fields.update((fields: IssField[]): IssField[] => fields.map((field: IssField) => {\n field.value = valueOf(field);\n field.ctrlJsonValue.set(jsonValueOf(field));\n return field;\n }));\n }\n\n // builds the view-mode fields for a row directly from its stored cells, so the value and\n // jsonValue shown always match what was captured when the row was saved\n #fieldValuesMapper(row: TableRow): IssField[] {\n return this.fields().map((field: IssField): any => {\n const fieldWithJsonValue: IssField = this.#formEngine.getField(this.tableOutletForm, field.name) ?? field;\n return {\n name: fieldWithJsonValue.name,\n type: fieldWithJsonValue.type,\n ctrlValue: signal(this.#cellValue(row, field.name)),\n ctrlJsonValue: signal(this.#cellJsonValue(row, field.name)),\n config: fieldWithJsonValue.config,\n };\n });\n }\n\n #canModify(): boolean {\n return !this.ctrl.disabled && !this.readonly();\n }\n\n // sets the CVA-bound control value to the \"*\" sentinel (or null when the table is empty)\n // and emits the full {rows} payload through the onChange output for a wrapper to consume\n #emitRows(rows: TableRow[]): void {\n const submission: { rows: TableRow[] } = this.#toSubmission(rows);\n this.#lastEmitted = submission;\n this.ctrl.setValue(rows.length ? \"*\" : null);\n this.propagateValue();\n this.emitOnChangeEvent(submission);\n }\n\n // rebuilds dataSource from a jsonValue payload pushed in from outside (see the `jsonValue`\n // input); accepts either our own {rows: TableRow[]} shape or a plain array of flat\n // {fieldName: value} row objects\n #hydrateRows(payload: any): void {\n const incomingRows: any[] = Array.isArray(payload?.rows) ? payload.rows : Array.isArray(payload) ? payload : [];\n const rows: TableRow[] = incomingRows.map((row: any) => this.#normalizeRow(row));\n rows.forEach((row: TableRow) => this.#rowViewFields.set(row, this.#fieldValuesMapper(row)));\n this.dataSource = this.#newDataSource(rows);\n this.dataSource.paginator = this.paginator() ?? null;\n this.dataSource.sort = this.sort() ?? null;\n this.ctrl.setValue(rows.length ? \"*\" : null, { emitEvent: false });\n }\n\n #normalizeRow(row: any): TableRow {\n if (Array.isArray(row?.cells)) {\n return { id: row.id ?? crypto.randomUUID(), index: row.index ?? 0, cells: row.cells };\n }\n return this.#buildRow(row);\n }\n\n // the canonical row shape (see TableRow) is used for dataSource.data itself, so the\n // submission is just that shape with the current, post-sort/filter position stamped in\n #toSubmission(rows: TableRow[]): { rows: TableRow[] } {\n return { rows: rows.map((row: TableRow, index: number) => ({ ...row, index })) };\n }\n\n #buildRow(values: any, jsonValues?: Map<string, any>): TableRow {\n return {\n id: crypto.randomUUID(),\n index: this.dataSource.data.length,\n cells: this.fields().map((field: IssField) => ({\n fieldName: field.name,\n value: values[field.name],\n jsonValue: jsonValues?.get(field.name) ?? null,\n })),\n };\n }\n\n #cellValue(row: TableRow, fieldName: string): string {\n return row.cells.find((cell) => cell.fieldName === fieldName)?.value as string;\n }\n\n #cellJsonValue(row: TableRow, fieldName: string): any {\n return row.cells.find((cell) => cell.fieldName === fieldName)?.jsonValue ?? null;\n }\n\n #toFlatValue(row: TableRow): any {\n return Object.fromEntries(row.cells.map((cell) => [cell.fieldName, cell.value]));\n }\n\n #newDataSource(rows: TableRow[]): MatTableDataSource<TableRow> {\n const dataSource: MatTableDataSource<TableRow> = new MatTableDataSource<TableRow>(rows);\n dataSource.filterPredicate = (row: TableRow, filter: string): boolean =>\n row.cells.some((cell) => `${cell.value ?? \"\"}`.toLowerCase().includes(filter));\n dataSource.sortingDataAccessor = (row: TableRow, sortHeaderId: string): string | number =>\n this.#cellValue(row, sortHeaderId) ?? \"\";\n return dataSource;\n }\n}\n\ninterface TableRow {\n id: string;\n index: number;\n cells: { fieldName: string; value: string; jsonValue: any }[];\n}\n","import { Component } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\nimport { FieldBase } from \"../base/field-base\";\nimport { TableControl } from \"./table.control\";\n\n/**\n * `<iss-field-table>` — repeatable rows, each row being a small form built from the child fields.\n *\n * Rendered by the outlet for fields of type `table`. It renders {@link TableControl} plus the\n * validation message in `edit` mode; there is no `view` mode template, so the field renders\n * nothing outside edit mode.\n *\n * ### Supported `config` keys\n * | Key | Type | Description |\n * | --- | --- | --- |\n * | `tableWithFilter` | `boolean` | Shows the filter row. |\n * | `tableWithSort` | `boolean` | Enables column sorting. |\n * | `tableWithPagination` | `boolean` | Shows the paginator. |\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\n *\n * ### Other field members used\n * `children` · `ctrlJsonValue()`\n *\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\n *\n * Columns come from `field.children`: every child is both a column and an editor input.\n *\n * @example\n * ```json\n * { \"name\": \"items\", \"type\": \"table\", \"children\": [{ \"name\": \"qty\", \"type\": \"text_input\", \"label\": \"Qty\" }] }\n * ```\n */\n@Component({\n selector: \"iss-field-table\",\n viewProviders: [VIEW_PROVIDER],\n imports: [\n ReactiveFormsModule,\n TableControl,\n ValidationMessageComponent,\n ],\n template: `\n @if (field.visible()) {\n @if (field.mode() === \"edit\") {\n <iss-ctrl-table\n [formControlName]=\"field.name\"\n [columns]=\"field.children\"\n [withFilter]=\"field.config.tableWithFilter() ?? false\"\n [withSort]=\"field.config.tableWithSort() ?? false\"\n [withPagination]=\"field.config.tableWithPagination() ?? false\"\n [readonly]=\"field.config.readonly() ?? false\"\n [jsonValue]=\"field.ctrlJsonValue()\"\n (onChange)=\"field.ctrlJsonValue.set($event)\"\n />\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\n }\n }\n `\n})\nexport class TableField extends FieldBase {\n}\n"],"names":["i6"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable } from '@angular/core';
3
- import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
3
+ import { g as getPropertyByPath } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
4
4
 
5
5
  class TriggerBasedOnJsonValue {
6
6
  isTriggered(field, change, action, masterField) {
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
21
21
  }] });
22
22
 
23
23
  export { TriggerBasedOnJsonValue };
24
- //# sourceMappingURL=iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs.map
24
+ //# sourceMappingURL=iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs","sources":["../../../projects/iss/src/events/triggers/trigger-based-on-json-value.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { FieldEvent } from \"../../shared/classes/field-event\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { FieldChange } from \"../../shared/interfaces/event-strategy\";\r\nimport { ActionTriggerFn } from \"../../shared/interfaces/event-trigger-fn\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class TriggerBasedOnJsonValue implements ActionTriggerFn {\r\n isTriggered(field: IssField, change: FieldChange, action: FieldEvent, masterField: IssField): boolean {\r\n if (masterField) {\r\n const actionTriggersOnAnyValue: boolean = action.value === \"*\" && (change.value !== null && change.value !== undefined);\r\n const triggerValue = getPropertyByPath(masterField.ctrlJsonValue(), action.config?.triggerFromJsonValue);\r\n const actionTriggersOnSpecificValue: boolean = triggerValue === action.value;\r\n return actionTriggersOnAnyValue || actionTriggersOnSpecificValue;\r\n }\r\n return false;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;MAQa,uBAAuB,CAAA;AAClC,IAAA,WAAW,CAAC,KAAe,EAAE,MAAmB,EAAE,MAAkB,EAAE,WAAqB,EAAA;QACzF,IAAI,WAAW,EAAE;YACf,MAAM,wBAAwB,GAAY,MAAM,CAAC,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;AACvH,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;AACxG,YAAA,MAAM,6BAA6B,GAAY,YAAY,KAAK,MAAM,CAAC,KAAK;YAC5E,OAAO,wBAAwB,IAAI,6BAA6B;QAClE;AACA,QAAA,OAAO,KAAK;IACd;uGATW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADX,MAAM,EAAA,CAAA;;2FAClB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs","sources":["../../../projects/iss/src/events/triggers/trigger-based-on-json-value.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { FieldEvent } from \"../../shared/classes/field-event\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { FieldChange } from \"../../shared/interfaces/event-strategy\";\r\nimport { ActionTriggerFn } from \"../../shared/interfaces/event-trigger-fn\";\r\nimport { getPropertyByPath } from \"../../shared/utilities/get-property-by-path.util\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class TriggerBasedOnJsonValue implements ActionTriggerFn {\r\n isTriggered(field: IssField, change: FieldChange, action: FieldEvent, masterField: IssField): boolean {\r\n if (masterField) {\r\n const actionTriggersOnAnyValue: boolean = action.value === \"*\" && (change.value !== null && change.value !== undefined);\r\n const triggerValue = getPropertyByPath(masterField.ctrlJsonValue(), action.config?.triggerFromJsonValue);\r\n const actionTriggersOnSpecificValue: boolean = triggerValue === action.value;\r\n return actionTriggersOnAnyValue || actionTriggersOnSpecificValue;\r\n }\r\n return false;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;MAQa,uBAAuB,CAAA;AAClC,IAAA,WAAW,CAAC,KAAe,EAAE,MAAmB,EAAE,MAAkB,EAAE,WAAqB,EAAA;QACzF,IAAI,WAAW,EAAE;YACf,MAAM,wBAAwB,GAAY,MAAM,CAAC,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;AACvH,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;AACxG,YAAA,MAAM,6BAA6B,GAAY,YAAY,KAAK,MAAM,CAAC,KAAK;YAC5E,OAAO,wBAAwB,IAAI,6BAA6B;QAClE;AACA,QAAA,OAAO,KAAK;IACd;uGATW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADX,MAAM,EAAA,CAAA;;2FAClB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
@@ -3,8 +3,33 @@ import { inject, signal, CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { MatSidenav, MatSidenavContainer } from '@angular/material/sidenav';
5
5
  import { Subject, debounceTime, distinctUntilChanged, switchMap, map } from 'rxjs';
6
- import { F as FieldBase, E as Employee, V as VIEW_PROVIDER, S as SelectControl, c as ValidationMessageComponent } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
6
+ import { F as FieldBase, E as Employee, V as VIEW_PROVIDER, S as SelectControl, a as ValidationMessageComponent } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
7
7
 
8
+ /**
9
+ * `<iss-user-picker>` — employee lookup, searched against the directory API.
10
+ *
11
+ * Rendered by the outlet for fields of type `userPicker`. In `edit` mode it renders
12
+ * {@link SelectControl} — always multi-select — over the employees returned by the search;
13
+ * in `view` mode the stored value as plain text. Selecting a user opens a details drawer.
14
+ *
15
+ * ### Supported `config` keys
16
+ * | Key | Type | Description |
17
+ * | --- | --- | --- |
18
+ * | `min` | `number` | Minimum number of users required. |
19
+ * | `max` | `number` | Maximum number of users allowed. |
20
+ * | `readonly` | `boolean` | Shows the value but blocks interaction. |
21
+ *
22
+ * ### Other field members used
23
+ * `label()` · `value` · `ctrlJsonValue()`
24
+ *
25
+ * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
26
+ * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
27
+ *
28
+ * @example
29
+ * ```json
30
+ * { "name": "approvers", "type": "userPicker", "label": "Approvers", "config": { "max": 3 } }
31
+ * ```
32
+ */
8
33
  class UserPickerField extends FieldBase {
9
34
  userImageHost = "https://igateapp.stc.com.sa";
10
35
  employeeService = inject(Employee);
@@ -49,9 +74,9 @@ class UserPickerField extends FieldBase {
49
74
  [formControlName]="field.name"
50
75
  [min]="field.config.min() ?? null"
51
76
  [max]="field.config.max() ?? null"
52
- [options]="options()"
53
- [multiple]="true"
54
- [readonly]="field.config.readonly() ?? false"
77
+ [options]="options()"
78
+ [multiple]="true"
79
+ [readonly]="field.config.readonly() ?? false"
55
80
  (onQueryChange)="search($event)"
56
81
  (onChange)="updateField($event)"
57
82
  >
@@ -129,9 +154,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
129
154
  [formControlName]="field.name"
130
155
  [min]="field.config.min() ?? null"
131
156
  [max]="field.config.max() ?? null"
132
- [options]="options()"
133
- [multiple]="true"
134
- [readonly]="field.config.readonly() ?? false"
157
+ [options]="options()"
158
+ [multiple]="true"
159
+ [readonly]="field.config.readonly() ?? false"
135
160
  (onQueryChange)="search($event)"
136
161
  (onChange)="updateField($event)"
137
162
  >
@@ -197,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
197
222
  }], ctorParameters: () => [] });
198
223
 
199
224
  export { UserPickerField };
200
- //# sourceMappingURL=iss-ctrl-user-picker.field-l-0bW6lP.mjs.map
225
+ //# sourceMappingURL=iss-ctrl-user-picker.field-Mqi37i7D.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iss-ctrl-user-picker.field-Mqi37i7D.mjs","sources":["../../../projects/iss/src/components/controls/user-picker/user-picker.field.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, signal } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { MatSidenav, MatSidenavContainer } from \"@angular/material/sidenav\";\r\nimport { debounceTime, distinctUntilChanged, map, Subject, switchMap } from \"rxjs\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { SelectControl } from \"../select/select.control\";\r\nimport { Employee } from \"./employee\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\n\r\n/**\r\n * `<iss-user-picker>` — employee lookup, searched against the directory API.\r\n *\r\n * Rendered by the outlet for fields of type `userPicker`. In `edit` mode it renders\r\n * {@link SelectControl} — always multi-select — over the employees returned by the search;\r\n * in `view` mode the stored value as plain text. Selecting a user opens a details drawer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `min` | `number` | Minimum number of users required. |\r\n * | `max` | `number` | Maximum number of users allowed. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `value` · `ctrlJsonValue()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"approvers\", \"type\": \"userPicker\", \"label\": \"Approvers\", \"config\": { \"max\": 3 } }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-user-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n SelectControl,\r\n ValidationMessageComponent,\r\n MatSidenav,\r\n MatSidenavContainer,\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-select\r\n [formControlName]=\"field.name\"\r\n [min]=\"field.config.min() ?? null\"\r\n [max]=\"field.config.max() ?? null\"\r\n [options]=\"options()\"\r\n [multiple]=\"true\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n (onQueryChange)=\"search($event)\"\r\n (onChange)=\"updateField($event)\"\r\n >\r\n <label>{{ field.label() }}</label>\r\n <ng-template let-item #optionTemplate>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-avatar size=\"x-small\" [attr.image]=\"item.image\"></ds-avatar>\r\n <span class=\"fs-14 fw-medium fc-black\">{{ item.name }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template let-item #cardViewerTemplate>\r\n <div (click)=\"showUserData(item);drawer.open()\">\r\n {{ item.name }}\r\n </div>\r\n </ng-template>\r\n </iss-ctrl-select>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <p>{{ field.value }}</p>\r\n }\r\n }\r\n <mat-sidenav-container [hasBackdrop]=\"true\">\r\n <mat-sidenav #drawer [mode]=\"'over'\" [position]=\"'start'\" [autoFocus]=\"false\">\r\n <div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> Employee Information </h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"drawer.close()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar [attr.image]=\"userImage()\" [attr.label]=\"userData?.name\"></ds-avatar>\r\n @if (userData?.employeeNumber) {\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ userData?.name }}</h4>\r\n @if (!userData?.job?.name) {\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\">{{ userData?.position?.name }}</h6>\r\n }\r\n @if (!userData?.position?.name) {\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\">{{ userData?.job?.name }}</h6>\r\n }\r\n </div>\r\n }\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + userData?.email\" class=\"fc-black\">{{ userData?.email }}</a>\r\n </div>\r\n @if (userData?.contact?.mobile) {\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + userData?.contact?.mobile\" class=\"fc-black\">\r\n <bdi>{{ userData?.contact?.mobile }}</bdi>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n </mat-sidenav-container>\r\n `,\r\n styles: `\r\n .mat-drawer {\r\n position: fixed;\r\n left: 0;\r\n }`,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class UserPickerField extends FieldBase {\r\n userImageHost = \"https://igateapp.stc.com.sa\";\r\n employeeService = inject(Employee);\r\n options: any = signal([]);\r\n userData: any;\r\n #query: Subject<string> = new Subject<string>();\r\n\r\n constructor() {\r\n super();\r\n this.#query.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n // a new query cancels the request still in flight\r\n switchMap((query: string) => this.employeeService.search(query)),\r\n map((res: any) => {\r\n return res.map((user: any) => {\r\n user.value = user.email;\r\n user.label = user.name;\r\n return user;\r\n });\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((res: any) => {\r\n this.options.set(res);\r\n });\r\n }\r\n\r\n userImage(): string | null {\r\n const image: string | undefined = this.userData?.profileImage ?? this.userData?.profileImageUrl;\r\n if (!image) {\r\n return null;\r\n }\r\n return image.startsWith(\"http\") ? image : this.userImageHost + image;\r\n }\r\n\r\n search(event: string) {\r\n this.#query.next(event);\r\n }\r\n\r\n updateField($event: string | FormData) {\r\n this.options.set([]);\r\n }\r\n\r\n showUserData(item: any) {\r\n this.userData = item;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { ai as ATTACHMENT_DOWNLOAD_URL, ah as ATTACHMENT_UPLOAD_RESPONSE_MAPPER, ag as ATTACHMENT_UPLOAD_URL, am as ArabicNumberPipe, a0 as AttachmentViewer, ab as COMPONENTS, a6 as COUNTRIES, d as CheckboxControl, v as CheckboxField, Y as CheckboxViewer, e as ChipsControl, q as ChipsField, Q as ChipsViewer, C as ControlBase, a8 as DATETIME_FORMAT, a7 as DATE_FORMAT_ADAPTER, a5 as DEFAULT_COUNTRY, D as DatePickerControl, B as DatePickerField, a3 as DatePickerTimeViewer, a2 as DatePickerViewer, f as DateRangePickerControl, J as DateRangePickerField, a4 as DateRangePickerViewer, h as DatetimePickerControl, G as DatetimePickerField, al as Droppable, E as Employee, ae as FIELD_DATA, F as FieldBase, an as FieldDataInjector, ar as FileHandler, i as FilePickerControl, z as FilePickerField, aw as FileValidators, b as FormEngine, H as HOST, ak as HintsComponent, j as InputControl, o as InputField, K as InputViewer, av as IssValidators, L as Loader, M as MobileControl, u as MobileField, X as MobileViewer, O as Outlet, P as PLACEHOLDER_REGEX, a9 as PLATE_LETTERS, as as Phone, k as PlateControl, y as PlateField, ao as PlateLetterPipe, $ as PlateViewer, R as RadioControl, s as RadioField, U as RadioViewer, ac as SERVICES, S as SelectControl, t as SelectField, ap as SelectStatusPipe, W as SelectViewer, l as SlideToggleControl, x as SlideToggleField, _ as SlideToggleViewer, T as TextareaControl, p as TextareaField, N as TextareaViewer, m as TimePickerControl, A as TimePickerField, a1 as TimePickerViewer, ax as TimeValidator, n as ToggleButtonControl, w as ToggleButtonField, Z as ToggleButtonViewer, aq as TranslatePipe, af as UI_LANGUAGE, aj as USER_SEARCH_API, aa as VALIDATION_MESSAGES, ad as VALIDATORS, V as VIEW_PROVIDER, c as ValidationMessageComponent, at as arrayFrom, au as formatFileSize, g as getPropertyByPath, r as replacePlaceholders } from './iss-ctrl-iss-ctrl-hz0ibyPg.mjs';
1
+ export { ai as ATTACHMENT_DOWNLOAD_URL, ah as ATTACHMENT_UPLOAD_RESPONSE_MAPPER, ag as ATTACHMENT_UPLOAD_URL, am as ArabicNumberPipe, a0 as AttachmentViewer, ab as COMPONENTS, a6 as COUNTRIES, d as CheckboxControl, v as CheckboxField, Y as CheckboxViewer, e as ChipsControl, q as ChipsField, Q as ChipsViewer, C as ControlBase, a8 as DATETIME_FORMAT, a7 as DATE_FORMAT_ADAPTER, a5 as DEFAULT_COUNTRY, D as DatePickerControl, B as DatePickerField, a3 as DatePickerTimeViewer, a2 as DatePickerViewer, f as DateRangePickerControl, J as DateRangePickerField, a4 as DateRangePickerViewer, h as DatetimePickerControl, G as DatetimePickerField, al as Droppable, E as Employee, ae as FIELD_DATA, F as FieldBase, an as FieldDataInjector, ar as FileHandler, i as FilePickerControl, z as FilePickerField, aw as FileValidators, c as FormEngine, H as HOST, ak as HintsComponent, j as InputControl, o as InputField, K as InputViewer, av as IssValidators, L as Loader, M as MobileControl, u as MobileField, X as MobileViewer, O as Outlet, P as PLACEHOLDER_REGEX, a9 as PLATE_LETTERS, as as Phone, k as PlateControl, y as PlateField, ao as PlateLetterPipe, $ as PlateViewer, R as RadioControl, s as RadioField, U as RadioViewer, ac as SERVICES, S as SelectControl, t as SelectField, ap as SelectStatusPipe, W as SelectViewer, l as SlideToggleControl, x as SlideToggleField, _ as SlideToggleViewer, T as TextareaControl, p as TextareaField, N as TextareaViewer, m as TimePickerControl, A as TimePickerField, a1 as TimePickerViewer, ax as TimeValidator, n as ToggleButtonControl, w as ToggleButtonField, Z as ToggleButtonViewer, aq as TranslatePipe, af as UI_LANGUAGE, aj as USER_SEARCH_API, aa as VALIDATION_MESSAGES, ad as VALIDATORS, V as VIEW_PROVIDER, a as ValidationMessageComponent, at as arrayFrom, au as formatFileSize, g as getPropertyByPath, r as replacePlaceholders } from './iss-ctrl-iss-ctrl-WfIqBEcL.mjs';
2
2
  //# sourceMappingURL=iss-ctrl.mjs.map