Skip to content
Snippets Groups Projects
Commit f8d72c19 authored by rhenck's avatar rhenck
Browse files

Allow for radio-group-images to click on the label (image) to select

parent ea35cd76
No related branches found
No related tags found
No related merge requests found
...@@ -21,19 +21,22 @@ import { FormElementComponent } from '../../form-element-component.directive'; ...@@ -21,19 +21,22 @@ import { FormElementComponent } from '../../form-element-component.directive';
<mat-radio-group aria-labelledby="radio-group-label" [formControl]="elementFormControl" <mat-radio-group aria-labelledby="radio-group-label" [formControl]="elementFormControl"
class="grid-layout" [style.display]="'grid'" class="grid-layout" [style.display]="'grid'"
[style.grid-template-columns]="'1fr '.repeat(elementModel.columns.length)"> [style.grid-template-columns]="'1fr '.repeat(elementModel.columns.length)">
<div *ngFor="let option of elementModel.columns; let i = index" class="columns" <label *ngFor="let option of elementModel.columns; let i = index" class="columns"
fxLayout="column" id="radio-group-label"
[style.grid-column-start]="1 + i" fxLayout="column"
[style.grid-column-end]="2 + i" [style.grid-column-start]="1 + i"
[style.grid-row-start]="1" [style.grid-column-end]="2 + i"
[style.grid-row-end]="2"> [style.grid-row-start]="1"
[style.grid-row-end]="2"
(click)="selectOption(i)">
<img *ngIf="option.imgSrc && option.position === 'above'" <img *ngIf="option.imgSrc && option.position === 'above'"
[src]="option.imgSrc | safeResourceUrl" alt="Image Placeholder"> [src]="option.imgSrc | safeResourceUrl" alt="Image Placeholder">
<div>{{option.text}}</div> <div>{{option.text}}</div>
<img *ngIf="option.imgSrc && option.position === 'below'" <img *ngIf="option.imgSrc && option.position === 'below'"
[src]="option.imgSrc | safeResourceUrl" alt="Image Placeholder"> [src]="option.imgSrc | safeResourceUrl" alt="Image Placeholder">
</div> </label>
<mat-radio-button *ngFor="let option of elementModel.columns; let i = index" <mat-radio-button *ngFor="let option of elementModel.columns; let i = index"
aria-labelledby="radio-group-label"
[style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'" [style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'"
[value]="i" [value]="i"
[style.grid-column-start]="1 + i" [style.grid-column-start]="1 + i"
...@@ -46,7 +49,7 @@ import { FormElementComponent } from '../../form-element-component.directive'; ...@@ -46,7 +49,7 @@ import { FormElementComponent } from '../../form-element-component.directive';
`, `,
styles: [ styles: [
'.grid-layout .columns {text-align: center;}', '.grid-layout .columns {text-align: center;}',
'.grid-layout .columns img {height: 100%; object-fit: none;}', '.grid-layout .columns img {height: 100%; object-fit: none; cursor: pointer;}',
'::ng-deep app-radio-group-images .grid-layout mat-radio-button span.mat-radio-container {left: calc(50% - 10px)}', '::ng-deep app-radio-group-images .grid-layout mat-radio-button span.mat-radio-container {left: calc(50% - 10px)}',
'mat-radio-group {margin-top: 10px}', 'mat-radio-group {margin-top: 10px}',
'.grid-layout mat-radio-button {margin-top: 15px}' '.grid-layout mat-radio-button {margin-top: 15px}'
...@@ -54,4 +57,8 @@ import { FormElementComponent } from '../../form-element-component.directive'; ...@@ -54,4 +57,8 @@ import { FormElementComponent } from '../../form-element-component.directive';
}) })
export class RadioGroupImagesComponent extends FormElementComponent { export class RadioGroupImagesComponent extends FormElementComponent {
elementModel!: RadioGroupImagesElement; elementModel!: RadioGroupImagesElement;
selectOption(index: number): void {
this.elementFormControl.setValue(index);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment