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,289 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, effect, signal } from "@angular/core";
2
- import { ViewerBase } from "../base/viewer-base";
3
- import { PLATE_LETTERS } from "./plate-letters.const";
4
-
5
- @Component({
6
- selector: "iss-viewer-plate",
7
- imports: [],
8
- template: `
9
- <div class="plate-container">
10
- <div class="section numbers-section">
11
- <div class="digit-row">
12
- @for (numAr of numbersAr(); track numAr) {
13
- <span>{{ numAr }}</span>
14
- }
15
- </div>
16
- <div class="digit-row">
17
- @for (numEn of numbersEn(); track numEn) {
18
- <span>{{ numEn }}</span>
19
- }
20
- </div>
21
- </div>
22
-
23
- <div class="section emblem-section">
24
- <svg class="emblem-svg" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg">
25
- <path
26
- fill-rule="evenodd"
27
- clip-rule="evenodd"
28
- d="M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z"
29
- fill="#1D252D"
30
- />
31
- </svg>
32
- </div>
33
-
34
- <div class="section letters-section">
35
- <div class="arabic-row" dir="rtl">
36
- @for (lAr of lettersAr(); track lAr) {
37
- <span>{{ lAr }}</span>
38
- }
39
- </div>
40
- <div class="english-row" dir="rtl">
41
- @for (lEn of lettersEn(); track lEn) {
42
- <span>{{ lEn }}</span>
43
- }
44
- </div>
45
- </div>
46
-
47
- <div class="ksa-strip">
48
- <svg class="mini-emblem" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg">
49
- <path
50
- fill-rule="evenodd" clip-rule="evenodd"
51
- d="M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z"
52
- fill="#1D252D"
53
- />
54
- </svg>
55
- <span class="ksa-text">KSA</span>
56
- </div>
57
- </div>
58
- `,
59
- styles: `
60
- .plate-container {
61
- width: 600px;
62
- height: 130px;
63
- border: 4px solid #1D252D;
64
- border-radius: 10px;
65
- background: white;
66
- display: flex;
67
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
68
- overflow: hidden;
69
- position: relative;
70
- }
71
-
72
- /* General Section Styling */
73
- .section {
74
- display: flex;
75
- flex-direction: column;
76
- justify-content: center;
77
- align-items: center;
78
- }
79
-
80
- /* Left Section: Numbers/Asterisks */
81
- .numbers-section {
82
- flex: 2;
83
- padding: 0 10px;
84
- }
85
-
86
- .digit-row {
87
- display: flex;
88
- justify-content: space-between;
89
- width: 80%;
90
- font-size: 38px;
91
- line-height: 1;
92
- color: #1D252D;
93
- margin: 2px 0;
94
- }
95
-
96
- /* Middle Section: Emblem */
97
- .emblem-section {
98
- flex: 1.2;
99
- padding: 10px;
100
- }
101
-
102
- .emblem-svg {
103
- width: 100%;
104
- height: 100%;
105
- max-height: 90px;
106
- }
107
-
108
- /* Right Section: Letters */
109
- .letters-section {
110
- flex: 1.8;
111
- border-right: 2px solid #1D252D;
112
- padding: 0 10px;
113
- }
114
-
115
- .arabic-row {
116
- font-family: 'Noto Sans Arabic', sans-serif;
117
- font-size: 32px;
118
- display: flex;
119
- justify-content: space-around;
120
- width: 100%;
121
- margin-bottom: 5px;
122
- color: #1D252D;
123
- }
124
-
125
- .english-row {
126
- font-size: 38px;
127
- display: flex;
128
- justify-content: space-around;
129
- width: 100%;
130
- color: #1D252D;
131
- }
132
-
133
- /* Far Right: KSA Strip */
134
- .ksa-strip {
135
- width: 50px;
136
- display: flex;
137
- flex-direction: column;
138
- justify-content: space-between;
139
- align-items: center;
140
- padding: 10px 0;
141
- background-color: #fff; /* or specific reflective white */
142
- }
143
-
144
- .mini-emblem {
145
- width: 25px;
146
- height: auto;
147
- }
148
-
149
- .ksa-text {
150
- writing-mode: vertical-rl;
151
- text-orientation: upright;
152
- font-weight: 900;
153
- font-size: 16px;
154
- letter-spacing: 2px;
155
- color: #1D252D;
156
- margin-top: auto;
157
- margin-bottom: 5px;
158
- }
159
-
160
- .plate-input {
161
- background: transparent;
162
- border: none;
163
- text-align: center;
164
- font-family: inherit;
165
- font-size: inherit;
166
- font-weight: bold;
167
- color: #1D252D;
168
- width: 100%; /* Fill the flex/grid item */
169
- padding: 0;
170
- margin: 0;
171
- outline: none; /* Remove blue outline on focus */
172
- }
173
-
174
- /* Optional: Add a subtle underline or color change when user clicks the input */
175
- .plate-input:focus {
176
- border-bottom: 2px solid #1D252D;
177
- }
178
-
179
- /* Adjusting the container flex settings to ensure inputs fit */
180
- .digit-row, .arabic-row, .english-row {
181
- display: flex;
182
- justify-content: space-between;
183
- width: 100%;
184
- }
185
-
186
- /* Specific sizing for numbers to ensure they match plate proportions */
187
- .number-input {
188
- /* Adjust width based on your container size, roughly 20-25% */
189
- flex: 1;
190
- }
191
-
192
- /* Specific sizing for letters */
193
- .letter-input {
194
- flex: 1;
195
- }
196
-
197
- /* Placeholder styling to look like a ghost plate */
198
- .plate-input::placeholder {
199
- color: #ccc;
200
- opacity: 1;
201
- }
202
-
203
- .input-wrapper {
204
- position: relative;
205
- display: flex;
206
- flex-direction: column;
207
- align-items: center;
208
- flex: 1;
209
- }
210
-
211
- .error-tooltip {
212
- position: absolute;
213
- bottom: -15px;
214
- font-size: 10px;
215
- color: red;
216
- white-space: nowrap;
217
- }
218
-
219
- .plate-input.invalid {
220
- color: red;
221
- }
222
- `,
223
- changeDetection: ChangeDetectionStrategy.OnPush
224
- })
225
- export class PlateViewer extends ViewerBase {
226
- numbersAr = signal<string[]>(Array(4).fill(""));
227
- numbersEn = signal<string[]>(Array(4).fill(""));
228
- lettersAr = signal<string[]>(Array(3).fill(""));
229
- lettersEn = signal<string[]>(Array(3).fill(""));
230
- effectRef = effect(() => {
231
- const val = this.field().value;
232
- if (val) {
233
- const parts = val.split("-");
234
- const letters = parts[0]?.split("") || [];
235
- const numbers = parts[1]?.split("") || [];
236
-
237
- // Initialize letters
238
- const lAr: string[] = [];
239
- const lEn: string[] = [];
240
- for (let i = 0; i < 3; i++) {
241
- const char = letters[i] || "";
242
- if (char) {
243
- const plateLetter = PLATE_LETTERS.find(l => l.value === char || l.label.en === char || l.label.ar === char);
244
- if (plateLetter) {
245
- lAr.push(plateLetter.label.ar);
246
- lEn.push(plateLetter.label.en);
247
- } else {
248
- lAr.push("");
249
- lEn.push("");
250
- }
251
- } else {
252
- lAr.push("");
253
- lEn.push("");
254
- }
255
- }
256
- this.lettersAr.set(lAr);
257
- this.lettersEn.set(lEn);
258
-
259
- // Initialize numbers
260
- const nAr: string[] = [];
261
- const nEn: string[] = [];
262
- for (let i = 0; i < 4; i++) {
263
- const char = numbers[i] || "";
264
- if (char) {
265
- nAr.push(this.convertDigit(char, "ar"));
266
- nEn.push(this.convertDigit(char, "en"));
267
- } else {
268
- nAr.push("");
269
- nEn.push("");
270
- }
271
- }
272
- this.numbersAr.set(nAr);
273
- this.numbersEn.set(nEn);
274
- }
275
- });
276
-
277
- private convertDigit(digit: string, toLang: "ar" | "en"): string {
278
- const arDigits = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"];
279
- const enDigits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
280
-
281
- if (toLang === "ar") {
282
- const index = enDigits.indexOf(digit);
283
- return index !== -1 ? arDigits[index] : digit;
284
- } else {
285
- const index = arDigits.indexOf(digit);
286
- return index !== -1 ? enDigits[index] : digit;
287
- }
288
- }
289
- }
@@ -1,48 +0,0 @@
1
- import { Component, input, InputSignal } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
3
- import { MatButtonToggle, MatButtonToggleGroup } from "@angular/material/button-toggle";
4
- import { Option } from "../../../shared/interfaces/option";
5
- import { ControlBase } from "../base/control-base";
6
-
7
- @Component({
8
- selector: "iss-ctrl-radio",
9
- imports: [
10
- ReactiveFormsModule,
11
- MatButtonToggleGroup,
12
- MatButtonToggle,
13
- ],
14
- providers: [
15
- {provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true}
16
- ],
17
- template: `
18
- <mat-button-toggle-group [hideSingleSelectionIndicator]="true">
19
- @for (option of options(); track option.value) {
20
- <mat-button-toggle
21
- [value]="option.value"
22
- [checked]="ctrl.value === option.value"
23
- (change)="onRadioChange(option.value)"
24
- >{{ option.label }}
25
- </mat-button-toggle>
26
- }
27
- </mat-button-toggle-group>
28
- `,
29
- })
30
- export class RadioControl extends ControlBase {
31
- options: InputSignal<Option[]> = input.required();
32
-
33
- override writeValue(value: string | null) {
34
- if (value === null || value === undefined) {
35
- return;
36
- }
37
- const values: string[] = value.split(",").map((val: string) => val.trim());
38
- if (values.length > 1) {
39
- this.emitValue(null);
40
- throw new Error("You cannot set multiple values while the control is in single selection mode!");
41
- }
42
- this.ctrl.setValue(value);
43
- }
44
-
45
- onRadioChange(value: string) {
46
- this.emitValue(value);
47
- }
48
- }
@@ -1,38 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { ReactiveFormsModule } from "@angular/forms";
3
- import { MatLabel } from "@angular/material/form-field";
4
- import { VIEW_PROVIDER } from "../../../shared/constants/view-provider.const";
5
- import { FieldBase } from "../base/field-base";
6
- import { RadioControl } from "./radio.control";
7
- import { RadioViewer } from "./radio.viewer";
8
-
9
- @Component({
10
- selector: "iss-field-radio",
11
- viewProviders: [VIEW_PROVIDER],
12
- imports: [
13
- ReactiveFormsModule,
14
- MatLabel,
15
- RadioControl,
16
- RadioViewer
17
- ],
18
- template: `
19
- @if (field.visible()) {
20
- <div style="display: flex; flex-direction: column">
21
- @if (!(field.config.hideLabel)) {
22
- <mat-label>{{ field.label() }}</mat-label>
23
- }
24
-
25
- @if (field.mode() === "edit") {
26
- <iss-ctrl-radio [formControlName]="field.name" [options]="field.options()" (onChange)="onChange($event)" />
27
- } @else {
28
- <iss-viewer-radio [field]="field" />
29
- }
30
- </div>
31
- }
32
- `
33
- })
34
- export class RadioField extends FieldBase {
35
- onChange($event: any) {
36
- this.field.ctrlJsonValue.set($event);
37
- }
38
- }
@@ -1,14 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { ViewerBase } from "../base/viewer-base";
3
-
4
- @Component({
5
- selector: "iss-viewer-radio",
6
- template: `
7
- <p>
8
- @for (item of field().ctrlJsonValue(); track item?.value) {
9
- <span>{{ item.label }}</span>
10
- }
11
- </p>
12
- `,
13
- })
14
- export class RadioViewer extends ViewerBase {}
@@ -1,242 +0,0 @@
1
- import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
2
- import { NgClass, NgStyle, NgTemplateOutlet } from "@angular/common";
3
- import { Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, effect, input, InputSignal, OnDestroy, output, OutputEmitterRef, signal, Signal, WritableSignal } from "@angular/core";
4
- import { toSignal } from "@angular/core/rxjs-interop";
5
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
6
- import { MatAutocompleteModule } from "@angular/material/autocomplete";
7
- import { MatChipsModule } from "@angular/material/chips";
8
- import { MatIconModule } from "@angular/material/icon";
9
- import { MatInputModule } from "@angular/material/input";
10
- import { Option } from "../../../shared/interfaces/option";
11
- import { SelectStatusPipe } from "../../../shared/pipes/select-status.pipe";
12
- import { ControlBase } from "../base/control-base";
13
-
14
- @Component({
15
- selector: "iss-ctrl-select",
16
- imports: [
17
- ReactiveFormsModule,
18
- MatAutocompleteModule,
19
- MatInputModule,
20
- MatChipsModule,
21
- MatIconModule,
22
- NgClass,
23
- SelectStatusPipe,
24
- CdkVirtualForOf,
25
- CdkVirtualScrollViewport,
26
- CdkFixedSizeVirtualScroll,
27
- NgStyle,
28
- NgTemplateOutlet,
29
- ],
30
- providers: [
31
- {provide: NG_VALUE_ACCESSOR, useExisting: SelectControl, multi: true},
32
- ],
33
- template: `
34
- <mat-form-field floatLabel="auto" class="">
35
- <mat-label class="fs-16 fc-black">
36
- <ng-content select="label"></ng-content>
37
- </mat-label>
38
- <input [formControl]="ctrl" [matAutocomplete]="auto" [matChipInputFor]="chipGrid" [placeholder]="placeholder()" class="m-0" matInput />
39
- @if (!disabled()) {
40
- @if (selectedOptions().size) {
41
- <span matSuffix class="sfi sfi-close fs-18 fc-black cursor-pointer" (click)="clearSelection()"></span>
42
- } @else {
43
- <span matSuffix class="sfi sfi-arrow-down fs-18 fc-black cursor-pointer"></span>
44
- }
45
- }
46
-
47
- <mat-autocomplete #auto="matAutocomplete" (optionSelected)="captureValue($event)" [displayWith]="displayFn" autoActiveFirstOption hideSingleSelectionIndicator>
48
- @if (loading()) {
49
- <mat-option disabled="true">
50
- <ds-icon icon="spinner" class="spin fc-coral fs-20"></ds-icon>
51
- </mat-option>
52
- } @else {
53
- @if (filteredOptions().length) {
54
- @if (multiple()) {
55
- <mat-option (click)="toggleAllSelection()" value="_SELECT_ALL_OPTIONS_">
56
- {{ allSelected() ? "deselect all" : "Select All" }}
57
- </mat-option>
58
- }
59
- <cdk-virtual-scroll-viewport itemSize="5" [ngStyle]="{'height': height()}">
60
- <mat-option *cdkVirtualFor="let option of filteredOptions()" [value]="option" [ngClass]="{'mdc-list-item__selected': option | selectStatus: selectedOptions()}">
61
- @if (optionTemplate()) {
62
- <ng-container *ngTemplateOutlet="optionTemplate(); context: { $implicit: option}" />
63
- } @else {
64
- {{ option.label }}
65
- }
66
- </mat-option>
67
- </cdk-virtual-scroll-viewport>
68
- } @else {
69
- <mat-option disabled="true">No Result Found</mat-option>
70
- }
71
- }
72
- </mat-autocomplete>
73
- </mat-form-field>
74
-
75
- <mat-chip-grid #chipGrid>
76
- @if (multiple()) {
77
- @for (chip of selectedOptions(); track chip[0]) {
78
- <mat-chip-row (removed)="removeFromSelectedOptionsMap(chip[1])">
79
- @if (cardViewerTemplate()) {
80
- <ng-container
81
- *ngTemplateOutlet="cardViewerTemplate(); context: { $implicit: chip[1]}"
82
- />
83
- } @else {
84
- {{ chip[1].label }}
85
- }
86
- <button matChipRemove [attr.aria-label]="'remove ' + chip[1].label">
87
- <ds-icon icon="trash" class="fc-red"></ds-icon>
88
- </button>
89
- </mat-chip-row>
90
- }
91
- }
92
- </mat-chip-grid>
93
- `,
94
- styles: `
95
- ::ng-deep {
96
- .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text {
97
- --mat-option-selected-state-label-text-color: var(--green);
98
- color: var(--green);
99
- }
100
- }
101
- `,
102
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
103
- })
104
- export class SelectControl extends ControlBase implements OnDestroy {
105
- selectedOptions: WritableSignal<Map<string, Option>> = signal(new Map<string, Option>());
106
- options: InputSignal<Option[]> = input.required();
107
- height: InputSignal<string> = input("150px");
108
- query: Signal<string> = toSignal(this.ctrl.valueChanges);
109
- filteredOptions: Signal<Option[]> = computed(() => this.#filter(this.query()));
110
- loading: InputSignal<boolean> = input(false);
111
- onQueryChange: OutputEmitterRef<string> = output();
112
- displayFn = (options: Option | Option[]): string => {
113
- if (Array.isArray(options) && !this.multiple()) {
114
- return options[0]?.label;
115
- }
116
- return "";
117
- };
118
- protected optionTemplate: any = contentChild("optionTemplate");
119
- protected cardViewerTemplate: any = contentChild("cardViewerTemplate");
120
- protected allSelected: WritableSignal<boolean> = signal(false);
121
- #queryEffectRef = effect(() => {
122
- if (typeof this.query() === "string") {
123
- this.onQueryChange.emit(this.query());
124
- }
125
- });
126
- #disabledEffectRef = effect(() => {
127
- if (this.disabled()) {
128
- this.ctrl.disable();
129
- } else {
130
- this.ctrl.enable();
131
- }
132
- });
133
-
134
- /*todo: add pagination for async options*/
135
-
136
- override writeValue(value: string | null) {
137
- this.#reset();
138
- if (value === null || value === undefined) {
139
- return;
140
- }
141
- const values: string[] = value.split(",").map(val => val.trim());
142
- let selectedOptions: Option[] = this.options().filter((option: Option) => values.includes(option.value));
143
- if (!this.multiple()) {
144
- if (selectedOptions.length > 1) {
145
- this.#emit();
146
- throw new Error("You cannot set multiple values while the control is in single selection mode!");
147
- }
148
- selectedOptions = selectedOptions.splice(-selectedOptions.length, selectedOptions.length - selectedOptions.length + 1);
149
- }
150
- for (let i = 0; i < selectedOptions.length; i++) {
151
- const val: Option = selectedOptions[i];
152
- this.#addToSelectedOptionsMap(val);
153
- }
154
- this.ctrl.setValue(selectedOptions);
155
- }
156
-
157
- captureValue($event: any) {
158
- if ($event?.option.value === "_SELECT_ALL_OPTIONS_") {
159
- return;
160
- }
161
- this.#addToSelectedOptionsMap($event?.option.value);
162
- this.#emit();
163
- }
164
-
165
- removeFromSelectedOptionsMap(option: Option) {
166
- this.selectedOptions().delete(option.value);
167
- this.filteredOptions = computed(() => this.#filter(this.query()));
168
- this.allSelected.set(false);
169
- this.#emit();
170
- }
171
-
172
- clearSelection() {
173
- this.#reset();
174
- this.allSelected.set(false);
175
- this.#emit();
176
- }
177
-
178
- toggleAllSelection() {
179
- if (this.selectedOptions().size === this.options().length) {
180
- this.#reset();
181
- this.#emit();
182
- this.allSelected.set(false);
183
- return;
184
- }
185
- for (let i = 0; i < this.options().length; i++) {
186
- this.#addToSelectedOptionsMap(this.options()[i]);
187
- }
188
- this.allSelected.set(true);
189
- this.#emit();
190
- }
191
-
192
- ngOnDestroy(): void {
193
- this.#queryEffectRef.destroy();
194
- this.#disabledEffectRef.destroy();
195
- }
196
-
197
- #addToSelectedOptionsMap(option: any) {
198
- if (option) {
199
- const selectedOption = option;
200
- if (!this.multiple()) {
201
- this.#reset();
202
- }
203
- this.selectedOptions().set(selectedOption.value, selectedOption);
204
- this.ctrl.setValue(this.#convertSelectedMapToArray());
205
- }
206
- }
207
-
208
- #stringifySelectedOptions(): string | null {
209
- const selectedOptionsArr: Option[] | null = this.#convertSelectedMapToArray();
210
- if (selectedOptionsArr) {
211
- return selectedOptionsArr.map((o) => o.value).join();
212
- }
213
- return null;
214
- }
215
-
216
- #filter(queryString: string | Option): Option[] {
217
- if (queryString === null || queryString === undefined || typeof queryString !== "string") {
218
- return this.options();
219
- }
220
- const query: string = queryString.toLowerCase();
221
- const filteredOptions: Option[] = this.options().filter((option: Option) => {
222
- return (option.value.toLowerCase().includes(query) || option.label.toLowerCase().includes(query));
223
- });
224
- return JSON.parse(JSON.stringify(filteredOptions));
225
- }
226
-
227
- #emit() {
228
- this.propagateValue(this.#stringifySelectedOptions());
229
- this.emitOnChangeEvent(this.#convertSelectedMapToArray());
230
- }
231
-
232
- #reset() {
233
- this.selectedOptions().clear();
234
- this.filteredOptions = computed(() => this.#filter(this.query()));
235
- this.ctrl.setValue(null);
236
- }
237
-
238
- #convertSelectedMapToArray(): Option[] | null {
239
- const selectedOptionsArr: Option[] = Array.from(this.selectedOptions(), ([_, option]) => option);
240
- return selectedOptionsArr.length ? selectedOptionsArr : null;
241
- }
242
- }
@@ -1,32 +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 { SelectControl } from "./select.control";
6
- import { SelectViewer } from "./select.viewer";
7
-
8
- @Component({
9
- selector: "iss-field-select",
10
- viewProviders: [VIEW_PROVIDER],
11
- imports: [
12
- ReactiveFormsModule,
13
- SelectControl,
14
- SelectViewer
15
- ],
16
- template: `
17
- @if (field.visible()) {
18
- @if (field.mode() === "edit") {
19
- <iss-ctrl-select [formControlName]="field.name" [options]="field.options()" [multiple]="field.config.multiple()" (onChange)="onChange($event)">
20
- <label>{{ field.label() }}</label>
21
- </iss-ctrl-select>
22
- } @else {
23
- <iss-viewer-select [field]="field" />
24
- }
25
- }
26
- `
27
- })
28
- export class SelectField extends FieldBase {
29
- onChange($event: string | FormData) {
30
- this.field.ctrlJsonValue.set($event);
31
- }
32
- }
@@ -1,14 +0,0 @@
1
- import { Component } from "@angular/core";
2
- import { ViewerBase } from "../base/viewer-base";
3
-
4
- @Component({
5
- selector: "iss-viewer-select",
6
- template: `
7
- <p>
8
- @for (item of field().ctrlJsonValue(); track item?.value; let last = $last) {
9
- <span>{{ item.label }} {{ last ? '' : ', ' }}</span>
10
- }
11
- </p>
12
- `,
13
- })
14
- export class SelectViewer extends ViewerBase {}