iss-ctrl 0.0.6 → 0.0.8

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 (428) hide show
  1. package/README.md +16 -17
  2. package/fesm2022/iss-ctrl-iss-ctrl-BLjj_Aqu.mjs +7269 -0
  3. package/fesm2022/iss-ctrl-iss-ctrl-BLjj_Aqu.mjs.map +1 -0
  4. package/fesm2022/iss-ctrl-load-event-Co3HQu91.mjs +60 -0
  5. package/fesm2022/iss-ctrl-load-event-Co3HQu91.mjs.map +1 -0
  6. package/fesm2022/iss-ctrl-load-options-event-BIn0aiHl.mjs +50 -0
  7. package/fesm2022/iss-ctrl-load-options-event-BIn0aiHl.mjs.map +1 -0
  8. package/fesm2022/iss-ctrl-load-value-event-idouR9ST.mjs +52 -0
  9. package/fesm2022/iss-ctrl-load-value-event-idouR9ST.mjs.map +1 -0
  10. package/fesm2022/iss-ctrl-note.field-CuTQ3YwJ.mjs +43 -0
  11. package/fesm2022/iss-ctrl-note.field-CuTQ3YwJ.mjs.map +1 -0
  12. package/fesm2022/iss-ctrl-replace-api-keys-Df8ruZtV.mjs +57 -0
  13. package/fesm2022/iss-ctrl-replace-api-keys-Df8ruZtV.mjs.map +1 -0
  14. package/fesm2022/iss-ctrl-set-value-event-BNNMVIeT.mjs +61 -0
  15. package/fesm2022/iss-ctrl-set-value-event-BNNMVIeT.mjs.map +1 -0
  16. package/fesm2022/iss-ctrl-show-event-BcRCwAfo.mjs +18 -0
  17. package/fesm2022/iss-ctrl-show-event-BcRCwAfo.mjs.map +1 -0
  18. package/fesm2022/iss-ctrl-table.field-Bs6l5tWV.mjs +310 -0
  19. package/fesm2022/iss-ctrl-table.field-Bs6l5tWV.mjs.map +1 -0
  20. package/fesm2022/iss-ctrl-trigger-based-on-json-value-6yh7NOEH.mjs +24 -0
  21. package/fesm2022/iss-ctrl-trigger-based-on-json-value-6yh7NOEH.mjs.map +1 -0
  22. package/fesm2022/iss-ctrl-user-picker.field-Cx0CCAFC.mjs +184 -0
  23. package/fesm2022/iss-ctrl-user-picker.field-Cx0CCAFC.mjs.map +1 -0
  24. package/fesm2022/iss-ctrl.mjs +2 -0
  25. package/fesm2022/iss-ctrl.mjs.map +1 -0
  26. package/package.json +23 -48
  27. package/types/iss-ctrl.d.ts +869 -0
  28. package/.claude/settings.local.json +0 -8
  29. package/.editorconfig +0 -13
  30. package/.eslintrc.json +0 -90
  31. package/angular.json +0 -190
  32. package/bun.lock +0 -1866
  33. package/projects/iss/.eslintrc.json +0 -37
  34. package/projects/iss/README.md +0 -24
  35. package/projects/iss/ng-package.json +0 -11
  36. package/projects/iss/package.json +0 -17
  37. package/projects/iss/src/components/controls/base/control-base.ts +0 -75
  38. package/projects/iss/src/components/controls/base/field-base.ts +0 -84
  39. package/projects/iss/src/components/controls/base/viewer-base.ts +0 -6
  40. package/projects/iss/src/components/controls/checkbox/checkbox.control.ts +0 -90
  41. package/projects/iss/src/components/controls/checkbox/checkbox.field.ts +0 -34
  42. package/projects/iss/src/components/controls/checkbox/checkbox.viewer.ts +0 -15
  43. package/projects/iss/src/components/controls/chips/chips.control.ts +0 -99
  44. package/projects/iss/src/components/controls/chips/chips.field.ts +0 -26
  45. package/projects/iss/src/components/controls/chips/chips.viewer.ts +0 -23
  46. package/projects/iss/src/components/controls/date-picker/date-picker.control.ts +0 -85
  47. package/projects/iss/src/components/controls/date-picker/date-picker.field.ts +0 -28
  48. package/projects/iss/src/components/controls/date-picker/date-picker.viewer.ts +0 -14
  49. package/projects/iss/src/components/controls/date-range-picker/date-range-emission.ts +0 -5
  50. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.control.ts +0 -143
  51. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.field.ts +0 -28
  52. package/projects/iss/src/components/controls/date-range-picker/date-range-picker.viewer.ts +0 -22
  53. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.control.ts +0 -109
  54. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.field.ts +0 -31
  55. package/projects/iss/src/components/controls/datetime-picker/datetime-picker.viewer.ts +0 -17
  56. package/projects/iss/src/components/controls/file-picker/attachment.ts +0 -6
  57. package/projects/iss/src/components/controls/file-picker/attachment.viewer.ts +0 -165
  58. package/projects/iss/src/components/controls/file-picker/droppable.ts +0 -25
  59. package/projects/iss/src/components/controls/file-picker/file-handler.ts +0 -109
  60. package/projects/iss/src/components/controls/file-picker/file-picker.control.ts +0 -189
  61. package/projects/iss/src/components/controls/file-picker/file-picker.field.ts +0 -117
  62. package/projects/iss/src/components/controls/file-picker/file.ts +0 -9
  63. package/projects/iss/src/components/controls/file-picker/format-file-size.util.ts +0 -9
  64. package/projects/iss/src/components/controls/input/input.control.ts +0 -95
  65. package/projects/iss/src/components/controls/input/input.field.ts +0 -31
  66. package/projects/iss/src/components/controls/input/input.viewer.ts +0 -10
  67. package/projects/iss/src/components/controls/mobile/countries.const.ts +0 -2051
  68. package/projects/iss/src/components/controls/mobile/country.ts +0 -11
  69. package/projects/iss/src/components/controls/mobile/iso2.type.ts +0 -244
  70. package/projects/iss/src/components/controls/mobile/mobile.control.ts +0 -222
  71. package/projects/iss/src/components/controls/mobile/mobile.field.ts +0 -28
  72. package/projects/iss/src/components/controls/mobile/mobile.ts +0 -12
  73. package/projects/iss/src/components/controls/mobile/mobile.viewer.ts +0 -10
  74. package/projects/iss/src/components/controls/mobile/phone.ts +0 -96
  75. package/projects/iss/src/components/controls/note/note.field.ts +0 -25
  76. package/projects/iss/src/components/controls/plate/plate-letter.pipe.ts +0 -14
  77. package/projects/iss/src/components/controls/plate/plate-letter.ts +0 -7
  78. package/projects/iss/src/components/controls/plate/plate-letters.const.ts +0 -21
  79. package/projects/iss/src/components/controls/plate/plate.control.ts +0 -481
  80. package/projects/iss/src/components/controls/plate/plate.field.ts +0 -36
  81. package/projects/iss/src/components/controls/plate/plate.viewer.ts +0 -289
  82. package/projects/iss/src/components/controls/radio/radio.control.ts +0 -48
  83. package/projects/iss/src/components/controls/radio/radio.field.ts +0 -38
  84. package/projects/iss/src/components/controls/radio/radio.viewer.ts +0 -14
  85. package/projects/iss/src/components/controls/select/select.control.ts +0 -242
  86. package/projects/iss/src/components/controls/select/select.field.ts +0 -32
  87. package/projects/iss/src/components/controls/select/select.viewer.ts +0 -14
  88. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.control.ts +0 -24
  89. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.field.ts +0 -31
  90. package/projects/iss/src/components/controls/slide-toggle/slide-toggle.viewer.ts +0 -14
  91. package/projects/iss/src/components/controls/table/field.viewer.ts +0 -23
  92. package/projects/iss/src/components/controls/table/table.field.ts +0 -233
  93. package/projects/iss/src/components/controls/textarea/textarea.control.ts +0 -54
  94. package/projects/iss/src/components/controls/textarea/textarea.field.ts +0 -31
  95. package/projects/iss/src/components/controls/textarea/textarea.viewer.ts +0 -11
  96. package/projects/iss/src/components/controls/time-picker/time-picker.control.ts +0 -86
  97. package/projects/iss/src/components/controls/time-picker/time-picker.field.ts +0 -28
  98. package/projects/iss/src/components/controls/time-picker/time-picker.viewer.ts +0 -10
  99. package/projects/iss/src/components/controls/toggle-button/toggle-button.control.ts +0 -105
  100. package/projects/iss/src/components/controls/toggle-button/toggle-button.field.ts +0 -40
  101. package/projects/iss/src/components/controls/toggle-button/toggle-button.viewer.ts +0 -14
  102. package/projects/iss/src/components/controls/user-picker/employee.ts +0 -73
  103. package/projects/iss/src/components/controls/user-picker/user-picker.field.ts +0 -124
  104. package/projects/iss/src/components/outlet/component-outlet.ts +0 -8
  105. package/projects/iss/src/components/outlet/field-data-injector.ts +0 -20
  106. package/projects/iss/src/components/outlet/iss-form-group.ts +0 -5
  107. package/projects/iss/src/components/outlet/outlet.ts +0 -154
  108. package/projects/iss/src/components/shared/hints.component.ts +0 -38
  109. package/projects/iss/src/components/shared/validation-message.component.ts +0 -36
  110. package/projects/iss/src/events/event-handler.ts +0 -47
  111. package/projects/iss/src/events/load/after-fetch.ts +0 -29
  112. package/projects/iss/src/events/load/load-event.ts +0 -26
  113. package/projects/iss/src/events/load/load-options-event.ts +0 -49
  114. package/projects/iss/src/events/load/load-value-event.ts +0 -50
  115. package/projects/iss/src/events/load/replace-api-keys.ts +0 -55
  116. package/projects/iss/src/events/set-value/get-value-to-set.ts +0 -29
  117. package/projects/iss/src/events/set-value/set-value-event.ts +0 -33
  118. package/projects/iss/src/events/show/show-event.ts +0 -11
  119. package/projects/iss/src/events/triggers/event-trigger-manager.ts +0 -51
  120. package/projects/iss/src/events/triggers/event-trigger.ts +0 -30
  121. package/projects/iss/src/events/triggers/trigger-based-on-json-value.ts +0 -19
  122. package/projects/iss/src/public-api.ts +0 -131
  123. package/projects/iss/src/shared/classes/field-action-config.ts +0 -56
  124. package/projects/iss/src/shared/classes/field-async-validation.ts +0 -7
  125. package/projects/iss/src/shared/classes/field-config.ts +0 -58
  126. package/projects/iss/src/shared/classes/field-event.ts +0 -28
  127. package/projects/iss/src/shared/classes/field-option.ts +0 -9
  128. package/projects/iss/src/shared/classes/field-validation.ts +0 -15
  129. package/projects/iss/src/shared/classes/iss-field.ts +0 -102
  130. package/projects/iss/src/shared/constants/date-format.const.ts +0 -18
  131. package/projects/iss/src/shared/constants/placeholder-regex.const.ts +0 -1
  132. package/projects/iss/src/shared/constants/validation.const.ts +0 -115
  133. package/projects/iss/src/shared/constants/view-provider.const.ts +0 -7
  134. package/projects/iss/src/shared/indexes/components.index.ts +0 -27
  135. package/projects/iss/src/shared/indexes/services.index.ts +0 -11
  136. package/projects/iss/src/shared/indexes/validators.index.ts +0 -21
  137. package/projects/iss/src/shared/interfaces/dto.ts +0 -12
  138. package/projects/iss/src/shared/interfaces/event-strategy.ts +0 -27
  139. package/projects/iss/src/shared/interfaces/event-trigger-fn.ts +0 -7
  140. package/projects/iss/src/shared/interfaces/hint.ts +0 -8
  141. package/projects/iss/src/shared/interfaces/i18n.ts +0 -4
  142. package/projects/iss/src/shared/interfaces/import.ts +0 -3
  143. package/projects/iss/src/shared/interfaces/option.ts +0 -4
  144. package/projects/iss/src/shared/interfaces/validation.ts +0 -5
  145. package/projects/iss/src/shared/pipes/arabic-number.pipe.ts +0 -14
  146. package/projects/iss/src/shared/pipes/select-status.pipe.ts +0 -10
  147. package/projects/iss/src/shared/pipes/translate.pipe.ts +0 -20
  148. package/projects/iss/src/shared/services/form-engine.ts +0 -130
  149. package/projects/iss/src/shared/services/loader.ts +0 -51
  150. package/projects/iss/src/shared/tokens/api-response-mapper.token.ts +0 -4
  151. package/projects/iss/src/shared/tokens/attachment.token.ts +0 -6
  152. package/projects/iss/src/shared/tokens/field.token.ts +0 -4
  153. package/projects/iss/src/shared/tokens/host.token.ts +0 -3
  154. package/projects/iss/src/shared/tokens/language.token.ts +0 -3
  155. package/projects/iss/src/shared/tokens/user-search-api.token.ts +0 -3
  156. package/projects/iss/src/shared/types/validation.type.ts +0 -3
  157. package/projects/iss/src/shared/utilities/array-from.util.ts +0 -7
  158. package/projects/iss/src/shared/utilities/get-property-by-path.util.ts +0 -30
  159. package/projects/iss/src/shared/utilities/http.util.service.ts +0 -19
  160. package/projects/iss/src/shared/utilities/is-valid-api.util.ts +0 -8
  161. package/projects/iss/src/shared/utilities/replace-placeholder.util.ts +0 -12
  162. package/projects/iss/src/validators/core.validator.ts +0 -39
  163. package/projects/iss/src/validators/file.validator.ts +0 -100
  164. package/projects/iss/src/validators/time.validator.ts +0 -31
  165. package/projects/iss/tsconfig.lib.json +0 -13
  166. package/projects/iss/tsconfig.lib.prod.json +0 -9
  167. package/projects/iss/tsconfig.spec.json +0 -13
  168. package/tsconfig.json +0 -31
  169. /package/{projects/iss/src → src}/components/controls/mobile/flags/ad.svg +0 -0
  170. /package/{projects/iss/src → src}/components/controls/mobile/flags/ae.svg +0 -0
  171. /package/{projects/iss/src → src}/components/controls/mobile/flags/af.svg +0 -0
  172. /package/{projects/iss/src → src}/components/controls/mobile/flags/ag.svg +0 -0
  173. /package/{projects/iss/src → src}/components/controls/mobile/flags/ai.svg +0 -0
  174. /package/{projects/iss/src → src}/components/controls/mobile/flags/al.svg +0 -0
  175. /package/{projects/iss/src → src}/components/controls/mobile/flags/am.svg +0 -0
  176. /package/{projects/iss/src → src}/components/controls/mobile/flags/ao.svg +0 -0
  177. /package/{projects/iss/src → src}/components/controls/mobile/flags/aq.svg +0 -0
  178. /package/{projects/iss/src → src}/components/controls/mobile/flags/ar.svg +0 -0
  179. /package/{projects/iss/src → src}/components/controls/mobile/flags/as.svg +0 -0
  180. /package/{projects/iss/src → src}/components/controls/mobile/flags/at.svg +0 -0
  181. /package/{projects/iss/src → src}/components/controls/mobile/flags/au.svg +0 -0
  182. /package/{projects/iss/src → src}/components/controls/mobile/flags/aw.svg +0 -0
  183. /package/{projects/iss/src → src}/components/controls/mobile/flags/ax.svg +0 -0
  184. /package/{projects/iss/src → src}/components/controls/mobile/flags/az.svg +0 -0
  185. /package/{projects/iss/src → src}/components/controls/mobile/flags/ba.svg +0 -0
  186. /package/{projects/iss/src → src}/components/controls/mobile/flags/bb.svg +0 -0
  187. /package/{projects/iss/src → src}/components/controls/mobile/flags/bd.svg +0 -0
  188. /package/{projects/iss/src → src}/components/controls/mobile/flags/be.svg +0 -0
  189. /package/{projects/iss/src → src}/components/controls/mobile/flags/bf.svg +0 -0
  190. /package/{projects/iss/src → src}/components/controls/mobile/flags/bg.svg +0 -0
  191. /package/{projects/iss/src → src}/components/controls/mobile/flags/bh.svg +0 -0
  192. /package/{projects/iss/src → src}/components/controls/mobile/flags/bi.svg +0 -0
  193. /package/{projects/iss/src → src}/components/controls/mobile/flags/bj.svg +0 -0
  194. /package/{projects/iss/src → src}/components/controls/mobile/flags/bl.svg +0 -0
  195. /package/{projects/iss/src → src}/components/controls/mobile/flags/bm.svg +0 -0
  196. /package/{projects/iss/src → src}/components/controls/mobile/flags/bn.svg +0 -0
  197. /package/{projects/iss/src → src}/components/controls/mobile/flags/bo.svg +0 -0
  198. /package/{projects/iss/src → src}/components/controls/mobile/flags/bq.svg +0 -0
  199. /package/{projects/iss/src → src}/components/controls/mobile/flags/br.svg +0 -0
  200. /package/{projects/iss/src → src}/components/controls/mobile/flags/bs.svg +0 -0
  201. /package/{projects/iss/src → src}/components/controls/mobile/flags/bt.svg +0 -0
  202. /package/{projects/iss/src → src}/components/controls/mobile/flags/bv.svg +0 -0
  203. /package/{projects/iss/src → src}/components/controls/mobile/flags/bw.svg +0 -0
  204. /package/{projects/iss/src → src}/components/controls/mobile/flags/by.svg +0 -0
  205. /package/{projects/iss/src → src}/components/controls/mobile/flags/bz.svg +0 -0
  206. /package/{projects/iss/src → src}/components/controls/mobile/flags/ca.svg +0 -0
  207. /package/{projects/iss/src → src}/components/controls/mobile/flags/cc.svg +0 -0
  208. /package/{projects/iss/src → src}/components/controls/mobile/flags/cd.svg +0 -0
  209. /package/{projects/iss/src → src}/components/controls/mobile/flags/cf.svg +0 -0
  210. /package/{projects/iss/src → src}/components/controls/mobile/flags/cg.svg +0 -0
  211. /package/{projects/iss/src → src}/components/controls/mobile/flags/ch.svg +0 -0
  212. /package/{projects/iss/src → src}/components/controls/mobile/flags/ci.svg +0 -0
  213. /package/{projects/iss/src → src}/components/controls/mobile/flags/ck.svg +0 -0
  214. /package/{projects/iss/src → src}/components/controls/mobile/flags/cl.svg +0 -0
  215. /package/{projects/iss/src → src}/components/controls/mobile/flags/cm.svg +0 -0
  216. /package/{projects/iss/src → src}/components/controls/mobile/flags/cn.svg +0 -0
  217. /package/{projects/iss/src → src}/components/controls/mobile/flags/co.svg +0 -0
  218. /package/{projects/iss/src → src}/components/controls/mobile/flags/cr.svg +0 -0
  219. /package/{projects/iss/src → src}/components/controls/mobile/flags/cu.svg +0 -0
  220. /package/{projects/iss/src → src}/components/controls/mobile/flags/cv.svg +0 -0
  221. /package/{projects/iss/src → src}/components/controls/mobile/flags/cw.svg +0 -0
  222. /package/{projects/iss/src → src}/components/controls/mobile/flags/cx.svg +0 -0
  223. /package/{projects/iss/src → src}/components/controls/mobile/flags/cy.svg +0 -0
  224. /package/{projects/iss/src → src}/components/controls/mobile/flags/cz.svg +0 -0
  225. /package/{projects/iss/src → src}/components/controls/mobile/flags/de.svg +0 -0
  226. /package/{projects/iss/src → src}/components/controls/mobile/flags/dj.svg +0 -0
  227. /package/{projects/iss/src → src}/components/controls/mobile/flags/dk.svg +0 -0
  228. /package/{projects/iss/src → src}/components/controls/mobile/flags/dm.svg +0 -0
  229. /package/{projects/iss/src → src}/components/controls/mobile/flags/do.svg +0 -0
  230. /package/{projects/iss/src → src}/components/controls/mobile/flags/dz.svg +0 -0
  231. /package/{projects/iss/src → src}/components/controls/mobile/flags/ec.svg +0 -0
  232. /package/{projects/iss/src → src}/components/controls/mobile/flags/ee.svg +0 -0
  233. /package/{projects/iss/src → src}/components/controls/mobile/flags/eg.svg +0 -0
  234. /package/{projects/iss/src → src}/components/controls/mobile/flags/eh.svg +0 -0
  235. /package/{projects/iss/src → src}/components/controls/mobile/flags/er.svg +0 -0
  236. /package/{projects/iss/src → src}/components/controls/mobile/flags/es.svg +0 -0
  237. /package/{projects/iss/src → src}/components/controls/mobile/flags/et.svg +0 -0
  238. /package/{projects/iss/src → src}/components/controls/mobile/flags/eu.svg +0 -0
  239. /package/{projects/iss/src → src}/components/controls/mobile/flags/fi.svg +0 -0
  240. /package/{projects/iss/src → src}/components/controls/mobile/flags/fj.svg +0 -0
  241. /package/{projects/iss/src → src}/components/controls/mobile/flags/fk.svg +0 -0
  242. /package/{projects/iss/src → src}/components/controls/mobile/flags/flags.png +0 -0
  243. /package/{projects/iss/src → src}/components/controls/mobile/flags/flags@2x.png +0 -0
  244. /package/{projects/iss/src → src}/components/controls/mobile/flags/fm.svg +0 -0
  245. /package/{projects/iss/src → src}/components/controls/mobile/flags/fo.svg +0 -0
  246. /package/{projects/iss/src → src}/components/controls/mobile/flags/fonts.css +0 -0
  247. /package/{projects/iss/src → src}/components/controls/mobile/flags/fr.svg +0 -0
  248. /package/{projects/iss/src → src}/components/controls/mobile/flags/ga.svg +0 -0
  249. /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-eng.svg +0 -0
  250. /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-nir.svg +0 -0
  251. /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-sct.svg +0 -0
  252. /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-wls.svg +0 -0
  253. /package/{projects/iss/src → src}/components/controls/mobile/flags/gb.svg +0 -0
  254. /package/{projects/iss/src → src}/components/controls/mobile/flags/gd.svg +0 -0
  255. /package/{projects/iss/src → src}/components/controls/mobile/flags/ge.svg +0 -0
  256. /package/{projects/iss/src → src}/components/controls/mobile/flags/gf.svg +0 -0
  257. /package/{projects/iss/src → src}/components/controls/mobile/flags/gg.svg +0 -0
  258. /package/{projects/iss/src → src}/components/controls/mobile/flags/gh.svg +0 -0
  259. /package/{projects/iss/src → src}/components/controls/mobile/flags/gi.svg +0 -0
  260. /package/{projects/iss/src → src}/components/controls/mobile/flags/gl.svg +0 -0
  261. /package/{projects/iss/src → src}/components/controls/mobile/flags/gm.svg +0 -0
  262. /package/{projects/iss/src → src}/components/controls/mobile/flags/gn.svg +0 -0
  263. /package/{projects/iss/src → src}/components/controls/mobile/flags/gp.svg +0 -0
  264. /package/{projects/iss/src → src}/components/controls/mobile/flags/gq.svg +0 -0
  265. /package/{projects/iss/src → src}/components/controls/mobile/flags/gr.svg +0 -0
  266. /package/{projects/iss/src → src}/components/controls/mobile/flags/gs.svg +0 -0
  267. /package/{projects/iss/src → src}/components/controls/mobile/flags/gt.svg +0 -0
  268. /package/{projects/iss/src → src}/components/controls/mobile/flags/gu.svg +0 -0
  269. /package/{projects/iss/src → src}/components/controls/mobile/flags/gw.svg +0 -0
  270. /package/{projects/iss/src → src}/components/controls/mobile/flags/gy.svg +0 -0
  271. /package/{projects/iss/src → src}/components/controls/mobile/flags/hk.svg +0 -0
  272. /package/{projects/iss/src → src}/components/controls/mobile/flags/hm.svg +0 -0
  273. /package/{projects/iss/src → src}/components/controls/mobile/flags/hn.svg +0 -0
  274. /package/{projects/iss/src → src}/components/controls/mobile/flags/hr.svg +0 -0
  275. /package/{projects/iss/src → src}/components/controls/mobile/flags/ht.svg +0 -0
  276. /package/{projects/iss/src → src}/components/controls/mobile/flags/hu.svg +0 -0
  277. /package/{projects/iss/src → src}/components/controls/mobile/flags/id.svg +0 -0
  278. /package/{projects/iss/src → src}/components/controls/mobile/flags/ie.svg +0 -0
  279. /package/{projects/iss/src → src}/components/controls/mobile/flags/il.svg +0 -0
  280. /package/{projects/iss/src → src}/components/controls/mobile/flags/im.svg +0 -0
  281. /package/{projects/iss/src → src}/components/controls/mobile/flags/in.svg +0 -0
  282. /package/{projects/iss/src → src}/components/controls/mobile/flags/io.svg +0 -0
  283. /package/{projects/iss/src → src}/components/controls/mobile/flags/iq.svg +0 -0
  284. /package/{projects/iss/src → src}/components/controls/mobile/flags/ir.svg +0 -0
  285. /package/{projects/iss/src → src}/components/controls/mobile/flags/is.svg +0 -0
  286. /package/{projects/iss/src → src}/components/controls/mobile/flags/it.svg +0 -0
  287. /package/{projects/iss/src → src}/components/controls/mobile/flags/je.svg +0 -0
  288. /package/{projects/iss/src → src}/components/controls/mobile/flags/jm.svg +0 -0
  289. /package/{projects/iss/src → src}/components/controls/mobile/flags/jo.svg +0 -0
  290. /package/{projects/iss/src → src}/components/controls/mobile/flags/jp.svg +0 -0
  291. /package/{projects/iss/src → src}/components/controls/mobile/flags/ke.svg +0 -0
  292. /package/{projects/iss/src → src}/components/controls/mobile/flags/kg.svg +0 -0
  293. /package/{projects/iss/src → src}/components/controls/mobile/flags/kh.svg +0 -0
  294. /package/{projects/iss/src → src}/components/controls/mobile/flags/ki.svg +0 -0
  295. /package/{projects/iss/src → src}/components/controls/mobile/flags/km.svg +0 -0
  296. /package/{projects/iss/src → src}/components/controls/mobile/flags/kn.svg +0 -0
  297. /package/{projects/iss/src → src}/components/controls/mobile/flags/kp.svg +0 -0
  298. /package/{projects/iss/src → src}/components/controls/mobile/flags/kr.svg +0 -0
  299. /package/{projects/iss/src → src}/components/controls/mobile/flags/kw.svg +0 -0
  300. /package/{projects/iss/src → src}/components/controls/mobile/flags/ky.svg +0 -0
  301. /package/{projects/iss/src → src}/components/controls/mobile/flags/kz.svg +0 -0
  302. /package/{projects/iss/src → src}/components/controls/mobile/flags/la.svg +0 -0
  303. /package/{projects/iss/src → src}/components/controls/mobile/flags/lb.svg +0 -0
  304. /package/{projects/iss/src → src}/components/controls/mobile/flags/lc.svg +0 -0
  305. /package/{projects/iss/src → src}/components/controls/mobile/flags/li.svg +0 -0
  306. /package/{projects/iss/src → src}/components/controls/mobile/flags/lk.svg +0 -0
  307. /package/{projects/iss/src → src}/components/controls/mobile/flags/lr.svg +0 -0
  308. /package/{projects/iss/src → src}/components/controls/mobile/flags/ls.svg +0 -0
  309. /package/{projects/iss/src → src}/components/controls/mobile/flags/lt.svg +0 -0
  310. /package/{projects/iss/src → src}/components/controls/mobile/flags/lu.svg +0 -0
  311. /package/{projects/iss/src → src}/components/controls/mobile/flags/lv.svg +0 -0
  312. /package/{projects/iss/src → src}/components/controls/mobile/flags/ly.svg +0 -0
  313. /package/{projects/iss/src → src}/components/controls/mobile/flags/ma.svg +0 -0
  314. /package/{projects/iss/src → src}/components/controls/mobile/flags/mc.svg +0 -0
  315. /package/{projects/iss/src → src}/components/controls/mobile/flags/md.svg +0 -0
  316. /package/{projects/iss/src → src}/components/controls/mobile/flags/me.svg +0 -0
  317. /package/{projects/iss/src → src}/components/controls/mobile/flags/mf.svg +0 -0
  318. /package/{projects/iss/src → src}/components/controls/mobile/flags/mg.svg +0 -0
  319. /package/{projects/iss/src → src}/components/controls/mobile/flags/mh.svg +0 -0
  320. /package/{projects/iss/src → src}/components/controls/mobile/flags/mk.svg +0 -0
  321. /package/{projects/iss/src → src}/components/controls/mobile/flags/ml.svg +0 -0
  322. /package/{projects/iss/src → src}/components/controls/mobile/flags/mm.svg +0 -0
  323. /package/{projects/iss/src → src}/components/controls/mobile/flags/mn.svg +0 -0
  324. /package/{projects/iss/src → src}/components/controls/mobile/flags/mo.svg +0 -0
  325. /package/{projects/iss/src → src}/components/controls/mobile/flags/mp.svg +0 -0
  326. /package/{projects/iss/src → src}/components/controls/mobile/flags/mq.svg +0 -0
  327. /package/{projects/iss/src → src}/components/controls/mobile/flags/mr.svg +0 -0
  328. /package/{projects/iss/src → src}/components/controls/mobile/flags/ms.svg +0 -0
  329. /package/{projects/iss/src → src}/components/controls/mobile/flags/mt.svg +0 -0
  330. /package/{projects/iss/src → src}/components/controls/mobile/flags/mu.svg +0 -0
  331. /package/{projects/iss/src → src}/components/controls/mobile/flags/mv.svg +0 -0
  332. /package/{projects/iss/src → src}/components/controls/mobile/flags/mw.svg +0 -0
  333. /package/{projects/iss/src → src}/components/controls/mobile/flags/mx.svg +0 -0
  334. /package/{projects/iss/src → src}/components/controls/mobile/flags/my.svg +0 -0
  335. /package/{projects/iss/src → src}/components/controls/mobile/flags/mz.svg +0 -0
  336. /package/{projects/iss/src → src}/components/controls/mobile/flags/na.svg +0 -0
  337. /package/{projects/iss/src → src}/components/controls/mobile/flags/nc.svg +0 -0
  338. /package/{projects/iss/src → src}/components/controls/mobile/flags/ne.svg +0 -0
  339. /package/{projects/iss/src → src}/components/controls/mobile/flags/nf.svg +0 -0
  340. /package/{projects/iss/src → src}/components/controls/mobile/flags/ng.svg +0 -0
  341. /package/{projects/iss/src → src}/components/controls/mobile/flags/ni.svg +0 -0
  342. /package/{projects/iss/src → src}/components/controls/mobile/flags/nl.svg +0 -0
  343. /package/{projects/iss/src → src}/components/controls/mobile/flags/no.svg +0 -0
  344. /package/{projects/iss/src → src}/components/controls/mobile/flags/np.svg +0 -0
  345. /package/{projects/iss/src → src}/components/controls/mobile/flags/nr.svg +0 -0
  346. /package/{projects/iss/src → src}/components/controls/mobile/flags/nu.svg +0 -0
  347. /package/{projects/iss/src → src}/components/controls/mobile/flags/nz.svg +0 -0
  348. /package/{projects/iss/src → src}/components/controls/mobile/flags/om.svg +0 -0
  349. /package/{projects/iss/src → src}/components/controls/mobile/flags/pa.svg +0 -0
  350. /package/{projects/iss/src → src}/components/controls/mobile/flags/pe.svg +0 -0
  351. /package/{projects/iss/src → src}/components/controls/mobile/flags/pf.svg +0 -0
  352. /package/{projects/iss/src → src}/components/controls/mobile/flags/pg.svg +0 -0
  353. /package/{projects/iss/src → src}/components/controls/mobile/flags/ph.svg +0 -0
  354. /package/{projects/iss/src → src}/components/controls/mobile/flags/pk.svg +0 -0
  355. /package/{projects/iss/src → src}/components/controls/mobile/flags/pl.svg +0 -0
  356. /package/{projects/iss/src → src}/components/controls/mobile/flags/pm.svg +0 -0
  357. /package/{projects/iss/src → src}/components/controls/mobile/flags/pn.svg +0 -0
  358. /package/{projects/iss/src → src}/components/controls/mobile/flags/pr.svg +0 -0
  359. /package/{projects/iss/src → src}/components/controls/mobile/flags/ps.svg +0 -0
  360. /package/{projects/iss/src → src}/components/controls/mobile/flags/pt.svg +0 -0
  361. /package/{projects/iss/src → src}/components/controls/mobile/flags/pw.svg +0 -0
  362. /package/{projects/iss/src → src}/components/controls/mobile/flags/py.svg +0 -0
  363. /package/{projects/iss/src → src}/components/controls/mobile/flags/qa.svg +0 -0
  364. /package/{projects/iss/src → src}/components/controls/mobile/flags/re.svg +0 -0
  365. /package/{projects/iss/src → src}/components/controls/mobile/flags/ro.svg +0 -0
  366. /package/{projects/iss/src → src}/components/controls/mobile/flags/rs.svg +0 -0
  367. /package/{projects/iss/src → src}/components/controls/mobile/flags/ru.svg +0 -0
  368. /package/{projects/iss/src → src}/components/controls/mobile/flags/rw.svg +0 -0
  369. /package/{projects/iss/src → src}/components/controls/mobile/flags/sa.svg +0 -0
  370. /package/{projects/iss/src → src}/components/controls/mobile/flags/sb.svg +0 -0
  371. /package/{projects/iss/src → src}/components/controls/mobile/flags/sc.svg +0 -0
  372. /package/{projects/iss/src → src}/components/controls/mobile/flags/sd.svg +0 -0
  373. /package/{projects/iss/src → src}/components/controls/mobile/flags/se.svg +0 -0
  374. /package/{projects/iss/src → src}/components/controls/mobile/flags/sg.svg +0 -0
  375. /package/{projects/iss/src → src}/components/controls/mobile/flags/sh.svg +0 -0
  376. /package/{projects/iss/src → src}/components/controls/mobile/flags/si.svg +0 -0
  377. /package/{projects/iss/src → src}/components/controls/mobile/flags/sj.svg +0 -0
  378. /package/{projects/iss/src → src}/components/controls/mobile/flags/sk.svg +0 -0
  379. /package/{projects/iss/src → src}/components/controls/mobile/flags/sl.svg +0 -0
  380. /package/{projects/iss/src → src}/components/controls/mobile/flags/sm.svg +0 -0
  381. /package/{projects/iss/src → src}/components/controls/mobile/flags/sn.svg +0 -0
  382. /package/{projects/iss/src → src}/components/controls/mobile/flags/so.svg +0 -0
  383. /package/{projects/iss/src → src}/components/controls/mobile/flags/sr.svg +0 -0
  384. /package/{projects/iss/src → src}/components/controls/mobile/flags/ss.svg +0 -0
  385. /package/{projects/iss/src → src}/components/controls/mobile/flags/st.svg +0 -0
  386. /package/{projects/iss/src → src}/components/controls/mobile/flags/stc-icons.css +0 -0
  387. /package/{projects/iss/src → src}/components/controls/mobile/flags/sv.svg +0 -0
  388. /package/{projects/iss/src → src}/components/controls/mobile/flags/sx.svg +0 -0
  389. /package/{projects/iss/src → src}/components/controls/mobile/flags/sy.svg +0 -0
  390. /package/{projects/iss/src → src}/components/controls/mobile/flags/sz.svg +0 -0
  391. /package/{projects/iss/src → src}/components/controls/mobile/flags/tc.svg +0 -0
  392. /package/{projects/iss/src → src}/components/controls/mobile/flags/td.svg +0 -0
  393. /package/{projects/iss/src → src}/components/controls/mobile/flags/tf.svg +0 -0
  394. /package/{projects/iss/src → src}/components/controls/mobile/flags/tg.svg +0 -0
  395. /package/{projects/iss/src → src}/components/controls/mobile/flags/th.svg +0 -0
  396. /package/{projects/iss/src → src}/components/controls/mobile/flags/tj.svg +0 -0
  397. /package/{projects/iss/src → src}/components/controls/mobile/flags/tk.svg +0 -0
  398. /package/{projects/iss/src → src}/components/controls/mobile/flags/tl.svg +0 -0
  399. /package/{projects/iss/src → src}/components/controls/mobile/flags/tm.svg +0 -0
  400. /package/{projects/iss/src → src}/components/controls/mobile/flags/tn.svg +0 -0
  401. /package/{projects/iss/src → src}/components/controls/mobile/flags/to.svg +0 -0
  402. /package/{projects/iss/src → src}/components/controls/mobile/flags/tr.svg +0 -0
  403. /package/{projects/iss/src → src}/components/controls/mobile/flags/tt.svg +0 -0
  404. /package/{projects/iss/src → src}/components/controls/mobile/flags/tv.svg +0 -0
  405. /package/{projects/iss/src → src}/components/controls/mobile/flags/tw.svg +0 -0
  406. /package/{projects/iss/src → src}/components/controls/mobile/flags/tz.svg +0 -0
  407. /package/{projects/iss/src → src}/components/controls/mobile/flags/ua.svg +0 -0
  408. /package/{projects/iss/src → src}/components/controls/mobile/flags/ug.svg +0 -0
  409. /package/{projects/iss/src → src}/components/controls/mobile/flags/um.svg +0 -0
  410. /package/{projects/iss/src → src}/components/controls/mobile/flags/us.svg +0 -0
  411. /package/{projects/iss/src → src}/components/controls/mobile/flags/uy.svg +0 -0
  412. /package/{projects/iss/src → src}/components/controls/mobile/flags/uz.svg +0 -0
  413. /package/{projects/iss/src → src}/components/controls/mobile/flags/va.svg +0 -0
  414. /package/{projects/iss/src → src}/components/controls/mobile/flags/vc.svg +0 -0
  415. /package/{projects/iss/src → src}/components/controls/mobile/flags/ve.svg +0 -0
  416. /package/{projects/iss/src → src}/components/controls/mobile/flags/vg.svg +0 -0
  417. /package/{projects/iss/src → src}/components/controls/mobile/flags/vi.svg +0 -0
  418. /package/{projects/iss/src → src}/components/controls/mobile/flags/vn.svg +0 -0
  419. /package/{projects/iss/src → src}/components/controls/mobile/flags/vu.svg +0 -0
  420. /package/{projects/iss/src → src}/components/controls/mobile/flags/wf.svg +0 -0
  421. /package/{projects/iss/src → src}/components/controls/mobile/flags/ws.svg +0 -0
  422. /package/{projects/iss/src → src}/components/controls/mobile/flags/xk.svg +0 -0
  423. /package/{projects/iss/src → src}/components/controls/mobile/flags/ye.svg +0 -0
  424. /package/{projects/iss/src → src}/components/controls/mobile/flags/yt.svg +0 -0
  425. /package/{projects/iss/src → src}/components/controls/mobile/flags/za.svg +0 -0
  426. /package/{projects/iss/src → src}/components/controls/mobile/flags/zm.svg +0 -0
  427. /package/{projects/iss/src → src}/components/controls/mobile/flags/zw.svg +0 -0
  428. /package/{projects/iss/src → src}/upgrade.scss +0 -0
