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.
- package/README.md +16 -17
- package/fesm2022/iss-ctrl-iss-ctrl-BLjj_Aqu.mjs +7269 -0
- package/fesm2022/iss-ctrl-iss-ctrl-BLjj_Aqu.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-event-Co3HQu91.mjs +60 -0
- package/fesm2022/iss-ctrl-load-event-Co3HQu91.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-options-event-BIn0aiHl.mjs +50 -0
- package/fesm2022/iss-ctrl-load-options-event-BIn0aiHl.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-value-event-idouR9ST.mjs +52 -0
- package/fesm2022/iss-ctrl-load-value-event-idouR9ST.mjs.map +1 -0
- package/fesm2022/iss-ctrl-note.field-CuTQ3YwJ.mjs +43 -0
- package/fesm2022/iss-ctrl-note.field-CuTQ3YwJ.mjs.map +1 -0
- package/fesm2022/iss-ctrl-replace-api-keys-Df8ruZtV.mjs +57 -0
- package/fesm2022/iss-ctrl-replace-api-keys-Df8ruZtV.mjs.map +1 -0
- package/fesm2022/iss-ctrl-set-value-event-BNNMVIeT.mjs +61 -0
- package/fesm2022/iss-ctrl-set-value-event-BNNMVIeT.mjs.map +1 -0
- package/fesm2022/iss-ctrl-show-event-BcRCwAfo.mjs +18 -0
- package/fesm2022/iss-ctrl-show-event-BcRCwAfo.mjs.map +1 -0
- package/fesm2022/iss-ctrl-table.field-Bs6l5tWV.mjs +310 -0
- package/fesm2022/iss-ctrl-table.field-Bs6l5tWV.mjs.map +1 -0
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-6yh7NOEH.mjs +24 -0
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-6yh7NOEH.mjs.map +1 -0
- package/fesm2022/iss-ctrl-user-picker.field-Cx0CCAFC.mjs +184 -0
- package/fesm2022/iss-ctrl-user-picker.field-Cx0CCAFC.mjs.map +1 -0
- package/fesm2022/iss-ctrl.mjs +2 -0
- package/fesm2022/iss-ctrl.mjs.map +1 -0
- package/package.json +23 -48
- package/types/iss-ctrl.d.ts +869 -0
- package/.claude/settings.local.json +0 -8
- package/.editorconfig +0 -13
- package/.eslintrc.json +0 -90
- package/angular.json +0 -190
- package/bun.lock +0 -1866
- package/projects/iss/.eslintrc.json +0 -37
- package/projects/iss/README.md +0 -24
- package/projects/iss/ng-package.json +0 -11
- package/projects/iss/package.json +0 -17
- package/projects/iss/src/components/controls/base/control-base.ts +0 -75
- package/projects/iss/src/components/controls/base/field-base.ts +0 -84
- package/projects/iss/src/components/controls/base/viewer-base.ts +0 -6
- package/projects/iss/src/components/controls/checkbox/checkbox.control.ts +0 -90
- package/projects/iss/src/components/controls/checkbox/checkbox.field.ts +0 -34
- package/projects/iss/src/components/controls/checkbox/checkbox.viewer.ts +0 -15
- package/projects/iss/src/components/controls/chips/chips.control.ts +0 -99
- package/projects/iss/src/components/controls/chips/chips.field.ts +0 -26
- package/projects/iss/src/components/controls/chips/chips.viewer.ts +0 -23
- package/projects/iss/src/components/controls/date-picker/date-picker.control.ts +0 -85
- package/projects/iss/src/components/controls/date-picker/date-picker.field.ts +0 -28
- package/projects/iss/src/components/controls/date-picker/date-picker.viewer.ts +0 -14
- package/projects/iss/src/components/controls/date-range-picker/date-range-emission.ts +0 -5
- package/projects/iss/src/components/controls/date-range-picker/date-range-picker.control.ts +0 -143
- package/projects/iss/src/components/controls/date-range-picker/date-range-picker.field.ts +0 -28
- package/projects/iss/src/components/controls/date-range-picker/date-range-picker.viewer.ts +0 -22
- package/projects/iss/src/components/controls/datetime-picker/datetime-picker.control.ts +0 -109
- package/projects/iss/src/components/controls/datetime-picker/datetime-picker.field.ts +0 -31
- package/projects/iss/src/components/controls/datetime-picker/datetime-picker.viewer.ts +0 -17
- package/projects/iss/src/components/controls/file-picker/attachment.ts +0 -6
- package/projects/iss/src/components/controls/file-picker/attachment.viewer.ts +0 -165
- package/projects/iss/src/components/controls/file-picker/droppable.ts +0 -25
- package/projects/iss/src/components/controls/file-picker/file-handler.ts +0 -109
- package/projects/iss/src/components/controls/file-picker/file-picker.control.ts +0 -189
- package/projects/iss/src/components/controls/file-picker/file-picker.field.ts +0 -117
- package/projects/iss/src/components/controls/file-picker/file.ts +0 -9
- package/projects/iss/src/components/controls/file-picker/format-file-size.util.ts +0 -9
- package/projects/iss/src/components/controls/input/input.control.ts +0 -95
- package/projects/iss/src/components/controls/input/input.field.ts +0 -31
- package/projects/iss/src/components/controls/input/input.viewer.ts +0 -10
- package/projects/iss/src/components/controls/mobile/countries.const.ts +0 -2051
- package/projects/iss/src/components/controls/mobile/country.ts +0 -11
- package/projects/iss/src/components/controls/mobile/iso2.type.ts +0 -244
- package/projects/iss/src/components/controls/mobile/mobile.control.ts +0 -222
- package/projects/iss/src/components/controls/mobile/mobile.field.ts +0 -28
- package/projects/iss/src/components/controls/mobile/mobile.ts +0 -12
- package/projects/iss/src/components/controls/mobile/mobile.viewer.ts +0 -10
- package/projects/iss/src/components/controls/mobile/phone.ts +0 -96
- package/projects/iss/src/components/controls/note/note.field.ts +0 -25
- package/projects/iss/src/components/controls/plate/plate-letter.pipe.ts +0 -14
- package/projects/iss/src/components/controls/plate/plate-letter.ts +0 -7
- package/projects/iss/src/components/controls/plate/plate-letters.const.ts +0 -21
- package/projects/iss/src/components/controls/plate/plate.control.ts +0 -481
- package/projects/iss/src/components/controls/plate/plate.field.ts +0 -36
- package/projects/iss/src/components/controls/plate/plate.viewer.ts +0 -289
- package/projects/iss/src/components/controls/radio/radio.control.ts +0 -48
- package/projects/iss/src/components/controls/radio/radio.field.ts +0 -38
- package/projects/iss/src/components/controls/radio/radio.viewer.ts +0 -14
- package/projects/iss/src/components/controls/select/select.control.ts +0 -242
- package/projects/iss/src/components/controls/select/select.field.ts +0 -32
- package/projects/iss/src/components/controls/select/select.viewer.ts +0 -14
- package/projects/iss/src/components/controls/slide-toggle/slide-toggle.control.ts +0 -24
- package/projects/iss/src/components/controls/slide-toggle/slide-toggle.field.ts +0 -31
- package/projects/iss/src/components/controls/slide-toggle/slide-toggle.viewer.ts +0 -14
- package/projects/iss/src/components/controls/table/field.viewer.ts +0 -23
- package/projects/iss/src/components/controls/table/table.field.ts +0 -233
- package/projects/iss/src/components/controls/textarea/textarea.control.ts +0 -54
- package/projects/iss/src/components/controls/textarea/textarea.field.ts +0 -31
- package/projects/iss/src/components/controls/textarea/textarea.viewer.ts +0 -11
- package/projects/iss/src/components/controls/time-picker/time-picker.control.ts +0 -86
- package/projects/iss/src/components/controls/time-picker/time-picker.field.ts +0 -28
- package/projects/iss/src/components/controls/time-picker/time-picker.viewer.ts +0 -10
- package/projects/iss/src/components/controls/toggle-button/toggle-button.control.ts +0 -105
- package/projects/iss/src/components/controls/toggle-button/toggle-button.field.ts +0 -40
- package/projects/iss/src/components/controls/toggle-button/toggle-button.viewer.ts +0 -14
- package/projects/iss/src/components/controls/user-picker/employee.ts +0 -73
- package/projects/iss/src/components/controls/user-picker/user-picker.field.ts +0 -124
- package/projects/iss/src/components/outlet/component-outlet.ts +0 -8
- package/projects/iss/src/components/outlet/field-data-injector.ts +0 -20
- package/projects/iss/src/components/outlet/iss-form-group.ts +0 -5
- package/projects/iss/src/components/outlet/outlet.ts +0 -154
- package/projects/iss/src/components/shared/hints.component.ts +0 -38
- package/projects/iss/src/components/shared/validation-message.component.ts +0 -36
- package/projects/iss/src/events/event-handler.ts +0 -47
- package/projects/iss/src/events/load/after-fetch.ts +0 -29
- package/projects/iss/src/events/load/load-event.ts +0 -26
- package/projects/iss/src/events/load/load-options-event.ts +0 -49
- package/projects/iss/src/events/load/load-value-event.ts +0 -50
- package/projects/iss/src/events/load/replace-api-keys.ts +0 -55
- package/projects/iss/src/events/set-value/get-value-to-set.ts +0 -29
- package/projects/iss/src/events/set-value/set-value-event.ts +0 -33
- package/projects/iss/src/events/show/show-event.ts +0 -11
- package/projects/iss/src/events/triggers/event-trigger-manager.ts +0 -51
- package/projects/iss/src/events/triggers/event-trigger.ts +0 -30
- package/projects/iss/src/events/triggers/trigger-based-on-json-value.ts +0 -19
- package/projects/iss/src/public-api.ts +0 -131
- package/projects/iss/src/shared/classes/field-action-config.ts +0 -56
- package/projects/iss/src/shared/classes/field-async-validation.ts +0 -7
- package/projects/iss/src/shared/classes/field-config.ts +0 -58
- package/projects/iss/src/shared/classes/field-event.ts +0 -28
- package/projects/iss/src/shared/classes/field-option.ts +0 -9
- package/projects/iss/src/shared/classes/field-validation.ts +0 -15
- package/projects/iss/src/shared/classes/iss-field.ts +0 -102
- package/projects/iss/src/shared/constants/date-format.const.ts +0 -18
- package/projects/iss/src/shared/constants/placeholder-regex.const.ts +0 -1
- package/projects/iss/src/shared/constants/validation.const.ts +0 -115
- package/projects/iss/src/shared/constants/view-provider.const.ts +0 -7
- package/projects/iss/src/shared/indexes/components.index.ts +0 -27
- package/projects/iss/src/shared/indexes/services.index.ts +0 -11
- package/projects/iss/src/shared/indexes/validators.index.ts +0 -21
- package/projects/iss/src/shared/interfaces/dto.ts +0 -12
- package/projects/iss/src/shared/interfaces/event-strategy.ts +0 -27
- package/projects/iss/src/shared/interfaces/event-trigger-fn.ts +0 -7
- package/projects/iss/src/shared/interfaces/hint.ts +0 -8
- package/projects/iss/src/shared/interfaces/i18n.ts +0 -4
- package/projects/iss/src/shared/interfaces/import.ts +0 -3
- package/projects/iss/src/shared/interfaces/option.ts +0 -4
- package/projects/iss/src/shared/interfaces/validation.ts +0 -5
- package/projects/iss/src/shared/pipes/arabic-number.pipe.ts +0 -14
- package/projects/iss/src/shared/pipes/select-status.pipe.ts +0 -10
- package/projects/iss/src/shared/pipes/translate.pipe.ts +0 -20
- package/projects/iss/src/shared/services/form-engine.ts +0 -130
- package/projects/iss/src/shared/services/loader.ts +0 -51
- package/projects/iss/src/shared/tokens/api-response-mapper.token.ts +0 -4
- package/projects/iss/src/shared/tokens/attachment.token.ts +0 -6
- package/projects/iss/src/shared/tokens/field.token.ts +0 -4
- package/projects/iss/src/shared/tokens/host.token.ts +0 -3
- package/projects/iss/src/shared/tokens/language.token.ts +0 -3
- package/projects/iss/src/shared/tokens/user-search-api.token.ts +0 -3
- package/projects/iss/src/shared/types/validation.type.ts +0 -3
- package/projects/iss/src/shared/utilities/array-from.util.ts +0 -7
- package/projects/iss/src/shared/utilities/get-property-by-path.util.ts +0 -30
- package/projects/iss/src/shared/utilities/http.util.service.ts +0 -19
- package/projects/iss/src/shared/utilities/is-valid-api.util.ts +0 -8
- package/projects/iss/src/shared/utilities/replace-placeholder.util.ts +0 -12
- package/projects/iss/src/validators/core.validator.ts +0 -39
- package/projects/iss/src/validators/file.validator.ts +0 -100
- package/projects/iss/src/validators/time.validator.ts +0 -31
- package/projects/iss/tsconfig.lib.json +0 -13
- package/projects/iss/tsconfig.lib.prod.json +0 -9
- package/projects/iss/tsconfig.spec.json +0 -13
- package/tsconfig.json +0 -31
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ad.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ae.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/af.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ag.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ai.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/al.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/am.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ao.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/aq.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ar.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/as.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/at.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/au.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/aw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ax.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/az.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ba.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bb.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bd.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/be.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bi.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bj.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bo.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bq.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/br.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bs.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/by.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/bz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ca.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cd.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ch.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ci.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ck.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/co.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cx.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cy.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/cz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/de.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/dj.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/dk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/dm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/do.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/dz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ec.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ee.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/eg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/eh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/er.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/es.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/et.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/eu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fi.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fj.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/flags.png +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/flags@2x.png +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fo.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fonts.css +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/fr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ga.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-eng.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-nir.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-sct.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gb-wls.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gb.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gd.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ge.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gi.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gp.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gq.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gs.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/gy.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/hk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/hm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/hn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/hr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ht.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/hu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/id.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ie.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/il.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/im.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/in.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/io.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/iq.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ir.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/is.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/it.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/je.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/jm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/jo.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/jp.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ke.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ki.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/km.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kp.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ky.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/kz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/la.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lb.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/li.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ls.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/lv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ly.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ma.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/md.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/me.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ml.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mo.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mp.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mq.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ms.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mx.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/my.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/mz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/na.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ne.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ng.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ni.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/no.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/np.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/nz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/om.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pa.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pe.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ph.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ps.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/pw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/py.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/qa.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/re.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ro.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/rs.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ru.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/rw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sa.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sb.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sd.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/se.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sh.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/si.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sj.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/so.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ss.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/st.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/stc-icons.css +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sx.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sy.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/sz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/td.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/th.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tj.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tl.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/to.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tr.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tv.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tw.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/tz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ua.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ug.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/um.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/us.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/uy.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/uz.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/va.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/vc.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ve.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/vg.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/vi.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/vn.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/vu.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/wf.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ws.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/xk.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/ye.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/yt.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/za.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/zm.svg +0 -0
- /package/{projects/iss/src → src}/components/controls/mobile/flags/zw.svg +0 -0
- /package/{projects/iss/src → src}/upgrade.scss +0 -0
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
export type ISO2 =
|
|
2
|
-
"AF" |
|
|
3
|
-
"AL" |
|
|
4
|
-
"DZ" |
|
|
5
|
-
"AS" |
|
|
6
|
-
"AD" |
|
|
7
|
-
"AO" |
|
|
8
|
-
"AI" |
|
|
9
|
-
"AG" |
|
|
10
|
-
"AR" |
|
|
11
|
-
"AM" |
|
|
12
|
-
"AW" |
|
|
13
|
-
"AU" |
|
|
14
|
-
"AT" |
|
|
15
|
-
"AZ" |
|
|
16
|
-
"BS" |
|
|
17
|
-
"BH" |
|
|
18
|
-
"BD" |
|
|
19
|
-
"BB" |
|
|
20
|
-
"BY" |
|
|
21
|
-
"BE" |
|
|
22
|
-
"BZ" |
|
|
23
|
-
"BJ" |
|
|
24
|
-
"BM" |
|
|
25
|
-
"BT" |
|
|
26
|
-
"BO" |
|
|
27
|
-
"BA" |
|
|
28
|
-
"BW" |
|
|
29
|
-
"BR" |
|
|
30
|
-
"IO" |
|
|
31
|
-
"VG" |
|
|
32
|
-
"BN" |
|
|
33
|
-
"BG" |
|
|
34
|
-
"BF" |
|
|
35
|
-
"BI" |
|
|
36
|
-
"KH" |
|
|
37
|
-
"CM" |
|
|
38
|
-
"CA" |
|
|
39
|
-
"CV" |
|
|
40
|
-
"BQ" |
|
|
41
|
-
"KY" |
|
|
42
|
-
"CF" |
|
|
43
|
-
"TD" |
|
|
44
|
-
"CL" |
|
|
45
|
-
"CN" |
|
|
46
|
-
"CX" |
|
|
47
|
-
"CC" |
|
|
48
|
-
"CO" |
|
|
49
|
-
"KM" |
|
|
50
|
-
"CD" |
|
|
51
|
-
"CG" |
|
|
52
|
-
"CK" |
|
|
53
|
-
"CR" |
|
|
54
|
-
"CI" |
|
|
55
|
-
"HR" |
|
|
56
|
-
"CU" |
|
|
57
|
-
"CW" |
|
|
58
|
-
"CY" |
|
|
59
|
-
"CZ" |
|
|
60
|
-
"DK" |
|
|
61
|
-
"DJ" |
|
|
62
|
-
"DM" |
|
|
63
|
-
"DO" |
|
|
64
|
-
"EC" |
|
|
65
|
-
"EG" |
|
|
66
|
-
"SV" |
|
|
67
|
-
"GQ" |
|
|
68
|
-
"ER" |
|
|
69
|
-
"EE" |
|
|
70
|
-
"ET" |
|
|
71
|
-
"FK" |
|
|
72
|
-
"FO" |
|
|
73
|
-
"FJ" |
|
|
74
|
-
"FI" |
|
|
75
|
-
"FR" |
|
|
76
|
-
"GF" |
|
|
77
|
-
"PF" |
|
|
78
|
-
"GA" |
|
|
79
|
-
"GM" |
|
|
80
|
-
"GE" |
|
|
81
|
-
"DE" |
|
|
82
|
-
"GH" |
|
|
83
|
-
"GI" |
|
|
84
|
-
"GR" |
|
|
85
|
-
"GL" |
|
|
86
|
-
"GD" |
|
|
87
|
-
"GP" |
|
|
88
|
-
"GU" |
|
|
89
|
-
"GT" |
|
|
90
|
-
"GG" |
|
|
91
|
-
"GN" |
|
|
92
|
-
"GW" |
|
|
93
|
-
"GY" |
|
|
94
|
-
"HT" |
|
|
95
|
-
"HN" |
|
|
96
|
-
"HK" |
|
|
97
|
-
"HU" |
|
|
98
|
-
"IS" |
|
|
99
|
-
"IN" |
|
|
100
|
-
"ID" |
|
|
101
|
-
"IR" |
|
|
102
|
-
"IQ" |
|
|
103
|
-
"IE" |
|
|
104
|
-
"IM" |
|
|
105
|
-
"IL" |
|
|
106
|
-
"IT" |
|
|
107
|
-
"JM" |
|
|
108
|
-
"JP" |
|
|
109
|
-
"JE" |
|
|
110
|
-
"JO" |
|
|
111
|
-
"KZ" |
|
|
112
|
-
"KE" |
|
|
113
|
-
"KI" |
|
|
114
|
-
"XK" |
|
|
115
|
-
"KW" |
|
|
116
|
-
"KG" |
|
|
117
|
-
"LA" |
|
|
118
|
-
"LV" |
|
|
119
|
-
"LB" |
|
|
120
|
-
"LS" |
|
|
121
|
-
"LR" |
|
|
122
|
-
"LY" |
|
|
123
|
-
"LI" |
|
|
124
|
-
"LT" |
|
|
125
|
-
"LU" |
|
|
126
|
-
"MO" |
|
|
127
|
-
"MK" |
|
|
128
|
-
"MG" |
|
|
129
|
-
"MW" |
|
|
130
|
-
"MY" |
|
|
131
|
-
"MV" |
|
|
132
|
-
"ML" |
|
|
133
|
-
"MT" |
|
|
134
|
-
"MH" |
|
|
135
|
-
"MQ" |
|
|
136
|
-
"MR" |
|
|
137
|
-
"MU" |
|
|
138
|
-
"YT" |
|
|
139
|
-
"MX" |
|
|
140
|
-
"FM" |
|
|
141
|
-
"MD" |
|
|
142
|
-
"MC" |
|
|
143
|
-
"MN" |
|
|
144
|
-
"ME" |
|
|
145
|
-
"MS" |
|
|
146
|
-
"MA" |
|
|
147
|
-
"MZ" |
|
|
148
|
-
"MM" |
|
|
149
|
-
"NA" |
|
|
150
|
-
"NR" |
|
|
151
|
-
"NP" |
|
|
152
|
-
"NL" |
|
|
153
|
-
"NC" |
|
|
154
|
-
"NZ" |
|
|
155
|
-
"NI" |
|
|
156
|
-
"NE" |
|
|
157
|
-
"NG" |
|
|
158
|
-
"NU" |
|
|
159
|
-
"NF" |
|
|
160
|
-
"KP" |
|
|
161
|
-
"MP" |
|
|
162
|
-
"NO" |
|
|
163
|
-
"OM" |
|
|
164
|
-
"PK" |
|
|
165
|
-
"PW" |
|
|
166
|
-
"PS" |
|
|
167
|
-
"PA" |
|
|
168
|
-
"PG" |
|
|
169
|
-
"PY" |
|
|
170
|
-
"PE" |
|
|
171
|
-
"PH" |
|
|
172
|
-
"PL" |
|
|
173
|
-
"PT" |
|
|
174
|
-
"PR" |
|
|
175
|
-
"QA" |
|
|
176
|
-
"RE" |
|
|
177
|
-
"RO" |
|
|
178
|
-
"RU" |
|
|
179
|
-
"RW" |
|
|
180
|
-
"BL" |
|
|
181
|
-
"SH" |
|
|
182
|
-
"KN" |
|
|
183
|
-
"LC" |
|
|
184
|
-
"MF" |
|
|
185
|
-
"PM" |
|
|
186
|
-
"VC" |
|
|
187
|
-
"WS" |
|
|
188
|
-
"SM" |
|
|
189
|
-
"ST" |
|
|
190
|
-
"SA" |
|
|
191
|
-
"SN" |
|
|
192
|
-
"RS" |
|
|
193
|
-
"SC" |
|
|
194
|
-
"SL" |
|
|
195
|
-
"SG" |
|
|
196
|
-
"SX" |
|
|
197
|
-
"SK" |
|
|
198
|
-
"SI" |
|
|
199
|
-
"SB" |
|
|
200
|
-
"SO" |
|
|
201
|
-
"ZA" |
|
|
202
|
-
"KR" |
|
|
203
|
-
"SS" |
|
|
204
|
-
"ES" |
|
|
205
|
-
"LK" |
|
|
206
|
-
"SD" |
|
|
207
|
-
"SR" |
|
|
208
|
-
"SJ" |
|
|
209
|
-
"SZ" |
|
|
210
|
-
"SE" |
|
|
211
|
-
"CH" |
|
|
212
|
-
"SY" |
|
|
213
|
-
"TW" |
|
|
214
|
-
"TJ" |
|
|
215
|
-
"TZ" |
|
|
216
|
-
"TH" |
|
|
217
|
-
"TL" |
|
|
218
|
-
"TG" |
|
|
219
|
-
"TK" |
|
|
220
|
-
"TO" |
|
|
221
|
-
"TT" |
|
|
222
|
-
"TN" |
|
|
223
|
-
"TR" |
|
|
224
|
-
"TM" |
|
|
225
|
-
"TC" |
|
|
226
|
-
"TV" |
|
|
227
|
-
"VI" |
|
|
228
|
-
"UG" |
|
|
229
|
-
"UA" |
|
|
230
|
-
"AE" |
|
|
231
|
-
"GB" |
|
|
232
|
-
"US" |
|
|
233
|
-
"UY" |
|
|
234
|
-
"UZ" |
|
|
235
|
-
"VU" |
|
|
236
|
-
"VA" |
|
|
237
|
-
"VE" |
|
|
238
|
-
"VN" |
|
|
239
|
-
"WF" |
|
|
240
|
-
"EH" |
|
|
241
|
-
"YE" |
|
|
242
|
-
"ZM" |
|
|
243
|
-
"ZW" |
|
|
244
|
-
"AX";
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { CdkConnectedOverlay, CdkOverlayOrigin } from "@angular/cdk/overlay";
|
|
2
|
-
import { NgClass, NgOptimizedImage } from "@angular/common";
|
|
3
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, inject, input, InputSignal, OnDestroy, Signal, signal, WritableSignal } from "@angular/core";
|
|
4
|
-
import { toSignal } from "@angular/core/rxjs-interop";
|
|
5
|
-
import { AbstractControl, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from "@angular/forms";
|
|
6
|
-
import { MatFormField, MatPrefix } from "@angular/material/form-field";
|
|
7
|
-
import { MatInput, MatInputModule } from "@angular/material/input";
|
|
8
|
-
import { ControlBase } from "../base/control-base";
|
|
9
|
-
import { COUNTRIES, DEFAULT_COUNTRY } from "./countries.const";
|
|
10
|
-
import { Country } from "./country";
|
|
11
|
-
import { ISO2 } from "./iso2.type";
|
|
12
|
-
import { Mobile } from "./mobile";
|
|
13
|
-
import { Phone } from "./phone";
|
|
14
|
-
|
|
15
|
-
@Component({
|
|
16
|
-
selector: "iss-ctrl-mobile",
|
|
17
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
18
|
-
imports: [
|
|
19
|
-
ReactiveFormsModule,
|
|
20
|
-
NgClass,
|
|
21
|
-
CdkConnectedOverlay,
|
|
22
|
-
CdkOverlayOrigin,
|
|
23
|
-
MatFormField,
|
|
24
|
-
MatInput,
|
|
25
|
-
MatPrefix,
|
|
26
|
-
NgOptimizedImage,
|
|
27
|
-
MatInputModule,
|
|
28
|
-
],
|
|
29
|
-
providers: [
|
|
30
|
-
{provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true},
|
|
31
|
-
{provide: NG_VALIDATORS, useExisting: MobileControl, multi: true}
|
|
32
|
-
],
|
|
33
|
-
template: `
|
|
34
|
-
<mat-form-field floatLabel="auto" cdkOverlayOrigin #trigger="cdkOverlayOrigin">
|
|
35
|
-
<mat-label class="fs-16 fc-black">
|
|
36
|
-
<ng-content select="label"></ng-content>
|
|
37
|
-
</mat-label>
|
|
38
|
-
<div class="d-inline-flex align-items-center gap-1 country-flag" matPrefix (click)="toggleCountryCodeMenu()">
|
|
39
|
-
<img
|
|
40
|
-
ngSrc="./flags/{{selectedCountry().code.toLowerCase()}}.svg"
|
|
41
|
-
width="20"
|
|
42
|
-
height="20"
|
|
43
|
-
[alt]="selectedCountry().code.toLowerCase()"
|
|
44
|
-
class="country-flag--image"
|
|
45
|
-
[priority]="true"
|
|
46
|
-
>
|
|
47
|
-
<ds-icon icon="arrow-down" class="fs-12 fc-dark-gray"></ds-icon>
|
|
48
|
-
</div>
|
|
49
|
-
<input
|
|
50
|
-
matInput
|
|
51
|
-
type="tel"
|
|
52
|
-
autocomplete="off"
|
|
53
|
-
(blur)="markAsTouched()"
|
|
54
|
-
(keydown)="onInput($event)"
|
|
55
|
-
(input)="emit()"
|
|
56
|
-
[formControl]="ctrl"
|
|
57
|
-
[placeholder]="selectedCountry().placeholder"
|
|
58
|
-
/>
|
|
59
|
-
</mat-form-field>
|
|
60
|
-
<ng-template
|
|
61
|
-
cdkConnectedOverlay
|
|
62
|
-
[cdkConnectedOverlayHasBackdrop]="true"
|
|
63
|
-
(backdropClick)="closeCountryCodeMenu()"
|
|
64
|
-
[cdkConnectedOverlayGrowAfterOpen]="true"
|
|
65
|
-
[cdkConnectedOverlayOrigin]="trigger"
|
|
66
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
67
|
-
>
|
|
68
|
-
<div class="country-dropdown bc-white box-shadow p-2">
|
|
69
|
-
<div class="search-container">
|
|
70
|
-
<mat-form-field>
|
|
71
|
-
<input matInput id="country-search-box" [formControl]="searchInput" (click)="$event.stopPropagation()" />
|
|
72
|
-
</mat-form-field>
|
|
73
|
-
</div>
|
|
74
|
-
<ul class="country-list">
|
|
75
|
-
@for (country of filteredCountries(); track $index) {
|
|
76
|
-
<li
|
|
77
|
-
#countryEl
|
|
78
|
-
[ngClass]="country.order > 1 ? 'preferredCounty' : ''"
|
|
79
|
-
class="d-flex align-items-center gap-2 cursor-pointer p-2"
|
|
80
|
-
(click)="onSelectCountry(country)"
|
|
81
|
-
>
|
|
82
|
-
@defer (on viewport(countryEl)) {
|
|
83
|
-
<img ngSrc="./flags/{{country.code.toLowerCase()}}.svg" width="20" height="20" alt="" class="country-flag--image">
|
|
84
|
-
}
|
|
85
|
-
<span class="fs-12 fc-dark-gray">(+{{ country.dailCode }})</span>
|
|
86
|
-
<span class="fs-12 fc-black">{{ country.name }}</span>
|
|
87
|
-
</li>
|
|
88
|
-
}
|
|
89
|
-
</ul>
|
|
90
|
-
</div>
|
|
91
|
-
</ng-template>
|
|
92
|
-
`,
|
|
93
|
-
styles: `
|
|
94
|
-
.country-flag {
|
|
95
|
-
border-inline-end: var(--input-border);
|
|
96
|
-
padding-inline-end: .5rem;
|
|
97
|
-
margin-inline-end: .5rem;
|
|
98
|
-
cursor: pointer;
|
|
99
|
-
}
|
|
100
|
-
`
|
|
101
|
-
})
|
|
102
|
-
export class MobileControl extends ControlBase implements OnDestroy, Validator {
|
|
103
|
-
phoneService: Phone = inject(Phone);
|
|
104
|
-
isOpen: WritableSignal<boolean> = signal(false);
|
|
105
|
-
selectedCountry: WritableSignal<Country> = signal<Country>(DEFAULT_COUNTRY);
|
|
106
|
-
preferredCountries: InputSignal<ISO2[]> = input<ISO2[]>(["SA"]);
|
|
107
|
-
searchInput: FormControl = new FormControl("");
|
|
108
|
-
filteredCountries: Signal<Country[]> = computed(() => this.#searchInCountries());
|
|
109
|
-
#ctrlChanges: Signal<string> = toSignal(this.ctrl.valueChanges);
|
|
110
|
-
#searchQuery: Signal<string> = toSignal(this.searchInput.valueChanges);
|
|
111
|
-
#disabledEffect: EffectRef = effect(() => {
|
|
112
|
-
if (this.disabled()) {
|
|
113
|
-
this.ctrl.disable();
|
|
114
|
-
} else {
|
|
115
|
-
this.ctrl.enable();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
override writeValue(value: string) {
|
|
120
|
-
if (value) {
|
|
121
|
-
const mobileObject = this.phoneService.getPhoneNumberObject(value);
|
|
122
|
-
if (mobileObject) {
|
|
123
|
-
this.selectedCountry.set(mobileObject);
|
|
124
|
-
this.emitOnChangeEvent(this.selectedCountry());
|
|
125
|
-
}
|
|
126
|
-
this.ctrl.setValue(mobileObject?.nationalNumber);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
emit() {
|
|
131
|
-
if (this.#ctrlChanges()) {
|
|
132
|
-
const mobileInput = `+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`;
|
|
133
|
-
const numberObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(mobileInput);
|
|
134
|
-
if (numberObject) {
|
|
135
|
-
this.selectedCountry.set(numberObject);
|
|
136
|
-
this.propagateValue(`+${numberObject.dailCode}${numberObject.nationalNumber}`);
|
|
137
|
-
this.emitOnChangeEvent(this.selectedCountry());
|
|
138
|
-
} else {
|
|
139
|
-
this.propagateValue(mobileInput);
|
|
140
|
-
this.emitOnChangeEvent(this.selectedCountry());
|
|
141
|
-
}
|
|
142
|
-
} else {
|
|
143
|
-
this.propagateValue(null);
|
|
144
|
-
this.emitOnChangeEvent(null);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
override validate(control: AbstractControl): ValidationErrors | null {
|
|
149
|
-
if (!control.getRawValue()) {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const error: any = {invalidPhoneNumber: {accepted: this.selectedCountry().placeholder, input: control.getRawValue()}};
|
|
154
|
-
const isValid: boolean = this.phoneService.validate(control.getRawValue());
|
|
155
|
-
if (isValid) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return error;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
ngOnDestroy() {
|
|
163
|
-
this.#disabledEffect.destroy();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
protected onInput(event: KeyboardEvent) {
|
|
167
|
-
const allowedChars = /[0-9+\-()]/;
|
|
168
|
-
const allowedCtrlChars = /[axcv]/; // Allows copy-pasting
|
|
169
|
-
const allowedOtherKeys = [
|
|
170
|
-
"ArrowLeft",
|
|
171
|
-
"ArrowUp",
|
|
172
|
-
"ArrowRight",
|
|
173
|
-
"ArrowDown",
|
|
174
|
-
"Home",
|
|
175
|
-
"End",
|
|
176
|
-
"Insert",
|
|
177
|
-
"Delete",
|
|
178
|
-
"Backspace",
|
|
179
|
-
];
|
|
180
|
-
if (!allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key)) {
|
|
181
|
-
event.preventDefault();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
protected onSelectCountry(country: Country) {
|
|
186
|
-
this.selectedCountry.set(country);
|
|
187
|
-
this.searchInput.setValue("");
|
|
188
|
-
this.closeCountryCodeMenu();
|
|
189
|
-
this.propagateValue(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
|
|
190
|
-
this.emitOnChangeEvent(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
protected closeCountryCodeMenu() {
|
|
194
|
-
this.isOpen.set(false);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
protected toggleCountryCodeMenu() {
|
|
198
|
-
this.isOpen.update((isOpen: boolean) => !isOpen);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
#sortCountries() {
|
|
202
|
-
return COUNTRIES.map((country: Country) => {
|
|
203
|
-
if (this.preferredCountries().includes(country.code)) {
|
|
204
|
-
country.order = country.priority + (-1 * (this.preferredCountries().indexOf(country.code) - this.preferredCountries().length)) * 100;
|
|
205
|
-
}
|
|
206
|
-
return country;
|
|
207
|
-
}).sort((a, b) => b.order - a.order);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
#searchInCountries(): Country[] {
|
|
211
|
-
if (this.#searchQuery()) {
|
|
212
|
-
return this.#sortCountries().filter((country: Country) => {
|
|
213
|
-
return (
|
|
214
|
-
country.code.toLowerCase().includes(this.#searchQuery())
|
|
215
|
-
|| country.name.toLowerCase().includes(this.#searchQuery())
|
|
216
|
-
|| country.dailCode.toLowerCase().includes(this.#searchQuery())
|
|
217
|
-
);
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
return this.#sortCountries();
|
|
221
|
-
}
|
|
222
|
-
}
|
|
@@ -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 { MobileControl } from "./mobile.control";
|
|
6
|
-
import { MobileViewer } from "./mobile.viewer";
|
|
7
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: "iss-field-mobile",
|
|
10
|
-
viewProviders: [VIEW_PROVIDER],
|
|
11
|
-
imports: [
|
|
12
|
-
ReactiveFormsModule,
|
|
13
|
-
MobileControl,
|
|
14
|
-
MobileViewer
|
|
15
|
-
],
|
|
16
|
-
template: `
|
|
17
|
-
@if (field.visible()) {
|
|
18
|
-
@if (field.mode() === "edit") {
|
|
19
|
-
<iss-ctrl-mobile [formControlName]="field.name">
|
|
20
|
-
<label>{{ field.label() }}</label>
|
|
21
|
-
</iss-ctrl-mobile>
|
|
22
|
-
} @else {
|
|
23
|
-
<iss-viewer-mobile [field]="field" />
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
`
|
|
27
|
-
})
|
|
28
|
-
export class MobileField extends FieldBase {}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { getExampleNumber, parsePhoneNumber, PhoneNumber } from "libphonenumber-js/mobile";
|
|
3
|
-
import examples from "libphonenumber-js/mobile/examples";
|
|
4
|
-
import { COUNTRIES } from "./countries.const";
|
|
5
|
-
import { Country } from "./country";
|
|
6
|
-
import { ISO2 } from "./iso2.type";
|
|
7
|
-
import { Mobile } from "./mobile";
|
|
8
|
-
|
|
9
|
-
@Injectable({providedIn: "root"})
|
|
10
|
-
export class Phone {
|
|
11
|
-
|
|
12
|
-
parse(phoneNumber: string, countryCode?: ISO2): PhoneNumber | undefined {
|
|
13
|
-
try {
|
|
14
|
-
return parsePhoneNumber(phoneNumber, countryCode);
|
|
15
|
-
} catch (e) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
getPhoneNumberObject(number: string): Mobile | undefined {
|
|
21
|
-
const parsedNumber: PhoneNumber | undefined = this.parse(number);
|
|
22
|
-
if (parsedNumber) {
|
|
23
|
-
const dailCode: string = parsedNumber.countryCallingCode;
|
|
24
|
-
const code: ISO2 = this.getCountryIsoCode(dailCode, parsedNumber) as ISO2;
|
|
25
|
-
const nationalNumber: string = parsedNumber.nationalNumber;
|
|
26
|
-
const internationalNumber: string = parsedNumber.format("E.164");
|
|
27
|
-
const placeholder = this.getPlaceholder(code);
|
|
28
|
-
const name: string = this.getCountryByDailCode(dailCode, parsedNumber)?.name ?? "";
|
|
29
|
-
return {dailCode, code, nationalNumber, internationalNumber, placeholder, name, priority: 0, order: 0};
|
|
30
|
-
}
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
format(phoneNumber: string, countryCode: ISO2, numberFormat: "E.164" | "INTERNATIONAL" | "NATIONAL"): string {
|
|
35
|
-
const number = this.parse(phoneNumber, countryCode);
|
|
36
|
-
|
|
37
|
-
if (number) {
|
|
38
|
-
return number.format(numberFormat);
|
|
39
|
-
}
|
|
40
|
-
return "";
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
validate(number: string): boolean {
|
|
44
|
-
try {
|
|
45
|
-
const parsedNumber = parsePhoneNumber(number);
|
|
46
|
-
// Check if it's a mobile number type
|
|
47
|
-
if (parsedNumber.getType() !== "MOBILE") {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
return parsedNumber.isValid();
|
|
51
|
-
} catch (e) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
getPlaceholder(countryCode: ISO2): string {
|
|
57
|
-
try {
|
|
58
|
-
const exampleNumber = getExampleNumber(countryCode, examples);
|
|
59
|
-
return exampleNumber ? (countryCode === "SA" ? "050 123 4567" : exampleNumber.formatNational()) : "";
|
|
60
|
-
} catch (e) {
|
|
61
|
-
return "";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
getCountryIsoCode(dailCode: string, number: PhoneNumber): string {
|
|
66
|
-
return this.getCountryByDailCode(dailCode, number)?.code ?? "";
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
getCountryByDailCode(dailCode: string | undefined, number: PhoneNumber): Country | undefined {
|
|
70
|
-
// Will use this to match area code from the first numbers
|
|
71
|
-
const rawNumber = number.nationalNumber;
|
|
72
|
-
// List of all countries with dailCode (can be more than one. e.x. US, CA, DO, PR all have +1 dailCode)
|
|
73
|
-
const countries: Country[] = COUNTRIES.filter((c: Country) => c.dailCode === dailCode?.toString());
|
|
74
|
-
// Main country is the country, which has no areaCodes specified in country-code.ts file.
|
|
75
|
-
const mainCountry: Country | undefined = countries.find((c: Country) => c.areaCodes === undefined);
|
|
76
|
-
// Secondary countries are all countries, which have areaCodes specified in country-code.ts file.
|
|
77
|
-
const secondaryCountries: Country[] = countries.filter((c: Country) => c.areaCodes !== undefined);
|
|
78
|
-
let matchedCountry: Country | undefined = mainCountry ? mainCountry : undefined;
|
|
79
|
-
|
|
80
|
-
/*
|
|
81
|
-
Iterate over each secondary country and check if nationalNumber starts with any of areaCodes available.
|
|
82
|
-
If no matches found, fallback to the main country.
|
|
83
|
-
*/
|
|
84
|
-
secondaryCountries.forEach((country) => {
|
|
85
|
-
if (country && country.areaCodes) {
|
|
86
|
-
country.areaCodes.forEach((areaCode) => {
|
|
87
|
-
if (rawNumber.startsWith(areaCode)) {
|
|
88
|
-
matchedCountry = country;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
return matchedCountry;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,25 +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
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
selector: "iss-field-note",
|
|
9
|
-
viewProviders: [VIEW_PROVIDER],
|
|
10
|
-
imports: [
|
|
11
|
-
ReactiveFormsModule,
|
|
12
|
-
MatLabel
|
|
13
|
-
],
|
|
14
|
-
template: `
|
|
15
|
-
@if (field.visible()) {
|
|
16
|
-
@if (!(field.config.hideLabel)) {
|
|
17
|
-
<mat-label>{{ field.label() }}</mat-label>
|
|
18
|
-
}
|
|
19
|
-
<p>
|
|
20
|
-
{{ ctrlValueChange() }}
|
|
21
|
-
</p>
|
|
22
|
-
}
|
|
23
|
-
`
|
|
24
|
-
})
|
|
25
|
-
export class NoteField extends FieldBase {}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Pipe, PipeTransform } from "@angular/core";
|
|
2
|
-
import { PlateLetter } from "./plate-letter";
|
|
3
|
-
import { PLATE_LETTERS } from "./plate-letters.const";
|
|
4
|
-
|
|
5
|
-
@Pipe({name: "plateLetter"})
|
|
6
|
-
export class PlateLetterPipe implements PipeTransform {
|
|
7
|
-
transform(value: string): unknown {
|
|
8
|
-
const letter: PlateLetter | undefined = PLATE_LETTERS.find((l: PlateLetter) => l.value === value);
|
|
9
|
-
if (letter) {
|
|
10
|
-
return letter.label.ar;
|
|
11
|
-
}
|
|
12
|
-
return value;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { PlateLetter } from "./plate-letter";
|
|
2
|
-
|
|
3
|
-
export const PLATE_LETTERS: PlateLetter[] = [
|
|
4
|
-
{label: {ar: "أ", en: "A"}, value: "A"},
|
|
5
|
-
{label: {ar: "ب", en: "B"}, value: "B"},
|
|
6
|
-
{label: {ar: "ح", en: "J"}, value: "J"},
|
|
7
|
-
{label: {ar: "د", en: "D"}, value: "D"},
|
|
8
|
-
{label: {ar: "ر", en: "R"}, value: "R"},
|
|
9
|
-
{label: {ar: "س", en: "S"}, value: "S"},
|
|
10
|
-
{label: {ar: "ص", en: "X"}, value: "X"},
|
|
11
|
-
{label: {ar: "ط", en: "T"}, value: "T"},
|
|
12
|
-
{label: {ar: "ع", en: "E"}, value: "E"},
|
|
13
|
-
{label: {ar: "ق", en: "G"}, value: "G"},
|
|
14
|
-
{label: {ar: "ك", en: "K"}, value: "K"},
|
|
15
|
-
{label: {ar: "ل", en: "L"}, value: "L"},
|
|
16
|
-
{label: {ar: "م", en: "Z"}, value: "Z"},
|
|
17
|
-
{label: {ar: "ن", en: "N"}, value: "N"},
|
|
18
|
-
{label: {ar: "هـ", en: "H"}, value: "H"},
|
|
19
|
-
{label: {ar: "و", en: "U"}, value: "U"},
|
|
20
|
-
{label: {ar: "ي", en: "V"}, value: "V"}
|
|
21
|
-
];
|