diff --git a/src/lib/inputs/details-radio/details-radio-option.ts b/src/lib/inputs/details-radio/details-radio-option.ts index 1d043ad..7d6d242 100644 --- a/src/lib/inputs/details-radio/details-radio-option.ts +++ b/src/lib/inputs/details-radio/details-radio-option.ts @@ -1,9 +1,17 @@ -interface ExtraOption { +interface AdditionalField { label: string; - checked: boolean; + description?: string; +} + +interface AdditionalCheck extends AdditionalField { + checked?: boolean; hidden?: boolean; disabled?: boolean; - description?: string; +} + +interface AdditionalInput extends AdditionalField { + value: string; + placeholder?: string; } export interface DetailsRadioOption { @@ -15,5 +23,6 @@ export interface DetailsRadioOption { value: I; disabled?: boolean; tooltip?: string; - extraOption?: ExtraOption; + additionalCheck?: AdditionalCheck; + additionalInput?: AdditionalInput; } diff --git a/src/lib/inputs/details-radio/details-radio.component.html b/src/lib/inputs/details-radio/details-radio.component.html index c6755c0..f331c21 100644 --- a/src/lib/inputs/details-radio/details-radio.component.html +++ b/src/lib/inputs/details-radio/details-radio.component.html @@ -20,25 +20,45 @@ {{ option.description | translate: option.descriptionParams | replaceNbsp }} - @if (option.extraOption && !option.extraOption.hidden && isSelected(option)) { -
- - {{ option.extraOption.label | translate | replaceNbsp }} - + @if (isSelected(option)) { + @if (option.additionalCheck && !option.additionalCheck.hidden) { +
+ + {{ option.additionalCheck.label | translate | replaceNbsp }} + - @if (option.extraOption.description) { - - } -
+ @if (option.additionalCheck.description) { + + } +
+ } + + @if (option.additionalInput) { +
+ {{ option.additionalInput.label | translate }} +
+ + @if (option.additionalInput.description) { + + } +
+
+ } } diff --git a/src/lib/inputs/details-radio/details-radio.component.scss b/src/lib/inputs/details-radio/details-radio.component.scss index 760c50d..e40b322 100644 --- a/src/lib/inputs/details-radio/details-radio.component.scss +++ b/src/lib/inputs/details-radio/details-radio.component.scss @@ -43,10 +43,29 @@ label { } } - .extra-option-description { + .additional-check-description { margin-left: 23px; opacity: 0.49; } + + .additional-input { + display: flex; + flex-direction: row; + gap: 10px; + + span { + margin-top: 10px; + } + + div { + display: flex; + + span { + font-size: 10px; + margin-top: 4px; + } + } + } } .row { diff --git a/src/lib/inputs/details-radio/details-radio.component.ts b/src/lib/inputs/details-radio/details-radio.component.ts index 371f2c4..2d3831a 100644 --- a/src/lib/inputs/details-radio/details-radio.component.ts +++ b/src/lib/inputs/details-radio/details-radio.component.ts @@ -1,5 +1,5 @@ import { NgClass } from '@angular/common'; -import { booleanAttribute, Component, input, output } from '@angular/core'; +import { booleanAttribute, Component, input, OnChanges, output, SimpleChanges } from '@angular/core'; import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatIconModule } from '@angular/material/icon'; @@ -42,7 +42,6 @@ import { DetailsRadioOption } from './details-radio-option'; export class DetailsRadioComponent extends FormFieldComponent> { readonly options = input.required[]>(); readonly displayInRow = input(false, { transform: booleanAttribute }); - readonly extraOptionChanged = output>(); toggleOption(option: DetailsRadioOption) {