File

src/lib/form/multilang/multilang.component.ts

Implements

OnInit

Metadata

selector cause-multilang
styleUrls multilang.component.styl
templateUrl ./multilang.component.html

Inputs

value

Type: object

Outputs

onValueChanged $event type: EventEmitter

Constructor

constructor(translate: TranslateService, config: ConfigService)

Methods

ngOnInit
ngOnInit()
Returns : void
Public onTabValueChanged
onTabValueChanged(e: )
Returns : void
Public onTabChanged
onTabChanged(e: )
Returns : void

Properties

Private _value
_value: object
Type : object
Public labels
labels: []
Type : []
Public languages
languages: []
Type : []
Public selectedTab
selectedTab: string
Type : string
Public selectedTabValue
selectedTabValue: string
Type : string
import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import {TranslateService} from '@ngx-translate/core';

import {ConfigService} from '../../core/config/config.service';

@Component({
  selector: 'cause-multilang',
  templateUrl: './multilang.component.html',
  styleUrls: ['./multilang.component.styl']
})
export class MultilangComponent implements OnInit {
  @Input()
  get value(): object { return this._value; }
  set value(val: object) {
    this.languages.forEach((lang) => {
      this._value[lang] = (val && val[lang] ? val[lang] : '');
    });

    this._value['idLanguageContent'] = (
      val && val['idLanguageContent'] ? val['idLanguageContent'] : ''
    );
    this.selectedTabValue = this._value[this.selectedTab];
  }
  private _value: object = {
    'idLanguageContent': ''
  };

  public labels: string[] = [];
  public languages: string[] = [];
  public selectedTab: string;
  public selectedTabValue: string;

  @Output() onValueChanged = new EventEmitter();

  constructor(private translate: TranslateService, private config?: ConfigService) {
    this.languages = this.config.getConfig('languages') || ['fr'];
    this.languages.forEach((lang) => {
      this._value[lang] = '';
    });

    // If we use the PIPE "translate" inside the "title" of "dxi-item" the view bug
    this.translate.get(this.languages).subscribe(labels => {
      for (const i in labels) {
        if (labels[i]) {
          this.labels.push(labels[i]);
        }
      }
    });
  }

  ngOnInit() {
    this.selectedTab = this.languages[0];
    this.selectedTabValue = this._value[this.selectedTab];
  }

  public onTabValueChanged(e) {
    const oldValue = Object.assign({}, this.value);

    this._value[this.selectedTab] = e.element.find('input').val();
    this.onValueChanged.emit({
      value: this.value,
      oldValue: oldValue
    });
  }

  public onTabChanged(e) {
    this.selectedTab = this.languages[e.component.option('selectedIndex')];
    this.selectedTabValue = this._value[this.selectedTab];
  }
}
<dx-tab-panel
        [items]="labels"
        [selectedIndex]="0"
        (onSelectionChanged)="onTabChanged($event)">
  <ng-container *ngFor="let lang of labels; let i = index">
    <dxi-item [title]="lang">
      <dx-text-box (onKeyUp)="onTabValueChanged($event)" [value]="selectedTabValue" [placeholder]="lang"></dx-text-box>
    </dxi-item>
  </ng-container>
</dx-tab-panel>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""