[BP-841] Add cyclic reporting subform components
Signed-off-by: Christopher Keim <keim@develop-group.de>
diff --git a/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.html b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.html
new file mode 100644
index 0000000..e4b4da6
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.html
@@ -0,0 +1,54 @@
+<!--
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+-->
+
+<ng-container [formGroup]="form">
+
+ <label [for]="controlId" class="field-label">
+ <ng-content></ng-content>
+ </label>
+
+ <ng-container *ngIf="forDayOffset; else weekdayTemplateRef;">
+ <ok-stepper-control [controlId]="controlId"
+ [formControlName]="key + 'DayOffset'"
+ [placeholder]="'Tage'">
+ </ok-stepper-control>
+
+ <span class="field-control-days">Tage</span>
+ </ng-container>
+
+ <ng-template #weekdayTemplateRef>
+
+ <p-dropdown class="field-control-dropdown ui-dropdown" [inputId]="controlId"
+ [style]="{width: '100%', padding: '0.125rem 0.5rem', backgroundColor: 'white'}"
+ [options]="options" [formControlName]="key + 'WeekDay'">
+ </p-dropdown>
+
+ <select *ngIf="false" [id]="controlId"
+ [formControlName]="key + 'WeekDay'"
+ class="form-control field-control-select">
+ <ng-content select="option"></ng-content>
+ </select>
+ </ng-template>
+
+ <ok-stepper-control [minValue]="0" [maxValue]="23" [digits]="2" [cyclic]="true" [step]="1"
+ [placeholder]="'HH'" [formControlName]="key + 'Hour'">
+ </ok-stepper-control>
+
+ <span class="field-control-time-separator">:</span>
+
+ <ok-stepper-control [minValue]="0" [maxValue]="60 - triggerMinuteStep" [digits]="2" [cyclic]="true"
+ [step]="triggerMinuteStep" [placeholder]="'MM'" [formControlName]="key + 'Minute'">
+ </ok-stepper-control>
+
+ <span class="field-control-clock">Uhr</span>
+
+</ng-container>
diff --git a/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.scss b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.scss
new file mode 100644
index 0000000..d554d22
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.scss
@@ -0,0 +1,46 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+:host {
+ display: inline-flex;
+ flex-flow: row;
+ align-items: center;
+ width: 100%;
+}
+
+.field-label {
+ margin: 0;
+ display: inline-block;
+ flex: 1;
+}
+
+.field-control {
+ width: 100%;
+ display: flex;
+ flex-flow: column;
+}
+
+.field-control-days {
+ margin: 0 2.35em 0 0.75em;
+}
+
+.field-control-dropdown {
+ max-width: 8.25em;
+ width: 100%;
+ margin: 0 1em 0 0.5em;
+}
+
+.field-control-time-separator {
+ padding: 0.25em;
+}
+
+.field-control-clock {
+ margin-left: 0.25em;
+}
diff --git a/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.spec.ts b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.spec.ts
new file mode 100644
index 0000000..d6824d5
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.spec.ts
@@ -0,0 +1,48 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CommonModule} from '@angular/common';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {FormControl, FormGroup} from '@angular/forms';
+import {SharedModule} from '@shared/shared.module';
+import {CyclicReportFormDateControlsComponent} from './cyclic-report-form-date-controls.component';
+
+describe('CyclicReportFormDateControlsComponent', () => {
+
+ let component: CyclicReportFormDateControlsComponent;
+ let fixture: ComponentFixture<CyclicReportFormDateControlsComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ CyclicReportFormDateControlsComponent
+ ],
+ imports: [
+ CommonModule,
+ SharedModule
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CyclicReportFormDateControlsComponent);
+ component = fixture.componentInstance;
+ const key = 'test';
+ component.form = new FormGroup(['DayOffset', 'WeekDay', 'Hour', 'Minute']
+ .reduce((result, postfix) => ({...result, [key + postfix]: new FormControl()}), {}));
+ component.key = key;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeDefined();
+ });
+
+});
diff --git a/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.ts b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.ts
new file mode 100644
index 0000000..a1b0966
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-date-controls/cyclic-report-form-date-controls.component.ts
@@ -0,0 +1,42 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, Input} from '@angular/core';
+import {FormGroup} from '@angular/forms';
+import {SelectOptionObject} from '@shared/model/SelectOptionObject';
+
+@Component({
+ selector: 'ok-cyclic-report-form-date-controls',
+ styleUrls: ['cyclic-report-form-date-controls.component.scss'],
+ templateUrl: 'cyclic-report-form-date-controls.component.html'
+})
+export class CyclicReportFormDateControlsComponent {
+
+ private static id = 0;
+
+ @Input()
+ public controlId = `CyclicReportFormTriggerControlsComponent-${CyclicReportFormDateControlsComponent.id++}`;
+
+ @Input()
+ public triggerMinuteStep = 1;
+
+ @Input()
+ public form: FormGroup;
+
+ @Input()
+ public key: string;
+
+ @Input()
+ public forDayOffset: boolean;
+
+ @Input()
+ public options: SelectOptionObject[] = [];
+
+}
diff --git a/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.html b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.html
new file mode 100644
index 0000000..b12745d
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.html
@@ -0,0 +1,43 @@
+<!--
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+-->
+
+<label class="field-label" [for]="controlId">
+ <ng-content></ng-content>
+</label>
+
+<div [formGroup]="form" class="field-control">
+
+ <ng-template #inputTemplateRef>
+ <input [id]="controlId"
+ autocomplete="off"
+ class="form-control"
+ [formControlName]="'' + key">
+ </ng-template>
+
+ <span class="field-control-input-container" *ngIf="displayAddButton || displayCancelButton; else inputTemplateRef;">
+ <ng-container [ngTemplateOutlet]="inputTemplateRef"></ng-container>
+ <button *ngIf="displayAddButton"
+ [disabled]="form.disabled"
+ (click)="add.emit()"
+ class="pi pi-plus btn btn-link field-control-input-btn"
+ type="button">
+ </button>
+ <button *ngIf="displayCancelButton"
+ [disabled]="form.disabled"
+ (click)="cancel.emit()"
+ class="pi pi-times btn btn-link field-control-input-btn"
+ type="button">
+ </button>
+ </span>
+
+ <ok-error [control]="form?.get([key])"></ok-error>
+</div>
diff --git a/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.scss b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.scss
new file mode 100644
index 0000000..60651c0
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.scss
@@ -0,0 +1,43 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+:host {
+ display: inline-flex;
+ flex-flow: row;
+ width: 100%;
+}
+
+.field-label {
+ margin: 0;
+ display: inline-block;
+}
+
+.field-control {
+ width: 100%;
+ display: flex;
+ flex-flow: column;
+}
+
+.field-control-input-container {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+
+ input {
+ padding-right: 2.375em;
+ }
+}
+
+.field-control-input-btn {
+ position: absolute;
+ top: 0;
+ right: 0;
+ text-decoration: unset;
+}
diff --git a/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.spec.ts b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.spec.ts
new file mode 100644
index 0000000..7858639
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.spec.ts
@@ -0,0 +1,47 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CommonModule} from '@angular/common';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {FormControl, FormGroup} from '@angular/forms';
+import {SharedModule} from '@shared/shared.module';
+import {CyclicReportFormInputComponent} from './cyclic-report-form-input.component';
+
+describe('CyclicReportFormInputComponent', () => {
+
+ let component: CyclicReportFormInputComponent;
+ let fixture: ComponentFixture<CyclicReportFormInputComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ CyclicReportFormInputComponent
+ ],
+ imports: [
+ CommonModule,
+ SharedModule
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CyclicReportFormInputComponent);
+ component = fixture.componentInstance;
+ const key = 'test';
+ component.form = new FormGroup({ [key]: new FormControl()});
+ component.key = key;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeDefined();
+ });
+
+});
diff --git a/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.ts b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.ts
new file mode 100644
index 0000000..8b6b3fb
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-input/cyclic-report-form-input.component.ts
@@ -0,0 +1,44 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, EventEmitter, Input, Output} from '@angular/core';
+import {FormArray, FormGroup} from '@angular/forms';
+
+@Component({
+ selector: 'ok-cyclic-report-form-input',
+ styleUrls: ['cyclic-report-form-input.component.scss'],
+ templateUrl: 'cyclic-report-form-input.component.html'
+})
+export class CyclicReportFormInputComponent {
+
+ private static id = 0;
+
+ @Input()
+ public controlId = `CyclicReportFormInputComponent-${CyclicReportFormInputComponent.id++}`;
+
+ @Input()
+ public form: FormGroup | FormArray;
+
+ @Input()
+ public key: string | number;
+
+ @Input()
+ public displayAddButton: boolean;
+
+ @Input()
+ public displayCancelButton: boolean;
+
+ @Output()
+ public cancel = new EventEmitter<void>();
+
+ @Output()
+ public add = new EventEmitter<void>();
+
+}
diff --git a/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.html b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.html
new file mode 100644
index 0000000..4c5e7b5
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.html
@@ -0,0 +1,26 @@
+<!--
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+-->
+
+<label class="field-label" [for]="controlId">
+ <ng-content></ng-content>
+</label>
+
+<div [formGroup]="form" class="field-control">
+
+ <p-dropdown class="field-control-dropdown ui-dropdown" [inputId]="controlId"
+ [style]="{width: '100%', boxSizing: 'border-box', padding: '0.125rem 0.5rem', backgroundColor: 'white'}"
+ [options]="options" [formControlName]="'' + key" [filter]="filter" [autoDisplayFirst]="false">
+ </p-dropdown>
+
+ <ok-error [control]="form?.get([key])"></ok-error>
+
+</div>
diff --git a/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.scss b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.scss
new file mode 100644
index 0000000..7fb6ea7
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.scss
@@ -0,0 +1,31 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+:host {
+ display: inline-flex;
+ flex-flow: row;
+ width: 100%;
+}
+
+.field-label {
+ margin: 0;
+ display: inline-block;
+}
+
+.field-control {
+ width: 5em;
+ flex-grow: 1;
+ display: flex;
+ flex-flow: column;
+}
+
+.field-control-dropdown {
+ width: 100%;
+}
diff --git a/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.spec.ts b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.spec.ts
new file mode 100644
index 0000000..0dfc9cd
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.spec.ts
@@ -0,0 +1,47 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CommonModule} from '@angular/common';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {FormControl, FormGroup} from '@angular/forms';
+import {SharedModule} from '@shared/shared.module';
+import {CyclicReportFormSelectComponent} from './cyclic-report-form-select.component';
+
+describe('CyclicReportFormSelectComponent', () => {
+
+ let component: CyclicReportFormSelectComponent;
+ let fixture: ComponentFixture<CyclicReportFormSelectComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ CyclicReportFormSelectComponent
+ ],
+ imports: [
+ CommonModule,
+ SharedModule
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CyclicReportFormSelectComponent);
+ component = fixture.componentInstance;
+ const key = 'test';
+ component.form = new FormGroup({ [key]: new FormControl()});
+ component.key = key;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeDefined();
+ });
+
+});
diff --git a/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.ts b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.ts
new file mode 100644
index 0000000..8ec9b5e
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-select/cyclic-report-form-select.component.ts
@@ -0,0 +1,39 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, Input} from '@angular/core';
+import {FormGroup} from '@angular/forms';
+import {SelectOptionObject} from '@shared/model/SelectOptionObject';
+
+@Component({
+ selector: 'ok-cyclic-report-form-select',
+ styleUrls: ['cyclic-report-form-select.component.scss'],
+ templateUrl: 'cyclic-report-form-select.component.html'
+})
+export class CyclicReportFormSelectComponent {
+
+ private static id = 0;
+
+ @Input()
+ public controlId = `CyclicReportFormSelectComponent-${CyclicReportFormSelectComponent.id++}`;
+
+ @Input()
+ public form: FormGroup;
+
+ @Input()
+ public options: SelectOptionObject[] = [];
+
+ @Input()
+ public filter: boolean;
+
+ @Input()
+ public key: string | number;
+
+}
diff --git a/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.html b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.html
new file mode 100644
index 0000000..48181a2
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.html
@@ -0,0 +1,26 @@
+<!--
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+-->
+
+<label class="field-label" [for]="controlId">
+ <ng-content></ng-content>
+</label>
+
+<div [formGroup]="form" class="field-control">
+
+ <textarea [id]="controlId"
+ autocomplete="off"
+ class="form-control"
+ [formControlName]="'' + key">
+ </textarea>
+
+ <ok-error [control]="form?.get([key])"></ok-error>
+</div>
diff --git a/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.scss b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.scss
new file mode 100644
index 0000000..06b1741
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.scss
@@ -0,0 +1,30 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+:host {
+ display: inline-flex;
+ flex-flow: row;
+ width: 100%;
+}
+
+.field-label {
+ margin: 0;
+ display: inline-block;
+}
+
+.field-control {
+ width: 100%;
+ display: flex;
+ flex-flow: column;
+
+ textarea {
+ height: 100%;
+ }
+}
diff --git a/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.spec.ts b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.spec.ts
new file mode 100644
index 0000000..dd0aaf3
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.spec.ts
@@ -0,0 +1,47 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CommonModule} from '@angular/common';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {FormControl, FormGroup} from '@angular/forms';
+import {SharedModule} from '@shared/shared.module';
+import {CyclicReportFormTextareaComponent} from './cyclic-report-form-textarea.component';
+
+describe('CyclicReportFormTextareaComponent', () => {
+
+ let component: CyclicReportFormTextareaComponent;
+ let fixture: ComponentFixture<CyclicReportFormTextareaComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ CyclicReportFormTextareaComponent
+ ],
+ imports: [
+ CommonModule,
+ SharedModule
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CyclicReportFormTextareaComponent);
+ component = fixture.componentInstance;
+ const key = 'test';
+ component.form = new FormGroup({ [key]: new FormControl()});
+ component.key = key;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeDefined();
+ });
+
+});
diff --git a/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.ts b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.ts
new file mode 100644
index 0000000..3b46cb1
--- /dev/null
+++ b/src/app/cyclic-reporting/components/form-textarea/cyclic-report-form-textarea.component.ts
@@ -0,0 +1,32 @@
+/********************************************************************************
+ * Copyright © 2020 Basys GmbH.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, Input} from '@angular/core';
+import {FormArray, FormGroup} from '@angular/forms';
+
+@Component({
+ selector: 'ok-cyclic-report-form-textarea',
+ styleUrls: ['cyclic-report-form-textarea.component.scss'],
+ templateUrl: 'cyclic-report-form-textarea.component.html'
+})
+export class CyclicReportFormTextareaComponent {
+
+ private static id = 0;
+
+ @Input()
+ public controlId = `CyclicReportFormTextareaComponent-${CyclicReportFormTextareaComponent.id++}`;
+
+ @Input()
+ public form: FormGroup | FormArray;
+
+ @Input()
+ public key: string | number;
+
+}