Ontica/Empiria.Land.Intranet

View on GitHub
src/app/main-layout/common-models/menu-item.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * @license
 * Copyright (c) La Vía Óntica SC, Ontica LLC and contributors. All rights reserved.
 *
 * See LICENSE.txt in the project root for complete license information.
 */

import { View } from './common';


export class MenuItem {

  readonly action: string;

  readonly text: string;

  readonly routerLink: string;

  private disabledFlag = false;

  private hiddenFlag = false;

  private selectedFlag = false;


  constructor(text: string, action = '', routerLink = '', disabled = false, hidden = false) {
    this.text = text;
    this.action = action;
    this.routerLink = routerLink;
    this.disabledFlag = disabled;
    this.hiddenFlag = hidden;
  }


  get disabled(): boolean {
    return this.disabledFlag;
  }


  get enabled(): boolean {
    return !this.disabledFlag;
  }


  get hidden(): boolean {
    return this.hiddenFlag;
  }


  get selected(): boolean {
    return this.selectedFlag;
  }

  enable() {
    this.disabledFlag = false;
  }

  disable() {
    this.disabledFlag = true;
  }

  select() {
    this.selectedFlag = true;
  }

  unselect() {
    this.selectedFlag = false;
  }

}


export function createMenuItemForView(view: View): MenuItem {
  return new MenuItem(view.menuTitle || view.title, undefined, view.url, view.disabled, view.hidden);
}