From e0ee89bdd9ab36ba1d712eba1c21b4e87d095bfc Mon Sep 17 00:00:00 2001 From: Alex Inkin Date: Thu, 27 Apr 2023 06:22:52 +0300 Subject: [PATCH] feat: add input color (#2257) * feat: add input color * patterns will always be there --------- Co-authored-by: Matt Hill --- frontend/package-lock.json | 22 +++++++++++++ frontend/package.json | 2 ++ .../ui/src/app/components/form/control.ts | 4 +++ .../form/form-color/form-color.component.html | 29 ++++++++++++++++ .../form/form-color/form-color.component.scss | 33 +++++++++++++++++++ .../form/form-color/form-color.component.ts | 15 +++++++++ .../form-control/form-control.component.html | 9 ++--- .../form-control/form-control.component.ts | 2 +- .../form/form-file/form-file.component.html | 2 +- .../form-multiselect.component.html | 1 + .../form-number/form-number.component.html | 1 + .../form-select/form-select.component.html | 1 + .../form/form-text/form-text.component.html | 1 + .../form-textarea.component.html | 1 + .../ui/src/app/components/form/form.module.ts | 8 +++++ .../ui/src/app/services/api/api.fixures.ts | 8 +++++ .../ui/src/app/services/form.service.ts | 18 ++++++++++ 17 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 frontend/projects/ui/src/app/components/form/form-color/form-color.component.html create mode 100644 frontend/projects/ui/src/app/components/form/form-color/form-color.component.scss create mode 100644 frontend/projects/ui/src/app/components/form/form-color/form-color.component.ts diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9b7a5b04f..f64ac5bb5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,6 +19,8 @@ "@angular/router": "^14.1.0", "@angular/service-worker": "^14.2.2", "@ionic/angular": "^6.1.15", + "@maskito/angular": "^0.10.0", + "@maskito/core": "^0.10.0", "@materia-ui/ngx-monaco-editor": "^6.0.0", "@ng-web-apis/common": "^2.0.0", "@ng-web-apis/mutation-observer": "^2.0.0", @@ -3498,6 +3500,26 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@maskito/angular": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-0.10.0.tgz", + "integrity": "sha512-RpwN4zj//IV1Lnm1kkDlxej7XuhSlkr3VfkG+dAkl7gJsqdnLnrSFesnId564vwI6oxXZHEGzSpujXdQwje7Kg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0", + "@angular/forms": ">=12.0.0", + "@maskito/core": "^0.10.0", + "rxjs": ">=6.0.0" + } + }, + "node_modules/@maskito/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@maskito/core/-/core-0.10.0.tgz", + "integrity": "sha512-ChCGFiA5uIOVetctbFaWjv1EDj4WdHW2cWtOFuqGbTB4+NcIn//ubccjuTEV41Pb/gR4pyO0Fkv2RRzV+cLOmA==" + }, "node_modules/@materia-ui/ngx-monaco-editor": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@materia-ui/ngx-monaco-editor/-/ngx-monaco-editor-6.0.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 16b8e36d4..e606cf58f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,6 +44,8 @@ "@angular/router": "^14.1.0", "@angular/service-worker": "^14.2.2", "@ionic/angular": "^6.1.15", + "@maskito/angular": "^0.10.0", + "@maskito/core": "^0.10.0", "@materia-ui/ngx-monaco-editor": "^6.0.0", "@ng-web-apis/common": "^2.0.0", "@ng-web-apis/mutation-observer": "^2.0.0", diff --git a/frontend/projects/ui/src/app/components/form/control.ts b/frontend/projects/ui/src/app/components/form/control.ts index 784ab9ada..a945f8e56 100644 --- a/frontend/projects/ui/src/app/components/form/control.ts +++ b/frontend/projects/ui/src/app/components/form/control.ts @@ -6,6 +6,10 @@ export abstract class Control { private readonly control: FormControlComponent = inject(FormControlComponent) + get invalid(): boolean { + return this.control.touched && this.control.invalid + } + get spec(): Spec { return this.control.spec } diff --git a/frontend/projects/ui/src/app/components/form/form-color/form-color.component.html b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.html new file mode 100644 index 000000000..8ad6a19e2 --- /dev/null +++ b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.html @@ -0,0 +1,29 @@ + + {{ spec.name }} + * + + +
+ + +
+
diff --git a/frontend/projects/ui/src/app/components/form/form-color/form-color.component.scss b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.scss new file mode 100644 index 000000000..49496946e --- /dev/null +++ b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.scss @@ -0,0 +1,33 @@ +@import '@taiga-ui/core/styles/taiga-ui-local'; + +.wrapper { + position: relative; + width: 1.5rem; + height: 1.5rem; + pointer-events: auto; + + &::after { + content: ''; + position: absolute; + height: 0.3rem; + width: 1.4rem; + bottom: 0.125rem; + background: currentColor; + border-radius: 0.125rem; + pointer-events: none; + } +} + +.color { + @include fullsize(); + opacity: 0; +} + +.icon { + @include fullsize(); + pointer-events: none; + + input:hover + & { + opacity: 1; + } +} diff --git a/frontend/projects/ui/src/app/components/form/form-color/form-color.component.ts b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.ts new file mode 100644 index 000000000..01aa1ee10 --- /dev/null +++ b/frontend/projects/ui/src/app/components/form/form-color/form-color.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core' +import { ValueSpecColor } from 'start-sdk/lib/config/configTypes' +import { Control } from '../control' +import { MaskitoOptions } from '@maskito/core' + +@Component({ + selector: 'form-color', + templateUrl: './form-color.component.html', + styleUrls: ['./form-color.component.scss'], +}) +export class FormColorComponent extends Control { + readonly mask: MaskitoOptions = { + mask: ['#', ...Array(6).fill(/[0-9a-f]/i)], + } +} diff --git a/frontend/projects/ui/src/app/components/form/form-control/form-control.component.html b/frontend/projects/ui/src/app/components/form/form-control/form-control.component.html index 62dcbaf87..1a03a97b7 100644 --- a/frontend/projects/ui/src/app/components/form/form-control/form-control.component.html +++ b/frontend/projects/ui/src/app/components/form/form-control/form-control.component.html @@ -1,11 +1,12 @@ - + + + + + - - - diff --git a/frontend/projects/ui/src/app/components/form/form-control/form-control.component.ts b/frontend/projects/ui/src/app/components/form/form-control/form-control.component.ts index 127c3d33c..d661b8347 100644 --- a/frontend/projects/ui/src/app/components/form/form-control/form-control.component.ts +++ b/frontend/projects/ui/src/app/components/form/form-control/form-control.component.ts @@ -39,7 +39,7 @@ interface ValidatorsPatternError { pattern: ({ requiredPattern }: ValidatorsPatternError) => control.spec.patterns.find( ({ regex }) => String(regex) === String(requiredPattern), - )?.description || 'Invalid pattern', + )?.description || 'Invalid format', }), }, ], diff --git a/frontend/projects/ui/src/app/components/form/form-file/form-file.component.html b/frontend/projects/ui/src/app/components/form/form-file/form-file.component.html index f90b55fe2..9e9c16613 100644 --- a/frontend/projects/ui/src/app/components/form/form-file/form-file.component.html +++ b/frontend/projects/ui/src/app/components/form/form-file/form-file.component.html @@ -1,5 +1,5 @@ diff --git a/frontend/projects/ui/src/app/components/form/form-multiselect/form-multiselect.component.html b/frontend/projects/ui/src/app/components/form/form-multiselect/form-multiselect.component.html index b97ed3632..4c22f6be2 100644 --- a/frontend/projects/ui/src/app/components/form/form-multiselect/form-multiselect.component.html +++ b/frontend/projects/ui/src/app/components/form/form-multiselect/form-multiselect.component.html @@ -1,5 +1,6 @@ diff --git a/frontend/projects/ui/src/app/components/form/form-text/form-text.component.html b/frontend/projects/ui/src/app/components/form/form-text/form-text.component.html index 80d39e72b..447e6b614 100644 --- a/frontend/projects/ui/src/app/components/form/form-text/form-text.component.html +++ b/frontend/projects/ui/src/app/components/form/form-text/form-text.component.html @@ -1,6 +1,7 @@ diff --git a/frontend/projects/ui/src/app/components/form/form-textarea/form-textarea.component.html b/frontend/projects/ui/src/app/components/form/form-textarea/form-textarea.component.html index 577c9a076..38809fac4 100644 --- a/frontend/projects/ui/src/app/components/form/form-textarea/form-textarea.component.html +++ b/frontend/projects/ui/src/app/components/form/form-textarea/form-textarea.component.html @@ -1,5 +1,6 @@