Skip to content
Snippets Groups Projects
label-edit-dialog.component.ts 2.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • rhenck's avatar
    rhenck committed
    import { Component, Inject } from '@angular/core';
    
    import { MAT_DIALOG_DATA } from '@angular/material/dialog';
    import { FileService } from 'common/services/file.service';
    
    
    import { TextImageLabel } from 'common/models/elements/label-interfaces';
    
    
    @Component({
      selector: 'aspect-label-edit-dialog',
      template: `
    
        <mat-dialog-content class="fx-column-start-stretch fx-fix-gap-20">
    
    rhenck's avatar
    rhenck committed
          <aspect-rich-text-editor-simple [(content)]="newLabel.text">
          </aspect-rich-text-editor-simple>
    
          <div *ngIf="newLabel.imgSrc !== undefined" class="image-panel">
    
            <div class="fx-column-start-stretch fx-fix-gap-10">
    
              <button mat-raised-button (click)="loadImage()">{{ 'loadImage' | translate }}</button>
              <button mat-raised-button (click)="newLabel.imgSrc = null">{{ 'removeImage' | translate }}</button>
              <mat-form-field>
                <mat-label>{{'imagePosition' | translate }}</mat-label>
    
                <mat-select [(ngModel)]="newLabel.imgPosition"
    
                            [disabled]="newLabel.imgSrc == null">
                  <mat-option *ngFor="let option of ['above', 'below', 'left', 'right']"
                              [value]="option">
                    {{ option | translate }}
                  </mat-option>
                </mat-select>
              </mat-form-field>
            </div>
    
            <aspect-text-image-panel [label]="newLabel" [style.justify-content]="'center'"></aspect-text-image-panel>
    
          </div>
    
        </mat-dialog-content>
        <mat-dialog-actions>
          <button mat-button [mat-dialog-close]="newLabel">{{'save' | translate }}</button>
          <button mat-button mat-dialog-close>{{'cancel' | translate }}</button>
        </mat-dialog-actions>
    
    rhenck's avatar
    rhenck committed
      `,
    
      styles: [`
        aspect-rich-text-editor-simple {
          margin-bottom: 20px;
        }
        .fx-column-start-stretch {
          box-sizing: border-box;
          display: flex;
          flex-direction: column;
          justify-content: flex-start;
          align-items: stretch;
        }
    
        .fx-fix-gap-20 {
          gap: 20px;
        }
    
        .fx-fix-gap-10 {
          gap: 10px;
        }
    
    
        .image-panel {
          display: flex;
        }
    
        .image-panel aspect-text-image-panel {
          margin-left: auto;
          margin-right: auto;
        }
    
    })
    export class LabelEditDialogComponent {
      newLabel = { ...this.data.label };
    
      constructor(@Inject(MAT_DIALOG_DATA) public data: { label: TextImageLabel }) { }
    
      async loadImage(): Promise<void> {
        this.newLabel.imgSrc = await FileService.loadImage();
      }
    }