Skip to content
Snippets Groups Projects
math-field.component.ts 2.06 KiB
Newer Older
rhenck's avatar
rhenck committed
// eslint-disable-next-line max-classes-per-file
import {
  Component, Input, Pipe, PipeTransform
} from '@angular/core';
import { UntypedFormGroup } from '@angular/forms';
rhenck's avatar
rhenck committed
import { FormElementComponent } from 'common/directives/form-element-component.directive';
import { MathFieldElement } from 'common/models/elements/input-elements/math-field';

@Component({
  selector: 'aspect-math-field',
  template: `
  <div [style.line-height.%]="elementModel.styling.lineHeight"
       [style.color]="elementModel.styling.fontColor"
       [style.font-size.px]="elementModel.styling.fontSize"
       [style.font-weight]="elementModel.styling.bold ? 'bold' : ''"
       [style.font-style]="elementModel.styling.italic ? 'italic' : ''"
       [style.text-decoration]="elementModel.styling.underline ? 'underline' : ''"
       [style.background-color]="elementModel.styling.backgroundColor">
      <label>{{elementModel.label}}</label><br>
      <aspect-mathlive-math-field [value]="$any(elementModel.value) | getValue: elementFormControl.value : parentForm"
                                  [readonly]="elementModel.readOnly"
                                  [enableModeSwitch]="elementModel.enableModeSwitch"
                                  (input)="elementFormControl.setValue($any($event.target).value)"
                                  (focusout)="elementFormControl.markAsTouched()">
      </aspect-mathlive-math-field>
      <mat-error *ngIf="elementFormControl.errors && elementFormControl.touched"
                 class="error-message">
        {{elementFormControl.errors | errorTransform: elementModel}}
      </mat-error>
  </div>
  `,
  styles: ['.error-message {font-size: 75%; margin-top: 15px; margin-left: 10px;}']
rhenck's avatar
rhenck committed
})
export class MathFieldComponent extends FormElementComponent {
  @Input() elementModel!: MathFieldElement;
}

@Pipe({
  name: 'getValue'
})
export class GetValuePipe implements PipeTransform {
  transform(elementModelValue: string, elementFormControlValue: string, parentForm: UntypedFormGroup): string {
rhenck's avatar
rhenck committed
    return parentForm ? elementFormControlValue : elementModelValue;
  }
}