diff --git a/Makefile b/Makefile index e16fa2abe..b09adaca7 100644 --- a/Makefile +++ b/Makefile @@ -83,4 +83,7 @@ patch-db/client/dist: $(PATCH_DB_CLIENT_SRC) patch-db/client/node_modules npm --prefix patch-db/client run build # this is a convenience step to build all frontends - it is not referenced elsewhere in this file -frontend: frontend/node_modules frontend/config.json $(EMBASSY_UIS) +frontends: frontend/node_modules frontend/config.json $(EMBASSY_UIS) + +# this is a convenience step to build the UI +ui: frontend/node_modules frontend/config.json frontend/dist/ui diff --git a/frontend/assets/fonts/Redacted/redacted.regular.ttf b/frontend/assets/fonts/Redacted/redacted.regular.ttf new file mode 100644 index 000000000..3bc1fe32c Binary files /dev/null and b/frontend/assets/fonts/Redacted/redacted.regular.ttf differ diff --git a/frontend/projects/ui/src/app/components/form-object/form-object.component.html b/frontend/projects/ui/src/app/components/form-object/form-object.component.html index 2b3888511..6a9cd9141 100644 --- a/frontend/projects/ui/src/app/components/form-object/form-object.component.html +++ b/frontend/projects/ui/src/app/components/form-object/form-object.component.html @@ -72,6 +72,12 @@ - + - - +

diff --git a/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.module.ts b/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.module.ts index d2b1faab4..a13572070 100644 --- a/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.module.ts +++ b/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.module.ts @@ -5,6 +5,7 @@ import { IonicModule } from '@ionic/angular' import { RouterModule } from '@angular/router' import { SharedPipesModule } from '@start9labs/shared' import { FormsModule } from '@angular/forms' +import { MaskPipeModule } from 'src/app/pipes/mask/mask.module' @NgModule({ declarations: [GenericInputComponent], diff --git a/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.ts b/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.ts index ec3eb0876..70b291016 100644 --- a/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.ts +++ b/frontend/projects/ui/src/app/modals/generic-input/generic-input.component.ts @@ -1,20 +1,26 @@ import { Component, Input, ViewChild } from '@angular/core' import { ModalController, IonicSafeString, IonInput } from '@ionic/angular' import { getErrorMessage } from '@start9labs/shared' +import { MaskPipe } from 'src/app/pipes/mask/mask.pipe' @Component({ selector: 'generic-input', templateUrl: './generic-input.component.html', styleUrls: ['./generic-input.component.scss'], + providers: [MaskPipe], }) export class GenericInputComponent { @ViewChild('mainInput') elem: IonInput @Input() options: GenericInputOptions value: string - unmasked = false + maskedValue: string + masked: boolean error: string | IonicSafeString - constructor(private readonly modalCtrl: ModalController) {} + constructor( + private readonly modalCtrl: ModalController, + private readonly mask: MaskPipe, + ) {} ngOnInit() { const defaultOptions: Partial = { @@ -29,6 +35,7 @@ export class GenericInputComponent { ...this.options, } + this.masked = !!this.options.useMask this.value = this.options.initialValue || '' } @@ -37,13 +44,22 @@ export class GenericInputComponent { } toggleMask() { - this.unmasked = !this.unmasked + this.masked = !this.masked } cancel() { this.modalCtrl.dismiss() } + transformInput(newValue: string) { + let i = 0 + this.value = newValue + .split('') + .map(x => (x === '●' ? this.value[i++] : x)) + .join('') + this.maskedValue = this.mask.transform(this.value) + } + async submit() { const value = this.value.trim() diff --git a/frontend/projects/ui/src/styles.scss b/frontend/projects/ui/src/styles.scss index db31afd59..5de41be67 100644 --- a/frontend/projects/ui/src/styles.scss +++ b/frontend/projects/ui/src/styles.scss @@ -43,6 +43,13 @@ src: url('/assets/fonts/Open_Sans/OpenSans-Light.ttf'); } +@font-face { + font-family: 'Redacted'; + font-style: normal; + font-weight: normal; + src: url('/assets/fonts/Redacted/redacted.regular.ttf'); +} + /** Ionic CSS Variables overrides **/ :root { --ion-font-family: 'Open Sans';