{"version":3,"file":"sebgroup-green-angular-src-v-angular-radio.mjs","sources":["../../../../libs/angular/src/v-angular/radio/radio.component.ts","../../../../libs/angular/src/v-angular/radio/radio.component.html","../../../../libs/angular/src/v-angular/radio/radio-group/radio-group.component.ts","../../../../libs/angular/src/v-angular/radio/radio-group/radio-group.component.html","../../../../libs/angular/src/v-angular/radio/radio.module.ts","../../../../libs/angular/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.ts"],"sourcesContent":["import '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js'\n\nimport {\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  Inject,\n  Injectable,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Self,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { TRANSLOCO_SCOPE, TranslocoScope } from '@jsverse/transloco'\n\nimport { NggvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor'\n\n/** @internal Internal class used to uncheck radio buttons with the matching name. */\n@Injectable()\nexport class NggvRadioControlRegistry {\n  private _radios: any[] = []\n\n  add(control: NgControl, radio: NggvRadioComponent) {\n    this._radios.push([control, radio])\n  }\n\n  remove(radio: NggvRadioComponent) {\n    for (let i = this._radios.length - 1; i >= 0; --i) {\n      if (this._radios[i][1] === radio) {\n        this._radios.splice(i, 1)\n        return\n      }\n    }\n  }\n\n  select(radio: NggvRadioComponent) {\n    this._radios.forEach((controlPair) => {\n      if (this._isSameGroup(controlPair, radio) && controlPair[1] !== radio) {\n        controlPair[1].writeValue(radio.value)\n      }\n    })\n  }\n\n  private _isSameGroup(\n    controlPair: [NgControl, NggvRadioComponent],\n    radio: NggvRadioComponent,\n  ) {\n    if (!controlPair[0].control) return false\n    return (\n      //@ts-expect-error internal properties not exposed\n      controlPair[0]._parent === radio.ngControl._parent &&\n      controlPair[1].name === radio.name\n    )\n  }\n}\n\n/**\n * Use radio buttons when users must select one option in a list with exclusive options out of a set of two or more options.\n * https://designlibrary.sebgroup.com/components/component-radiobutton\n */\n@Component({\n    selector: 'nggv-radio',\n    templateUrl: './radio.component.html',\n    styleUrls: ['./radio.component.scss'],\n    providers: [NggvRadioControlRegistry],\n    standalone: false\n})\nexport class NggvRadioComponent\n  extends NggvBaseControlValueAccessorComponent\n  implements OnInit, OnDestroy\n{\n  /**\n   * Special property used for selecting DOM elements during automated UI testing.\n   */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'radio'\n  /**\n   * Sets class on host element based on size input for styling\n   */\n  @HostBinding('class') @Input() size: 'small' | 'large' = 'large'\n  /**\n   * Syncs a FormControl in an existing FormGroup to a form control element by name.\n   */\n  @Input() formControlName?: string\n  /**\n   * Decides if error should be connected to each individual radio button.\n   * If true, errors will be shown in nggv-radio-group component.\n   * If false, errors will be show below each radio button\n   */\n  isGroup = false\n  /**\n   * Creates a new RadioComponent\n   * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n   * @param registry internal registry used to uncheck radio buttons with the matching name, through dependency injection.\n   * @param cdr change detection reference for rendering purposes.\n   */\n  constructor(\n    @Self() @Optional() public ngControl: NgControl,\n    @Optional()\n    @Inject(TRANSLOCO_SCOPE)\n    protected translocoScope: TranslocoScope,\n    protected registry: NggvRadioControlRegistry,\n    protected cdr: ChangeDetectorRef,\n  ) {\n    super(ngControl, translocoScope, cdr)\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n    this._checkName()\n    this.registry.add(this.ngControl, this)\n    // Check if nggv-radio-group is present connected to the same formControl\n    if (\n      Array.from(\n        document.querySelectorAll(\n          `nggv-radio-group[formcontrolname=${this.name}]`,\n        ),\n      ).length\n    ) {\n      this.isGroup = true\n    }\n  }\n\n  ngOnDestroy() {\n    this.registry.remove(this)\n  }\n\n  /** @internal */\n  onInputChange(event: Event) {\n    event.stopPropagation()\n    if (this.disabled) return\n    this.onChange(this.state)\n  }\n\n  /** Writes a new value of true or false based on if argument matches this components value property. */\n  writeValue(value: any): void {\n    // Phantom null value on first load https://github.com/angular/angular/pull/38140\n    super.writeValue(value === this.value)\n  }\n\n  /** Registers a callback function that is called when the child input element's value changes. */\n  registerOnChange(fn: (value: any) => any) {\n    // Override default to update registry\n    this.onChange = () => {\n      fn(this.value)\n      this.registry.select(this)\n    }\n  }\n\n  /** Checks that the name properties match and updates name property if only formControlName is given. */\n  private _checkName(): void {\n    if (\n      this.name &&\n      this.formControlName &&\n      this.name !== this.formControlName\n    ) {\n      throw new Error(`\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">\n    `)\n    }\n    if (!this.name && this.formControlName) this.name = this.formControlName\n  }\n}\n","<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\">\n  <div\n    [id]=\"id + '-radio'\"\n    class=\"nggv-field--locked\"\n    [attr.name]=\"name\"\n    [attr.value]=\"value\"\n  >\n    {{ label }}\n    <ng-template\n      *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n    ></ng-template>\n  </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n  <div>\n    <!-- RADIO BUTTON FIELD -->\n    <label [attr.for]=\"id + '-radio'\" class=\"gds-form-control\">\n      <input\n        #input\n        type=\"radio\"\n        [attr.id]=\"id + '-radio'\"\n        [attr.name]=\"name\"\n        [attr.value]=\"value\"\n        [attr.required]=\"required || null\"\n        [disabled]=\"disabled\"\n        [autofocus]=\"autofocus\"\n        [attr.aria-label]=\"description\"\n        [checked]=\"state\"\n        (click)=\"$event.stopPropagation()\"\n        (change)=\"onInputChange($event)\"\n        (focus)=\"onFocus($event)\"\n        (blur)=\"onBlur($event)\"\n      />\n\n      <!-- LABEL -->\n      {{ label }}\n      <ng-template\n        *ngTemplateOutlet=\"\n          labelContentTpl ?? null;\n          context: { $implicit: value }\n        \"\n      ></ng-template>\n      <i></i>\n    </label>\n  </div>\n\n  <!-- ERRORS -->\n  <!-- if no nggv-radio-group is present -->\n  @if (!isGroup) {\n    <ng-container *transloco=\"let t; read: scope\">\n      <div\n        class=\"form-info form-info--error\"\n        [attr.for]=\"id + '-radio'\"\n        *ngIf=\"invalid && (error || ngControl?.invalid)\"\n      >\n        <span class=\"error-icon\">\n          <gds-icon-triangle-exclamation\n            width=\"16\"\n            height=\"16\"\n            [solid]=\"true\"\n            *nggCoreElement\n          ></gds-icon-triangle-exclamation>\n        </span>\n        <span\n          *ngIf=\"error; else errorsRef\"\n          [attr.data-thook]=\"thook + '-errorlabel'\"\n        >\n          {{ error }}\n        </span>\n        <ng-template #errorsRef>\n          <span\n            *ngIf=\"firstError as error\"\n            [attr.data-thook]=\"thook + '-errorlabel'\"\n          >\n            {{ t('error.field' + error?.code, error?.params) }}\n          </span>\n        </ng-template>\n      </div>\n    </ng-container>\n  }\n\n  <!-- CHILDREN -->\n  <ng-content></ng-content>\n</ng-container>\n","import '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js'\n\nimport {\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  Self,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { TRANSLOCO_SCOPE, TranslocoScope } from '@jsverse/transloco'\n\nimport { NggvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor'\n\n/**\n * Creates a wrapper around a group of radio buttons.\n * If there is an error to the form control connected to the radio buttons, it will be shown once below instead of below every individual radio button\n */\n@Component({\n    selector: 'nggv-radio-group',\n    templateUrl: './radio-group.component.html',\n    styleUrls: ['./radio-group.component.scss'],\n    standalone: false\n})\nexport class NggvRadioGroupComponent\n  extends NggvBaseControlValueAccessorComponent\n  implements OnInit\n{\n  /**\n   * Special property used for selecting DOM elements during automated UI testing.\n   */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'radio-group'\n  /**\n   * Sets class on host element based on size input for styling\n   */\n  @HostBinding('class') @Input() size: 'small' | 'large' = 'large'\n  /**\n   * Syncs a FormControl in an existing FormGroup to a form control element by name.\n   */\n  @Input() formControlName?: string\n  /**\n   * Sets \"flex-direction\" of parent of radio buttons.\n   */\n  @Input() direction?: 'row' | 'column' = 'column'\n  /**\n   * Creates a new RadioComponent\n   * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n   * @param cdr change detection reference for rendering purposes.\n   */\n  constructor(\n    @Self() @Optional() public ngControl: NgControl,\n    @Optional()\n    @Inject(TRANSLOCO_SCOPE)\n    protected translocoScope: TranslocoScope,\n    protected cdr: ChangeDetectorRef,\n  ) {\n    super(ngControl, translocoScope, cdr)\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n    this._checkName()\n  }\n\n  /** Checks that the name properties match and updates name property if only formControlName is given. */\n  private _checkName(): void {\n    if (\n      this.name &&\n      this.formControlName &&\n      this.name !== this.formControlName\n    ) {\n      throw new Error(`\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">\n    `)\n    }\n\n    if (!this.name && this.formControlName) this.name = this.formControlName\n  }\n}\n","<!-- RADIO BUTTONS -->\n<div [ngClass]=\"direction === 'column' ? 'direction-column' : 'direction-row'\">\n  <ng-content></ng-content>\n</div>\n<!-- ERRORS -->\n<ng-container *transloco=\"let t; read: scope\">\n  <div\n    class=\"form-info form-info--error\"\n    [attr.for]=\"ngControl?.name + '-radio-group'\"\n    *ngIf=\"invalid && (error || ngControl?.invalid)\"\n  >\n    <span class=\"error-icon\">\n      <gds-icon-triangle-exclamation\n        size=\"16px\"\n        [solid]=\"true\"\n        *nggCoreElement\n      ></gds-icon-triangle-exclamation>\n    </span>\n    <span\n      *ngIf=\"error; else errorsRef\"\n      [attr.data-thook]=\"thook + '-errorlabel'\"\n    >\n      {{ error }}\n    </span>\n    <ng-template #errorsRef>\n      <span\n        *ngIf=\"firstError as error\"\n        [attr.data-thook]=\"thook + '-errorlabel'\"\n      >\n        {{ t('error.field' + error?.code, error?.params) }}\n      </span>\n    </ng-template>\n  </div>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\n\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared'\nimport { NggvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n'\nimport { NggvRadioGroupComponent } from './radio-group/radio-group.component'\nimport { NggvRadioComponent } from './radio.component'\n\n@NgModule({\n  declarations: [NggvRadioComponent, NggvRadioGroupComponent],\n  imports: [CommonModule, NggvI18nModule, NggCoreWrapperModule],\n  exports: [NggvRadioComponent, NggvRadioGroupComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NggvRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}