<div fxLayout="row">
  <div fxFlex="100">
    <mat-card-header fxLayout="row" fxLayoutAlign="space-between center" class="modal-info-header">
      <div fxFlex="95" fxLayoutAlign="start start">
        <span class="page-title">Connect to a new peer</span>
      </div>
      <button tabindex="8" fxFlex="5" fxLayoutAlign="center center" class="btn-close-x p-0" mat-button (click)="onClose()">X</button>
    </mat-card-header>    
    <mat-card-content class="padding-gap-x-large">
      <div fxLayout="column">
        <mat-vertical-stepper #stepper [linear]="true" (selectionChange)="stepSelectionChanged($event)">
          <mat-step [stepControl]="peerFormGroup" [editable]="flgEditable">
            <form fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="my-1" [formGroup]="peerFormGroup">
              <ng-template matStepLabel>{{peerFormLabel}}</ng-template>  
              <mat-form-field fxLayout="column" fxFlex="100">
                <mat-label>Lightning Address (pubkey OR pubkey&#64;ip:port)</mat-label>
                <input autoFocus matInput formControlName="peerAddress" tabindex="1" required>
                <mat-error *ngIf="peerFormGroup.controls.peerAddress.errors?.required">Address is required.</mat-error>
              </mat-form-field>
              <div *ngIf="peerConnectionError !== ''" fxFlex="100" class="alert alert-danger mt-1">
                <fa-icon class="mr-1 alert-icon" [icon]="faExclamationTriangle" />
                <span>{{peerConnectionError}}</span>
              </div>
              <div class="mt-2" fxLayout="row" fxLayoutAlign="start center" fxFlex="100">
                <button mat-button color="primary" tabindex="3" type="button" (click)="onConnectPeer()">{{peerConnectionError !== '' ? 'Retry' : 'Add Peer'}}</button>
              </div>
            </form>
          </mat-step>
          <mat-step [stepControl]="channelFormGroup" [editable]="flgEditable">
            <form fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="mb-1" [formGroup]="channelFormGroup">
              <ng-template matStepLabel disabled="true">{{channelFormLabel}}</ng-template>
              <div fxLayout="column" fxLayout.gt-sm="row wrap" fxFlex="100" fxLayoutAlign="space-between stretch">
                <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center">
                  <mat-form-field fxLayout="column" fxFlex="60" fxLayoutAlign="start end">
                    <mat-label>Amount</mat-label>
                    <input matInput formControlName="fundingAmount" type="number" tabindex="1" required [step]="1000">
                    <mat-hint>Remaining: {{totalBalance - ((channelFormGroup.controls.fundingAmount.value) ? channelFormGroup.controls.fundingAmount.value : 0) | number}}</mat-hint>
                    <span matSuffix> Sats </span>
                    <mat-error *ngIf="channelFormGroup.controls.fundingAmount.errors?.required">Amount is required.</mat-error>
                    <mat-error *ngIf="channelFormGroup.controls.fundingAmount.errors?.min">Amount must be a positive number.</mat-error>
                    <mat-error *ngIf="channelFormGroup.controls.fundingAmount.errors?.max">Amount must be less than or equal to {{totalBalance}}.</mat-error>
                  </mat-form-field>
                  <div fxFlex="35" fxLayoutAlign="start center">
                    <mat-slide-toggle tabindex="2" color="primary" formControlName="isPrivate" name="isPrivate">Private Channel</mat-slide-toggle>
                  </div>
                </div>
                <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-1">
                  <mat-form-field fxLayout="column" fxFlex="50" fxLayoutAlign="start end">
                    <mat-label>Transaction Type</mat-label>
                    <mat-select tabindex="3" formControlName="selTransType">
                      <mat-option *ngFor="let transType of transTypes" [value]="transType.id">
                        {{transType.name}}
                      </mat-option>
                    </mat-select>
                  </mat-form-field>
                  <mat-form-field fxLayout="column" fxFlex="50">
                    <mat-label>{{channelFormGroup.controls.selTransType.value === '0' ? 'Default' : channelFormGroup.controls.selTransType.value === '1' ? 'Target Confirmation Blocks' : 'Fee (Sats/vByte)'}}</mat-label>
                    <input matInput formControlName="transTypeValue" type="number" name="transTypeValue" tabindex="4" [step]="1" [required]="channelFormGroup.controls.selTransType.value !== '0'">
                    <mat-error *ngIf="channelFormGroup.controls.transTypeValue.errors?.required">{{channelFormGroup.controls.selTransType.value === '0' ? 'Default' : channelFormGroup.controls.selTransType.value === '1' ? 'Target Confirmation Blocks' : 'Fee (Sats/vByte)'}} is required.</mat-error>
                  </mat-form-field>
                </div>
                <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-1">
                  <div *ngIf="isTaprootAvailable" fxFlex="50" fxLayoutAlign="start center">
                    <mat-slide-toggle class="ps-2" tabindex="6" color="primary" formControlName="taprootChannel" name="taprootChannel">Taproot Channel</mat-slide-toggle>
                  </div>
                  <div fxFlex="50" fxLayoutAlign="start center">
                    <mat-slide-toggle tabindex="6" color="primary" formControlName="spendUnconfirmed" name="spendUnconfirmed">Spend Unconfirmed Output</mat-slide-toggle>
                  </div>
                </div>
              </div>
              <div *ngIf="channelConnectionError !== ''" fxFlex="100" class="alert alert-danger mt-1">
                <fa-icon class="mr-1 alert-icon" [icon]="faExclamationTriangle" />
                <span>{{channelConnectionError}}</span>
              </div>
              <div class="mt-2" fxLayout="row" fxLayoutAlign="start center" fxFlex="100">
                <button mat-button color="primary" tabindex="8" type="button" (click)="onOpenChannel()">{{channelConnectionError !== '' ? 'Retry' : 'Open Channel'}}</button>
              </div>
            </form>
          </mat-step>
        </mat-vertical-stepper>
        <div fxLayout="row" fxFlex="100" fxLayoutAlign="end center">        
          <button mat-button color="primary" tabindex="12" type="button" default [mat-dialog-close]="false">{{newlyAddedPeer?.pub_key ? 'Do It Later' : 'Close'}}</button>
        </div>
      </div>
    </mat-card-content>
  </div>
</div>
