From 5659391b0025946084049ebec3dc475a186c7366 Mon Sep 17 00:00:00 2001 From: mdelez <60604010+mdelez@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:28:58 +0100 Subject: [PATCH] feat(string-literal-input): updates input on label changes (#269) --- .../string-literal-input.component.spec.ts | 30 +++++++++++++++++++ .../string-literal-input.component.ts | 13 ++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.spec.ts b/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.spec.ts index c576d6198..b905f5033 100644 --- a/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.spec.ts +++ b/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.spec.ts @@ -313,4 +313,34 @@ describe('StringLiteralInputComponent', () => { expect(await inputElement.getValue()).toEqual('Brave New World'); }); + + it('should update values and assign them to the correct language when langauges object is changed', async () => { + + const inputElement = await loader.getHarness(MatInputHarness.with({selector: '.inputValue'})); + + expect(await inputElement.getValue()).toEqual('World'); + + testHostComponent.labels = [ + { + value: 'Welt', + language: 'de' + }, + { + value: 'Brave New World', + language: 'en' + }, + { + value: 'Monde', + language: 'fr' + }, + { + value: 'Mondo', + language: 'it' + }, + ]; + + testHostFixture.detectChanges(); + + expect(await inputElement.getValue()).toEqual('Brave New World'); + }); }); diff --git a/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.ts b/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.ts index ee2ca9168..a599dd61d 100644 --- a/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.ts +++ b/projects/dsp-ui/src/lib/action/components/string-literal-input/string-literal-input.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { MatMenuTrigger } from '@angular/material/menu'; import { StringLiteral } from '@dasch-swiss/dsp-js'; @@ -9,7 +9,7 @@ import { SessionService } from '../../../core/session.service'; templateUrl: './string-literal-input.component.html', styleUrls: ['./string-literal-input.component.scss'] }) -export class StringLiteralInputComponent implements OnInit { +export class StringLiteralInputComponent implements OnInit, OnChanges { languages: string[] = ['de', 'fr', 'it', 'en']; @@ -125,8 +125,12 @@ export class StringLiteralInputComponent implements OnInit { // get value from stringLiterals const val = this.getValueFromStringLiteral(this.language); this.updateFormField(val); + } - + ngOnChanges() { + // get value from stringLiterals + const val = this.getValueFromStringLiteral(this.language); + this.updateFormField(val); } /** @@ -210,6 +214,9 @@ export class StringLiteralInputComponent implements OnInit { if (!value) { value = ''; } + if (!this.form) { + return; + } this.form.controls.text.setValue(value); }