From 8f4cc53d0f814d3f222801379497cff40d7801ee Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 24 Jul 2023 23:43:38 +0300 Subject: [PATCH] RED-7155 - updated details radio component to can disable a specific option if it's needed --- src/assets/styles/common-dialogs.scss | 12 ++++++++++++ src/lib/inputs/details-radio/details-radio-option.ts | 2 ++ .../details-radio/details-radio.component.html | 3 +++ .../details-radio/details-radio.component.scss | 8 ++++++++ .../inputs/details-radio/details-radio.component.ts | 4 +++- 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/assets/styles/common-dialogs.scss b/src/assets/styles/common-dialogs.scss index f735ee9..a4a6745 100644 --- a/src/assets/styles/common-dialogs.scss +++ b/src/assets/styles/common-dialogs.scss @@ -37,6 +37,18 @@ flex-direction: column; flex: 1; padding: 24px 32px 40px; + + + &.redaction { + .selected-text { + font-weight: bold; + padding-bottom: 8px; + } + + iqser-details-radio { + padding-top: 20px; + } + } } .dialog-actions { diff --git a/src/lib/inputs/details-radio/details-radio-option.ts b/src/lib/inputs/details-radio/details-radio-option.ts index 1758371..d123db7 100644 --- a/src/lib/inputs/details-radio/details-radio-option.ts +++ b/src/lib/inputs/details-radio/details-radio-option.ts @@ -12,5 +12,7 @@ export interface DetailsRadioOption { descriptionParams?: Record; icon?: string; value: I; + disabled?: boolean; + tooltip?: string; extraOption?: ExtraOption; } diff --git a/src/lib/inputs/details-radio/details-radio.component.html b/src/lib/inputs/details-radio/details-radio.component.html index ea4b99e..2833e54 100644 --- a/src/lib/inputs/details-radio/details-radio.component.html +++ b/src/lib/inputs/details-radio/details-radio.component.html @@ -3,6 +3,9 @@ (click)="toggleOption(option)" *ngFor="let option of options" [class.active]="option.value === value?.value" + [class.disabled]="option.disabled" + [matTooltip]="option.tooltip || '' | translate" + [matTooltipPosition]="'above'" [id]="groupId(option)" [ngClass]="{ 'mb-8': !displayInRow, 'mr-8': displayInRow }" class="option pointer" diff --git a/src/lib/inputs/details-radio/details-radio.component.scss b/src/lib/inputs/details-radio/details-radio.component.scss index 82015f7..81a88b4 100644 --- a/src/lib/inputs/details-radio/details-radio.component.scss +++ b/src/lib/inputs/details-radio/details-radio.component.scss @@ -11,6 +11,14 @@ label { background-color: rgba(var(--iqser-primary-rgb), 0.1); } + &.disabled { + cursor: not-allowed; + + .icon-option { + pointer-events: none; + } + } + .icon-option { display: flex; gap: 20px; diff --git a/src/lib/inputs/details-radio/details-radio.component.ts b/src/lib/inputs/details-radio/details-radio.component.ts index 7270e2b..68fba3d 100644 --- a/src/lib/inputs/details-radio/details-radio.component.ts +++ b/src/lib/inputs/details-radio/details-radio.component.ts @@ -7,6 +7,7 @@ import { RoundCheckboxComponent } from '../round-checkbox/round-checkbox.compone import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { MatIconModule } from '@angular/material/icon'; import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatTooltipModule } from '@angular/material/tooltip'; @Component({ selector: 'iqser-details-radio [options]', @@ -35,6 +36,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; FormsModule, MatCheckboxModule, ReactiveFormsModule, + MatTooltipModule, ], }) export class DetailsRadioComponent extends FormFieldComponent> implements OnInit { @@ -52,7 +54,7 @@ export class DetailsRadioComponent extends FormFieldComponent): void { - if (option.value !== this._value?.value) { + if (option.value !== this._value?.value && !option.disabled) { this.markAsTouched(); const currentlyChecked = this.value?.value === option.value; this._value = currentlyChecked ? undefined : option;