@@ -1,5 +0,0 @@
1
- export interface DateRangeEmission {
2
- duration: number;
3
- start: string;
4
- end: string;
5
- }
@@ -1,143 +0,0 @@
1
- import { Component, input, InputSignal, OnDestroy, OnInit, output, OutputEmitterRef } from "@angular/core";
2
- import { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
3
- import { provideDateFnsAdapter } from "@angular/material-date-fns-adapter";
4
- import { MAT_DATE_LOCALE } from "@angular/material/core";
5
- import { MatDatepickerModule } from "@angular/material/datepicker";
6
- import { MatFormFieldModule } from "@angular/material/form-field";
7
- import { MatIcon } from "@angular/material/icon";
8
- import { format } from "date-fns";
9
- import { enGB } from "date-fns/locale";
10
- import { Subscription } from "rxjs";
11
- import { DATE_FORMAT_ADAPTER } from "../../../shared/constants/date-format.const";
12
- import { ControlBase } from "../base/control-base";
13
- import { DateRangeEmission } from "./date-range-emission";
14
-
15
- @Component({
16
- selector: "iss-ctrl-date-range-picker",
17
- imports: [
18
- MatFormFieldModule,
19
- MatDatepickerModule,
20
- ReactiveFormsModule,
21
- MatIcon,
22
- ],
23
- providers: [
24
- provideDateFnsAdapter(DATE_FORMAT_ADAPTER),
25
- {provide: MAT_DATE_LOCALE, useValue: enGB},
26
- {provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerControl, multi: true},
27
- ],
28
- template: `
29
- <mat-form-field floatLabel="auto" class="">
30
-
31
- <mat-label class="fs-16 fc-black">
32
- <ng-content select="label"></ng-content>
33
- </mat-label>
34
- <mat-date-range-input
35
- [formGroup]="range"
36
- [rangePicker]="picker"
37
- [min]="minDate()"
38
- [max]="maxDate()"
39
- [dateFilter]="calendarDaysFilter"
40
- >
41
- <input
42
- matStartDate
43
- formControlName="start"
44
- placeholder="dd/mm/yyyy"
45
- (click)="picker.open(); markAsTouched()"
46
- />
47
- <input
48
- matEndDate
49
- formControlName="end"
50
- placeholder="dd/mm/yyyy"
51
- (click)="picker.open(); markAsTouched()"
52
- />
53
- </mat-date-range-input>
54
- @if (range.getRawValue().start || range.getRawValue().end) {
55
- <mat-icon matSuffix style="cursor: pointer" (click)="clear($event)">close</mat-icon>
56
- }
57
- <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
58
- <mat-date-range-picker #picker></mat-date-range-picker>
59
-
60
- </mat-form-field>
61
- `
62
- })
63
- export class DateRangePickerControl extends ControlBase implements OnInit, OnDestroy {
64
- disabledDays: InputSignal<number[]> = input<number[]>([]);
65
- minDate: InputSignal<Date | null> = input<Date | null>(null);
66
- maxDate: InputSignal<Date | null> = input<Date | null>(null);
67
- onDateRangeObjectChange: OutputEmitterRef<DateRangeEmission> = output();
68
- readonly range: FormGroup = new FormGroup({
69
- start: new FormControl(null),
70
- end: new FormControl(null),
71
- });
72
- protected calendarDaysFilter = (d: Date | null): boolean => {
73
- const day: number = (d || new Date()).getDay();
74
- return !(this.disabledDays().includes(day));
75
- };
76
- #sub: Subscription = new Subscription();
77
-
78
- ngOnInit(): void {
79
- this.#sub.add(
80
- this.range.valueChanges.subscribe((values) => {
81
- if (values.start && values.end) {
82
- this.emitValue(this.#getEmissionValue(values.start, values.end));
83
- this.onDateRangeObjectChange.emit(this.#getEmissionObject(values.start, values.end));
84
- }
85
- })
86
- );
87
- }
88
-
89
- clear(event: MouseEvent) {
90
- event.stopImmediatePropagation();
91
- this.ctrl.setValue(null);
92
- this.range.setValue({
93
- start: null,
94
- end: null,
95
- });
96
- this.propagateValue(null);
97
- this.emitOnChangeEvent(null);
98
- }
99
-
100
- override writeValue(value: string | FormData | null) {
101
- if (typeof value === "string") {
102
- const valArr: string[] = value?.split(",");
103
- const valObj = {
104
- start: valArr[0],
105
- end: valArr[1],
106
- };
107
- this.range.patchValue(valObj, {emitEvent: false});
108
- }
109
- }
110
-
111
- ngOnDestroy(): void {
112
- this.#sub.unsubscribe();
113
- }
114
-
115
- #getDuration(startDate: Date, endDate: Date) {
116
- const start: number = new Date(startDate).getTime();
117
- const end: number = new Date(endDate).getTime();
118
- return Math.ceil((end - start) / (1000 * 60 * 60 * 24) + 1);
119
- }
120
-
121
- #getFormatedDate(date: Date) {
122
- return format(date, "yyyy-MM-dd'T'HH:mm:ss");
123
- }
124
-
125
- #getFormatedEndDate(endDate: Date) {
126
- const inputDate: Date = new Date(new Date(endDate).setHours(23, 59, 59));
127
- return this.#getFormatedDate(inputDate);
128
- }
129
-
130
- #getEmissionValue(start: Date, end: Date): string {
131
- const formatedStart: string = this.#getFormatedDate(start);
132
- const formatedEnd: string = this.#getFormatedEndDate(end);
133
- return `${formatedStart},${formatedEnd}`;
134
- }
135
-
136
- #getEmissionObject(start: Date, end: Date): DateRangeEmission {
137
- return {
138
- duration: this.#getDuration(start, end),
139
- start: this.#getFormatedDate(start),
140
- end: this.#getFormatedEndDate(end)
141
- };
142
- }
143
- }
@@ -1,28 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { ReactiveFormsModule } from "@angular/forms";
3
- import { VIEW_PROVIDER } from "../../../shared/constants/view-provider.const";
4
- import { FieldBase } from "../base/field-base";
5
- import { DateRangePickerControl } from "./date-range-picker.control";
6
- import { DateRangePickerViewer } from "./date-range-picker.viewer";
7
-
8
- @Component({
9
- selector: "iss-field-date-range-picker",
10
- viewProviders: [VIEW_PROVIDER],
11
- imports: [
12
- ReactiveFormsModule,
13
- DateRangePickerControl,
14
- DateRangePickerViewer
15
- ],
16
- template: `
17
- @if (field.visible()) {
18
- @if (field.mode() === "edit") {
19
- <iss-ctrl-date-range-picker [formControlName]="field.name" [minDate]="field.config.minDate() ?? null" [maxDate]="field.config.maxDate() ?? null">
20
- <label>{{ field.label() }}</label>
21
- </iss-ctrl-date-range-picker>
22
- } @else {
23
- <iss-viewer-date-range-picker [field]="field" />
24
- }
25
- }
26
- `
27
- })
28
- export class DateRangePickerField extends FieldBase {}
@@ -1,22 +0,0 @@
1
- import { DatePipe } from "@angular/common";
2
- import { Component, OnInit } from "@angular/core";
3
- import { ViewerBase } from "../base/viewer-base";
4
-
5
- @Component({
6
- selector: "iss-viewer-date-range-picker",
7
- imports: [
8
- DatePipe
9
- ],
10
- template: `
11
- @for (date of dateRange; track date; let last = $last) {
12
- <span> {{ date | date: 'dd/MM/yyyy' }} {{ last ? '' : '- ' }} </span>
13
- }
14
- `
15
- })
16
- export class DateRangePickerViewer extends ViewerBase implements OnInit {
17
- dateRange: string[] = [];
18
-
19
- ngOnInit() {
20
- this.dateRange = this.field().ctrlValue().split(",").map((val: any) => val.trim());
21
- }
22
- }
@@ -1,109 +0,0 @@
1
- import { Component, input, InputSignal } from "@angular/core";
2
- import { FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
3
- import { MatDatepickerModule } from "@angular/material/datepicker";
4
- import { MatFormFieldModule } from "@angular/material/form-field";
5
- import { MatInputModule } from "@angular/material/input";
6
- import { MatTimepickerModule } from "@angular/material/timepicker";
7
- import { format } from "date-fns";
8
- import { ControlBase } from "../base/control-base";
9
- import { DatePickerControl } from "../date-picker/date-picker.control";
10
- import { TimePickerControl } from "../time-picker/time-picker.control";
11
-
12
- @Component({
13
- selector: "iss-ctrl-datetime-picker",
14
- imports: [
15
- MatFormFieldModule,
16
- MatInputModule,
17
- MatTimepickerModule,
18
- MatDatepickerModule,
19
- ReactiveFormsModule,
20
- DatePickerControl,
21
- TimePickerControl,
22
- ],
23
- providers: [
24
- {provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerControl, multi: true},
25
- {provide: NG_VALIDATORS, useExisting: DatetimePickerControl, multi: true},
26
- ],
27
- template: `
28
- <form [formGroup]="datetimeForm" class="d-flex flex-row gap-1">
29
- <iss-ctrl-date-picker (focusout)="markAsTouched()" [disabledDays]="disabledDays()" [maxDate]="maxDate()" [minDate]="minDate()" formControlName="date" (onChange)="emit()">
30
- <label>
31
- <ng-content select="label"></ng-content>
32
- </label>
33
- </iss-ctrl-date-picker>
34
- <iss-ctrl-time-picker
35
- (focusout)="markAsTouched()"
36
- [maxTime]="maxTime()"
37
- [minTime]="minTime()"
38
- formControlName="time"
39
- (onChange)="emit()"
40
- />
41
- </form>
42
- `
43
- })
44
- export class DatetimePickerControl extends ControlBase {
45
- datetimeForm: FormGroup = new FormGroup({
46
- date: new FormControl(null),
47
- time: new FormControl(null),
48
- });
49
- disabledDays: InputSignal<number[]> = input<number[]>([]);
50
- minDate: InputSignal<Date | null> = input<Date | null>(null);
51
- maxDate: InputSignal<Date | null> = input<Date | null>(null);
52
- minTime: InputSignal<string | null> = input<string | null>(null);
53
- maxTime: InputSignal<string | null> = input<string | null>(null);
54
-
55
- emit() {
56
- const datetimeStr = this.#stringifyDateTime(this.datetimeForm.getRawValue());
57
- this.propagateValue(datetimeStr);
58
- this.emitOnChangeEvent(datetimeStr);
59
- }
60
-
61
- override writeValue(value: string | Date | null) {
62
- this.datetimeForm.patchValue({
63
- date: this.#stringifyDate(value),
64
- time: this.#stringifyTime(value),
65
- });
66
- }
67
-
68
- #stringifyDateTime(datetime: any): string | undefined {
69
- if (!datetime) {
70
- return undefined;
71
- }
72
- if (this.#stringifyDate(datetime) && this.#stringifyTime(datetime)) {
73
- return `${this.#stringifyDate(datetime)}T${this.#stringifyTime(datetime)}`;
74
- }
75
- return undefined;
76
- }
77
-
78
- #stringifyDate(datetime: any) {
79
- if (!datetime) {
80
- return undefined;
81
- }
82
-
83
- if (datetime.date && typeof datetime.date === "string") {
84
- return `${datetime.date.split("T")[0]}`;
85
- }
86
-
87
- const date = new Date(datetime);
88
- if (!Number.isNaN(date.getTime())) {
89
- return format(datetime, "yyyy-MM-dd");
90
- }
91
- return undefined;
92
- }
93
-
94
- #stringifyTime(datetime: any) {
95
- if (!datetime) {
96
- return undefined;
97
- }
98
-
99
- if (datetime.time && typeof datetime.time === "string") {
100
- return `${datetime.time}`;
101
- }
102
-
103
- const date = new Date(datetime);
104
- if (!Number.isNaN(date.getTime())) {
105
- return format(datetime, "HH:mm:ss");
106
- }
107
- return undefined;
108
- }
109
- }
@@ -1,31 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { ReactiveFormsModule } from "@angular/forms";
3
- import { VIEW_PROVIDER } from "../../../shared/constants/view-provider.const";
4
- import { ValidationMessageComponent } from "../../shared/validation-message.component";
5
- import { FieldBase } from "../base/field-base";
6
- import { DatetimePickerControl } from "./datetime-picker.control";
7
- import { DatePickerTimeViewer } from "./datetime-picker.viewer";
8
-
9
- @Component({
10
- selector: "iss-field-datetime-picker",
11
- viewProviders: [VIEW_PROVIDER],
12
- imports: [
13
- ReactiveFormsModule,
14
- DatetimePickerControl,
15
- ValidationMessageComponent,
16
- DatePickerTimeViewer,
17
- ],
18
- template: `
19
- @if (field.visible()) {
20
- @if (field.mode() === "edit") {
21
- <iss-ctrl-datetime-picker [formControlName]="field.name" [minDate]="field.config.minDate() ?? null" [maxDate]="field.config.maxDate() ?? null">
22
- <label>{{ field.label() }}</label>
23
- </iss-ctrl-datetime-picker>
24
- <iss-validation-message-viewer [errors]="ctrl.errors" [showMessage]="!ctrl.untouched" />
25
- } @else {
26
- <iss-viewer-datetime-picker [field]="field" />
27
- }
28
- }
29
- `
30
- })
31
- export class DatetimePickerField extends FieldBase {}
@@ -1,17 +0,0 @@
1
- import { DatePipe } from "@angular/common";
2
- import { Component } from "@angular/core";
3
- import { DATETIME_FORMAT } from "../../../shared/constants/date-format.const";
4
- import { ViewerBase } from "../base/viewer-base";
5
-
6
- @Component({
7
- selector: "iss-viewer-datetime-picker",
8
- imports: [
9
- DatePipe
10
- ],
11
- template: `
12
- {{ field().ctrlValue() | date: DATETIME_FORMAT }}
13
- `
14
- })
15
- export class DatePickerTimeViewer extends ViewerBase {
16
- protected readonly DATETIME_FORMAT = DATETIME_FORMAT;
17
- }
@@ -1,6 +0,0 @@
1
- export interface IssAttachment {
2
- id: string,
3
- name: string,
4
- type: string,
5
- size: number
6
- }
@@ -1,165 +0,0 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, InputSignal, output, OutputEmitterRef } from "@angular/core";
2
- import { MatProgressBar } from "@angular/material/progress-bar";
3
- import { MatTooltip } from "@angular/material/tooltip";
4
- import { ViewerBase } from "../base/viewer-base";
5
- import { IssFile } from "./file";
6
-
7
- @Component({
8
- selector: "iss-viewer-attachment",
9
- imports: [
10
- MatTooltip,
11
- MatProgressBar,
12
- ],
13
- template: `
14
- @if (attachments()?.length) {
15
- <section class="files-list">
16
- @for (file of attachments(); track $index) {
17
- <div class="file-item-container">
18
- @if (file) {
19
- <ds-attachments
20
- [matTooltip]="file.name"
21
- [file]="file.file ?? file"
22
- [showDownload]="field().config.showDownloadButton"
23
- [attr.readonly]="!field().config.showDeleteButton"
24
- (downloadEvent)="onDownload($event)"
25
- (deleteEvent)="onDelete($index)"
26
- >
27
- </ds-attachments>
28
- @if (uploading()) {
29
- <mat-progress-bar mode="indeterminate" />
30
- }
31
- }
32
- </div>
33
- }
34
- </section>
35
- }
36
- `,
37
- styles: `
38
- .insideTableStyle {
39
- width: 272px;
40
- }
41
-
42
- .files-list {
43
- --file-item-width: 270px;
44
- display: grid;
45
- grid-template-columns: repeat(auto-fill, var(--file-item-width));
46
- grid-gap: 0.5rem;
47
- @media (max-width: 768px) {
48
- grid-template-columns: repeat(auto-fill, minmax(var(--file-item-width), 1fr));
49
- }
50
-
51
-
52
- }
53
-
54
- .mat-mdc-progress-bar {
55
- --mat-progress-bar-active-indicator-color: var(--purple);
56
- --mat-progress-bar-track-color: rgba(var(--rgb-purple), .25);
57
- }
58
-
59
-
60
- .file-item-container {
61
- .file-item {
62
- --file-bg: var(--off-white);
63
- --file-radius: var(--box-radius);
64
- --icon-color: var(--purple);
65
- --icon-size: 2rem;
66
- --file-border: transparent;
67
-
68
- display: flex;
69
- align-items: center;
70
- background-color: var(--file-bg);
71
- border: 1px solid var(--file-border);
72
- border-radius: var(--file-radius);
73
- padding: 0 1rem;
74
- height: 70px;
75
- gap: 0.75rem;
76
-
77
- &.error {
78
- --file-bg: rgba(var(--rgb-red), 10%);
79
- --file-border: var(--red);
80
- --icon-color: var(--red);
81
- }
82
-
83
- .icon {
84
- color: var(--icon-color);
85
- font-size: var(--icon-size);
86
- }
87
-
88
- .file-action {
89
- display: flex;
90
- align-items: center;
91
- gap: 0.5rem;
92
- }
93
- }
94
- }
95
-
96
- ds-attachments::part(base) {
97
- --file-width: 250px;
98
- }
99
-
100
- ::ng-deep {
101
- .file-item .name-size {
102
- display: flex;
103
- flex-direction: column;
104
- justify-content: center;
105
- flex-grow: 1;
106
- overflow: hidden;
107
- text-overflow: ellipsis;
108
- white-space: nowrap;
109
- min-width: 120px;
110
- }
111
- }
112
- `,
113
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
114
- })
115
- export class AttachmentViewer extends ViewerBase {
116
- uploading: InputSignal<boolean> = input(false);
117
- uploadingError: InputSignal<string> = input("");
118
- deleteOut: OutputEmitterRef<File[]> = output();
119
- attachments = computed(() => {
120
- return this.field().ctrlJsonValue().map((attachment: IssFile): IssFile => {
121
- return {
122
- name: attachment.name,
123
- size: attachment.size,
124
- type: attachment.type,
125
- errorMsg: attachment.errorMsg,
126
- file: attachment.file
127
- };
128
- });
129
- });
130
-
131
- protected onDownload($event: any) {
132
- const fileUrl: string = this.#createObjectUrl($event.detail.value);
133
- const anchorElement: HTMLAnchorElement = this.#createAnchorElement(fileUrl, $event.detail.value.name);
134
- this.#useAnchorElementThenDispose(anchorElement, fileUrl);
135
- }
136
-
137
- protected onDelete(index: number) {
138
- const fileHtmlElement: HTMLInputElement | null = document.getElementById("file") as HTMLInputElement;
139
- if (fileHtmlElement) {
140
- fileHtmlElement.value = "";
141
- }
142
- const updatedFiles = this.field().ctrlJsonValue().filter((_: any, i: number): boolean => i !== index);
143
- this.field().ctrlJsonValue = computed(() => updatedFiles);
144
- this.deleteOut.emit(this.field().ctrlJsonValue());
145
- }
146
-
147
- #createObjectUrl(file: File): string {
148
- const blob: Blob = new Blob([file], {type: "application/octet-stream"});
149
- return window.URL.createObjectURL(blob);
150
- }
151
-
152
- #createAnchorElement(fileUrl: string, fileName: string): HTMLAnchorElement {
153
- const a: HTMLAnchorElement = document.createElement("a");
154
- a.setAttribute("style", "display: none");
155
- a.href = fileUrl;
156
- a.download = fileName;
157
- return a;
158
- }
159
-
160
- #useAnchorElementThenDispose(a: HTMLAnchorElement, fileUrl: string) {
161
- a.click();
162
- window.URL.revokeObjectURL(fileUrl);
163
- a.remove();
164
- }
165
- }
@@ -1,25 +0,0 @@
1
- import { Directive, HostListener, output, OutputEmitterRef } from "@angular/core";
2
-
3
- @Directive({selector: "[droppable]"})
4
- export class Droppable {
5
- onDrop: OutputEmitterRef<FileList> = output();
6
-
7
- @HostListener("dragover", ["$event"])
8
- onDragOver(evt: any) {
9
- evt.preventDefault();
10
- evt.stopPropagation();
11
- }
12
-
13
- @HostListener("dragleave", ["$event"])
14
- onDragLeave(evt: any) {
15
- evt.preventDefault();
16
- evt.stopPropagation();
17
- }
18
-
19
- @HostListener("drop", ["$event"])
20
- onDropped(evt: any) {
21
- evt.preventDefault();
22
- evt.stopPropagation();
23
- this.onDrop.emit(evt.dataTransfer.files);
24
- }
25
- }
@@ -1,109 +0,0 @@
1
- import { HttpClient } from "@angular/common/http";
2
- import { inject, Injectable } from "@angular/core";
3
- import { EMPTY, forkJoin, map, Observable } from "rxjs";
4
- import { ATTACHMENT_DOWNLOAD_URL, ATTACHMENT_UPLOAD_RESPONSE_MAPPER, ATTACHMENT_UPLOAD_URL } from "../../../shared/tokens/attachment.token";
5
- import { replacePlaceholders } from "../../../shared/utilities/replace-placeholder.util";
6
- import { IssAttachment } from "./attachment";
7
- import { IssFile } from "./file";
8
-
9
- @Injectable({providedIn: "root"})
10
- export class FileHandler {
11
- ATTACHMENT_UPLOAD_URL = inject(ATTACHMENT_UPLOAD_URL);
12
- ATTACHMENT_DOWNLOAD_URL: string = inject(ATTACHMENT_DOWNLOAD_URL);
13
- attachmentAdapter = inject(ATTACHMENT_UPLOAD_RESPONSE_MAPPER);
14
- #http: HttpClient = inject(HttpClient);
15
- readonly #units: string[] = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
16
-
17
- upload(data: FormData) {
18
- const url = this.ATTACHMENT_UPLOAD_URL;
19
- return this.#http.post(url, data, {
20
- headers: {"Content-Type": "multipart/form-data"},
21
- }).pipe(
22
- map((res: any): IssAttachment[] => this.attachmentAdapter(res)),
23
- );
24
- }
25
-
26
- formDataFactory(files: IssFile[], multiple: boolean): FormData | null {
27
- if (files.length === 0) {
28
- return null;
29
- }
30
- const fd: FormData = new FormData();
31
- let formDataKey = "file";
32
- if (multiple) {
33
- formDataKey = "files";
34
- }
35
- for (let i = 0; i < files.length; i++) {
36
- // @ts-ignore
37
- fd.append(formDataKey, files[i]);
38
- }
39
- return fd;
40
- }
41
-
42
- formDataHasValue(formData: FormData) {
43
- if (formData) {
44
- for (const key of formData.keys()) {
45
- if (formData.get(key)) {
46
- return true;
47
- }
48
- }
49
- }
50
- return false;
51
- }
52
-
53
- getFileFromFormData(formData: FormData, name: string): IssFile[] {
54
- if (!formData) {
55
- return [];
56
- }
57
- const fileFD: IssFile[] = formData.getAll("file") as unknown as IssFile[];
58
- const filesFD: IssFile[] = formData.getAll("files") as unknown as IssFile[];
59
- if (filesFD.length) {
60
- return filesFD.filter((f) => f.name === name);
61
- }
62
- if (fileFD.length) {
63
- return fileFD.filter((f) => f.name === name);
64
- }
65
- return [];
66
- }
67
-
68
- formatFileSize(x: string | number) {
69
- let l: number = 0;
70
- let n: number = parseInt(x.toString(), 10) || 0;
71
-
72
- while (n >= 1024 && ++l) {
73
- n /= 1024;
74
- }
75
- return Math.floor(n) + " " + this.#units[l];
76
- }
77
-
78
- fetchFileInfo(id: string): Observable<IssFile> {
79
- const url: string = replacePlaceholders(this.ATTACHMENT_DOWNLOAD_URL, {fileId: id});
80
- const httpRequestOptions: any = {observe: "response", responseType: "blob"};
81
- return this.#http.get(url, httpRequestOptions).pipe(map((res: any) => this.#processFileBinaryStream(res, id)));
82
- }
83
-
84
- fetchFiles(ids: string) {
85
- if (ids) {
86
- return forkJoin(ids.split(",").map((id: string) => {
87
- return this.fetchFileInfo(id);
88
- }));
89
- }
90
- return EMPTY;
91
- }
92
-
93
- #processFileBinaryStream(res: any, fileId: string): any {
94
- const fileNameHeader = res.headers.get("content-disposition");
95
- const typeHeader = res.headers.get("content-type");
96
- let fileName = "";
97
- if (fileNameHeader) {
98
- fileName = decodeURIComponent(fileNameHeader.split(";")[1].split("=")[1].replaceAll("\"", ""));
99
- }
100
- const file: File = new File([res.body], fileName, {type: typeHeader});
101
- return {
102
- id: fileId,
103
- name: file.name,
104
- type: file.type,
105
- size: this.formatFileSize(file.size),
106
- file: file,
107
- };
108
- }
109
- }