File

projects/UILibrary/src/app/components/disposition/disposition.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor()

Inputs

disposition
Type : IDisposition

Outputs

dispositionEmitter
Type : EventEmitter

Methods

ngOnInit
ngOnInit()
Returns : void
selectAndSubmitDisposition
selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string)
Parameters :
Name Type Optional
event KeyboardEvent No
dispositionKey string No
Returns : void
submitDisposition
submitDisposition()
Returns : void

Properties

dispositionName
Type : string
Default value : ''
selectedDispositionValue
Type : string
Default value : ''
import { IDisposition, IDispositionResult } from './../../models/disposition.interface';
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'amc-disposition',
  templateUrl: './disposition.component.html',
  styleUrls: ['./disposition.component.css']
})
export class DispositionComponent implements OnInit {
  @Input() disposition: IDisposition;

  @Output() dispositionEmitter = new EventEmitter<IDispositionResult>();

  selectedDispositionValue: string = '';
  dispositionName: string = '';

  constructor() { }

  ngOnInit() {
    for (const metadata of this.disposition.dispositionMetadata) {
      if (metadata.key === 'callId') {
        this.dispositionName = `disposition_${metadata.value}`;

        break;
      }
    }

    if (this.disposition.checkedDisposition) {
      this.selectedDispositionValue = this.disposition.checkedDisposition;
    }
  }

  submitDisposition() {
    const selectedDisposition: IDispositionResult = {
      dispositionId: this.selectedDispositionValue,
      dispositionName: this.disposition.disposition.get(this.selectedDispositionValue),
      dispositionMetadata: this.disposition.dispositionMetadata
    };

    this.dispositionEmitter.emit(selectedDisposition);
  }

  selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string) {
    if (event.code === 'Enter') {
      this.selectedDispositionValue = dispositionKey;
      this.submitDisposition();
    }
  }
}
<div class="disposition-container">
  <div class="header-container">
      <label class="disposition-header" attr.aria-label="set disposition">{{disposition.dispositionHeader}}</label>
  </div>

  <div class="dispositions-container">
      <div class="disposition" *ngFor="let disp of disposition.disposition | keyvalue; let i = index">
        <label
         class="disposition-label"
         tabindex="0"
         [id]="disp.key"
         [ngClass]="{'disposition-label-selected' : selectedDispositionValue === disp.key, 'first-disposition': i === 0}"
         (keypress)="selectAndSubmitDisposition($event, disp.key)">

          <input
           class="disposition-input"
           type="radio"
           value="{{disp.key}}"
           tabindex="-1"
           attr.aria-label="{{disp.value}}"
           [required]="!selectedDispositionValue"
           [name]="dispositionName"
           (change)="submitDisposition()"
           [(ngModel)]="selectedDispositionValue">

          {{disp.value}}
        </label>
      </div>
  </div>
</div>

./disposition.component.css

.disposition-container {
  border: 1px solid #939598;
  white-space: nowrap;
  font-family: Arial;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  text-overflow: ellipsis;
  position: relative;
  font-size: 0.9em;
  max-height: 180px;
  overflow-x: hidden;
  overflow-y: hidden;
}

.header-container {
  border-bottom: 1px solid #939598;
  background-color: #f4f5fb;
  width: 100%;
  white-space: nowrap;
  height: 28px;
  position: sticky;
  overflow-x: hidden;
  overflow-y: hidden;
}

.disposition-header {
  margin-top: auto;
  margin-left: 7px;
  padding: 5px;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-weight: bold;
  font-size: 0.9em;
  font-family: Arial;
  overflow-x: hidden;
}

.disposition {

  margin-left: 5px;
  padding-left: 5px;
  white-space: nowrap;

}

.disposition-label {
  text-overflow: ellipsis;
  font-weight: normal;
  white-space: nowrap;
  font-size: 0.9em;
  overflow-x: hidden;
}

.disposition-label-selected {
  text-overflow: ellipsis;
  font-weight: bold;
  white-space: nowrap;
  font-size: 0.9em;
}

.dispositions-container {
  padding: 5px;
  overflow-y: scroll;
  max-height: 150px;
  padding: 3px;
}

.disposition-label:focus {
  outline: 2px solid rgb(50, 150, 218);
  outline-offset: 5px;
}

.first-disposition {
  margin-top: 5px;
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""