Merge in TEA/mina-sidor-fa-web from feature/TV-861-digi-ng-form-validation-message to develop Squashed commit of the following: commit 0f499871aca875dfcca640e8fbf871f52adc33d3 Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se> Date: Fri Nov 19 11:54:42 2021 +0100 fix minor bugs commit ba3d2784903127e1b9dacbd04ad523a846cfe3f4 Merge: 20a004ba981fb51dAuthor: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se> Date: Fri Nov 19 11:51:17 2021 +0100 Merge branch 'develop' into feature/TV-861-digi-ng-form-validation-message # Conflicts: # apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.module.ts # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.module.ts # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.component.ts # apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.module.ts commit 20a004ba2f75f92043713704305815d60c61e2ef Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Thu Nov 18 15:54:16 2021 +0100 Removed unused messagetypes from validation messages commit 7dd5317267560dfdc95390b32f61b3df1518eb40 Merge: 9ffdefaec6bbfb1bAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Thu Nov 18 15:48:34 2021 +0100 Fixed some issues with a11y commit 9ffdefaea78c90f9d4f0ee3f9b4bf5a157c34667 Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 16:47:47 2021 +0100 removed reference to digiNgFormSelect commit 6c54a0ea9b0f3101adf60c6d04c7ac92010206c9 Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 16:45:29 2021 +0100 Replaced digi-ng-form-sleect with ui-select (handledare-picker and organization-picker-form left. commit 58341f57612bd70204bbdf3f9805bb54f8fc2078 Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 15:56:42 2021 +0100 removed reference in employee-form for digiNgFormSelect commit 663743508264cb781c3cb60682f6e6937a8e4eeb Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 15:50:29 2021 +0100 Replaced digi-ng-form-select with ui-select for edit-employee-form commit fea6215809128f78229cbded5f92fc5de461317e Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 14:33:58 2021 +0100 - Replaced all references to digi-form-validation-message (digi-core) to our new ui-validation-message ( a few left to change in this feature). - Replaced references from digi-ng-form-select to our new ui-select in franvaro-report and signal-form commit 28c152efe90acf766dbd190b12fd262344e39010 Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 10:14:50 2021 +0100 Removed blank space commit 42fa243d15bba562cd019d542e9815350623db63 Merge: a7a4a4c18f05343eAuthor: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 10:10:44 2021 +0100 Merge branch 'develop' into feature/TV-861-digi-ng-form-validation-message commit a7a4a4c111bc7a7cd3704d7c2866fcbb31ef00e0 Author: WP\holno <nikola.holst-nikolic@arbetsformedlingen.se> Date: Wed Nov 17 10:10:32 2021 +0100 - Created ui-validation-message component for digi-form-validation-message to replace digi-ng´s form-validation. - Removed css style as it did not work earlier and looks the same without (good margin top as it is). FYI: the new validation-message from digi-core includes three types (success, error, warning), digi-ng´s included only two types (success, error).
125 lines
3.1 KiB
TypeScript
125 lines
3.1 KiB
TypeScript
import {
|
|
AfterViewInit,
|
|
ChangeDetectionStrategy,
|
|
ChangeDetectorRef,
|
|
Component,
|
|
EventEmitter,
|
|
Injector,
|
|
Input,
|
|
OnChanges,
|
|
Output,
|
|
} from '@angular/core';
|
|
import { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
import { uuid } from '@utils/uuid.util';
|
|
import { RadiobuttonGroupDirection } from './radiobutton-group-direction.enum';
|
|
import { Radiobutton } from './radiobutton.model';
|
|
|
|
/**
|
|
* A radiobutton-group component.
|
|
*
|
|
* ## Usage
|
|
* ``import {UiRadiobuttonGroupModule} from '@ui/radiobutton-group/radiobutton-group.module';``
|
|
*/
|
|
@Component({
|
|
selector: 'ui-radiobutton-group',
|
|
templateUrl: './radiobutton-group.component.html',
|
|
styleUrls: ['./radiobutton-group.component.scss'],
|
|
providers: [
|
|
{
|
|
provide: NG_VALUE_ACCESSOR,
|
|
useExisting: RadiobuttonGroupComponent,
|
|
multi: true,
|
|
},
|
|
],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class RadiobuttonGroupComponent implements ControlValueAccessor, AfterViewInit, OnChanges {
|
|
@Input() uiDirection: RadiobuttonGroupDirection;
|
|
@Input() uiInvalid: boolean;
|
|
@Input() uiValidationMessage: string;
|
|
@Input() uiRadiobuttons: Radiobutton[];
|
|
@Input() uiBooleanValues: boolean;
|
|
@Input() uiSecondary: boolean;
|
|
@Input() uiRequired: boolean;
|
|
@Input() uiName: string;
|
|
@Input() uiId: string = uuid();
|
|
@Input() uiAnnounceIfOptional: boolean;
|
|
@Output() uiOnChange = new EventEmitter<any>();
|
|
|
|
name: string | number;
|
|
onTouched: () => {};
|
|
private onChange: (value: any) => {};
|
|
private _value: any;
|
|
|
|
constructor(private injector: Injector, private changeDetectorRef: ChangeDetectorRef) {}
|
|
|
|
get currentValue(): any {
|
|
return this._value;
|
|
}
|
|
|
|
get radiobuttonsModifierClass(): string {
|
|
if (this.uiDirection === RadiobuttonGroupDirection.HORIZONTAL) {
|
|
return `ui-radiobutton-group__radiobuttons--horizontal`;
|
|
}
|
|
return '';
|
|
}
|
|
|
|
private _transformValue(value: any): any {
|
|
return this.uiBooleanValues ? value === 'true' : value;
|
|
}
|
|
|
|
private get _requiredText() {
|
|
if (this.uiRequired && !this.uiAnnounceIfOptional) {
|
|
return ' (obligatoriskt)';
|
|
}
|
|
|
|
if (!this.uiRequired && this.uiAnnounceIfOptional) {
|
|
return ' (frivilligt)';
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
getLabelText(label: string): string {
|
|
return `${label}${this._requiredText}`;
|
|
}
|
|
|
|
ngAfterViewInit(): void {
|
|
const ngControl: NgControl = this.injector.get(NgControl, null);
|
|
if (ngControl) {
|
|
this.name = this.uiName || ngControl.name;
|
|
}
|
|
}
|
|
|
|
ngOnChanges(): void {
|
|
const ngControl: NgControl = this.injector.get(NgControl, null);
|
|
if (ngControl) {
|
|
this.name = this.uiName || ngControl.name;
|
|
}
|
|
}
|
|
|
|
checkForChange(rawValue: any): void {
|
|
const value = this._transformValue(rawValue);
|
|
if (this._value !== value) {
|
|
if (this.onChange) {
|
|
this.onChange(value);
|
|
}
|
|
this._value = value;
|
|
this.uiOnChange.emit(value);
|
|
}
|
|
}
|
|
|
|
writeValue(value: any): void {
|
|
this._value = value;
|
|
this.changeDetectorRef.detectChanges();
|
|
}
|
|
|
|
registerOnChange(fn: (value: any) => {}) {
|
|
this.onChange = fn;
|
|
}
|
|
|
|
registerOnTouched(fn: () => {}) {
|
|
this.onTouched = fn;
|
|
}
|
|
}
|