{"version":3,"file":"pcarreira-ui-components.mjs","sources":["../../../projects/ui-components/src/services/ui-components.service.ts","../../../projects/ui-components/src/pipes/translate.pipe.ts","../../../projects/ui-components/src/lib/button/button.component.ts","../../../projects/ui-components/src/lib/button/button.component.html","../../../projects/ui-components/src/lib/header/header.component.ts","../../../projects/ui-components/src/lib/header/header.component.html","../../../projects/ui-components/src/lib/select/select.component.ts","../../../projects/ui-components/src/lib/select/select.component.html","../../../projects/ui-components/src/lib/label/label.component.ts","../../../projects/ui-components/src/lib/label/label.component.html","../../../projects/ui-components/src/lib/list-menu/list-menu.component.ts","../../../projects/ui-components/src/lib/list-menu/list-menu.component.html","../../../projects/ui-components/src/lib/day-range-selector/day-range-selector.component.ts","../../../projects/ui-components/src/lib/day-range-selector/day-range-selector.component.html","../../../projects/ui-components/src/lib/info-card/info-card.component.ts","../../../projects/ui-components/src/lib/info-card/info-card.component.html","../../../projects/ui-components/src/lib/holidays-card/holidays-card.component.ts","../../../projects/ui-components/src/lib/holidays-card/holidays-card.component.html","../../../projects/ui-components/src/lib/calendar/calendar.component.ts","../../../projects/ui-components/src/lib/calendar/calendar.component.html","../../../projects/ui-components/src/lib/year-selector/year-selector.component.ts","../../../projects/ui-components/src/lib/year-selector/year-selector.component.html","../../../projects/ui-components/src/lib/form/form.model.ts","../../../projects/ui-components/src/services/form.service.ts","../../../projects/ui-components/src/lib/keyboard/keyboard.model.ts","../../../projects/ui-components/src/lib/keyboard/keyboard.component.ts","../../../projects/ui-components/src/lib/keyboard/keyboard.component.html","../../../projects/ui-components/src/lib/input/input.component.ts","../../../projects/ui-components/src/lib/input/input.component.html","../../../projects/ui-components/src/lib/checkbox/checkbox.component.ts","../../../projects/ui-components/src/lib/checkbox/checkbox.component.html","../../../projects/ui-components/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/ui-components/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/ui-components/src/lib/time-picker/time-picker.component.ts","../../../projects/ui-components/src/lib/time-picker/time-picker.component.html","../../../projects/ui-components/src/lib/schedule/schedule.component.ts","../../../projects/ui-components/src/lib/schedule/schedule.component.html","../../../projects/ui-components/src/lib/tree-selector/tree-selector.component.ts","../../../projects/ui-components/src/lib/tree-selector/tree-selector.component.html","../../../projects/ui-components/src/lib/form/form.component.ts","../../../projects/ui-components/src/lib/form/form.component.html","../../../projects/ui-components/src/lib/loading/loading.component.ts","../../../projects/ui-components/src/lib/loading/loading.component.html","../../../projects/ui-components/src/lib/title/title.component.ts","../../../projects/ui-components/src/lib/title/title.component.html","../../../projects/ui-components/src/lib/historic-holidays-card/historic-holidays-card.component.ts","../../../projects/ui-components/src/lib/historic-holidays-card/historic-holidays-card.component.html","../../../projects/ui-components/src/lib/dialog/dialog.model.ts","../../../projects/ui-components/src/lib/dialog/dialog.component.ts","../../../projects/ui-components/src/lib/dialog/dialog.component.html","../../../projects/ui-components/src/lib/search-product/search-product.model.ts","../../../projects/ui-components/src/lib/search-product/search-product.component.ts","../../../projects/ui-components/src/lib/search-product/search-product.component.html","../../../projects/ui-components/src/lib/table/table.component.ts","../../../projects/ui-components/src/lib/table/table.component.html","../../../projects/ui-components/src/lib/timesheet-card/timesheet-card.component.ts","../../../projects/ui-components/src/lib/timesheet-card/timesheet-card.component.html","../../../projects/ui-components/src/lib/schedule-vizualizer/schedule-vizualizer.component.ts","../../../projects/ui-components/src/lib/schedule-vizualizer/schedule-vizualizer.component.html","../../../projects/ui-components/src/lib/search-supplier/search-supplier.model.ts","../../../projects/ui-components/src/lib/search-supplier/search-supplier.component.ts","../../../projects/ui-components/src/lib/search-supplier/search-supplier.component.html","../../../projects/ui-components/src/lib/pdt-document-builder/pdt-document-builder.component.ts","../../../projects/ui-components/src/lib/pdt-document-builder/pdt-document-builder.component.html","../../../projects/ui-components/src/lib/metric-card/metric-card.component.ts","../../../projects/ui-components/src/lib/metric-card/metric-card.component.html","../../../projects/ui-components/src/lib/stepper/stepper.component.ts","../../../projects/ui-components/src/lib/stepper/stepper.component.html","../../../projects/ui-components/src/lib/timeline-vizualizer/timeline-vizualizer.component.ts","../../../projects/ui-components/src/lib/timeline-vizualizer/timeline-vizualizer.component.html","../../../projects/ui-components/src/lib/accordion/accordion.component.ts","../../../projects/ui-components/src/lib/accordion/accordion.component.html","../../../projects/ui-components/src/lib/data-table/data-table.component.ts","../../../projects/ui-components/src/lib/data-table/data-table.component.html","../../../projects/ui-components/src/lib/accordion/accordion.model.ts","../../../projects/ui-components/src/lib/category-menu/category-menu.component.ts","../../../projects/ui-components/src/lib/category-menu/category-menu.component.html","../../../projects/ui-components/src/lib/tree-selector/tree-selector.model.ts","../../../projects/ui-components/src/lib/money-selector/money-selector.component.ts","../../../projects/ui-components/src/lib/money-selector/money-selector.component.html","../../../projects/ui-components/src/lib/money-selector/money-selector.model.ts","../../../projects/ui-components/src/lib/form-list/form-list.component.ts","../../../projects/ui-components/src/lib/form-list/form-list.component.html","../../../projects/ui-components/src/lib/form-list/form-list.model.ts","../../../projects/ui-components/src/lib/pie-chart/pie-chart.component.ts","../../../projects/ui-components/src/lib/pie-chart/pie-chart.component.html","../../../projects/ui-components/src/lib/line-chart/line-chart.component.ts","../../../projects/ui-components/src/lib/line-chart/line-chart.component.html","../../../projects/ui-components/src/lib/tabs/tabs.component.ts","../../../projects/ui-components/src/lib/tabs/tabs.component.html","../../../projects/ui-components/src/lib/date-range-toolbar/date-range-toolbar.component.ts","../../../projects/ui-components/src/lib/date-range-toolbar/date-range-toolbar.component.html","../../../projects/ui-components/src/lib/bottom-bar/bottom-bar.component.ts","../../../projects/ui-components/src/lib/bottom-bar/bottom-bar.component.html","../../../projects/ui-components/src/lib/bottom-bar/bottom-bar.model.ts","../../../projects/ui-components/src/lib/ui-components.module.ts","../../../projects/ui-components/src/lib/button/button.model.ts","../../../projects/ui-components/src/lib/label/label.model.ts","../../../projects/ui-components/src/lib/pdt-document-builder/pdt-document-builder.model.ts","../../../projects/ui-components/src/lib/table/table.model.ts","../../../projects/ui-components/src/lib/stepper/stepper.model.ts","../../../projects/ui-components/src/lib/data-table/data-table.model.ts","../../../projects/ui-components/src/lib/pie-chart/pie-chart.model.ts","../../../projects/ui-components/src/lib/line-chart/line-chart.model.ts","../../../projects/ui-components/src/lib/tabs/tabs.model.ts","../../../projects/ui-components/src/public-api.ts","../../../projects/ui-components/src/pcarreira-ui-components.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\n\nexport class UiComponentsConfig {\n  getTranslations: () => Promise<{ translations: Translations, language: string }>;\n}\n\nexport class Translations {\n  [language: string]: Object\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UiComponentsService {\n  private _translations: Translations;\n  private _language: string;\n\n  constructor(@Inject('config') config?: UiComponentsConfig) {\n    if (config?.getTranslations) {\n      config.getTranslations().then((data) => {\n        this._translations = data.translations;\n        this._language = data.language;\n\n        localStorage.setItem(\"ui-components-translations\", JSON.stringify(this._translations))\n        localStorage.setItem(\"ui-components-language\", this._language)\n      });\n    }\n    else {\n      this._translations = {};\n    }\n  }\n\n  get translations(): Translations {\n    return JSON.parse(localStorage.getItem(\"ui-components-translations\"));\n  }\n\n  get language(): string {\n    return localStorage.getItem(\"ui-components-language\");\n  }\n\n  translate(label: any) {\n    if (!label?.text) {\n      return \"\";\n    }\n\n    try {\n      return this.getTranslatedKey(label, this.translations[this.language]) || label?.text;\n    } catch (ex) {\n      return label?.text;\n    }\n  }\n\n  private getTranslatedKey(label: any, translations): string {\n    let [part, ...parts] = label?.text.split(\".\");\n\n    let translated = { ...translations };\n    while (part) {\n      if (translated) {\n        translated = translated[part];\n      }\n      [part, ...parts] = parts;\n    }\n\n    return this.replaceTags(translated, label?.data);\n  }\n\n  private replaceTags(text: string, props?: any) {\n    if (props?.prop1) {\n      text = text.replace(\"{{prop1}}\", props.prop1)\n    }\n    if (props?.prop2) {\n      text = text.replace(\"{{prop2}}\", props.prop2)\n    }\n    if (props?.prop3) {\n      text = text.replace(\"{{prop3}}\", props.prop3)\n    }\n    return text;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LabelConfig, LabelConfigProps } from '../lib/label/label.model';\nimport { UiComponentsService } from '../services/ui-components.service';\n\n@Pipe({ name: 'translate' })\nexport class TranslatePipe implements PipeTransform {\n    constructor(\n        private uiComponentsService: UiComponentsService\n    ) { }\n\n    transform(label?: LabelConfig): string {\n        return this.uiComponentsService.translate(label);\n    }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ButtonComponentConfig } from './button.model';\n\n\n@Component({\n  selector: 'ui-button',\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent {\n  @Input() config: ButtonComponentConfig;\n\n  @Output() onClick = new EventEmitter();\n\n  constructor() { }\n\n}\n","<button [id]=\"config.id\" *ngIf=\"config.type==='text'\" mat-flat-button class=\"button\" [color]=\"config.color?.toLowerCase()\" [disabled]=\"config.formControl ? !config.formControl.valid : config.disabled\"\n    (click)=\"onClick.emit()\">{{config.label | translate}}</button>\n\n<button [id]=\"config.id\" *ngIf=\"config.type==='icon'\" mat-icon-button [color]=\"config.color?.toLowerCase()\" [disabled]=\"config.formControl ? !config.formControl.valid : config.disabled\" (click)=\"onClick.emit()\">\n    <mat-icon>{{config.icon}}</mat-icon>\n    <p *ngIf=\"config.label\" class=\"icon-text\">{{config.label | translate}}</p>\n</button>\n\n<button [id]=\"config.id\" *ngIf=\"config.type==='text-icon'\" mat-icon-button [color]=\"config.color?.toLowerCase()\" [disabled]=\"config.formControl ? !config.formControl.valid : config.disabled\" (click)=\"onClick.emit()\">\n  <mat-icon>{{config.icon}}</mat-icon>\n  <span class=\"text\" class=\"icon-text\">{{config.label | translate}}</span>\n</button>\n\n<button [id]=\"config.id\" *ngIf=\"config.type==='dashed'\" class=\"dashed\" [color]=\"config.color?.toLowerCase()\" [disabled]=\"config.formControl ? !config.formControl.valid : config.disabled\" (click)=\"onClick.emit()\">\n    <mat-icon>{{config.icon}}</mat-icon>\n    <p class=\"icon-text\">{{config.label | translate}}</p>\n</button>\n\n<div class=\"float-button\" *ngIf=\"config.type==='float'\">\n  <button [id]=\"config.id\" mat-mini-fab [color]=\"config.color?.toLowerCase()\" [disabled]=\"config.formControl ? !config.formControl.valid : config.disabled\" (click)=\"onClick.emit()\">\n    <mat-icon>{{config.icon}}</mat-icon>\n  </button>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LabelConfig } from '../label/label.model';\n\nexport class HeaderComponentConfig {\n  sticky?: boolean\n  title: LabelConfig\n  subtitle?: LabelConfig\n  leftAction?: {\n    icon: string\n  }\n  rightAction?: {\n    icon: string\n  }\n}\n\n@Component({\n  selector: 'ui-header',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n  @Input() config: HeaderComponentConfig;\n\n  @Output() onRightAction = new EventEmitter();\n  @Output() onLeftAction = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit(): void {\n    if(this.config.sticky === undefined) {\n      this.config.sticky = true;\n    }\n  }\n}\n","<mat-toolbar [ngClass]=\"{'sticky': config.sticky}\">\n    <button id=\"header-left-button\" mat-icon-button *ngIf=\"config.leftAction\" (click)=\"onLeftAction.emit()\">\n     <mat-icon>{{config.leftAction?.icon}}</mat-icon>\n   </button>\n   <div class=\"flexExpand\">\n    <h2 [ngClass]=\"{'center': (!config.leftAction && !config.rightAction?.icon) || (config.leftAction && config.rightAction?.icon), 'left': !config.leftAction && config.rightAction?.icon}\">{{ config.title | translate }}</h2>\n    <h6 *ngIf=\"config.subtitle\" class=\"subtitle\" [ngClass]=\"{'center': (!config.leftAction && !config.rightAction?.icon) || (config.leftAction && config.rightAction?.icon), 'left': !config.leftAction && config.rightAction}\">{{ config.subtitle | translate }}</h6>\n   </div>\n   <button id=\"header-right-button\" mat-icon-button (click)=\"onRightAction.emit()\" *ngIf=\"config.rightAction?.icon\">\n    <mat-icon>{{config.rightAction?.icon}}</mat-icon>\n  </button>\n</mat-toolbar>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\n\nexport class SelectComponentConfig {\n  id?: string\n  key: string\n  value: string | string[];\n  defaultOption?: { id: String, label: LabelConfig};\n  defaultOptions?: { id: String, label: LabelConfig}[];\n  label: LabelConfig\n  options: { id: String, label: LabelConfig, note?: LabelConfig}[]\n  disabled?: boolean\n  multiple?: boolean\n  required?: boolean\n  formControl?: AbstractControl\n}\n\n\n@Component({\n  selector: 'ui-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.scss'],\n  providers:[\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi:true,\n      useExisting: SelectComponent\n    }\n  ]\n})\nexport class SelectComponent implements OnInit, ControlValueAccessor {\n  @Input() config: SelectComponentConfig;\n\n  @Output() changeValue = new EventEmitter();\n\n  onChange = (value) => {\n    this.changeValue.emit(value);\n  };\n  onTouched = () => {};\n  touched = false;\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.onChange(this.config.value);\n  }\n\n  values;\n  onSelect(id) {\n    this.values = id;\n    if(this.config.multiple) {\n      return;\n    }\n\n    this.onChange(id);\n  }\n\n  onClose(opened) {\n    if(opened) {\n      return;\n    }\n\n    this.onChange(this.values);\n  }\n\n  writeValue(value: any) {\n    this.config.value = value;\n  }\n\n  registerOnChange(onChange: any) {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean) {\n    this.config.disabled = disabled;\n  }\n}\n","<mat-form-field appearance=\"fill\" class=\"select-field\">\n    <mat-label [ngStyle]=\"{'color': !config.formControl || config.formControl.valid ? '' : 'red'}\">{{ config.label | translate }}</mat-label>\n\n    <mat-select [id]=\"config.id\" *ngIf=\"!config.multiple\" [required]=\"config.required\" [disabled]=\"config.disabled\" [value]=\"config.value\" (selectionChange)=\"onSelect($event.value)\">\n        <mat-option *ngFor=\"let option of config.options\" [value]=\"option.id\">{{ option.label | translate }}\n            <span class=\"note\" *ngIf=\"option.note\">({{ option.note | translate }})</span>\n        </mat-option>\n    </mat-select>\n\n    <mat-select [id]=\"config.id\" *ngIf=\"config.multiple\" [required]=\"config.required\" [disabled]=\"config.disabled\" [value]=\"config.value\" (selectionChange)=\"onSelect($event.value)\" (openedChange)=\"onClose($event)\" multiple>\n        <mat-option *ngFor=\"let option of config.options\" [value]=\"option.id\">{{ option.label | translate }}\n            <span class=\"note\" *ngIf=\"option.note\">({{ option.note | translate }})</span>\n        </mat-option>\n    </mat-select>\n\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LabelComponentConfig } from './label.model';\n\n@Component({\n  selector: 'ui-label',\n  templateUrl: './label.component.html',\n  styleUrls: ['./label.component.scss']\n})\nexport class LabelComponent implements OnInit {\n  @Input() config: LabelComponentConfig;\n\n  constructor() { }\n\n  ngOnInit(): void {}\n}\n","<div class=\"content\" [ngStyle]=\"{'justify-content': config.align || 'center', 'text-align': config.align || 'center', 'font-size': config.size, 'font-weight': config.bold ? 'bold' : 'normal', 'color': config.color}\">\n  <mat-icon *ngIf=\"config.icon\">{{config.icon}}</mat-icon>\n  <span class=\"text\">{{config.label | translate }}</span>\n</div>\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { LabelComponentConfig } from '../label/label.model';\nimport { SelectComponentConfig } from '../select/select.component';\n\nexport class ListMenuComponentConfig {\n  menu: {\n    rowSelectIcon?: boolean\n    items: {\n      id?: string\n      icon: string\n      title: LabelComponentConfig,\n\t\t\tdescription?: LabelComponentConfig,\n\t\t\tdata?: any\n    }[],\n    filters?: {\n      options: SelectComponentConfig[],\n      apply: ButtonComponentConfig\n    }\n  }\n}\n\n@Component({\n  selector: 'ui-list-menu',\n  templateUrl: './list-menu.component.html',\n  styleUrls: ['./list-menu.component.scss']\n})\nexport class ListMenuComponent implements OnInit {\n  @Input() config: ListMenuComponentConfig;\n\n  @Output() onMenuClick = new EventEmitter();\n  @Output() onApplyFilters = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  apply() {\n  }\n\n}\n","<div class=\"filters\" *ngIf=\"config.menu.filters?.options.length\">\n  <ui-select class=\"filter\" *ngFor=\"let filter of config.menu.filters.options\" [config]=\"filter\"></ui-select>\n  <ui-button class=\"apply\" [config]=\"config.menu.filters.apply\" (onClick)=\"apply()\"></ui-button>\n</div>\n<mat-list>\n  <mat-selection-list [multiple]=\"false\">\n    <ng-container *ngFor=\"let item of config.menu.items\">\n      <mat-list-option class=\"option\" [id]=\"item.id\" (click)=\"onMenuClick.emit(item)\">\n        <mat-icon mat-list-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n        <div class=\"list-line\">\n          <div class=\"text\">\n            <div mat-line>\n              <ui-label [config]=\"item.title\"></ui-label>\n            </div>\n            <div mat-line *ngIf=\"item.description\">\n              <ui-label [config]=\"item.description\"></ui-label>\n            </div>\n          </div>\n          <button mat-icon-button *ngIf=\"config.menu.rowSelectIcon\">\n            <mat-icon>chevron_right</mat-icon>\n          </button>\n        </div>\n      </mat-list-option>\n      <mat-divider></mat-divider>\n    </ng-container>\n  </mat-selection-list>\n</mat-list>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport moment from 'moment';\nimport { LabelConfig } from '../label/label.model';\n\nexport class DayRangeSelectorComponentConfig {\n  startDate: Date\n  endDate: Date\n  period?: 'day' | 'week' | 'month' | 'year' | undefined;\n  showDayOfWeek?: boolean\n}\n\n@Component({\n  selector: 'ui-day-range-selector',\n  templateUrl: './day-range-selector.component.html',\n  styleUrls: ['./day-range-selector.component.scss']\n})\nexport class DayRangeSelectorComponent implements OnInit, OnChanges {\n  @Input() config: DayRangeSelectorComponentConfig;\n\n  @Output() onDateChange = new EventEmitter();\n\n  private diff: number = 1;\n\n  startWeekDay: LabelConfig = { text: \"\" };\n  endWeekDay: LabelConfig = { text: \"\" };\n\n  constructor() { }\n\n  ngOnInit() {\n\n  }\n\n  ngOnChanges(): void {\n    this.diff = moment(this.config.endDate).diff(moment(this.config.startDate), 'd') + 1;\n\n    this.startWeekDay = { text: `week-days.${moment(this.config.startDate).day().toString()}` };\n    this.endWeekDay = { text: `week-days.${moment(this.config.endDate).day().toString()}` };\n\n    if (this.config.period) {\n      this.config.startDate = moment(this.config.startDate).startOf(this.config.period).toDate();\n      this.config.endDate = moment(this.config.startDate).clone().endOf(this.config.period).toDate();\n    }\n  }\n\n  next() {\n    if (!this.config.period) {\n      this.config.startDate = moment(this.config.startDate).add(this.diff, 'd').toDate();\n      this.config.endDate = moment(this.config.endDate).add(this.diff, 'd').toDate();\n    } else {\n      this.config.startDate = moment(this.config.startDate).add(1, this.config.period).startOf(this.config.period).toDate();\n      this.config.endDate = moment(this.config.startDate).clone().endOf(this.config.period).toDate();\n    }\n\n    this.ngOnChanges();\n    this.onDateChange.emit({\n      startDate: this.config.startDate,\n      endDate: this.config.endDate\n    });\n  }\n\n  previous() {\n    if (!this.config.period) {\n      this.config.startDate = moment(this.config.startDate).subtract(this.diff, 'd').toDate();\n      this.config.endDate = moment(this.config.endDate).subtract(this.diff, 'd').toDate();\n    } else {\n      this.config.startDate = moment(this.config.startDate).subtract(1, this.config.period).startOf(this.config.period).toDate();\n      this.config.endDate = moment(this.config.startDate).clone().endOf(this.config.period).toDate();\n    }\n\n    this.ngOnChanges();\n    this.onDateChange.emit({\n      startDate: this.config.startDate,\n      endDate: this.config.endDate\n    });\n  }\n\n  sameDay(date1, date2) {\n    const d1 = new Date(date1);\n    const d2 = new Date(date2);\n    return d1.getFullYear() === d2.getFullYear() &&\n      d1.getMonth() === d2.getMonth() &&\n      d1.getDate() === d2.getDate();\n  }\n}\n","<div class=\"year\">\n    <div class=\"header\">\n        <button mat-icon-button (click)=\"previous()\">\n            <mat-icon>arrow_back_ios</mat-icon>\n        </button>\n\n        <div class=\"text\">\n          <div *ngIf=\"config.showDayOfWeek\">\n            <span *ngIf=\"sameDay(config.startDate, config.endDate)\">{{startWeekDay | translate}}</span>\n            <span *ngIf=\"!sameDay(config.startDate, config.endDate)\">{{startWeekDay | translate}} | {{endWeekDay | translate}}</span>\n          </div>\n          <div>\n            <span *ngIf=\"sameDay(config.startDate, config.endDate)\">{{ config.startDate | date:'dd-MM-YYYY' }}</span>\n            <span *ngIf=\"!sameDay(config.startDate, config.endDate)\">{{ config.startDate | date:'dd-MM-YYYY' }} | {{ config.endDate | date:'dd-MM-YYYY' }}</span>\n          </div>\n        </div>\n\n        <button mat-icon-button (click)=\"next()\">\n            <mat-icon>arrow_forward_ios</mat-icon>\n        </button>\n    </div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\n\nexport class InfoCardComponentConfig {\n  color: string;\n  data?: any;\n}\n\n@Component({\n  selector: 'ui-info-card',\n  templateUrl: './info-card.component.html',\n  styleUrls: ['./info-card.component.scss']\n})\nexport class InfoCardComponent implements OnInit {\n  @Input() config: InfoCardComponentConfig;\n  @Input() body: TemplateRef<any>;\n\n  constructor() { }\n\n  ngOnInit(): void {}\n\n}\n\n","<div class=\"info-card\" [ngStyle]=\"{'border-color': config.color || 'black'}\">\n    <ng-container *ngTemplateOutlet=\"body; context: { data: config.data }\"></ng-container>\n    <ng-container *ngIf=\"!body\">\n        <span [ngStyle]=\"{'color': config.color}\">Info Card</span>\n    </ng-container>\n</div>","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { LabelConfig } from '../label/label.model';\n\nexport class HolidaysCardComponentConfig {\n  statusLabel: LabelConfig\n  statusColor: string\n  relatedHolidays?: number\n  approveAction: boolean\n  rejectAction: boolean\n  pendingaction: boolean\n  editAction: boolean\n  deleteAction: boolean\n  historicAction: boolean\n  durationLabel?: LabelConfig\n  relatedHolidaysLabel?: LabelConfig\n  holidaysTypeLabel?: LabelConfig\n  holidays: {\n    startDate: Date;\n    endDate: Date;\n    duration: number;\n    info: string;\n    reason?: string;\n  }\n}\n\n@Component({\n  selector: 'ui-holidays-card',\n  templateUrl: './holidays-card.component.html',\n  styleUrls: ['./holidays-card.component.scss']\n})\nexport class HolidaysCardComponent implements OnInit {\n  @Input() config: HolidaysCardComponentConfig;\n\n  @Output() onAction = new EventEmitter();\n\n  actions: {\n    edit: ButtonComponentConfig,\n    approve: ButtonComponentConfig,\n    reject: ButtonComponentConfig,\n    delete: ButtonComponentConfig,\n    pending: ButtonComponentConfig,\n    historic: ButtonComponentConfig\n  } = {\n      edit: { type: \"icon\", key: \"edit\", icon: \"edit\", color: undefined },\n      approve: { type: \"icon\", key: \"thumb_up_alt\", icon: \"thumb_up_alt\", color: undefined },\n      reject: { type: \"icon\", key: \"thumb_down_alt\", icon: \"thumb_down_alt\", color: undefined },\n      delete: { type: \"icon\", key: \"delete\", icon: \"delete\", color: undefined },\n      pending: { type: \"icon\", key: \"undo\", icon: \"undo\", color: undefined },\n      historic: { type: \"icon\", key: \"history\", icon: \"history\", color: undefined },\n    }\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  action(action) {\n    this.onAction.emit(action)\n  }\n}\n","<ui-info-card [body]=\"body\" [config]=\"{color: config.statusColor, data: config}\">\n    <ng-template #body let-data=\"data\">\n        <div class=\"holidays-card\">\n            <div class=\"body\">\n                <div class=\"header\">{{data.holidaysTypeLabel | translate}}</div>\n                <div class=\"dates\">{{data.holidays.startDate | date:'dd MMMM'}} -> {{data.holidays.endDate | date:'dd MMMM'}}</div>\n                <div class=\"days\">{{data.holidays.duration}} {{(data.durationLabel || 'Day(s)') | translate}}</div>\n                <div class=\"status\" [ngStyle]=\"{'color': data.statusColor}\">{{data.statusLabel | translate}}</div>\n                <div class=\"status\">{{data.holidays.info}}</div>\n                <div class=\"status\">{{data.holidays.reason}}</div>\n                <div class=\"related\" *ngIf=\"data.relatedHolidays\">{{data.relatedHolidays}} {{(data.relatedHolidaysLabel || 'Related people') | translate}}</div>\n            </div>\n            <div class=\"actions\">\n                <ui-button type=\"icon\" [config]=\"actions.approve\" *ngIf=\"data.approveAction\" (onClick)=\"action(data.approveAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.reject\" *ngIf=\"data.rejectAction\" (onClick)=\"action(data.rejectAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.pending\" *ngIf=\"data.pendingaction\" (onClick)=\"action(data.pendingaction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.edit\" *ngIf=\"data.editAction\" (onClick)=\"action(data.editAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.delete\" *ngIf=\"data.deleteAction\" (onClick)=\"action(data.deleteAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.historic\" *ngIf=\"data.historicAction\" (onClick)=\"action(data.historicAction)\"></ui-button>\n            </div>\n        </div>\n    </ng-template>\n</ui-info-card>","import { Component, Input, OnInit, Output, EventEmitter, OnChanges } from '@angular/core';\nimport moment from 'moment';\n\nexport enum WeekDays {\n  Monday = 'MONDAY',\n  Tuesday = 'TUESDAY',\n  Wednesday = 'WEDNESDAY',\n  Thursday = 'THURSDAY',\n  Friday = 'FRIDAY',\n  Saturday = 'SATURDAY',\n  Sunday = 'SUNDAY'\n}\n\nconst WeekDaysMapper = {\n  [WeekDays.Monday]: 1,\n  [WeekDays.Tuesday]: 2,\n  [WeekDays.Wednesday]: 3,\n  [WeekDays.Thursday]: 4,\n  [WeekDays.Friday]: 5,\n  [WeekDays.Saturday]: 6,\n  [WeekDays.Sunday]: 0,\n}\n\nclass Week {\n  weekNumber: number\n  days: CalendarDay[]\n}\n\nexport class CalendarDay {\n  date: Date\n  isToday: boolean\n  isSelected: boolean\n  isOtherMonth: boolean\n  isDisabled: boolean\n  hasEvents: boolean\n  color: string\n}\n\nexport class CalendarEvent {\n  startDate: Date\n  endDate: Date\n  color?: string\n}\n\nexport class CalendarComponentConfig {\n  date: Date\n  minDate: Date\n  maxDate?: Date\n  events?: CalendarEvent[]\n  disabledWeekDays?: WeekDays[]\n  disabledDays?: Date[]\n  showEvents?: boolean\n  showEmptyDays?: boolean\n  emptyDaysColor?: string\n}\n\n@Component({\n  selector: 'ui-calendar',\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n})\nexport class CalendarComponent implements OnInit, OnChanges {\n  @Input() config: CalendarComponentConfig;\n\n  @Output() onDaySelect = new EventEmitter();\n  @Output() onMonthSelect = new EventEmitter();\n\n  startDate: moment.Moment;\n  endDate: moment.Moment;\n\n  weeks: Week[] = [];\n\n  selectDayDisabled = false;\n\n  headerDate: moment.Moment;\n\n  constructor() { }\n\n  buildWeeksTimeout;\n  ngOnInit(): void {\n    this.startDate = moment(this.config.date).startOf('month');\n    this.endDate = moment(this.config.date).endOf('month');\n    this.headerDate = this.startDate.clone().add(2, \"d\");\n    clearTimeout(this.buildWeeksTimeout);\n    this.buildWeeksTimeout = setTimeout(() => {\n      this.weeks = this.buildMonth(this.startDate, this.endDate);\n    }, 50);\n  }\n\n  ngOnChanges() {\n    this.ngOnInit();\n  }\n\n  selectDay(selectedDay: CalendarDay) {\n    this.config = {\n      ...this.config,\n      date: selectedDay.date\n    }\n    this.weeks = this.weeks.map(week => {\n      week.days = week.days.map(day => ({\n        ...day,\n        isSelected: moment(selectedDay.date).isSame(day.date, \"day\")\n      }));\n      return week;\n    });\n    this.onDaySelect.emit(selectedDay);\n  }\n\n  nextMonth() {\n    const start = this.startDate.clone().add(1, 'month').startOf('month');\n    const end = this.endDate.clone().add(1, 'month').endOf('month');\n\n    if(start > moment(this.config.maxDate).startOf('month')) {\n      return;\n    }\n\n    this.startDate = start;\n    this.endDate = end;\n    this.headerDate = this.startDate.clone().add(2, \"d\");\n    this.config.date = this.startDate.clone().toDate();\n    this.weeks = this.buildMonth(this.startDate, this.endDate);\n    this.onMonthSelect.emit({\n      startDate: this.startDate.clone(),\n      endDate: this.endDate.clone()\n    });\n  }\n\n  previousMonth() {\n    const start = this.startDate.clone().subtract(1, 'month').startOf('month');\n    const end = this.endDate.clone().subtract(1, 'month').endOf('month');\n\n    if(start < moment(this.config.minDate).startOf('month')) {\n      return;\n    }\n\n    this.startDate = start;\n    this.endDate = end;\n    this.headerDate = this.startDate.clone().add(2, \"d\");\n    this.config.date = this.startDate.clone().toDate();\n    this.weeks = this.buildMonth(this.startDate, this.endDate);\n    this.onMonthSelect.emit({\n      startDate: this.startDate.clone(),\n      endDate: this.endDate.clone()\n    });\n  }\n\n  buildMonth(start: moment.Moment, end: moment.Moment) {\n    const startDate = start.clone().startOf('week');\n    const endDate = end.clone().endOf('week');\n    let date = startDate.clone();\n    const weeks = [];\n    while (date <= endDate) {\n      weeks.push({\n        weekNumber: date.week(),\n        days: this.buildWeek(date, start)\n      });\n      date.add(7, 'day');\n    }\n\n    return weeks;\n  }\n\n  buildWeek(startDate: moment.Moment, intialdate: moment.Moment): CalendarDay[] {\n    const start = startDate.clone().startOf('week');\n    const end = startDate.clone().endOf('week');\n\n    let days: CalendarDay[] = [];\n    let date = start.clone();\n\n    const disabledWeekDaysNumbers = this.config.disabledWeekDays?.map(day => WeekDaysMapper[day]) || [];\n    while (date < end) {\n      const event = this.config.events?.find(e => moment(e.startDate).isSame(date, \"day\"));\n      const isSelected = date.isSame(this.config.date, \"day\");\n      const isDisabled = date > moment(this.config.maxDate)\n        || date < moment(this.config.minDate)\n        || disabledWeekDaysNumbers.includes(date.day())\n        || this.config.disabledDays?.some(day => moment(day).isSame(date, 'day'));\n\n      if (isSelected && isDisabled) {\n        this.selectDayDisabled = true;\n      }\n\n      days.push({\n        date: date.clone().toDate(),\n        color: event?.color,\n        hasEvents: event !== undefined,\n        isToday: date.isSame(moment(), \"day\"),\n        isSelected,\n        isOtherMonth: date.month() !== intialdate.month(),\n        isDisabled\n      });\n\n      date.add(1, 'day');\n    }\n\n    const selectedDay = days.find(d => d.isSelected);\n    if(selectedDay) {\n      this.selectDay(selectedDay);\n    }\n\n    return days;\n  }\n}\n","<div class=\"calendar\">\n    <div class=\"month\">\n        <div class=\"header\">\n            <button mat-icon-button (click)=\"previousMonth()\">\n                <mat-icon>arrow_back_ios</mat-icon>\n            </button>\n            <span class=\"text\">{{ headerDate | date:'MMMM YYYY' }}</span>\n            <button mat-icon-button (click)=\"nextMonth()\">\n                <mat-icon>arrow_forward_ios</mat-icon>\n            </button>\n        </div>\n\n        <div class=\"week\" *ngIf=\"weeks.length\">\n            <div class=\"day\" *ngFor=\"let day of weeks[0].days\">\n                <div>\n                    <span>{{day.date | date:'EEEEE'}}</span>\n                </div>\n            </div>\n        </div>\n        <div *ngFor=\"let week of weeks\" class=\"week\">\n            <div class=\"day\" *ngFor=\"let day of week.days\"\n                (click)=\"!day.isOtherMonth && selectDay(day)\">\n                <div>\n                    <span\n                        [ngClass]=\"{'today': day.isToday, 'disable': day.isOtherMonth || day.isDisabled, 'selected': day.isSelected, 'events': config.showEvents && day.hasEvents, 'noEvents': config.showEmptyDays && !day.hasEvents}\"\n                        [ngStyle]=\"{'border-color': !day.hasEvents ? config.emptyDaysColor : day.color, 'background-color': day.isSelected && (!day.hasEvents ? config.emptyDaysColor : day.color)}\">{{day.date\n                        | date:'dd'}}{{day.events}}</span>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport moment from 'moment';\n\nexport class YearSelectorComponentConfig {\n  date: Date\n}\n\n@Component({\n  selector: 'ui-year-selector',\n  templateUrl: './year-selector.component.html',\n  styleUrls: ['./year-selector.component.scss']\n})\nexport class YearSelectorComponent implements OnInit, OnChanges {\n  @Input() config: YearSelectorComponentConfig;\n  @Output() onYearChange = new EventEmitter();\n\n  year: number = 0;\n\n  constructor() {}\n\n  ngOnInit(): void {\n      this.year = moment(this.config.date).year();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.year = moment(this.config.date).year();\n  }\n\n  nextYear() {\n    this.config.date = moment(this.config.date).clone().add(1, 'y').toDate();\n    this.onYearChange.emit(this.config.date.getFullYear());\n  }\n\n  previousYear() {\n    this.config.date = moment(this.config.date).clone().subtract(1, 'y').toDate();\n    this.onYearChange.emit(this.config.date.getFullYear());\n  }\n}\n","<div class=\"year\">\n    <div class=\"header\">\n        <button mat-icon-button (click)=\"previousYear()\">\n            <mat-icon>arrow_back_ios</mat-icon>\n        </button>\n        <span class=\"text\">{{ year }}</span>\n        <button mat-icon-button (click)=\"nextYear()\">\n            <mat-icon>arrow_forward_ios</mat-icon>\n        </button>\n    </div>\n</div>","import { ButtonComponentConfig } from \"../button/button.model\"\nimport { CheckboxComponentConfig } from \"../checkbox/checkbox.component\"\nimport { DateRangePickerComponentConfig } from \"../date-range-picker/date-range-picker.component\"\nimport { InputComponentConfig } from \"../input/input.component\"\nimport { LabelComponentConfig } from \"../label/label.model\"\nimport { ScheduleComponentConfig } from \"../schedule/schedule.component\"\nimport { Product } from \"../search-product/search-product.model\"\nimport { Supplier } from \"../search-supplier/search-supplier.model\"\nimport { SelectComponentConfig } from \"../select/select.component\"\nimport { TimePickerComponentConfig } from \"../time-picker/time-picker.component\"\nimport { TreeSelectorComponentConfig } from \"../tree-selector/tree-selector.model\"\nimport { ExtraDataComponentConfig } from \"./extra-data.model\"\n\nexport enum FormComponentCode {\n  Input = 'INPUT',\n  Checkbox = \"CHECKBOX\",\n  Label = 'LABEL',\n  Select = 'SELECT',\n  Button = 'BUTTON',\n  DateRangePicker = 'DATE_RANGE_PICKER',\n  Schedule = 'SCHEDULE',\n  TimePicker = 'TIME_PICKER',\n  Form = 'FORM',\n  TreeSelector = 'TREE_SELECTOR',\n  ExtaData = 'EXTRA_DATA'\n}\n\nexport class GenericFormComponent<T, Z> {\n  code: T\n  data: Z\n}\n\nexport class FormComponentConfig {\n  items: (\n    GenericFormComponent<FormComponentCode.Input, InputComponentConfig>\n    | GenericFormComponent<FormComponentCode.Checkbox, CheckboxComponentConfig>\n    | GenericFormComponent<FormComponentCode.Label, LabelComponentConfig>\n    | GenericFormComponent<FormComponentCode.Select, SelectComponentConfig>\n    | GenericFormComponent<FormComponentCode.Button, ButtonComponentConfig>\n    | GenericFormComponent<FormComponentCode.DateRangePicker, DateRangePickerComponentConfig>\n    | GenericFormComponent<FormComponentCode.Schedule, ScheduleComponentConfig>\n    | GenericFormComponent<FormComponentCode.TimePicker, TimePickerComponentConfig>\n    | GenericFormComponent<FormComponentCode.TreeSelector, TreeSelectorComponentConfig>\n    | GenericFormComponent<FormComponentCode.ExtaData, ExtraDataComponentConfig>\n  )[]\n}\n\nexport class FormComponentServices {\n\tgetSuppliers?: (description: string) => Promise<Supplier[]>\n\tgetProducts?: (description: string) => Promise<Product[]>\n}\n","import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ExtraDataComponentConfig } from '../lib/form/extra-data.model';\nimport { FormComponentConfig } from '../lib/form/form.model';\nimport { CheckboxComponentConfig } from '../lib/checkbox/checkbox.component';\nimport { InputComponentConfig } from '../lib/input/input.component';\nimport { SelectComponentConfig } from '../lib/select/select.component';\nimport { ScheduleComponentConfig } from '../lib/schedule/schedule.component';\nimport { ButtonComponentConfig } from '../lib/button/button.model';\nimport { DateRangePickerComponentConfig } from '../lib/date-range-picker/date-range-picker.component';\nimport { TimePickerComponentConfig } from '../lib/time-picker/time-picker.component';\nimport { TreeSelectorComponentConfig } from '../lib/tree-selector/tree-selector.model';\nimport { GenericFormComponent, FormComponentCode } from '../lib/form/form.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormService {\n  reactiveForm: FormGroup;\n\n  constructor() {}\n\n  build(config: FormComponentConfig): FormGroup {\n    this.reactiveForm = new FormGroup({});\n    config.items.forEach(item => {\n      switch (item.code) {\n        case FormComponentCode.Checkbox: {\n          this.handleCheckbox(item as GenericFormComponent<FormComponentCode.Checkbox, CheckboxComponentConfig>);\n          break;\n        }\n        case FormComponentCode.Input: {\n          this.handleInput(item as GenericFormComponent<FormComponentCode.Input, InputComponentConfig>);\n          break;\n        }\n        case FormComponentCode.Select: {\n          this.handleSelect(item as GenericFormComponent<FormComponentCode.Select, SelectComponentConfig>);\n          break;\n        }\n        case FormComponentCode.Button: {\n          this.handleButton(item as GenericFormComponent<FormComponentCode.Button, ButtonComponentConfig>);\n          break;\n        }\n        case FormComponentCode.DateRangePicker: {\n          this.handleDateRangePicker(item as GenericFormComponent<FormComponentCode.DateRangePicker, DateRangePickerComponentConfig>);\n          break;\n        }\n        case FormComponentCode.Schedule: {\n          this.handleSchedule(item as GenericFormComponent<FormComponentCode.Schedule, ScheduleComponentConfig>);\n          break;\n        }\n        case FormComponentCode.TimePicker: {\n          this.handleTimePicker(item as GenericFormComponent<FormComponentCode.TimePicker, TimePickerComponentConfig>);\n          break;\n        }\n        case FormComponentCode.TreeSelector: {\n          this.handleTreeSelector(item as GenericFormComponent<FormComponentCode.TreeSelector, TreeSelectorComponentConfig>);\n          break;\n        }\n        case FormComponentCode.ExtaData: {\n          this.handleExtraData(item as GenericFormComponent<FormComponentCode.ExtaData, ExtraDataComponentConfig>);\n          break;\n        }\n      }\n    });\n\n    return this.reactiveForm;\n  }\n\n  handleCheckbox(item: GenericFormComponent<FormComponentCode.Checkbox, CheckboxComponentConfig>) {\n    const formControl = new FormControl(item.data.active, []);\n    this.reactiveForm.addControl(item.data.key, formControl);\n  }\n\n  handleInput(item: GenericFormComponent<FormComponentCode.Input, InputComponentConfig>) {\n    const formControl = new FormControl(item.data.value, [\n      ...(item.data.required ? [Validators.required] : []),\n      ...(item.data.type === \"email\" ? [Validators.email] : []),\n      ...(item.data.integer ? [Validators.pattern(\"^[0-9]*$\")] : []),\n    ]);\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(\n      item.data.key,\n      formControl\n    );\n  }\n\n  handleExtraData(item: GenericFormComponent<FormComponentCode.ExtaData, ExtraDataComponentConfig>) {\n    const formControl = new FormControl(item.data.value, []);\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(\n      item.data.key,\n      formControl\n    );\n  }\n\n  handleSelect(item: GenericFormComponent<FormComponentCode.Select, SelectComponentConfig>) {\n    let formControl: FormControl;\n    if (item.data.multiple) {\n      formControl = new FormControl(item.data.defaultOptions?.map(d => d.id), [\n        ...(item.data.required ? [Validators.required] : [])\n      ]);\n    } else {\n      formControl = new FormControl(item.data.defaultOption?.id, [\n        ...(item.data.required ? [Validators.required] : [])\n      ]);\n    }\n\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(item.data.key, formControl);\n  }\n\n  handleSchedule(item: GenericFormComponent<FormComponentCode.Schedule, ScheduleComponentConfig>) {\n    const formControl = new FormControl(item.data.schedule, [\n      ...(item.data.required ? [Validators.required] : [])\n    ]);\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(\n      item.data.key,\n      formControl\n    );\n  }\n\n  handleButton(item: GenericFormComponent<FormComponentCode.Button, ButtonComponentConfig>) {\n    if (item.data.submit) {\n      item.data.formControl = this.reactiveForm;\n    }\n  }\n\n  handleDateRangePicker(item: GenericFormComponent<FormComponentCode.DateRangePicker, DateRangePickerComponentConfig>) {\n    this.reactiveForm.addControl(item.data.key, new FormControl({\n      startDate: item.data.values.startDate,\n      endDate: item.data.values.endDate\n    }, []));\n  }\n\n  handleTimePicker(item: GenericFormComponent<FormComponentCode.TimePicker, TimePickerComponentConfig>) {\n    const formControl = new FormControl(item.data.value, [\n      ...(item.data.required ? [Validators.required] : [])\n    ]);\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(\n      item.data.key,\n      formControl\n    );\n  }\n\n  handleTreeSelector(item: GenericFormComponent<FormComponentCode.TreeSelector, TreeSelectorComponentConfig>) {\n    const formControl = new FormControl(item.data.items, []);\n    item.data.formControl = formControl;\n    this.reactiveForm.addControl(\n      item.data.key,\n      formControl\n    );\n  }\n}\n","export class KeyboardComponentConfig {\n    layoutName: 'numeric' | 'default' | 'shift'\n    value: string\n}","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { KeyboardComponentConfig } from './keyboard.model';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n  selector: 'ui-keyboard',\n  templateUrl: './keyboard.component.html',\n  styleUrls: ['./keyboard.component.scss']\n})\nexport class KeyboardComponent implements OnInit {\n  @Input() config: KeyboardComponentConfig;\n  @Output() onValue = new EventEmitter();\n\n  value: string = \"\";\n\n  layouts: {\n    [key: string]: string[]\n  } = {\n    default: [\n      '\\\\ 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\n      '{tab} q w e r t y u i o p +',\n      '{lock} a s d f g h j k l ç {enter}',\n      '{shift} z x c v b n m , . / {shift}',\n      '{space}'\n    ],\n    shift: [\n      '| ! @ € $ % & { ( ) } + {bksp}',\n      '{tab} Q W E R T Y U I O P *',\n      '{lock} A S D F G H J K L Ç {enter}',\n      '{shift} Z X C V B N M < > ? {shift}',\n      '{space}'\n    ],\n    numeric: [\n      '7 8 9',\n      '4 5 6',\n      '1 2 3',\n      '- 0 .',\n      '{bksp} {enter}',\n    ]\n  }\n\n  layoutSelected: {\n    lines: {\n      buttons: {\n        code: string,\n        value: string\n      }[]\n    }[]\n  } = {\n    lines: []\n  }\n\n  display: {\n    [key: string]: string\n  } = {\n    '{bksp}': '⌫',\n    '{enter}': '⏎',\n    '{tab}': '↹',\n    '{lock}': '⇪',\n    '{shift}': '⇧',\n    '{space}': ' '\n  }\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public data: KeyboardComponentConfig,\n    private dialogRef: MatDialogRef<KeyboardComponent>,\n  ) { }\n\n  ngOnInit(): void {\n    this.config = this.data.layoutName ? this.data : this.config;\n    this.value = this.config?.value || \"\";\n\n    this.keyboardSetup(this.config.layoutName);\n  }\n\n  keyboardSetup(layoutName) {\n    const layout = this.layouts[layoutName];\n    this.layoutSelected = {\n      lines: layout.reduce((acc, lineConfig) => {\n        const letters = lineConfig.split(\" \");\n        const buttons = letters.map(l => ({ code: l, value: this.display[l] || l }));\n        acc.push({buttons}); \n        return acc;\n      }, [])\n    }\n  }\n\n  handleNormalKeys(button: {\n    code: string,\n    value: string\n  }) {\n    switch (button.code) {\n      case \"-\":\n        this.handleHifen();\n        break;\n      case \".\":\n        this.handlePoint();\n        break;\n      default:\n        this.value = `${this.value}${button.value}`;\n        break;\n    }\n  }\n\n  handleSpecialKeys(button: {\n    code: string,\n    value: string\n  }) {\n    switch (button.code) {\n      case \"{lock}\":\n      case \"{shift}\":\n        this.handleShift();\n        break;\n      case \"{enter}\":\n        if (this.config.layoutName === \"numeric\") {\n          this.dialogRef.close(parseFloat(this.value));\n          return this.onValue.emit(parseFloat(this.value));\n        }\n\n        this.dialogRef.close(this.value);\n        this.onValue.emit(this.value)\n        break;\n      case \"{bksp}\":\n        this.value = this.value.slice(0, -1);\n        break;\n      case \"{space}\":\n        this.value = this.value + \" \";\n        break;\n      case \"-\":\n        this.handleHifen();\n        break;\n      case \".\":\n        this.handlePoint();\n        break;\n      default:\n        break;\n    }\n  }\n\n  handleShift() {\n    let currentLayout = this.config.layoutName;\n    this.config.layoutName = currentLayout === \"default\" ? \"shift\" : \"default\";\n    this.keyboardSetup(this.config.layoutName);\n  };\n\n  handleHifen() {\n    if (this.config.layoutName === \"numeric\" && this.value !== \"\") {\n      return;\n    }\n\n    this.value = \"-\";\n  }\n\n  handlePoint() {\n    if (this.config.layoutName === \"numeric\" && (this.value === \"\" || this.value.includes(\".\"))) {\n      return;\n    }\n    this.value = `${this.value}.`;\n  }\n\n  buttonClick(button: {\n    code: string,\n    value: string\n  }){\n    if(button.code.startsWith('{') && button.code.endsWith(\"}\")) {\n      this.handleSpecialKeys(button);\n      return;\n    }\n\n    this.handleNormalKeys(button);\n  }\n}\n","<div class=\"keyboard\">\n    <input class=\"input\" [value]=\"value\" />\n\n    <div class=\"keyboard-buttons\">\n        <div class=\"line\" *ngFor=\"let line of layoutSelected.lines\">\n            <div class=\"button\" *ngFor=\"let button of line.buttons\" (click)=\"buttonClick(button)\">\n                <span>{{button.value}}</span>\n            </div>\n        </div>\n    </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { KeyboardComponent } from '../keyboard/keyboard.component';\nimport { LabelConfig } from '../label/label.model';\n\nexport class InputComponentConfig {\n  key: string\n  id?: string\n  value: string\n  label?: LabelConfig\n  type: \"text\" | \"textarea\" | \"number\" | \"password\" | \"date\" | \"time\" | \"file\" | \"email\"\n  placeholder?: string\n  hint?: LabelConfig\n  required?: boolean\n  disabled?: boolean\n  integer?: boolean\n  formControl?: AbstractControl\n  align?: 'left' | 'center' | 'right'\n  onSreenKeyboard?: boolean\n  numberOfRows?: number\n}\n\n@Component({\n  selector: 'ui-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: InputComponent\n    }\n  ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor {\n  @Input() config: InputComponentConfig;\n  @Output() changeValue = new EventEmitter();\n  @Output() onTabPressed = new EventEmitter();\n\n  onChange(value) {\n    this.changeValue.emit(value);\n  };\n  onTouched() { };\n  touched = false;\n\n  constructor(\n    private dialog: MatDialog\n  ) { }\n\n  ngOnInit(): void { }\n\n  writeValue(value: any) {\n    this.config.value = value;\n  }\n\n  registerOnChange(onChange: any) {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean) {\n    this.config.disabled = disabled;\n  }\n\n  uploadFile(event) {\n    if (event.target.files.length > 0) {\n      this.onChange(event.target.files[0]);\n    }\n  }\n\n  openKeyboard(value) {\n    const dialogRef = this.dialog.open(KeyboardComponent, {\n      data: {\n        layoutName: this.config.type === \"number\" ? 'numeric' : 'default',\n        value: this.config.type === \"number\" ? '' : value\n      }\n    });\n\n    dialogRef.afterClosed().subscribe((result: string | number) => {\n      if (!result) {\n        return;\n      }\n      this.config.value = result.toString();\n      this.onChange(result.toString());\n    });\n  }\n}\n","<section class=\"input\">\n    <mat-form-field appearance=\"outline\" class=\"input-field\" *ngIf=\"config.type!=='file' && config.label\">\n        <mat-label [ngStyle]=\"{'color': !config.formControl || config.formControl.valid ? '' : 'red'}\">{{ config.label | translate }}</mat-label>\n        <input *ngIf=\"config.type!=='textarea'\" [id]=\"config.id\" matInput [ngClass]=\"config.align\" [placeholder]=\"config.placeholder\" [(ngModel)]=\"config.value\" [required]=\"config.required\" [disabled]=\"config.disabled\" [type]=\"config.type\" (ngModelChange)=\"onChange($event)\">\n        <textarea *ngIf=\"config.type==='textarea'\" matInput [rows]=\"config.numberOfRows || 10\" [ngClass]=\"config.align\" [placeholder]=\"config.placeholder\" [(ngModel)]=\"config.value\" [required]=\"config.required\" [disabled]=\"config.disabled\" [type]=\"config.type\" (ngModelChange)=\"onChange($event)\"></textarea>\n        <mat-hint>{{config.hint | translate}}</mat-hint>\n        <button *ngIf=\"config.onSreenKeyboard\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"openKeyboard(config.value)\">\n            <mat-icon>keyboard_alt</mat-icon>\n        </button>\n    </mat-form-field>\n\n    <div class=\"input-alone\" *ngIf=\"config.type!=='file' && !config.label\">\n        <input [id]=\"config.id\" matInput [ngClass]=\"config.align\" [placeholder]=\"config.placeholder\" [(ngModel)]=\"config.value\" [required]=\"config.required\" [disabled]=\"config.disabled\" [type]=\"config.type\" (ngModelChange)=\"onChange($event)\" (keydown.tab)=\"onTabPressed.emit($event)\">\n    </div>\n\n    <div class=\"input-field\" *ngIf=\"config.type==='file'\">\n        <div><span [ngStyle]=\"{'color': !config.formControl || config.formControl.valid ? '' : 'red'}\">{{ config.label | translate }}</span></div>\n        <input [id]=\"config.id\" class=\"input-file\" type=\"file\" (change)=\"uploadFile($event)\" [required]=\"config.required\" [disabled]=\"config.disabled\">\n    </div>\n</section>\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\n\nexport class CheckboxComponentConfig {\n  id?: string\n  key: string\n  label: LabelConfig\n  active: boolean\n  color?: 'primary' | 'accent' | 'warn' | ''\n  disabled?: boolean\n}\n\n@Component({\n  selector: 'ui-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.scss'],\n  providers:[\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi:true,\n      useExisting: CheckboxComponent\n    }\n  ]\n})\nexport class CheckboxComponent implements OnInit, ControlValueAccessor {\n  @Input() config: CheckboxComponentConfig;\n  @Output() changeValue = new EventEmitter();\n\n  onChange = (value) => {\n    this.changeValue.emit(value);\n  };\n  onTouched = () => {};\n  touched = false;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  writeValue(value: any) {\n    this.config.active = value;\n  }\n\n  registerOnChange(onChange: any) {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean) {\n    this.config.disabled = disabled;\n  }\n}\n","<section class=\"checkbox\">\n    <mat-checkbox [id]=\"config.id\" [checked]=\"config.active\" [color]=\"config.color?.toLowerCase()\" (change)=\"onChange($event.checked)\">\n        {{config.label | translate}}</mat-checkbox>\n</section>\n","import { Component, EventEmitter, Input, LOCALE_ID, OnInit, Output } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\nimport { LabelConfig } from '../label/label.model';\n\nexport class DateRangePickerComponentConfig {\n  key: string\n  values: { startDate: String, endDate: String }\n  label: LabelConfig\n  disabled?: boolean\n  disabledDates: {startDate: Date, endDate: Date}[]\n  maxDate?: String\n  minDate?: String\n}\n\nconst DATE_FORMAT = {\n  parse: {\n    dateInput: 'LL',\n  },\n  display: {\n    dateInput: 'DD-MM-YYYY',\n    monthYearLabel: 'MMMM YYYY',\n    dateA11yLabel: 'LL',\n    monthYearA11yLabel: 'MMMM YYYY',\n  },\n};\n\n@Component({\n  selector: 'ui-date-range-picker',\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-range-picker.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: DateRangePickerComponent\n    },\n    {\n      provide: DateAdapter,\n      useClass: MomentDateAdapter,\n      deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]\n    },\n    { provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT },\n    { provide: MAT_DATE_LOCALE, useValue: 'pt-PT' },\n    { provide: LOCALE_ID, useValue: 'pt-PT' }\n  ]\n})\nexport class DateRangePickerComponent implements OnInit, ControlValueAccessor {\n  @Input() config: DateRangePickerComponentConfig;\n\n  @Output() onDateChange = new EventEmitter();\n\n  onChange = (value) => { };\n  onTouched = () => { };\n  touched = false;\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.onChange(this.config.values);\n  }\n\n  rangeFilter = (d: Date | null): boolean => {\n    const date = moment(d);\n\n    const invalidDate = this.config.disabledDates?.find(({startDate, endDate}) => date.isBetween(moment(startDate), moment(endDate), 'D', '[]'));\n\n    return invalidDate ? false : true;\n  }\n\n  updateDates() {\n    if(moment.isMoment(this.config.values.startDate) && moment.isMoment(this.config.values.endDate)) {\n      this.onDateChange.emit({dates: this.config.values});\n    }\n    this.onChange(this.config.values);\n  }\n\n  writeValue(values: any) {\n    this.config.values = values;\n  }\n\n  registerOnChange(onChange: any) {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean) {\n    this.config.disabled = disabled;\n  }\n}\n","<mat-form-field class=\"date-picker\" appearance=\"fill\">\n    <mat-label>{{ config.label | translate }}</mat-label>\n    <mat-date-range-input [rangePicker]=\"picker\" [disabled]=\"config.disabled\" [dateFilter]=\"rangeFilter\" [max]=\"config.maxDate\" [min]=\"config.minDate\">\n        <input matStartDate [(ngModel)]=\"config.values.startDate\" (ngModelChange)=\"updateDates()\">\n        <input matEndDate [(ngModel)]=\"config.values.endDate\" (ngModelChange)=\"updateDates()\">\n    </mat-date-range-input>\n    <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n    <mat-date-range-picker #picker></mat-date-range-picker>\n</mat-form-field>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\n\nexport class TimePickerComponentConfig {\n  id?: string\n  key: string\n  value: string;\n  disabled?: boolean\n  required?: boolean\n  label: LabelConfig\n  formControl?: AbstractControl\n}\n\n@Component({\n  selector: 'ui-time-picker',\n  templateUrl: './time-picker.component.html',\n  styleUrls: ['./time-picker.component.scss']\n})\nexport class TimePickerComponent implements OnInit {\n  @Input() config: TimePickerComponentConfig;\n  @Output() onTimeUpdate = new EventEmitter();\n\n  hours;\n  constructor() { }\n\n  ngOnInit(): void {\n    this.hours = this.config.value;\n  }\n\n  updateTime() {\n    this.config.value = this.hours;\n    this.onTimeUpdate.emit(this.config.value);\n  }\n}\n","<mat-form-field appearance=\"fill\" class=\"form-field\">\n    <mat-label [ngStyle]=\"{'color': !config.formControl || config.formControl.valid ? '' : 'red'}\">{{ config.label |\n        translate }}</mat-label>\n\n    <div class=\"time-picker\">\n        <input [id]=\"config.id\" matInput [(ngModel)]=\"hours\" (ngModelChange)=\"updateTime()\" [type]=\"'time'\" min=\"0\" max=\"24\">\n    </div>\n</mat-form-field>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { TimePickerComponentConfig } from '../time-picker/time-picker.component';\nimport { SelectComponentConfig } from '../select/select.component';\n\nexport class ScheduleLineComponentConfig {\n  startHour: string\n  endHour: string\n  store?: {\n    id: string\n    name: string\n  }\n  storeId: string\n  timesheetType: string\n}\n\nexport class ScheduleComponentConfig {\n  key: string\n  stores?: { id: string, name: string }[]\n  timesheetTypes?: { id: string, name: string }[]\n  schedule: {\n    monday: ScheduleLineComponentConfig[],\n    tuesday: ScheduleLineComponentConfig[],\n    wednesday: ScheduleLineComponentConfig[],\n    thursday: ScheduleLineComponentConfig[],\n    friday: ScheduleLineComponentConfig[],\n    saturday: ScheduleLineComponentConfig[],\n    sunday: ScheduleLineComponentConfig[]\n  }\n  labels: {\n    startHour: LabelConfig\n    endHour: LabelConfig\n    noPeriods: LabelConfig\n    store: LabelConfig\n    type: LabelConfig\n    days: LabelConfig\n    monday: LabelConfig,\n    tuesday: LabelConfig,\n    wednesday: LabelConfig,\n    thursday: LabelConfig,\n    friday: LabelConfig,\n    saturday: LabelConfig,\n    sunday: LabelConfig\n  }\n  required: boolean\n  disabled: boolean\n  formControl?: AbstractControl\n}\n\n@Component({\n  selector: 'ui-schedule',\n  templateUrl: './schedule.component.html',\n  styleUrls: ['./schedule.component.scss']\n})\nexport class ScheduleComponent implements OnInit {\n  @Input() config: ScheduleComponentConfig;\n\n  @Output() onUpdate = new EventEmitter();\n\n  days: {\n    key: string\n    day: SelectComponentConfig,\n    periods: {\n      start: TimePickerComponentConfig\n      end: TimePickerComponentConfig\n      store: SelectComponentConfig\n      timesheetType: SelectComponentConfig\n    }[]\n  }[];\n\n  addButton: ButtonComponentConfig = {\n    id: \"schedule-add-period\",\n    type: \"icon\",\n    key: \"button\",\n    color: undefined,\n    icon: \"add\"\n  };\n\n  removeButton: ButtonComponentConfig = {\n    id: \"schedule-remove-period\",\n    type: \"icon\",\n    key: \"button\",\n    color: undefined,\n    icon: \"delete\"\n  };\n\n  addDayButton: ButtonComponentConfig = {\n    id: \"schedule-add-day\",\n    type: \"icon\",\n    key: \"button\",\n    color: undefined,\n    icon: \"add\"\n  };\n\n  removeDayButton: ButtonComponentConfig = {\n    id: \"schedule-remove-day\",\n    type: \"icon\",\n    key: \"button\",\n    color: undefined,\n    icon: \"delete\"\n  };\n\n  daysKeys = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.days = this.daysKeys.reduce((acc, dayKey) => {\n      const sameSchedule = acc.find(existsSchedule => this.samePeriods(existsSchedule.periods, this.config.schedule[dayKey]));\n\n      if (!sameSchedule) {\n        acc.push(this.getDayGroup(dayKey));\n      } else {\n        sameSchedule.day.value.push(dayKey)\n      }\n      return acc;\n    }, []);\n  }\n\n  getDayGroup(dayKey?: string) {\n    if (!dayKey) {\n      return {\n        key: \"days-group-\" + (this.days?.length || 0),\n        day: {\n          key: \"days\",\n          value: [dayKey],\n          label: this.config.labels.days,\n          options: [\n            { id: \"monday\", label: this.config.labels.monday },\n            { id: \"tuesday\", label: this.config.labels.tuesday },\n            { id: \"wednesday\", label: this.config.labels.wednesday },\n            { id: \"thursday\", label: this.config.labels.thursday },\n            { id: \"friday\", label: this.config.labels.friday },\n            { id: \"saturday\", label: this.config.labels.saturday },\n            { id: \"sunday\", label: this.config.labels.sunday }\n          ],\n          disabled: false,\n          multiple: true,\n          required: true\n        },\n        periods: []\n      }\n    }\n    return {\n      key: \"days-group-\" + (this.days?.length || 0),\n      day: {\n        key: \"days\",\n        value: [dayKey],\n        label: this.config.labels.days,\n        options: [\n          { id: \"monday\", label: this.config.labels.monday },\n          { id: \"tuesday\", label: this.config.labels.tuesday },\n          { id: \"wednesday\", label: this.config.labels.wednesday },\n          { id: \"thursday\", label: this.config.labels.thursday },\n          { id: \"friday\", label: this.config.labels.friday },\n          { id: \"saturday\", label: this.config.labels.saturday },\n          { id: \"sunday\", label: this.config.labels.sunday }\n        ],\n        disabled: false,\n        multiple: true,\n        required: true\n      },\n      periods: this.config.schedule[dayKey].map(period => ({\n        start: {\n          id: \"schedule-period-start\",\n          key: 'start',\n          value: period.startHour,\n          label: this.config.labels.startHour\n        },\n        end: {\n          id: \"schedule-period-end\",\n          key: 'end',\n          value: period.endHour,\n          label: this.config.labels.endHour\n        },\n        ...(this.config.stores ? {\n          store: {\n            id: \"schedule-period-store\",\n            key: 'storeId',\n            options: this.config.stores.map(s => ({ id: s.id, label: { text: s.name } })),\n            value: period.store?.id,\n            label: this.config.labels.store\n          }\n        } : {}),\n        ...(this.config.timesheetTypes ? {\n          timesheetType: {\n            id: \"schedule-period-timesheet-type\",\n            key: 'timesheetType',\n            options: this.config.timesheetTypes.map(s => ({ id: s.id, label: { text: s.name } })),\n            value: period.timesheetType,\n            label: this.config.labels.type\n          }\n        } : {}),\n      }))\n    }\n  }\n\n  samePeriods(periodsA: {\n    start: TimePickerComponentConfig\n    end: TimePickerComponentConfig\n    store: SelectComponentConfig\n    timesheetType: SelectComponentConfig\n  }[], periodsB: ScheduleLineComponentConfig[]) {\n    if (!periodsA || !periodsB) {\n      return false;\n    }\n\n    const matchingPeriods = periodsA.filter(a => {\n      const match = periodsB.find(b =>\n        b.startHour === a.start.value\n        && b.endHour === a.end.value\n        && (!this.config.stores || !this.config.stores.length || b.store?.id === a.store?.value)\n        && (!this.config.timesheetTypes || !this.config.timesheetTypes.length || b.timesheetType === a.timesheetType?.value)\n      );\n      return match ? true : false\n    })\n    return matchingPeriods.length === periodsA.length && matchingPeriods.length === periodsB.length;\n  }\n\n  addPeriod(day) {\n    day.periods.push({\n      start: {\n        id: \"schedule-period-start-hour\",\n        key: \"start-hour\",\n        value: \"00:00\",\n        label: this.config.labels.startHour\n      },\n      end: {\n        id: \"schedule-period-end-hour\",\n        key: \"end-hour\",\n        value: \"01:00\",\n        label: this.config.labels.endHour\n      },\n      ...(this.config.stores.length ? {\n        store: {\n          id: \"schedule-period-store\",\n          key: \"storeId\",\n          value: this.config.stores[0].id,\n          options: this.config.stores.map(s => ({ id: s.id, label: { text: s.name } })),\n          label: this.config.labels.store\n        },\n      } : {}),\n      ...(this.config.timesheetTypes ? {\n        timesheetType: {\n          id: \"schedule-period-timesheet-type\",\n          key: 'timesheetType',\n          options: this.config.timesheetTypes.map(s => ({ id: s.id, label: { text: s.name } })),\n          value: this.config.timesheetTypes[0].id,\n          label: this.config.labels.type\n        }\n      } : {}),\n    });\n    const value = this.getValue();\n    this.onUpdate.emit(value);\n  }\n\n  addDaysGroup() {\n    this.days.push(this.getDayGroup());\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  removePeriod(day, index) {\n    day.periods.splice(index, 1);\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  updateStore(dayIndex, periodIndex, newStore) {\n    this.days[dayIndex].periods[periodIndex].store.value = newStore;\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  updateType(dayIndex, periodIndex, newType) {\n    this.days[dayIndex].periods[periodIndex].timesheetType.value = newType;\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  updateStartPeriod(dayIndex, periodIndex, newTime) {\n    this.days[dayIndex].periods[periodIndex].start.value = newTime;\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  updateEndPeriod(dayIndex, periodIndex, newTime) {\n    this.days[dayIndex].periods[periodIndex].end.value = newTime;\n    const value = this.getValue();\n    this.onUpdate.emit(value);\n  }\n\n  getValue() {\n    return this.daysKeys.map(dayKey => {\n      const dayGroup = this.days.find(group => group.day.value.includes(dayKey));\n\n      if (!dayGroup) {\n        return {\n          key: dayKey,\n          periods: []\n        }\n      }\n\n      return {\n        key: dayKey,\n        periods: dayGroup.periods.map(period => ({\n          startHour: period.start.value,\n          endHour: period.end.value,\n          ...(this.config.stores ? { storeId: period.store.value } : {}),\n          ...(this.config.timesheetTypes ? { timesheetType: period.timesheetType.value } : {}),\n        }))\n      }\n    }).reduce((acc, day) => {\n      acc[day.key] = day.periods;\n      return acc;\n    }, {});\n  }\n\n  removeDaysGroup(index) {\n    this.days.splice(index, 1);\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n\n  updateSelectedDays(day, selectedDays) {\n    day.day.value = selectedDays;\n    const value = this.getValue();\n    this.onUpdate.emit(value)\n  }\n}\n","<div class=\"schedule\">\n    <div class=\"day\" *ngFor=\"let day of days; let d=index\">\n        <div class=\"header\">\n            <ui-select class=\"day\" [config]=\"day.day\" (changeValue)=\"updateSelectedDays(day, $event);\"></ui-select>\n            <ui-button [config]=\"removeDayButton\" (onClick)=\"removeDaysGroup(d)\"></ui-button>\n            <ui-button [config]=\"addButton\" (onClick)=\"addPeriod(day)\"></ui-button>\n        </div>\n\n        <span *ngIf=\"day.periods.length === 0\">{{ config.labels.noPeriods | translate }}</span>\n        <div *ngFor=\"let period of day.periods; let i=index\" class=\"period\">\n            <div class=\"period-table\">\n                <div class=\"period-line-1\" *ngIf=\"config.stores && config.timesheetTypes\">\n                    <div class=\"perid-row\">\n                        <div class=\"store\">\n                            <ui-select [config]=\"period.store\" (changeValue)=\"updateStore(d, i, $event)\"></ui-select>\n                        </div>\n                        <div class=\"type\">\n                            <ui-select [config]=\"period.timesheetType\" (changeValue)=\"updateType(d, i, $event)\"></ui-select>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"period-line-2\">\n                    <div class=\"perid-row\">\n                        <div class=\"picker-start\">\n                            <ui-time-picker [config]=\"period.start\" (onTimeUpdate)=\"updateStartPeriod(d, i, $event)\">\n                            </ui-time-picker>\n                        </div>\n                        <div class=\"picker-end\">\n                            <ui-time-picker [config]=\"period.end\" (onTimeUpdate)=\"updateEndPeriod(d, i, $event)\">\n                            </ui-time-picker>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"period-action\">\n                <ui-button class=\"button\" [config]=\"removeButton\" (onClick)=\"removePeriod(day, i)\"></ui-button>\n            </div>\n        </div>\n    </div>\n    <ui-button [config]=\"addDayButton\" (onClick)=\"addDaysGroup()\"></ui-button>\n</div>","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { TreeSelectorComponentConfig, TreeSelectorItem } from './tree-selector.model';\n\n@Component({\n  selector: 'ui-tree-selector',\n  templateUrl: './tree-selector.component.html',\n  styleUrls: ['./tree-selector.component.scss']\n})\nexport class TreeSelectorComponent implements OnInit {\n  @Input() config: TreeSelectorComponentConfig;\n\n  @Output() onChanges = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit(): void {\n    const itemsWithIds = this.addDataIds(this.config.items)\n\n    this.config.items = [...this.checkNodeStatus(itemsWithIds)];\n  }\n\n  checkNodeStatus(data: TreeSelectorItem[]) {\n    return data.map(item => {\n      if (item.selected) {\n        item.selected = !item.selected;\n        this.selectNode(item, false);\n        return item;\n      }\n\n      if (item.children?.length) {\n        item.children = this.checkNodeStatus(item.children);\n      }\n\n      return item;\n    })\n  }\n\n  addDataIds(data: TreeSelectorItem[]): TreeSelectorItem[] {\n    return this.config.items.map((node, index) => this.addNodeId(node, index))\n  }\n\n  addNodeId(node: TreeSelectorItem, index: number, prefix?: string) {\n    if (prefix) {\n      node.id = `${prefix}.${index}`;\n    } else {\n      node.id = index.toString();\n    }\n\n    if (node.children?.length) {\n      node.children = node.children.map((child, i) => this.addNodeId(child, i, node.id))\n    }\n\n    return node;\n  }\n\n  selectNode(node, emit: boolean = true) {\n    const selectedItems = this.selectNextNodes(this.config.items, node.id, !node.selected);\n    this.config.items = [...this.selectPreviousNodes(selectedItems, node.id, 1, node.selected)];\n\n    if (emit) {\n      this.onChanges.emit(this.config.items)\n    }\n  }\n\n  selectPreviousNodes(nodes: TreeSelectorItem[], id: string, level: number, value: boolean) {\n    const idNumbers = id.split(\".\");\n\n    const masterId = idNumbers.slice(0, level).join(\".\");\n\n    return nodes.map(node => {\n      if (node.id === id) {\n        return node;\n      }\n\n      if (node.id === masterId) {\n        this.selectPreviousNodes(node.children, id, level + 1, value);\n        delete node.selected;\n        delete node.partialSelected;\n\n        const allNodesSelected = node.children.every(child => child.selected);\n        if (allNodesSelected) {\n          node.selected = true;\n          return node;\n        }\n\n        node.partialSelected = node.children.some(child => child.selected || child.partialSelected);\n      }\n\n      return node;\n    })\n  }\n\n  selectNextNodes(node: TreeSelectorItem[], id: string, value: boolean) {\n    return node.map(node => {\n      if (node.id === id) {\n        return this.updateNextNode(node, !node.selected)\n      }\n\n      if (node.children?.length) {\n        this.selectNextNodes(node.children, id, value);\n      }\n      return node;\n    })\n  }\n\n  updateNextNode(node: TreeSelectorItem, value: boolean): TreeSelectorItem {\n    delete node.selected;\n    delete node.partialSelected;\n    node.selected = value;\n    (node.children || []).forEach(child => this.updateNextNode(child, value));\n    return node;\n  }\n}","<h3 class=\"title\">{{config.title | translate}}</h3>\n<h5>{{config.description | translate}}</h5>\n\n<ng-container *ngTemplateOutlet=\"Recursion; context:{ items: config.items}\"></ng-container>\n\n<ng-template #Recursion let-items=\"items\">\n  <div *ngFor=\"let item of items\">\n\n    <mat-checkbox [checked]=\"item.selected\" [indeterminate]=\"item.partialSelected\" (change)=\"selectNode(item)\">{{item.title}}</mat-checkbox>\n    \n    <ul *ngIf=\"item.children?.length\">\n      <ng-container *ngTemplateOutlet=\"Recursion; context:{ items: item.children }\"></ng-container>\n    </ul>\n  </div>\n</ng-template>","import { Component, Input, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { TimePickerComponentConfig } from '../time-picker/time-picker.component';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { ScheduleComponentConfig } from '../schedule/schedule.component';\nimport { FormComponentCode, FormComponentConfig, FormComponentServices } from './form.model';\nimport { FormService } from '../../services/form.service';\n\n@Component({\n  selector: 'ui-form',\n  templateUrl: './form.component.html',\n  styleUrls: ['./form.component.scss']\n})\nexport class FormComponent implements OnInit {\n  @Input() config: FormComponentConfig = {\n    items: []\n\t};\n\t@Input() services: FormComponentServices;\n\t@Input() linear: boolean;\n\n  @Output() onAction = new EventEmitter();\n  @Output() onDeeplink = new EventEmitter();\n\t@Output() onRefresh = new EventEmitter();\n\t@Output() onFormCreation = new EventEmitter();\n\n  reactiveForm = new FormGroup({});\n\n  constructor(\n    private formService: FormService\n  ) { }\n\n  ngOnInit(): void {\n    this.reactiveForm = this.formService.build(this.config);\n\n    this.onFormCreation.emit(this.reactiveForm);\n  }\n\n  handleAction(item: ButtonComponentConfig, values: any) {\n    this.onAction.emit({ component: item, values });\n  }\n\n  updateSchedule(scheduleItem, schedule) {\n    const scheduleComponent = this.config.items.find(item =>\n      item.code === FormComponentCode.Schedule\n      && item.data.key === scheduleItem.data.key\n    );\n\n    (scheduleComponent.data as ScheduleComponentConfig).formControl.setValue(schedule)\n  }\n\n  updateTimePicker(timePickerItem, period) {\n    const timePickerComponent = this.config.items.find(item =>\n      item.code === FormComponentCode.TimePicker\n      && item.data.key === timePickerItem.data.key\n    );\n\n    (timePickerComponent.data as TimePickerComponentConfig).formControl.setValue(period)\n  }\n\n  updateTreeSelector(treeSelectorItem, values) {\n    const treeSelectorComponent = this.config.items.find(item =>\n      item.code === FormComponentCode.TreeSelector\n      && item.data.key === treeSelectorItem.data.key\n    );\n\n    (treeSelectorComponent.data as TimePickerComponentConfig).formControl.setValue(values)\n  }\n}\n","<form [formGroup]=\"reactiveForm\">\n    <div [ngClass]=\"{'row': linear}\">\n        <div class=\"component\" *ngFor=\"let item of config.items\" [ngClass]=\"{'col': linear, 'hide': item?.code === 'EXTRA_DATA'}\">\n            <ui-input *ngIf=\"item.code === 'INPUT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\"></ui-input>\n\n            <ui-checkbox *ngIf=\"item.code === 'CHECKBOX'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\"></ui-checkbox>\n\n            <ui-button *ngIf=\"item.code === 'BUTTON'\" [config]=\"item.data\" (onClick)=\"handleAction(item, reactiveForm.value)\"></ui-button>\n\n            <ui-date-range-picker *ngIf=\"item.code === 'DATE_RANGE_PICKER'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\"></ui-date-range-picker>\n\n            <ui-select *ngIf=\"item.code === 'SELECT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\"></ui-select>\n\n            <ui-label *ngIf=\"item.code === 'LABEL'\" [config]=\"item.data\"></ui-label>\n\n            <ui-schedule *ngIf=\"item.code === 'SCHEDULE'\" [config]=\"item.data\" (onUpdate)=\"updateSchedule(item, $event)\"></ui-schedule>\n\n            <ui-time-picker *ngIf=\"item.code === 'TIME_PICKER'\" [config]=\"item.data\" (onTimeUpdate)=\"updateTimePicker(item, $event)\"></ui-time-picker>\n\n            <ui-tree-selector *ngIf=\"item.code === 'TREE_SELECTOR'\" [config]=\"item.data\" (onTimeUpdate)=\"updateTreeSelector(item, $event)\"></ui-tree-selector>\n        </div>\n    </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'ui-loading',\n  templateUrl: './loading.component.html',\n  styleUrls: ['./loading.component.scss']\n})\nexport class LoadingComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div class=\"loading\">\n    <mat-progress-spinner class=\"spinner\" [color]=\"'primary'\" [mode]=\"'indeterminate'\"></mat-progress-spinner>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { LabelConfig } from '../label/label.model';\n\nexport class TitleComponentConfig {\n  title: LabelConfig\n  align?: 'center' | 'left' | 'right'\n}\n\n@Component({\n  selector: 'ui-title',\n  templateUrl: './title.component.html',\n  styleUrls: ['./title.component.scss']\n})\nexport class TitleComponent implements OnInit {\n  @Input() config: TitleComponentConfig;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<section>\n    <h2 [ngStyle]=\"{'text-align': config.align || 'center'}\">{{config.title | translate}}</h2>\n</section>","import { Component, Input, OnInit } from '@angular/core';\nimport { LabelConfig } from '../label/label.model';\n\nexport class HistoricHolidaysCardComponentConfig {\n  user: {\n    name: string\n  }\n  date: Date\n  old?: {\n    startDate: string;\n    endDate: string;\n    info: string;\n    reason?: string;\n    statusLabel: LabelConfig\n  }\n  new: {\n    startDate: string;\n    endDate: string;\n    info: string;\n    reason?: string;\n    statusLabel: LabelConfig\n  }\n  oldLabel: LabelConfig\n  newLabel: LabelConfig\n}\n\n@Component({\n  selector: 'ui-historic-holidays-card',\n  templateUrl: './historic-holidays-card.component.html',\n  styleUrls: ['./historic-holidays-card.component.scss']\n})\nexport class HistoricHolidaysCardComponent implements OnInit {\n  @Input() config: HistoricHolidaysCardComponentConfig;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n}\n","<ui-info-card [body]=\"body\" [config]=\"{color: '#000', data: config}\">\n    <ng-template #body let-data=\"data\">\n        <div class=\"historic-holidays-card\">\n            <div class=\"body\">\n                <div class=\"dates\">{{data.date | date:'YYYY-MM-dd hh:mm'}}</div>\n                <div class=\"days\">{{data.user.name}}</div>\n            </div>\n            <div class=\"difference\">\n                <div class=\"old\" *ngIf=\"data.old\">\n                    <h4>{{data.oldLabel | translate}}</h4>\n                    <div class=\"dates\">{{data.old.startDate | date:'dd MMMM'}} -> {{data.old.endDate | date:'dd MMMM'}}\n                    </div>\n                    <div class=\"status\">{{data.old.statusLabel | translate}}</div>\n                    <div class=\"status\">{{data.old.info}}</div>\n                    <div class=\"status\">{{data.old.reason}}</div>\n                </div>\n                <div class=\"new\">\n                    <h4>{{data.newLabel | translate}}</h4>\n                    <div class=\"dates\" [ngClass]=\"{'changed': data.old && (data.old.startDate !== data.new.startDate || data.old.endDate !== data.new.endDate)}\">{{data.new.startDate | date:'dd MMMM'}} -> {{data.new.endDate | date:'dd MMMM'}}\n                    </div>\n                    <div class=\"status\" [ngClass]=\"{'changed': data.old && data.old.statusLabel !== data.new.statusLabel}\">{{data.new.statusLabel | translate}}</div>\n                    <div class=\"status\" [ngClass]=\"{'changed': data.old && data.old.info !== data.new.info}\">{{data.new.info}}</div>\n                    <div class=\"status\" [ngClass]=\"{'changed': data.old && data.old.reason !== data.new.reason}\">{{data.new.reason}}</div>\n                </div>\n            </div>\n        </div>\n    </ng-template>\n</ui-info-card>","import { FormComponentConfig } from \"../form/form.model\"\nimport { LabelConfig } from \"../label/label.model\"\n\nexport class DialogComponentConfig {\n  id?: string\n\ttitle: LabelConfig\n\ttext: LabelConfig\n\tclose?: LabelConfig\n\tactions?: {\n    id?: string,\n\t\tlabel: LabelConfig,\n\t\tdata?: any,\n\t\taction?: () => {}\n\t}[]\n\tform: FormComponentConfig\n}\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { DialogComponentConfig } from './dialog.model';\n\n@Component({\n\tselector: 'app-dialog',\n\ttemplateUrl: './dialog.component.html',\n\tstyleUrls: ['./dialog.component.scss']\n})\nexport class DialogComponent implements OnInit {\n\t@Input() config: DialogComponentConfig;\n\n\tconstructor(\n\t\t@Inject(MAT_DIALOG_DATA) public data: DialogComponentConfig,\n\t\tpublic dialog: MatDialog,\n\t\tprivate dialogRef: MatDialogRef<DialogComponent>,\n\t) { }\n\n\tngOnInit(): void {\n\t\tthis.config = this.data.title ? this.data : this.config;\n\t}\n\n\tsaveResult(result) {\n\t\tif(result?.values) {\n\t\t\tthis.dialogRef.close(result.values);\n\t\t}\n\t}\n\n\tactionClick(event) {\n\t\tif(event.action) {\n\t\t\tevent.action(event)\n\t\t}\n\t\tthis.dialogRef.close();\n\t}\n}\n","<div [id]=\"config.id\">\n  <h1 mat-dialog-title>{{ config.title | translate}}</h1>\n  <div mat-dialog-content>\n    <span *ngIf=\"config.text\">{{ config.text | translate}}</span>\n\n    <ui-form *ngIf=\"config.form\" [config]=\"config.form\" (onAction)=\"saveResult($event)\"></ui-form>\n  </div>\n  <div mat-dialog-actions *ngIf=\"config.actions\">\n      <button [id]=\"action.id\" mat-button (click)=\"actionClick(action)\" *ngFor=\"let action of config.actions\">{{ action.label | translate }}</button>\n  </div>\n  <div mat-dialog-actions *ngIf=\"config.close\">\n      <button id=\"dialog-close\" mat-button mat-dialog-close>{{ config.close | translate }}</button>\n  </div>\n</div>\n","export class Product {\n\tcodes: string[]\n\tname: string\n}\n\nexport class SearchProductComponentConfig {\n\tproducts?: Product[]\n\ttext?: string\n}\n\nexport class SearchProductComponentServices {\n\tgetProducts: (description: string) => Promise<Product[]>\n}\n\nexport class SearchProductDialogData {\n\tconfig: SearchProductComponentConfig\n\tservices: SearchProductComponentServices\n};\n","import { Component, Inject, Input, OnInit, EventEmitter, Output } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { FormComponentConfig, FormComponentCode } from '../form/form.model';\nimport { ListMenuComponentConfig } from '../list-menu/list-menu.component';\nimport { SearchProductComponentConfig, SearchProductComponentServices, SearchProductDialogData } from './search-product.model';\n\n@Component({\n\tselector: 'app-search-product',\n\ttemplateUrl: './search-product.component.html',\n\tstyleUrls: ['./search-product.component.scss']\n})\nexport class SearchProductComponent implements OnInit {\n\t@Input() config: SearchProductComponentConfig;\n\t@Input() services: SearchProductComponentServices;\n\n\tloading = false;\n\tform: FormComponentConfig = {\n\t\titems: [\n\t\t\t{\n\t\t\t\tcode: FormComponentCode.Input,\n\t\t\t\tdata: {\n\t\t\t\t\tkey: \"description\",\n\t\t\t\t\tvalue: \"\",\n\t\t\t\t\tlabel: { text: \"search-product.description\" },\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: \"text\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\tdata: {\n\t\t\t\t\tkey: \"button\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tlabel: { text: \"search-product.submit\" },\n\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tsubmit: true\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n\n\tproductSelector: ListMenuComponentConfig = {\n\t\tmenu: {\n\t\t\titems: []\n\t\t}\n\t}\n\n\tconstructor(\n\t\t@Inject(MAT_DIALOG_DATA) public data: SearchProductDialogData,\n\t\tpublic dialog: MatDialog,\n\t\tprivate dialogRef: MatDialogRef<SearchProductComponent>,\n\t) { }\n\n\tngOnInit(): void {\n\t\tif (this.data.config) {\n\t\t\tthis.config = this.data.config;\n\t\t}\n\t\tif (this.data.services) {\n\t\t\tthis.services = this.data.services;\n\t\t}\n\t\tthis.updateComponents();\n\t}\n\n\tasync search(result) {\n\t\tthis.loading = true;\n\t\ttry {\n\t\t\tconst products = await this.services.getProducts(result.values.description);\n\t\t\tthis.config.products = products;\n\t\t\tthis.updateComponents();\n\t\t\tthis.loading = false;\n\t\t} catch (ex) {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\tproductSelect(event: any) {\n\t\tif (event ?.data) {\n\t\t\tthis.dialogRef.close(event.data);\n\t\t}\n\t}\n\n\tupdateComponents() {\n\t\tthis.form.items = this.form.items.map(item => {\n\t\t\tif (item.code === FormComponentCode.Input && item.data.key === 'description' && item.data.value === \"\") {\n\t\t\t\titem.data.value = this.config.text;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\n\t\tthis.productSelector.menu.items = this.config.products ?.map(p => ({\n\t\t\ticon: '',\n\t\t\ttitle: {\n\t\t\t\tlabel: { text: p.name },\n\t\t\t},\n\t\t\tdescription: {\n\t\t\t\tlabel: { text: p.codes[0] }\n\t\t\t},\n\t\t\tdata: p\n\t\t}))\n\t}\n}\n","<h1 mat-dialog-title>{{ 'search-product.title' | translate}}</h1>\n<div mat-dialog-content>\n\t<ui-form [config]=\"form\" (onAction)=\"search($event)\"></ui-form>\n</div>\n\n<div class=\"list\">\n\t<ui-list-menu [config]=\"productSelector\" (onMenuClick)=\"productSelect($event)\"></ui-list-menu>\n</div>\n\n<ui-loading *ngIf=\"loading\"></ui-loading>","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { FormGroup, FormControl, FormArray, Validators } from '@angular/forms';\nimport { MatTable } from '@angular/material/table';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport { FormComponentConfig, FormComponentCode } from '../form/form.model';\nimport { Product } from '../search-product/search-product.model';\nimport { SearchProductComponent } from '../search-product/search-product.component';\nimport { ColumnConfig, LineValue, TableComponentConfig, TableComponentServices } from './table.model';\n\nenum CUSTOM_COLUMN_TYPES {\n\tMULTIPLY = 'table.multiply.title',\n\tDIVIDER = 'table.divider.title',\n\tDISCOUNT = 'table.discount.title',\n\tTAX = 'table.tax.title',\n\tCOMPARE = 'table.compare.title',\n}\n\n@Component({\n\tselector: 'ui-table',\n\ttemplateUrl: './table.component.html',\n\tstyleUrls: ['./table.component.scss']\n})\nexport class TableComponent implements OnInit {\n\t@Input() config: TableComponentConfig;\n\t@Input() services: TableComponentServices;\n\n\t@Output() onUpdate = new EventEmitter();\n\n\tcolumnsNames = [];\n\tcolumnsNamesMapper = [];\n\tcolumnsNamesActions = [];\n\ttableForm: FormGroup;\n\n\tmapperOptions: string[];\n\tcustomMapperOptions: string[];\n\n\t@ViewChild(MatTable) table: MatTable<any>;\n\n\tconstructor(public dialog: MatDialog) { }\n\n\tngOnInit(): void {\n\t\tconst actions = [\n\t\t\t...(this.config.actions?.sortLines ? ['sort'] : []),\n\t\t\t...(this.config.actions?.removeLine ? ['delete'] : [])\n\t\t]\n\t\tthis.columnsNames = [...actions, ...this.config.columns.map(c => c.name)];\n\t\tthis.columnsNamesMapper = [...actions, ...this.config.columns.map(c => c.name + \"_mapper\")];\n\n\t\tif (this.config.lines?.length) {\n\t\t\tthis.mapperOptions = this.config.lines[0].map(l => l.label).sort();\n\t\t\tthis.customMapperOptions = Object.values(CUSTOM_COLUMN_TYPES);\n\t\t}\n\n\t\tif (!this.config.data?.length) {\n\t\t\tthis.config.data = this.config.lines.map(() => ({}));\n\t\t}\n\n\t\tif (!this.config.data.length) {\n\t\t\tthis.config.data = [{}];\n\t\t}\n\n\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t}\n\n\tupdateTimeout;\n\tonInputUpdate(element, column) {\n\t\tif(element.controls[column.name].value === \"\") {\n\t\t\telement.controls[column.name].pristine = true;\n\t\t}\n\n\t\tthis.config.data = this.tableForm.value.lines;\n\t\tthis.onUpdate.emit(this.config);\n\t}\n\n\tmapperChanged(event, column) {\n\t\tswitch (event.value) {\n\t\t\tcase CUSTOM_COLUMN_TYPES.MULTIPLY:\n\t\t\t\treturn this.openMultiplyDialog(event, column);\n\t\t\tcase CUSTOM_COLUMN_TYPES.DIVIDER:\n\t\t\t\treturn this.openDividerDialog(event, column);\n\t\t\tcase CUSTOM_COLUMN_TYPES.DISCOUNT:\n\t\t\t\treturn this.openDiscountDialog(event, column);\n\t\t\tcase CUSTOM_COLUMN_TYPES.TAX:\n\t\t\t\treturn this.openTaxDialog(event, column);\n\t\t\tcase CUSTOM_COLUMN_TYPES.COMPARE:\n\t\t\t\treturn this.openCompareDialog(event, column);\n\t\t\tdefault:\n\t\t\t\tcolumn.multiply = undefined;\n\t\t\t\tcolumn.divider = undefined;\n\t\t\t\tcolumn.discount = undefined;\n\t\t\t\tcolumn.tax = undefined;\n\t\t\t\tcolumn.compare = undefined;\n\t\t}\n\n\t\tthis.config.data = this.config.data.map((d, index) => {\n\t\t\tconst newLineValues = this.config.lines[index].find(l => l.label === event.value);\n\t\t\tif (newLineValues) {\n\t\t\t\td[column.name] = this.formatValue(column, newLineValues.value) \n\t\t\t}\n\t\t\treturn d;\n\t\t});\n\n\t\tthis.createTableForm(this.config.data, this.config.lines)\n\t}\n\n\tcreateTableForm(data: any[], lines: LineValue[][]) {\n\t\tconst tableLines = data.map((dataLine, index) => this.createTableRow(dataLine, lines[index], (this.tableForm?.controls.lines as FormArray)?.controls[index] as FormGroup));\n\t\tthis.tableForm = new FormGroup({\n\t\t\tlines: new FormArray(tableLines)\n\t\t});\n\t\tthis.config.data = this.tableForm.value.lines;\n\n\t\tthis.onUpdate.emit(this.config);\n\t}\n\n\tprivate createTableRow(line: any, values: LineValue[], lineFormGroup?: FormGroup): FormGroup {\n\t\tconst formGroup = new FormGroup({});\n\t\tthis.config.columns.forEach(column => {\n\t\t\tlet value: any = line[column.name];\n\t\t\tif (column.multiply) {\n\t\t\t\tvalue = this.multiply(column, line, values);\n\t\t\t\tline[column.name] = value;\n\t\t\t}\n\t\t\tif (column.divider) {\n\t\t\t\tvalue = this.divider(column, line, values);\n\t\t\t\tline[column.name] = value;\n\t\t\t}\n\t\t\tif (column.tax) {\n\t\t\t\tvalue = this.tax(column, line, values);\n\t\t\t\tline[column.name] = value;\n\t\t\t}\n\t\t\tif (column.discount) {\n\t\t\t\tvalue = this.discount(column, line, values);\n\t\t\t\tline[column.name] = value;\n\t\t\t}\n\t\t\tif (column.compare) {\n\t\t\t\tvalue = this.compare(column, line, values);\n\t\t\t\tline[column.name] = value;\n\t\t\t}\n\n\t\t\tif(lineFormGroup) {\n\t\t\t\tif(lineFormGroup.controls[column.name].pristine) {\n\t\t\t\t\tlineFormGroup.controls[column.name].setValue(this.formatValue(column, value))\n\t\t\t\t}\n\n\t\t\t\tconst [key, compareKey] = column.compare || [];\n\t\t\t\tif(key) {\n\t\t\t\t\tconst compareValue = values.find(v => v.label === compareKey)?.value;\n\t\t\t\t\tlineFormGroup.controls[column.name]['compareResult'] = this.formatValue(column, line[key]) === this.formatValue(column, compareValue);\n\t\t\t\t}else {\n\t\t\t\t\tlineFormGroup.controls[column.name]['compareResult'] = true;\n\t\t\t\t}\n\t\t\t}else {\n\t\t\t\tformGroup.addControl(column.name, new FormControl(this.formatValue(column, value), [\n\t\t\t\t\t...(column.required ? [Validators.required] : [])\n\t\t\t\t]))\n\n\t\t\t\tconst [key, compareKey] = column.compare || [];\n\t\t\t\tif(compareKey) {\n\t\t\t\t\tconst compareValue = values.find(v => v.label === compareKey)?.value;\n\t\t\t\t\tlineFormGroup.controls[column.name]['compareResult'] = this.formatValue(column, line[key]) === this.formatValue(column, compareValue);\n\t\t\t\t}else {\n\t\t\t\t\tformGroup.controls[column.name]['compareResult'] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn lineFormGroup || formGroup;\n\t}\n\n\tmultiply(column: ColumnConfig, line: any, values?: LineValue[]) {\n\t\treturn column.multiply.reduce((acc, columnName) => {\n\t\t\tlet value = this.findValue(columnName, line, values);\n\t\t\tvalue = this.formatValue(column, value);\n\t\t\tacc *= value;\n\t\t\treturn acc;\n\t\t}, 1);\n\t}\n\n\tdivider(column: ColumnConfig, line: any, values?: LineValue[]) {\n\t\tconst [base, ...dividers] = column.divider.map(column => this.findValue(column, line, values));\n\n\t\tconst value = dividers.reduce((acc, divider) => {\n\t\t\tacc /= parseFloat(divider);\n\t\t\treturn acc;\n\t\t}, parseFloat(base));\n\n\t\tif(isNaN(value) || !isFinite(value)) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\ttax(column: ColumnConfig, line: any, values?: LineValue[]) {\n\t\tconst [base, ...taxes] = column.tax.map(column => this.findValue(column, line, values));\n\n\t\treturn taxes.reduce((acc, tax) => {\n\t\t\tacc += acc * (parseFloat(tax) / 100);\n\t\t\treturn acc;\n\t\t}, parseFloat(base));\n\t}\n\n\tdiscount(column: ColumnConfig, line: string, values?: LineValue[]) {\n\t\tconst [base, discounts] = column.discount.map(column => this.findValue(column, line, values));\n\n\t\tconst finalPricePercentage = (discounts?.toString() || \"\").split(\"+\").reduce((acc, discount) => {\n\t\t\treturn acc - (acc * (parseFloat(discount) / 100))\n\t\t}, 1);\n\n\t\tif (isNaN(finalPricePercentage)) {\n\t\t\treturn base;\n\t\t}\n\n\t\treturn base * finalPricePercentage;\n\t}\n\n\tcompare(column: ColumnConfig, line: any, values?: LineValue[]) {\n\t\tconst [key, compareKey] = column.compare;\n\n\t\tlet value1 = this.findValue(compareKey, line, values);\n\n\t\treturn value1;\n\t}\n\n\tfindValue(column: string, line: any, values?: LineValue[]) {\n\t\tlet value = line[column];\n\t\tif (!value) {\n\t\t\tvalue = values?.find(v => v.label === column)?.value;\n\t\t}\n\t\treturn value;\n\t}\n\n\tdrop(event: CdkDragDrop<string[]>) {\n\t\tif (event.item.data === \"vertical\") {\n\t\t\tmoveItemInArray(this.config.data, event.previousIndex, event.currentIndex);\n\t\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t\t} else {\n\t\t\tmoveItemInArray(this.columnsNames, event.previousIndex, event.currentIndex);\n\t\t}\n\t}\n\n\tgetTableWidth() {\n\t\treturn this.config.columns.reduce((acc, column) => {\n\t\t\treturn acc + (column.width || 150)\n\t\t}, 0) + \"px\";\n\t}\n\n\tgetFooter(column: ColumnConfig) {\n\t\tlet value;\n\t\tswitch (column.footer) {\n\t\t\tcase \"sum\":\n\t\t\t\tvalue = this.config.data.reduce((acc, line) => {\n\t\t\t\t\tconst value = parseFloat(line[column.name]);\n\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\treturn acc + value;\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t}, 0);\n\t\t\t\tbreak;\n\t\t\tcase \"count\":\n\t\t\t\tvalue = this.config.data.length;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.formatValue(column, value);\n\t}\n\n\tformatValue(column: ColumnConfig, value: any) {\n\t\tif (column.type === \"string\") {\n\t\t\treturn value || \"\";\n\t\t}\n\n\t\tif (!value) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvalue = typeof value === 'number' ? value : parseFloat(value.replace(\",\", \".\"));\n\n\t\tif (column.type === \"number\") {\n\t\t\tvalue = Math.round(value);\n\t\t}\n\n\t\tif (column.type === \"number_round_1\") {\n\t\t\tvalue = Math.round(value * 10) / 10;\n\t\t}\n\n\t\tif (column.type === \"number_round_2\") {\n\t\t\tvalue = Math.round(value * 100) / 100;\n\t\t}\n\n\t\tif (column.type === \"number_round_3\") {\n\t\t\tvalue = Math.round(value * 1000) / 1000;\n\t\t}\n\n\t\treturn isNaN(value) ? 0 : value;\n\t}\n\n\taddLine() {\n\t\tthis.config.data.push({});\n\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t}\n\n\tdeleteLine(index: number) {\n\t\tthis.config.data.splice(index, 1);\n\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t}\n\n\tprivate openMultiplyDialog(event, column) {\n\t\tconst form: FormComponentConfig = {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field1\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.multiply.field1\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field2\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.multiply.field2\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"button\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tlabel: { text: \"table.multiply.submit\" },\n\t\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tsubmit: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tthis.showDialog(CUSTOM_COLUMN_TYPES.MULTIPLY, form, column, 'multiply');\n\t}\n\n\tprivate openDividerDialog(event, column) {\n\t\tconst form: FormComponentConfig = {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field1\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.divider.field1\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field2\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.divider.field2\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"button\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tlabel: { text: \"table.divider.submit\" },\n\t\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tsubmit: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tthis.showDialog(CUSTOM_COLUMN_TYPES.DIVIDER, form, column, 'divider');\n\t}\n\n\tprivate openDiscountDialog(event, column) {\n\t\tconst form: FormComponentConfig = {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field1\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.field1\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field2\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.field2\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"button\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.submit\" },\n\t\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tsubmit: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tthis.showDialog(CUSTOM_COLUMN_TYPES.DISCOUNT, form, column, 'discount');\n\t}\n\n\tprivate openTaxDialog(event, column) {\n\t\tconst form: FormComponentConfig = {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field1\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.field1\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field2\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.field2\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"button\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tlabel: { text: \"table.discount.submit\" },\n\t\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tsubmit: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tthis.showDialog(CUSTOM_COLUMN_TYPES.TAX, form, column, 'tax');\n\t}\n\n\tprivate openCompareDialog(event, column) {\n\t\tconst form: FormComponentConfig = {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field1\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.compare.field1\" },\n\t\t\t\t\t\toptions: this.config.columns.map(c => c.translationKey || c.name).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Select,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"field2\",\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: { text: \"table.compare.field2\" },\n\t\t\t\t\t\toptions: this.config.lines[0].map(l => l.label).sort().map(option => ({ id: option, label: { text: option } })),\n\t\t\t\t\t\tdefaultOption: undefined,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tkey: \"button\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tlabel: { text: \"table.compare.submit\" },\n\t\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tsubmit: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tthis.showDialog(CUSTOM_COLUMN_TYPES.COMPARE, form, column, 'compare');\n\t}\n\n\tprivate openSearchProductDialog(line: number, column: ColumnConfig) {\n\t\tconst description = this.config.data[line]?.description;\n\t\tconst dialogRef = this.dialog.open(SearchProductComponent, {\n\t\t\tdata: {\n\t\t\t\tconfig: {\n\t\t\t\t\tproducts: [],\n\t\t\t\t\ttext: description\n\t\t\t\t},\n\t\t\t\tservices: {\n\t\t\t\t\tgetProducts: this.services.getProducts\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdialogRef.afterClosed().subscribe((result: Product) => {\n\t\t\tthis.config.data[line].code = result?.codes[0] || this.config.data[line].code;\n\t\t\tthis.config.data[line].description = result?.name || this.config.data[line].description;\n\t\t\t\n\t\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t\t});\n\t}\n\n\tshowDialog(title: string, form: FormComponentConfig, column, field: string) {\n\t\tconst dialogRef = this.dialog.open(DialogComponent, {\n\t\t\tdata: {\n\t\t\t\ttitle: { text: title },\n\t\t\t\toptions: this.mapperOptions,\n\t\t\t\tform\n\t\t\t},\n\t\t});\n\n\t\tdialogRef.afterClosed().subscribe(result => {\n\t\t\tcolumn[field] = [result?.field1, result?.field2];\n\t\t\tthis.createTableForm(this.config.data, this.config.lines);\n\t\t});\n\t}\n}\n","<form [formGroup]=\"tableForm\" autocomplete=\"off\">\n\t<div class=\"table-container\" formArrayName=\"lines\">\n\t\t<table mat-table #table [dataSource]=\"tableForm.get('lines')['controls']\" cdkDropList (cdkDropListDropped)=\"drop($event)\"\n\t\t [ngStyle]=\"{'width': getTableWidth()}\">\n\n\t\t\t<ng-container matColumnDef=\"sort\" sticky *ngIf=\"config.actions?.sortLines\">\n\t\t\t\t<th mat-header-cell *matHeaderCellDef></th>\n\t\t\t\t<td mat-cell class=\"sort\" *matCellDef=\"let element; let i = index\">\n\t\t\t\t\t<button mat-icon-button cdkDrag [cdkDragData]=\"'vertical'\">\n\t\t\t\t\t\t<mat-icon>drag_indicator</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t<td mat-footer-cell *matFooterCellDef></td>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container matColumnDef=\"delete\" sticky *ngIf=\"config.actions?.removeLine\">\n\t\t\t\t<th mat-header-cell *matHeaderCellDef></th>\n\t\t\t\t<td mat-cell class=\"delete\" *matCellDef=\"let element; let i = index\">\n\t\t\t\t\t<button mat-icon-button (click)=\"deleteLine(i)\">\n\t\t\t\t\t\t<mat-icon>delete</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t<td mat-footer-cell *matFooterCellDef>\n\t\t\t\t\t<button mat-icon-button (click)=\"addLine()\" *ngIf=\"config.actions?.addLine\">\n\t\t\t\t\t\t<mat-icon>add</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"mapperOptions\">\n\t\t\t\t<ng-container matColumnDef=\"{{column.name+'_mapper'}}\" [sticky]=\"column.sticky\" *ngFor=\"let column of config.columns\">\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': column.width ? column.width+'px' : '150px'}\">\n\t\t\t\t\t\t<div class=\"th-container\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!column.disabled\">\n\t\t\t\t\t\t\t\t<mat-select [(value)]=\"column.mapper\" (selectionChange)=\"mapperChanged($event, column)\">\n\t\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of mapperOptions\" [value]=\"option\">{{ {text: option} | translate }}</mat-option>\n\n\t\t\t\t\t\t\t\t\t<mat-optgroup label=\"{{{text:'table.header.custom-options'} | translate}}\">\n\t\t\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of customMapperOptions\" [value]=\"option\">\n\t\t\t\t\t\t\t\t\t\t\t{{ {text: option} | translate }}\n\t\t\t\t\t\t\t\t\t\t</mat-option>\n\t\t\t\t\t\t\t\t\t</mat-optgroup>\n\t\t\t\t\t\t\t\t</mat-select>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container matColumnDef=\"{{column.name}}\" [sticky]=\"column.sticky\" *ngFor=\"let column of config.columns\">\n\t\t\t\t<th mat-header-cell *matHeaderCellDef [ngStyle]=\"{'width': column.width ? column.width+'px' : '150px'}\">\n\t\t\t\t\t<div class=\"th-container\">\n\t\t\t\t\t\t{{column.label | translate}}\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t<td mat-cell *matCellDef=\"let element; let i = index\">\n\t\t\t\t\t<div class=\"input-container\" [formGroupName]=\"i\">\n\t\t\t\t\t\t<ng-container *ngIf=\"['string'].includes(column.type)\">\n\t\t\t\t\t\t\t<input class=\"input\" type=\"text\" [formControlName]=\"column.name\" [attr.disabled]=\"column.disabled ? true : null\"\n\t\t\t\t\t\t\t [ngClass]=\"{'edited': !element.controls[column.name].pristine, 'compareFail': !element.controls[column.name].compareResult}\" (ngModelChange)=\"onInputUpdate(element, column)\">\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-container *ngIf=\"['number', 'number_round_1', 'number_round_2', 'number_round_3'].includes(column.type)\">\n\t\t\t\t\t\t\t<input class=\"input\" type=\"number\" [formControlName]=\"column.name\" [attr.disabled]=\"column.disabled ? true : null\"\n\t\t\t\t\t\t\t [ngClass]=\"{'edited': !element.controls[column.name].pristine, 'compareFail': !element.controls[column.name].compareResult}\" (ngModelChange)=\"onInputUpdate(element, column)\">\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t <button mat-icon-button *ngIf=\"column.search\" (click)=\"openSearchProductDialog(i, column)\"><mat-icon>search</mat-icon></button>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td mat-footer-cell *matFooterCellDef>\n\t\t\t\t\t<div class=\"th-container\">\n\t\t\t\t\t\t{{getFooter(column)}}\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"mapperOptions\">\n\t\t\t\t<tr mat-header-row *matHeaderRowDef=\"columnsNamesMapper\"></tr>\n\t\t\t</ng-container>\n\n\t\t\t<tr mat-header-row *matHeaderRowDef=\"columnsNames\"></tr>\n\t\t\t<tr mat-row *matRowDef=\"let row; let i=index; columns: columnsNames;\"></tr>\n\t\t\t<tr mat-footer-row *matFooterRowDef=\"columnsNames\"></tr>\n\t\t</table>\n\t</div>\n</form>","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { LabelConfig } from '../label/label.model';\nimport moment from \"moment\";\n\nexport class TimesheetCardComponentConfig {\n  statusLabel: LabelConfig\n  statusColor: string\n  approveAction: boolean\n  validateAction: boolean\n  rejectAction: boolean\n  pendingaction: boolean\n  editAction: boolean\n  deleteAction: boolean\n  historicAction: boolean\n  timesheetTypeLabel: LabelConfig\n  timesheet: {\n    startDate: Date;\n    endDate: Date;\n    info: string;\n    reason?: string;\n    store?: {\n      id: string\n      name: string\n    }\n  }\n}\n\n@Component({\n  selector: 'ui-timesheet-card',\n  templateUrl: './timesheet-card.component.html',\n  styleUrls: ['./timesheet-card.component.scss']\n})\nexport class TimesheetCardComponent implements OnInit {\n  @Input() config: TimesheetCardComponentConfig;\n\n  @Output() onAction = new EventEmitter();\n\n  actions: {\n    edit: ButtonComponentConfig,\n    approve: ButtonComponentConfig,\n    validate: ButtonComponentConfig,\n    reject: ButtonComponentConfig,\n    delete: ButtonComponentConfig,\n    pending: ButtonComponentConfig,\n    historic: ButtonComponentConfig\n  } = {\n      edit: { type: \"icon\", key: \"edit\", icon: \"edit\", color: undefined },\n      approve: { type: \"icon\", key: \"thumb_up_alt\", icon: \"thumb_up_alt\", color: undefined },\n      validate: { type: \"icon\", key: \"check\", icon: \"check\", color: undefined },\n      reject: { type: \"icon\", key: \"thumb_down_alt\", icon: \"thumb_down_alt\", color: undefined },\n      delete: { type: \"icon\", key: \"delete\", icon: \"delete\", color: undefined },\n      pending: { type: \"icon\", key: \"undo\", icon: \"undo\", color: undefined },\n      historic: { type: \"icon\", key: \"history\", icon: \"history\", color: undefined },\n    }\n\n  diff: number;\n\n  constructor() { }\n\n  ngOnInit(): void {\n    const start = moment(this.config.timesheet.startDate);\n    const end = moment(this.config.timesheet.endDate);\n    this.diff = end.diff(start, \"h\") || 0;\n  }\n\n  action(action) {\n    this.onAction.emit(action)\n  }\n}\n","<ui-info-card [body]=\"body\" [config]=\"{color: config.statusColor, data: config}\">\n    <ng-template #body let-data=\"data\">\n        <div class=\"timesheet-card\">\n            <div class=\"body\">\n                <div class=\"timesheet-type\">{{data.timesheetTypeLabel | translate}}</div>\n                <div class=\"status\">{{data.timesheet.store?.name}}</div>\n                <div class=\"dates\">{{data.timesheet.startDate | date:'HH:mm'}} - {{data.timesheet.endDate | date:'HH:mm'}} ( {{diff}}h )</div>\n                <div class=\"status\" [ngStyle]=\"{'color': data.statusColor}\">{{data.statusLabel | translate}}</div>\n                <div class=\"status\">{{data.timesheet.info}}</div>\n                <div class=\"status\" *ngIf=\"data.timesheet.reason\">> {{data.timesheet.reason}}</div>\n            </div>\n            <div class=\"actions\">\n                <ui-button type=\"icon\" [config]=\"actions.validate\" *ngIf=\"data.validateAction\" (onClick)=\"action(data.validateAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.approve\" *ngIf=\"data.approveAction\" (onClick)=\"action(data.approveAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.reject\" *ngIf=\"data.rejectAction\" (onClick)=\"action(data.rejectAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.pending\" *ngIf=\"data.pendingaction\" (onClick)=\"action(data.pendingaction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.edit\" *ngIf=\"data.editAction\" (onClick)=\"action(data.editAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.delete\" *ngIf=\"data.deleteAction\" (onClick)=\"action(data.deleteAction)\"></ui-button>\n                <ui-button type=\"icon\" [config]=\"actions.historic\" *ngIf=\"data.historicAction\" (onClick)=\"action(data.historicAction)\"></ui-button>\n            </div>\n        </div>\n    </ng-template>\n</ui-info-card>","import { Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ScheduleLineComponentConfig } from '../schedule/schedule.component';\nimport moment from \"moment\";\nimport { DOCUMENT } from '@angular/common';\nimport { LabelConfig } from '../../lib/label/label.model';\n\nexport class StoreScheduleLineComponentConfig {\n    startHour: string\n    endHour: string\n}\n\nexport class ScheduleVizualizerComponentConfig {\n    key: string\n    employees: {\n        id: string\n        name: string\n        schedule: {\n            monday: ScheduleLineComponentConfig[],\n            tuesday: ScheduleLineComponentConfig[],\n            wednesday: ScheduleLineComponentConfig[],\n            thursday: ScheduleLineComponentConfig[],\n            friday: ScheduleLineComponentConfig[],\n            saturday: ScheduleLineComponentConfig[],\n            sunday: ScheduleLineComponentConfig[]\n        }\n    }[]\n    store: {\n        id: string,\n        name: string,\n        storeSchedule: {\n            monday: StoreScheduleLineComponentConfig[],\n            tuesday: StoreScheduleLineComponentConfig[],\n            wednesday: StoreScheduleLineComponentConfig[],\n            thursday: StoreScheduleLineComponentConfig[],\n            friday: StoreScheduleLineComponentConfig[],\n            saturday: StoreScheduleLineComponentConfig[],\n            sunday: StoreScheduleLineComponentConfig[]\n        }\n    }\n    labels: {\n        monday: LabelConfig,\n        tuesday: LabelConfig,\n        wednesday: LabelConfig,\n        thursday: LabelConfig,\n        friday: LabelConfig,\n        saturday: LabelConfig,\n        sunday: LabelConfig,\n        dayOff: LabelConfig,\n    }\n}\n\n@Component({\n    selector: 'ui-schedule-vizualizer',\n    templateUrl: './schedule-vizualizer.component.html',\n    styleUrls: ['./schedule-vizualizer.component.scss']\n})\nexport class ScheduleVizualizerComponent implements OnInit {\n    @Input() config: ScheduleVizualizerComponentConfig;\n\n    @Output() onEmployeeClick = new EventEmitter();\n\n    storeHours = {\n        monday: { hours: [], employees: [] },\n        tuesday: { hours: [], employees: [] },\n        wednesday: { hours: [], employees: [] },\n        thursday: { hours: [], employees: [] },\n        friday: { hours: [], employees: [] },\n        saturday: { hours: [], employees: [] },\n        sunday: { hours: [], employees: [] }\n    }\n\n    days = Object.keys(this.storeHours);\n\n    timesheetTypeColors = {\n        'WORK': '#22AB50',\n        'DAY_OFF': '#D48D00'\n    }\n\n    cellWidth = 51;\n\n    constructor(@Inject(DOCUMENT) document) { }\n\n    ngOnInit(): void {\n        this.setStoreDayHours(this.config.store.storeSchedule.monday, this.storeHours.monday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.tuesday, this.storeHours.tuesday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.wednesday, this.storeHours.wednesday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.thursday, this.storeHours.thursday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.friday, this.storeHours.friday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.saturday, this.storeHours.saturday.hours);\n        this.setStoreDayHours(this.config.store.storeSchedule.sunday, this.storeHours.sunday.hours);\n\n\n        this.setStoreDayEmployees(this.config.employees, \"monday\");\n        this.setStoreDayEmployees(this.config.employees, \"tuesday\");\n        this.setStoreDayEmployees(this.config.employees, \"wednesday\");\n        this.setStoreDayEmployees(this.config.employees, \"thursday\");\n        this.setStoreDayEmployees(this.config.employees, \"friday\");\n        this.setStoreDayEmployees(this.config.employees, \"saturday\");\n        this.setStoreDayEmployees(this.config.employees, \"sunday\");\n    }\n\n    setStoreDayHours(storeSchedule: StoreScheduleLineComponentConfig[], storeDayHours: number[]) {\n        let openHour = storeSchedule.reduce((min, schedule) => {\n            const [start] = schedule.startHour.split(\":\");\n            if (parseInt(start) < min) return parseInt(start);\n            return min;\n        }, 24)-1;\n        let closeHour = storeSchedule.reduce((max, schedule) => {\n            const [end] = schedule.endHour.split(\":\");\n            if (parseInt(end) > max) return parseInt(end);\n            return max;\n        }, 0)+1;\n\n        if(openHour < 0 || openHour >= 23) {\n            openHour = 0;\n        }\n\n        if(closeHour <= 1 || closeHour >= 24) {\n            closeHour = 23;\n        }\n\n        for (let i = openHour; i <= closeHour; i++) {\n            storeDayHours.push(i);\n        }\n    }\n\n    setStoreDayEmployees(employees: any[], day: string) {\n        this.storeHours[day].employees = employees.map(e => {\n            const schedules = e.schedule[day]?.filter(s => s.storeId === this.config.store.id);\n            \n            return {\n                diffHours: schedules.map(timesheet => moment(`2021-01-01T${timesheet.endHour}:00.000Z`).clone().diff(moment(`2021-01-01T${timesheet.startHour}:00.000Z`).clone(), \"m\")).reduce((total, diff) => total+diff, 0)/60,\n                schedule: schedules.map(timesheet => this.calculateScheduleWidth(this.storeHours[day], timesheet))\n            };\n        });\n    }\n\n    calculateScheduleWidth(dayConfig, timesheet) {\n        const { hours } = dayConfig;\n        const startDayHour = hours[0];\n        const endDayHour = hours[hours.length - 1];\n\n        if (timesheet.timesheetType.toUpperCase() === \"DAY_OFF\") {\n            const diffHours = endDayHour-startDayHour+1;\n            timesheet.width = (this.cellWidth * diffHours) + \"px\";\n            timesheet.left = \"0px\";\n            return timesheet;\n        }\n\n        let [startHour, startMinutes] = timesheet.startHour.split(\":\");\n        startHour = parseInt(startHour);\n        startMinutes = parseInt(startMinutes);\n\n        const diffHours = moment(`2021-01-01T${timesheet.endHour}:00.000Z`).diff(moment(`2021-01-01T${timesheet.startHour}:00.000Z`), \"m\") / 60;\n        const diffHoursToStoreOpenHour = moment(`2021-01-01T${timesheet.startHour}:00.000Z`).diff(moment(`2021-01-01T${startDayHour < 10 ? `0${startDayHour}` : startDayHour}:00:00.000Z`), \"m\") / 60;\n        timesheet.width = (this.cellWidth * diffHours) + \"px\"\n        timesheet.left = (this.cellWidth * diffHoursToStoreOpenHour) + \"px\"\n        return timesheet;\n    }\n\n    employeeClick(employee) {\n        this.onEmployeeClick.emit(employee)\n    }\n}\n","<div class=\"schedule\">\n    <div class=\"schedule-day\" *ngFor=\"let day of days\">\n        <h4 class=\"day\">{{config.labels[day] | translate}}</h4>\n        <div class=\"schedule-plan\">\n            <div class=\"schedule-employees\">\n                <div class=\"line transparent\">\n                    <span>.</span>\n                </div>\n                <div class=\"line\" *ngFor=\"let employee of config.employees\" (click)=\"employeeClick(employee)\">\n                    <mat-icon>edit</mat-icon>\n                    <span>{{employee.name}}</span>\n                </div>\n            </div>\n            <div class=\"schedule-hours\">\n                <div class=\"line transparent\">\n                    <span>.</span>\n                </div>\n                <div class=\"line\" *ngFor=\"let employee of storeHours[day].employees\">\n                    <span>{{employee.diffHours}}h</span>\n                </div>\n            </div>\n            <div class=\"schedule-timesheet\" id=\"timesheetTable\">\n                <div class=\"header\" [ngStyle]=\"{'min-width': 51*storeHours[day].hours.length+'px'}\">\n                    <div class=\"column\" *ngFor=\"let hour of storeHours[day].hours\"><span>{{hour}}h</span></div>\n                </div>\n                <div class=\"line\" [ngStyle]=\"{'min-width': 51*storeHours[day].hours.length+'px'}\" *ngFor=\"let employee of storeHours[day].employees\">\n                    <ng-container *ngFor=\"let timesheet of employee.schedule\">\n                        <div class=\"schedule\" [ngStyle]=\"{'width': timesheet.width, 'left': timesheet.left, 'background-color': timesheetTypeColors[timesheet.timesheetType]}\">\n                            <span *ngIf=\"timesheet.timesheetType !== 'DAY_OFF'\">{{timesheet.startHour}} - {{timesheet.endHour}}</span>\n                            <span *ngIf=\"timesheet.timesheetType === 'DAY_OFF'\">{{config.labels.dayOff | translate}}</span>\n                        </div>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","export class Supplier {\n\tcode: string\n\tname: string\n\ttaxPayerNumber: string\n}\n\nexport class SearchSupplierComponentConfig {\n\tsuppliers?: Supplier[]\n}\n\nexport class SearchSupplierComponentServices {\n\tgetSuppliers: (description: string) => Promise<Supplier[]>\n}\n\nexport class SearchSupplierDialogData { \n\tconfig: SearchSupplierComponentConfig\n\tservices: SearchSupplierComponentServices \n};","import { Component, Inject, Input, OnInit, EventEmitter, Output } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { FormComponentConfig, FormComponentCode } from '../form/form.model';\nimport { ListMenuComponentConfig } from '../list-menu/list-menu.component';\nimport { SearchSupplierComponentConfig, SearchSupplierComponentServices, SearchSupplierDialogData } from './search-supplier.model';\n\n@Component({\n\tselector: 'app-search-supplier',\n\ttemplateUrl: './search-supplier.component.html',\n\tstyleUrls: ['./search-supplier.component.scss']\n})\nexport class SearchSupplierComponent implements OnInit {\n\t@Input() config: SearchSupplierComponentConfig;\n\t@Input() services: SearchSupplierComponentServices;\n\n\tloading = false;\n\tform: FormComponentConfig = {\n\t\titems: [\n\t\t\t{\n\t\t\t\tcode: FormComponentCode.Input,\n\t\t\t\tdata: {\n\t\t\t\t\tkey: \"description\",\n\t\t\t\t\tvalue: \"\",\n\t\t\t\t\tlabel: { text: \"search-supplier.description\" },\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: \"text\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: FormComponentCode.Button,\n\t\t\t\tdata: {\n\t\t\t\t\tkey: \"button\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tlabel: { text: \"search-supplier.submit\" },\n\t\t\t\t\tcolor: 'primary',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tsubmit: true\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n\n\tsupplierSelector: ListMenuComponentConfig = {\n\t\tmenu: {\n\t\t\titems: []\n\t\t}\n\t}\n\n\tconstructor(\n\t\t@Inject(MAT_DIALOG_DATA) public data: SearchSupplierDialogData,\n\t\tpublic dialog: MatDialog,\n\t\tprivate dialogRef: MatDialogRef<SearchSupplierComponent>,\n\t) { }\n\n\tngOnInit(): void {\n\t\tif(this.data.config) {\n\t\t\tthis.config = this.data.config;\n\t\t}\n\t\tif(this.data.services) {\n\t\t\tthis.services = this.data.services;\n\t\t}\n\t\tthis.updateComponents();\n\t}\n\n\tasync search(result) {\n\t\tthis.loading = true;\n\t\ttry {\n\t\t\tconst suppliers = await this.services.getSuppliers(result.values.description);\n\t\t\tthis.config.suppliers = suppliers;\n\t\t\tthis.updateComponents();\n\t\t\tthis.loading = false;\n\t\t} catch (ex) {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\tsupplierSelect(event: any) {\n\t\tif(event?.data) {\n\t\t\tthis.dialogRef.close(event.data);\n\t\t}\n\t}\n\n\tupdateComponents() {\n\t\tthis.supplierSelector.menu.items = this.config.suppliers?.map(p => ({\n\t\t\ticon: '',\n\t\t\ttitle: {\n\t\t\t\tlabel: { text: p.name },\n\t\t\t},\n\t\t\tdescription: {\n\t\t\t\tlabel: { text: p.taxPayerNumber }\n\t\t\t},\n\t\t\tdata: p\n\t\t}))\n\t}\n}\n","<h1 mat-dialog-title>{{ 'search-supplier.title' | translate}}</h1>\n<div mat-dialog-content>\n\t<ui-form [config]=\"form\" (onAction)=\"search($event)\"></ui-form>\n</div>\n\n<div class=\"list\">\n\t<ui-list-menu [config]=\"supplierSelector\" (onMenuClick)=\"supplierSelect($event)\"></ui-list-menu>\n</div>\n\n<ui-loading *ngIf=\"loading\"></ui-loading>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { InputComponentConfig } from '../input/input.component';\nimport { TableComponentConfig } from '../table/table.model';\nimport { Supplier } from '../search-supplier/search-supplier.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PdtDocumentBuilderComponentConfig, PdtDocumentBuilderComponentServices } from './pdt-document-builder.model';\nimport { SearchSupplierComponent } from '../search-supplier/search-supplier.component';\n\n@Component({\n  selector: 'ui-pdt-document-builder',\n  templateUrl: './pdt-document-builder.component.html',\n  styleUrls: ['./pdt-document-builder.component.scss'],\n})\nexport class PdtDocumentBuilderComponent implements OnInit {\n  @Input() config: PdtDocumentBuilderComponentConfig;\n  @Input() services: PdtDocumentBuilderComponentServices;\n\n  @Output() onUpdate = new EventEmitter();\n  @Output() onLoadProducts = new EventEmitter();\n  @Output() onRefresh = new EventEmitter();\n\n  table: TableComponentConfig;\n\n  documentConfig: {\n    summary: {\n      supplier: InputComponentConfig & {id: string},\n      date: InputComponentConfig\n    },\n  } = {\n      summary: {\n        supplier: {\n          key: \"supplier\",\n          type: \"text\",\n          id: \"\",\n          value: \"\",\n          label: { text: \"Supplier\" },\n          disabled: true,\n          required: true\n        },\n        date: {\n          key: \"date\",\n          type: \"date\",\n          value: \"\",\n          label: { text: \"Date\" },\n          disabled: false,\n          required: true\n        },\n      }\n    };\n\n  constructor(public dialog: MatDialog) { }\n\n  refreshInterval;\n  ngOnInit(): void {\n    if (!this.config) return;\n\n    if (this.config.status === \"READING\") {\n      clearInterval(this.refreshInterval);\n      this.refreshInterval = setInterval(() => this.onRefresh.emit(), 5000);\n    }\n\n    this.table = {\n      columns: [\n        { type: \"string\", footer: \"empty\", name: 'supplierCode', label: this.config.pdtLabels?.supplierCode, mapper: this.config.columns.supplierCode?.mapper, translationKey: this.config.pdtLabels?.supplierCode?.text },\n        { type: \"string\", footer: \"count\", name: 'code', label: this.config.pdtLabels?.code, required: true, search: true, mapper: this.config.columns.code?.mapper, translationKey: this.config.pdtLabels?.code?.text, disabled: true },\n        { type: \"string\", footer: \"empty\", name: 'description', label: this.config.pdtLabels?.description, width: 500, mapper: this.config.columns.description?.mapper, translationKey: this.config.pdtLabels?.description?.text },\n        { type: \"number_round_3\", footer: \"empty\", name: 'quantity', label: this.config.pdtLabels?.quantity, required: true, mapper: this.config.columns.quantity?.mapper, translationKey: this.config.pdtLabels?.quantity?.text },\n        { type: \"number_round_3\", footer: \"empty\", name: 'price', label: this.config.pdtLabels?.price, required: true, mapper: this.config.columns.price?.mapper, translationKey: this.config.pdtLabels?.price?.text },\n        { type: \"number_round_3\", footer: \"empty\", name: 'tax', label: this.config.pdtLabels?.tax, mapper: this.config.columns.tax?.mapper, translationKey: this.config.pdtLabels?.tax?.text },\n        { type: \"number_round_3\", footer: \"empty\", name: 'discount', label: this.config.pdtLabels?.discount, mapper: this.config.columns.discount?.mapper, translationKey: this.config.pdtLabels?.discount?.text },\n        { type: \"string\", footer: \"empty\", name: 'batch', label: this.config.pdtLabels?.batch, mapper: this.config.columns.batch?.mapper, translationKey: this.config.pdtLabels?.batch?.text },\n        { type: \"number_round_3\", footer: \"sum\", name: 'netTotal', label: this.config.pdtLabels?.total, multiply: ['price', 'quantity'], discount: ['netTotal', 'discount'], disabled: true },\n        { type: \"number_round_3\", footer: \"sum\", name: 'grossTotal', label: this.config.pdtLabels?.grossTotal, tax: ['netTotal', 'tax'], disabled: true },\n        { type: \"number_round_3\", footer: \"sum\", name: 'supplierTotal', label: this.config.pdtLabels?.supplierTotal, mapper: this.config.columns.supplierTotal?.mapper, translationKey: this.config.pdtLabels?.supplierTotal?.text },\n      ],\n      data: this.config.lines || [],\n      lines: this.config.result?.lines || [],\n      actions: {\n        addLine: true,\n        removeLine: true,\n        sortLines: true\n      }\n    }\n\n    this.setSummaryFields();\n    this.requestInvalidProducts();\n  }\n\n  setSummaryFields() {\n    if (this.config.pdtLabels?.supplier) this.documentConfig.summary.supplier.label = this.config.pdtLabels.supplier;\n    if (this.config.pdtLabels?.date) this.documentConfig.summary.date.label = this.config.pdtLabels.date;\n\n    if(this.config.summary?.supplier) this.documentConfig.summary.supplier.value = `${this.config.summary.supplier.code} - ${this.config.summary.supplier.name}`;\n    if(this.config.summary?.date) this.documentConfig.summary.date.value = this.config.summary.date;\n  }\n\n  selectSummaryValue(event, field) {\n    this.documentConfig.summary[field].value = event;\n    this.emitValues();\n  }\n\n  updateTable(config) {\n    this.config.lines = config.data;\n\n    this.config.columns = {};\n    [\"supplierCode\", \"code\", \"quantity\", \"description\", \"price\", \"discount\", \"tax\", \"batch\"].forEach(key => {\n      const column = config.columns.find(col => col.name === key);\n      if (column) {\n        this.config.columns[key] = {\n          mapper: column.mapper,\n          translationKey: column.translationKey,\n          multiply: column.multiply,\n          divider: column.divider,\n          tax: column.tax,\n          discount: column.discount\n        };\n      } else {\n        this.config.columns[key] = undefined;\n      }\n    })\n    this.emitValues();\n  }\n\n  emitValuesTimeout;\n  emitValues() {\n    clearTimeout(this.emitValuesTimeout);\n\n    this.emitValuesTimeout = setTimeout(() => {\n\n      const summary = {\n        supplier: this.documentConfig.summary.supplier.id,\n        date: this.documentConfig.summary.date.value,\n      }\n\n      this.onUpdate.emit({\n        columns: this.config.columns,\n        lines: this.config.lines,\n        summary\n      });\n    }, 100);\n  }\n\n  requestInvalidProducts() {\n    const lines = this.config.lines;\n    const invalidLines = lines.filter(l => !this.config.products.find(p => p.codes.includes(l.code)));\n    this.onLoadProducts.emit({ codes: invalidLines.map(l => l.code) });\n  }\n\n  private openSearchSupplierDialog() {\n    const dialogRef = this.dialog.open(SearchSupplierComponent, {\n      data: {\n        config: {\n          products: []\n        },\n        services: {\n          getSuppliers: this.services.getSuppliers\n        }\n      }\n    });\n\n    dialogRef.afterClosed().subscribe((result: Supplier) => {\n      this.documentConfig.summary.supplier.value = `${result.code} - ${result.name}`;\n      this.documentConfig.summary.supplier.id = result.code;\n      this.emitValues();\n    });\n  }\n}\n","<div class=\"builder\" *ngIf=\"config.status === 'NEW' || config.status === 'LOADED'\">\n\t<div class=\"data\">\n\t\t<div>\n\t\t\t<div *ngIf=\"config.result\">\n\t\t\t\t<div class=\"form-line\">\n\t\t\t\t\t<ui-input class=\"select\" [config]=\"documentConfig.summary.supplier\" (changeValue)=\"selectSummaryValue($event, 'supplier')\"></ui-input>\n\t\t\t\t\t<button mat-icon-button (click)=\"openSearchSupplierDialog()\">\n\t\t\t\t\t\t<mat-icon>search</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ui-input [config]=\"documentConfig.summary.date\" (changeValue)=\"selectSummaryValue($event, 'date')\"></ui-input>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"lines\" *ngIf=\"config.result\">\n\t\t\t<ui-table [config]=\"table\" [services]=\"services\" (onUpdate)=\"updateTable($event)\"></ui-table>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"reload\" *ngIf=\"config.status === 'READING'\">\n\t<h3>{{config.pdtLabels.readingData | translate}}</h3>\n\t<div class=\"loading\">\n\t\t<mat-progress-spinner class=\"spinner\" [color]=\"'primary'\" [mode]=\"'indeterminate'\"></mat-progress-spinner>\n\t</div>\n</div>","import { Component, Input, OnInit, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { LabelConfig } from '../label/label.model';\nimport { TitleComponentConfig } from '../title/title.component';\n\nexport class MetricCardComponentConfig {\n  icon: ButtonComponentConfig\n  redirect?: ButtonComponentConfig\n  title: TitleComponentConfig\n  metrics: Metric[]\n}\n\nclass Metric {\n  label: LabelConfig\n  value: number | string\n  formattedValue?: string\n  valueSuffix?: LabelConfig\n  color: string\n  type?: \"euro\"\n  decimalCases?: number\n}\n\n@Component({\n  selector: 'ui-metric-card',\n  templateUrl: './metric-card.component.html',\n  styleUrls: ['./metric-card.component.scss']\n})\nexport class MetricCardComponent implements OnInit, OnChanges {\n  @Input() config: MetricCardComponentConfig;\n\n  @Output() onOpen = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.config.metrics = this.config.metrics.map(metric => ({\n      ...metric,\n      formattedValue: this.getMetricValue(metric)\n    }));\n  }\n\n  ngOnChanges() {\n    this.ngOnInit();\n  }\n\n  getMetricValue(metric: Metric) {\n    const decimalCases = metric.decimalCases ?? 2;\n    switch (metric.type) {\n      case \"euro\":\n        return new Intl.NumberFormat('pt-PT', {\n          style: 'currency',\n          currency: 'EUR',\n          minimumFractionDigits: decimalCases,\n          maximumFractionDigits: decimalCases\n        }).format(metric.value as number);\n      default:\n        if(Number.isFinite(metric.value)) {\n          return new Intl.NumberFormat('pt-PT', {\n            minimumFractionDigits: decimalCases,\n            maximumFractionDigits: decimalCases\n          }).format(metric.value as number);\n        }\n\n        return metric.value.toString();\n    }\n  }\n\n  open() {\n    this.onOpen.emit()\n  }\n}\n","<div class=\"metric-card\">\n    <div class=\"container\">\n        <div class=\"row header\" (click)=\"open()\">\n            <div class=\"col-auto icon\">\n                <ui-button [config]=\"config.icon\"></ui-button>\n            </div>\n            <div class=\"col title\">\n                <ui-title [config]=\"config.title\"></ui-title>\n            </div>\n            <div class=\"col-auto\" *ngIf=\"config.redirect\">\n                <ui-button [config]=\"config.redirect\"></ui-button>\n            </div>\n        </div>\n        <div class=\"row body\">\n            <div class=\"col metric\" [ngStyle]=\"{'color': metric.color}\" *ngFor=\"let metric of config.metrics\">\n                <h4 class=\"description\">{{ metric.label | translate}}</h4>\n                <h1 class=\"number\">{{metric.formattedValue}} <span class=\"sub-text\">{{ metric.valueSuffix | translate}}</span></h1>\n            </div>\n        </div>\n    </div>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\nimport { StepperComponentConfig } from '../../public-api';\n\n@Component({\n  selector: 'ui-stepper',\n  templateUrl: './stepper.component.html',\n  styleUrls: ['./stepper.component.scss'],\n  providers:[]\n})\nexport class StepperComponent implements OnInit, OnChanges {\n  @Input() config: StepperComponentConfig;\n  @Input() body: TemplateRef<any>;\n\n  manualStepper = {\n    next: () => {\n      const currentIndex = this.config.steps.findIndex(s => s.selected);\n\n      this.config.steps[currentIndex].selected = false;\n      if (this.config.steps[currentIndex + 1]) {\n        this.selectItem(this.config.steps[currentIndex + 1], currentIndex + 1);\n      }\n    }\n  }\n  selectedStep;\n  selectedStepIndex;\n\n  constructor() { }\n\n  screenWidth = 0;\n  ngOnInit(): void {\n    this.screenWidth = window.innerWidth;\n    window.onresize = () => this.screenWidth = window.innerWidth;\n\n    const selectedIndex = this.config.steps.findIndex(s => s.selected);\n    if(selectedIndex >= 0) {\n      this.selectItem(this.config.steps[selectedIndex], selectedIndex);\n    }\n\n    if(this.config.steps.length && selectedIndex === -1) {\n      this.selectItem(this.config.steps[0], 0);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.ngOnInit();\n  }\n\n  selectItem(item, index) {\n    this.config.steps = this.config.steps.map((s, index) => {\n      s.selected = false;\n      return s;\n    });\n\n    item.selected = true;\n    this.selectedStep = item;\n    this.selectedStepIndex = index;\n  }\n}\n","<div class=\"d-block d-lg-none\" *ngIf=\"screenWidth < 992\">\n  <mat-stepper #stepper orientation=\"vertical\" [selectedIndex]=\"selectedStepIndex\">\n    <mat-step *ngFor=\"let step of config.steps; let i=index\">\n      <ng-template matStepLabel>\n        <p class=\"line\">{{step.title | translate}}</p>\n        <p class=\"line description\" *ngIf=\"step.description\">{{step.description | translate}}</p>\n      </ng-template>\n      <ng-template matStepContent>\n        <ng-container *ngTemplateOutlet=\"body; context: { data: step, stepper }\"></ng-container>\n  \n        <button mat-button matStepperPrevious *ngIf=\"step.back && i>0\">{{step.back | translate}}</button>\n        <button mat-button matStepperNext *ngIf=\"step.next && i!==config.steps.length-1\">{{step.next | translate}}</button>\n      </ng-template>\n    </mat-step>\n  </mat-stepper>\n</div>\n\n<div class=\"d-none d-lg-block manual-steps-block\" *ngIf=\"screenWidth >= 992\">\n  <div class=\"manual-steps\">\n    <div class=\"items\">\n        <ng-container *ngFor=\"let step of config.steps; let i=index\">\n            <div class=\"item\" [ngClass]=\"{'selected': step.selected}\" (click)=\"selectItem(step, i)\">\n                <div class=\"description-label\">\n                  <p class=\"line\">{{step.title | translate}}</p>\n                </div>\n                <div class=\"value\" *ngIf=\"step.description\">\n                  <p class=\"line description-label\">{{step.description | translate}}</p>\n                </div>\n            </div>\n        </ng-container>\n    </div>\n    <div class=\"inputs\">\n        <div class=\"section\">\n          <ng-container *ngTemplateOutlet=\"body; context: { data: selectedStep, stepper: manualStepper }\"></ng-container>\n        </div>\n    </div>\n  </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LabelConfig } from '../label/label.model';\n\nclass TimelineInterval {\n    startValue: number\n    endValue: number\n    backgroundColor: string\n    text: LabelConfig\n}\n\nexport class TimelineVizualizerComponentConfig {\n    title: LabelConfig\n    headers: {\n        label: LabelConfig,\n        value: number\n    }[]\n    lines: {\n        label: LabelConfig,\n        intervals: TimelineInterval[],\n        resume?: LabelConfig,\n        data?: any\n        backgroundColor?: string\n    }[]\n    key: string\n    cellWidth: number\n}\n\n@Component({\n    selector: 'ui-timeline-vizualizer',\n    templateUrl: './timeline-vizualizer.component.html',\n    styleUrls: ['./timeline-vizualizer.component.scss']\n})\nexport class TimelineVizualizerComponent implements OnInit {\n    @Input() config: TimelineVizualizerComponentConfig;\n\n    @Output() onLineClick = new EventEmitter();\n\n    constructor() { }\n\n    ngOnInit(): void {\n        this.setTableLines();\n    }\n\n    setTableLines() {\n        this.config.lines = this.config.lines.map(line => {\n            return {\n                ...line,\n                intervalsPosition: line.intervals.map(interval => this.calculateIntervalPosition(interval))\n            }\n        })\n    }\n\n    calculateIntervalPosition(interval: TimelineInterval) {\n        if(!this.config.headers.length) {\n            return;\n        }\n\n        const headers = this.config.headers.filter(header => header.value >= interval.startValue && header.value < interval.endValue);\n\n        return {\n            width: (this.config.cellWidth * (headers.length || 1)) + \"px\",\n            left: (this.config.cellWidth * (interval.startValue - this.config.headers[0].value)) + \"px\",\n            backgroundColor: interval.backgroundColor,\n            text: interval.text\n        }\n    }\n\n    lineClick(line) {\n        this.onLineClick.emit(line)\n    }\n}\n","<div class=\"schedule\">\n    <div class=\"schedule-day\">\n        <h4 class=\"day\">{{config.title | translate}}</h4>\n        <div class=\"schedule-plan\" *ngIf=\"config.lines.length\">\n            <div class=\"schedule-employees\">\n                <div class=\"line transparent\" >\n                    <span>.</span>\n                </div>\n                <div class=\"line\" *ngFor=\"let line of config.lines\" (click)=\"lineClick(line)\" [ngStyle]=\"{'background-color': line.backgroundColor}\">\n                    <mat-icon>edit</mat-icon>\n                    <span>{{line.label | translate}}</span>\n                </div>\n            </div>\n            <div class=\"schedule-hours\">\n                <div class=\"line transparent\">\n                    <span>.</span>\n                </div>\n                <div class=\"line\" *ngFor=\"let line of config.lines\" [ngStyle]=\"{'background-color': line.backgroundColor}\">\n                    <span class=\"resume\">{{line.resume | translate}}</span>\n                </div>\n            </div>\n            <div class=\"schedule-timesheet\" id=\"timesheetTable\">\n                <div class=\"header\" [ngStyle]=\"{'min-width': (config.cellWidth+1)*config.headers.length+'px'}\">\n                    <div class=\"column\" [ngStyle]=\"{'width': config.cellWidth+'px'}\" *ngFor=\"let header of config.headers\"><span>{{header.label | translate}}</span></div>\n                </div>\n                <div class=\"line\" [ngStyle]=\"{'min-width': (config.cellWidth+1)*config.headers.length+'px', 'background-color': line.backgroundColor}\"*ngFor=\"let line of config.lines\">\n                    <ng-container *ngFor=\"let interval of line.intervalsPosition\">\n                        <div class=\"schedule\" [ngStyle]=\"{'width': interval.width, 'left': interval.left, 'background-color': interval.backgroundColor}\">\n                            <span>{{interval.text | translate}}</span>\n                        </div>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { AccordionComponentConfig } from './accordion.model';\n\n@Component({\n  selector: 'ui-accordion',\n  templateUrl: './accordion.component.html',\n  styleUrls: ['./accordion.component.scss']\n})\nexport class AccordionComponent implements OnInit {\n  @Input() config: AccordionComponentConfig;\n  @Input() title: TemplateRef<any>;\n  @Input() body: TemplateRef<any>;\n  @Output() onOpen = new EventEmitter();\n  @Output() onClose = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit() {\n\t}\n\n  open(data) {\n    this.onOpen.emit(data);\n  }\n\n  close(data) {\n    this.onClose.emit(data);\n  }\n}\n","<div *ngIf=\"config.cards?.length\">\n  <mat-accordion class=\"accordion\">\n    <mat-expansion-panel *ngFor=\"let card of config.cards; let i=index\" [expanded]=\"card.open\" (opened)=\"open(card.data)\" (closed)=\"close(card.data)\">\n      <mat-expansion-panel-header class=\"header\">\n        <mat-panel-title>\n          <ng-container *ngTemplateOutlet=\"title; context: { data: card }\"></ng-container>\n        </mat-panel-title>\n      </mat-expansion-panel-header>\n\n      <ng-container>\n        <ng-container *ngTemplateOutlet=\"body; context: { data: card }\"></ng-container>\n      </ng-container>\n    </mat-expansion-panel>\n  </mat-accordion>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AccordionComponentConfig } from '../accordion/accordion.model';\nimport { SelectComponentConfig } from '../select/select.component';\nimport { FormComponentCode, FormComponentConfig } from '../form/form.model';\nimport { DataTableComponentConfig, DataTableComponentConfigHeader, DataTableLine } from './data-table.model';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { FormService } from '../../services/form.service';\n\n@Component({\n  selector: 'ui-data-table',\n  templateUrl: './data-table.component.html',\n  styleUrls: ['./data-table.component.scss']\n})\nexport class DataTableComponent implements OnInit, OnChanges {\n  @Input() config: DataTableComponentConfig;\n  @Input() lineHeaderTemplate: TemplateRef<any>;\n  @Input() lineBodyTemplate: TemplateRef<any>;\n  @Output() onLineFormCreation = new EventEmitter();\n  @Output() onUpdate = new EventEmitter();\n  @Output() onPaginationUpdate = new EventEmitter();\n  @Output() onExport = new EventEmitter();\n  @Output() onAdd = new EventEmitter();\n  @Output() onSortUpdate = new EventEmitter();\n  @Output() onLineSelected = new EventEmitter();\n  @Output() onLineOpen = new EventEmitter();\n  @Output() onLineClose = new EventEmitter();\n  @Output() onAction = new EventEmitter();\n\n  accordionConfig: AccordionComponentConfig;\n  pageSizeSelect: SelectComponentConfig;\n  exportIcon: ButtonComponentConfig;\n  addIcon: ButtonComponentConfig;\n  results: { [key: string]: any };\n  formGroups: { [key: string]: FormGroup };\n  pages: {\n    page: number,\n    lines: DataTableLine[]\n  }[]\n  pageSize = 0;\n  selectLineButton: ButtonComponentConfig;\n  selectLineButtonSmall: ButtonComponentConfig;\n  openDetailsButton: ButtonComponentConfig;\n  closeDetailsButton: ButtonComponentConfig;\n  sortSelect: SelectComponentConfig;\n\n  constructor(\n    public dialog: MatDialog,\n    private formService: FormService\n  ) {\n    this.pages = [];\n    this.results = {};\n    this.formGroups = {};\n    this.pageSizeSelect = {\n      key: '',\n      value: '',\n      label: { text: 'data-table.page-size' },\n      options: [\n        { id: \"10\", label: { text: \"10\" } },\n        { id: \"20\", label: { text: \"20\" } },\n        { id: \"30\", label: { text: \"30\" } },\n        { id: \"40\", label: { text: \"40\" } },\n        { id: \"50\", label: { text: \"50\" } },\n        { id: \"60\", label: { text: \"60\" } },\n        { id: \"70\", label: { text: \"70\" } },\n        { id: \"80\", label: { text: \"80\" } },\n        { id: \"90\", label: { text: \"90\" } },\n        { id: \"100\", label: { text: \"100\" } }\n      ],\n      defaultOption: undefined\n    };\n    this.exportIcon = {\n      key: '',\n      type: 'text-icon',\n      color: undefined,\n      icon: 'file_download',\n      label: { text: 'data-table.export' }\n    }\n    this.addIcon = {\n      key: '',\n      type: 'text-icon',\n      color: undefined,\n      icon: 'add',\n      label: { text: 'data-table.add' }\n    }\n    this.selectLineButton = {\n      icon: \"open_in_new\",\n      key: \"open\",\n      color: undefined,\n      type: \"icon\"\n    };\n    this.selectLineButtonSmall = {\n      icon: \"open_in_new\",\n      key: \"open\",\n      color: undefined,\n      type: \"text-icon\",\n      label: { text: \"data-table.details\" }\n    };\n    this.openDetailsButton = {\n      icon: \"expand_more\",\n      key: \"open\",\n      color: undefined,\n      type: \"icon\"\n    }\n    this.closeDetailsButton = {\n      icon: \"expand_less\",\n      key: \"open\",\n      color: undefined,\n      type: \"icon\"\n    }\n    this.sortSelect = {\n      key: '',\n      value: '',\n      label: { text: 'data-table.sort' },\n      options: [],\n      defaultOption: undefined\n    };\n  }\n\n  ngOnInit() {\n    this.config.page = this.config.page ?? 0;\n    this.pageSize = this.config.size || this.config.totalCount || this.config.lines.length || 50;\n\n    const sortTypes = this.config.headers?.filter(h => h.sortEnabled)\n      .reduce((acc, header) => {\n        acc.push({\n          id: `${header.code}//ASC`, label: {\n            ...header.label,\n            text: header.label.text + \"-ASC\"\n          }\n        });\n        acc.push({\n          id: `${header.code}//DESC`, label: {\n            ...header.label,\n            text: header.label.text + \"-DESC\"\n          }\n        });\n        return acc;\n      }, []);\n    this.sortSelect = {\n      ...this.sortSelect,\n      options: sortTypes\n    }\n\n    if (this.config.sort) {\n      this.config.headers = this.config.headers.map(h => ({\n        ...h,\n        sortAsc: h.code === this.config.sort.code && this.config.sort.type === \"ASC\",\n        sortDesc: h.code === this.config.sort.code && this.config.sort.type === \"DESC\"\n      }));\n\n      this.updateSortSelect();\n    }\n\n    this.config.lines.map(line => {\n      const lineForm = this.formService.build(line.form);\n      this.lineFormCreation(lineForm, line);\n      line.reactiveForm = lineForm;\n      return line;\n    });\n\n\n    this.setupPages();\n\n    this.accordionConfig = {\n      cards: this.config.lines.map(line => ({\n        open: line.open,\n        data: {\n          ...line,\n          form: {\n            items: line.form?.items.map((item, index) => {\n              if (item.code === FormComponentCode.Label) {\n                return {\n                  ...item,\n                  data: {\n                    ...item.data,\n                    align: 'left',\n                  }\n                };\n              }\n              return item;\n            })\n          }\n        }\n      }))\n    }\n  }\n\n  setupPages() {\n    let defaultOption = this.pageSizeSelect.options.find(opt => opt.id.toString() === this.pageSizeSelect.value.toString());\n    let options = [...this.pageSizeSelect.options];\n    if (!defaultOption) {\n      defaultOption = { id: this.pageSize.toString(), label: { text: this.pageSize.toString() } };\n      options.push(defaultOption);\n    }\n    this.pageSizeSelect = {\n      ...this.pageSizeSelect,\n      value: this.pageSize.toString(),\n      defaultOption,\n      options\n    }\n\n    const lines = [...this.config?.lines];\n\n    this.pages = [];\n    if (this.config.totalCount) {\n      let count = 0;\n\n      while (count < (this.config.totalCount / this.pageSize)) {\n        this.pages.push({\n          page: count,\n          lines: lines.length > this.pageSize ? lines.slice(this.config.page * this.pageSize, this.config.page * this.pageSize + this.pageSize) : lines\n        });\n        count++;\n      }\n    } else {\n      while (lines.length > 0) {\n        this.pages.push({\n          page: this.pages.length,\n          lines: lines.splice(0, this.pageSize)\n        })\n      }\n    }\n  }\n\n  updatePageSize(size: string) {\n    this.config.size = parseInt(size);\n    this.pageSize = this.config.size;\n    this.config.page = 0;\n    this.setupPages();\n    this.onPaginationUpdate.emit({\n      page: this.config.page,\n      size: this.pageSize\n    });\n  }\n\n  ngOnChanges() {\n    this.ngOnInit();\n  }\n\n  lineFormCreation(event: FormGroup, line: DataTableLine) {\n    this.formGroups[line.id] = event;\n    this.results[line.id] = event.value;\n\n    this.onLineFormCreation.emit({\n      line,\n      reactiveForm: event\n    });\n\n    this.sendUpdates();\n\n    event.valueChanges.subscribe(data => {\n      this.results[line.id] = data;\n      setTimeout(() => this.sendUpdates(), 10);\n    });\n  }\n\n  sendUpdates() {\n    this.onUpdate.emit(Object.values(this.results));\n  }\n\n  previousPage() {\n    if (this.config.page <= 0) {\n      return;\n    }\n\n    this.config.page = this.config.page - 1;\n    this.onPaginationUpdate.emit({\n      page: this.config.page,\n      size: this.pageSize\n    });\n  }\n\n  nextPage() {\n    if (this.config.page >= this.pages.length - 1) {\n      return;\n    }\n\n    this.config.page = this.config.page + 1;\n    this.onPaginationUpdate.emit({\n      page: this.config.page,\n      size: this.pageSize\n    });\n  }\n\n  goToPage(page: number) {\n    if (page === undefined || page === null) {\n      return;\n    }\n\n    this.config.page = page;\n    this.onPaginationUpdate.emit({\n      page: this.config.page,\n      size: this.pageSize\n    });\n  }\n\n  export() {\n    this.onExport.emit();\n  }\n\n  add() {\n    this.onAdd.emit();\n  }\n\n  sort(event) {\n    const [headerCode, sortType] = event.split(\"//\");\n    const header = this.config.headers.find(h => h.code === headerCode);\n\n    if (header && sortType === \"ASC\") {\n      this.sortAsc(header);\n    }\n\n    if (header && sortType === \"DESC\") {\n      this.sortDesc(header);\n    }\n  }\n\n  sortAsc(header: DataTableComponentConfigHeader) {\n    this.config.headers = this.config.headers.map(h => (\n      {\n        ...h,\n        sortAsc: header.code === h.code ? true : false,\n        sortDesc: false\n      })\n    );\n    this.config.sort = { code: header.code, type: \"ASC\" };\n    this.updateSortSelect();\n    this.onSortUpdate.emit(this.config.sort);\n  }\n\n  sortDesc(header: DataTableComponentConfigHeader) {\n    this.config.headers = this.config.headers.map(h => (\n      {\n        ...h,\n        sortAsc: false,\n        sortDesc: header.code === h.code ? true : false\n      })\n    );\n    this.config.sort = { code: header.code, type: \"DESC\" };\n    this.updateSortSelect();\n    this.onSortUpdate.emit(this.config.sort);\n  }\n\n  selectLine(line: DataTableLine) {\n    this.onLineSelected.emit(line);\n  }\n\n  updateSortSelect() {\n    const sortId = `${this.config.sort.code}//${this.config.sort.type}`;\n    this.sortSelect = {\n      ...this.sortSelect,\n      defaultOption: this.sortSelect.options.find(o => o.id === sortId),\n      value: sortId\n    }\n  }\n\n  handleAction(line: DataTableLine) {\n    this.results[line.id] = line.reactiveForm.value;\n    this.onAction.emit({\n      line,\n      values: line.reactiveForm.value\n    });\n  }\n\n  changeLineOpen(line: DataTableLine) {\n    line.open = !line.open;\n    if(line.open) {\n      this.onLineOpen.emit(line);\n    }\n    if(!line.open) {\n      this.onLineClose.emit(line);\n    }\n  }\n\n  changeAccordionOpen(data) {\n    this.onLineOpen.emit(data);\n  }\n\n  changeAccordionClose(data) {\n    this.onLineClose.emit(data);\n  }\n}\n","<div class=\"data-table\">\n  <div class=\"table-header\" *ngIf=\"config.title || config.exportAction || config.addAction || config.size\">\n    <div class=\"title\">\n      <ui-label *ngIf=\"config.title\" [config]=\"config.title\"></ui-label>\n    </div>\n    <div class=\"actions\">\n      <ui-button *ngIf=\"config.exportAction\" [config]=\"exportIcon\" (onClick)=\"export()\"></ui-button>\n      <ui-button *ngIf=\"config.addAction\" class=\"add-action\" [config]=\"addIcon\" (onClick)=\"add()\"></ui-button>\n      <ui-select *ngIf=\"config.size\" class=\"d-none d-lg-block page-size\" [config]=\"pageSizeSelect\"\n        (changeValue)=\"updatePageSize($event)\"></ui-select>\n    </div>\n  </div>\n  <div class=\"d-block d-md-none sort-select\" *ngIf=\"sortSelect.options.length\">\n    <ui-select [config]=\"sortSelect\" (changeValue)=\"sort($event)\"></ui-select>\n  </div>\n\n  <div class=\"table-body\">\n    <div class=\"d-block d-md-none lg-body\">\n      <div *ngIf=\"!config?.lines?.length && config?.noDataLabel\">\n        <ui-label [config]=\"config.noDataLabel\"></ui-label>\n      </div>\n      <ui-accordion [config]=\"accordionConfig\" [title]=\"title\" [body]=\"body\" (onClose)=\"changeAccordionClose($event)\" (onOpen)=\"changeAccordionOpen($event)\">\n        <ng-template #title let-data=\"data\">\n          <ng-container *ngIf=\"data.data.title\">\n            {{data.data.title | translate}}\n          </ng-container>\n          <ng-container *ngIf=\"lineHeaderTemplate\">\n            <ng-container *ngTemplateOutlet=\"lineHeaderTemplate; context: { data: data.data }\"></ng-container>\n          </ng-container>\n        </ng-template>\n\n        <ng-template #body let-data=\"data\">\n          <ng-container *ngIf=\"lineBodyTemplate\">\n            <ng-container *ngTemplateOutlet=\"lineBodyTemplate; context: { data: data.data }\"></ng-container>\n          </ng-container>\n          <ng-container *ngIf=\"!lineBodyTemplate && data.data.form\">\n            <table class=\"small-table\">\n              <tr [formGroup]=\"data.data.reactiveForm\" *ngFor=\"let item of data.data.form.items; let i = index\"\n                class=\"line\">\n                <td>\n                  <span class=\"label\">{{config.headers[i].label | translate}}</span>\n                </td>\n                <td>\n                  <ui-input *ngIf=\"item.code === 'INPUT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                  </ui-input>\n\n                  <ui-checkbox *ngIf=\"item.code === 'CHECKBOX'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                  </ui-checkbox>\n\n                  <ui-button *ngIf=\"item.code === 'BUTTON'\" [config]=\"item.data\"\n                    (onClick)=\"handleAction(data.data)\"></ui-button>\n\n                  <ui-date-range-picker *ngIf=\"item.code === 'DATE_RANGE_PICKER'\" [config]=\"item.data\"\n                    formControlName=\"{{item.data.key}}\">\n                  </ui-date-range-picker>\n\n                  <ui-select *ngIf=\"item.code === 'SELECT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                  </ui-select>\n\n                  <ui-label *ngIf=\"item.code === 'LABEL'\" [config]=\"item.data\"></ui-label>\n                </td>\n              </tr>\n            </table>\n            <div *ngIf=\"config.selectLine\" class=\"selector-small\">\n              <ui-button [config]=\"selectLineButtonSmall\" (onClick)=\"selectLine(data.data)\"></ui-button>\n            </div>\n          </ng-container>\n        </ng-template>\n      </ui-accordion>\n      <ng-template [ngTemplateOutlet]=\"pagination\"></ng-template>\n    </div>\n\n    <div class=\"d-none d-md-block\">\n      <div class=\"table-scroll\">\n        <div class=\"table-content\">\n          <table class=\"custom-table\">\n            <tr *ngIf=\"config.headers\" class=\"headers\">\n              <th *ngIf=\"config.selectLine\">\n                <div class=\"header\"><span></span></div>\n              </th>\n              <th *ngFor=\"let header of config.headers\">\n                <div class=\"header\">\n                  <span class=\"label\">{{header.label | translate}}</span>\n\n                  <div class=\"sort\" *ngIf=\"header.sortEnabled\">\n                    <div class=\"up\" [ngClass]=\"{'active': header.sortAsc}\" (click)=\"sortAsc(header)\">\n                      <mat-icon>expand_less</mat-icon>\n                    </div>\n                    <div class=\"down\" [ngClass]=\"{'active': header.sortDesc}\" (click)=\"sortDesc(header)\">\n                      <mat-icon>expand_more</mat-icon>\n                    </div>\n                  </div>\n                </div>\n              </th>\n              <th *ngIf=\"config.openDetails\">\n                <div class=\"header\"><span></span></div>\n              </th>\n            </tr>\n            <ng-container *ngFor=\"let page of pages\">\n              <ng-container *ngIf=\"config.page === page.page\">\n                <ng-container *ngFor=\"let line of page.lines\">\n                  <tr class=\"line\" [formGroup]=\"line.reactiveForm\"\n                    [ngClass]=\"{'select-line': config.selectLine}\">\n                    <td *ngIf=\"config.selectLine\" class=\"selector\">\n                      <ui-button [config]=\"selectLineButton\" (onClick)=\"selectLine(line)\"></ui-button>\n                    </td>\n                    <td *ngFor=\"let item of line.form.items\">\n                      <ui-input *ngIf=\"item.code === 'INPUT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                      </ui-input>\n\n                      <ui-checkbox *ngIf=\"item.code === 'CHECKBOX'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                      </ui-checkbox>\n\n                      <ui-button *ngIf=\"item.code === 'BUTTON'\" [config]=\"item.data\"\n                        (onClick)=\"handleAction(line)\"></ui-button>\n\n                      <ui-date-range-picker *ngIf=\"item.code === 'DATE_RANGE_PICKER'\" [config]=\"item.data\"\n                        formControlName=\"{{item.data.key}}\">\n                      </ui-date-range-picker>\n\n                      <ui-select *ngIf=\"item.code === 'SELECT'\" [config]=\"item.data\" formControlName=\"{{item.data.key}}\">\n                      </ui-select>\n\n                      <ui-label *ngIf=\"item.code === 'LABEL'\" [config]=\"item.data\"></ui-label>\n                    </td>\n                    <td *ngIf=\"config.openDetails\" class=\"selector\">\n                      <ui-button [config]=\"openDetailsButton\" *ngIf=\"!line.open\" (onClick)=\"changeLineOpen(line)\"></ui-button>\n                      <ui-button [config]=\"closeDetailsButton\" *ngIf=\"line.open\" (onClick)=\"changeLineOpen(line)\"></ui-button>\n                    </td>\n                  </tr>\n                  <tr class=\"line\" *ngIf=\"line.open\">\n                    <ng-container *ngIf=\"lineBodyTemplate\">\n                      <td colspan=\"100%\">\n                        <ng-container *ngTemplateOutlet=\"lineBodyTemplate; context: { data: line }\"></ng-container>\n                      </td>\n                    </ng-container>\n                  </tr>\n                </ng-container>\n              </ng-container>\n            </ng-container>\n            <tr *ngIf=\"!config?.lines?.length && config?.noDataLabel\">\n              <td [attr.colspan]=\"config.headers?.length\">\n                <ui-label [config]=\"config.noDataLabel\"></ui-label>\n              </td>\n            </tr>\n          </table>\n        </div>\n        <ng-template [ngTemplateOutlet]=\"pagination\"></ng-template>\n      </div>\n    </div>\n  </div>\n</div>\n\n\n<ng-template #pagination>\n  <div class=\"pagination\" *ngIf=\"pages?.length>1\">\n    <div class=\"align\"></div>\n    <div class=\"page\" [ngClass]=\"{'disabled': config.page===0}\" (click)=\"previousPage()\">\n      <mat-icon>chevron_left</mat-icon>\n    </div>\n    <ng-container *ngFor=\"let page of pages\">\n\n      <ng-container *ngIf=\"page.page===0 && config.page>(7-1)\">\n        <div class=\"page\"\n          [ngClass]=\"{'selected': page.page===config.page}\" (click)=\"goToPage(page?.page)\">\n          <span>{{page.page+1}}</span>\n        </div>\n\n        <div class=\"page\">...</div>\n      </ng-container>\n\n      <ng-container *ngIf=\"page.page <= config.page && page.page > config.page-7\">\n        <div class=\"page\"\n          [ngClass]=\"{'selected': page.page===config.page}\" (click)=\"goToPage(page?.page)\">\n          <span>{{page.page+1}}</span>\n        </div>\n      </ng-container>\n\n      <ng-container *ngIf=\"page.page > config.page && page.page < config.page+7\">\n        <div class=\"page\"\n          [ngClass]=\"{'selected': page.page===config.page}\" (click)=\"goToPage(page?.page)\">\n          <span>{{page.page+1}}</span>\n        </div>\n      </ng-container>\n\n      <ng-container *ngIf=\"page.page===pages.length-1 && config.page<pages.length-7\">\n        <div class=\"page\">...</div>\n\n        <div class=\"page\"\n          [ngClass]=\"{'selected': page.page===config.page}\" (click)=\"goToPage(page?.page)\">\n          <span>{{page.page+1}}</span>\n        </div>\n      </ng-container>\n\n    </ng-container>\n    <div class=\"page\" [ngClass]=\"{'disabled': config.page===pages.length-1}\" (click)=\"nextPage()\">\n      <mat-icon>chevron_right</mat-icon>\n    </div>\n    <div class=\"align\"></div>\n  </div>\n</ng-template>\n","import { AbstractControl } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\n\nexport class AccordionComponentConfig {\n    cards: {\n        open: boolean,\n        data?: any\n    }[]\n}","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { LabelConfig } from '../label/label.model';\n\nexport class CategoryMenuComponentConfig {\n  menu: {\n    categories: {\n      code: string\n      icon: string\n      title: LabelConfig\n      items: {\n        id?: string\n        icon: string,\n        label: LabelConfig,\n        path: string\n      }[]\n    }[]\n  }\n}\n\n@Component({\n  selector: 'ui-category-menu',\n  templateUrl: './category-menu.component.html',\n  styleUrls: ['./category-menu.component.scss']\n})\nexport class CategoryMenuComponent implements OnInit {\n  @Input() config: CategoryMenuComponentConfig;\n\n  @Output() onMenuClick = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n}\n","<ng-container *ngFor=\"let category of config.menu.categories\">\n    <h4 class=\"category\">\n        <mat-icon class=\"icon\">{{category.icon}}</mat-icon>\n        {{category.title | translate}}\n    </h4>\n\n    <div [id]=\"item.id\" class=\"item\" *ngFor=\"let item of category.items\" (click)=\"onMenuClick.emit(item)\">\n        <div class=\"icon\">\n            <mat-icon>{{item.icon}}</mat-icon>\n        </div>\n        <h4 class=\"name\">{{item.label | translate}}</h4>\n    </div>\n</ng-container>\n","import { AbstractControl } from \"@angular/forms\"\nimport { LabelConfig } from \"../label/label.model\"\n\nexport class TreeSelectorComponentConfig {\n    key: string\n    title?: LabelConfig\n    description?: LabelConfig\n    items: TreeSelectorItem[]\n    formControl?: AbstractControl\n}\n\nexport class TreeSelectorItem {\n    id?: string\n    title: string\n    children?: TreeSelectorItem[]\n    selected?: boolean\n    partialSelected?: boolean\n    data?: any\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { FormComponentCode, FormComponentConfig } from '../form/form.model';\nimport { LabelComponentConfig } from '../label/label.model';\nimport { MoneySelectorComponentConfig } from './money-selector.model';\n\nclass MoneySetting {\n  image: string\n  value: number\n  quantity?: number\n  total?: number\n  form?: FormComponentConfig\n  formGroup?: FormGroup\n}\n\n@Component({\n  selector: 'ui-money-selector',\n  templateUrl: './money-selector.component.html',\n  styleUrls: ['./money-selector.component.scss']\n})\nexport class MoneySelectorComponent implements OnInit {\n  @Input() config: MoneySelectorComponentConfig;\n  @Output() onTotal = new EventEmitter();\n\n  moneySettings: MoneySetting[];\n\n  totalLabel: LabelComponentConfig = {\n    align: \"left\",\n    label: {\n      text: \"money-selector.total\",\n      data: {\n        prop1: \"0\"\n      }\n    }\n  }\n\n  confirmButton: ButtonComponentConfig = {\n    type: \"text\",\n    key: \"confirm\",\n    color: \"primary\",\n    label: { text: \"money-selector.confirm\" }\n  }\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.moneySettings = this.config.money.map(note => {\n      return {\n        ...note,\n        form: {\n          items: [\n            {\n              code: FormComponentCode.Input,\n              data: {\n                key: \"quantity\",\n                value: note.quantity?.toString() || \"0\",\n                label: { text: \"money-selector.quantity\" },\n                type: \"number\",\n                required: true,\n                disabled: false,\n                integer: true\n              }\n            },\n            {\n              code: FormComponentCode.Input,\n              data: {\n                key: \"total\",\n                value: note.total?.toString() || \"0\",\n                label: { text: \"money-selector.sub-total\" },\n                type: \"number\",\n                required: true,\n                disabled: false,\n              }\n            },\n          ]\n        }\n      };\n    });\n\n    setTimeout(() => {\n      this.updateTotalLabel();\n    })\n  }\n\n  formCreated(form: FormGroup, moneyType: { formGroup?: FormGroup, value: number }) {\n    moneyType.formGroup = form;\n\n    form.controls['quantity'].valueChanges.subscribe(data => {\n      const value = data * moneyType.value;\n      const currentValue = parseFloat(form.controls['total'].value);\n\n      if (currentValue !== value) {\n        form.controls['total'].patchValue(data * moneyType.value)\n      }\n    });\n\n    form.controls['total'].valueChanges.subscribe(data => {\n      const value = data / moneyType.value;\n      const currentValue = parseFloat(form.controls['quantity'].value);\n\n      if (currentValue !== value) {\n        form.controls['quantity'].patchValue(data / moneyType.value)\n      }\n\n      setTimeout(() => {\n        this.updateTotalLabel();\n      })\n      \n    });\n  }\n\n  updateValue() {\n    this.onTotal.emit({\n      total: parseFloat(this.totalLabel.label.data.prop1),\n      totalByType: this.moneySettings.map(settings => {\n        const {quantity, total} = settings.formGroup.value;\n\n        return {\n          value: settings.value,\n          total: parseFloat(total) || 0,\n          quantity: parseFloat(quantity) || 0\n        }\n      })\n    });\n  }\n\n  updateTotalLabel() {\n    this.totalLabel = {\n      ...this.totalLabel,\n      label: {\n        ...this.totalLabel.label,\n        data: {\n          prop1: this.moneySettings.reduce((acc, type) => {\n            if (type.formGroup) {\n              const { total } = type.formGroup.value;\n              acc += parseFloat(total);\n            }\n      \n            return acc;\n          }, 0).toFixed(2).toString()\n        }\n      }\n    }\n  }\n}\n","<div class=\"money\">\n    <div class=\"notes row\">\n        <div class=\"note-type col-xl-6\" *ngFor=\"let moneyType of moneySettings\">\n            <img [src]=\"moneyType.image\"/>\n\n            <ui-form [config]=\"moneyType.form\" linear=\"true\" (onFormCreation)=\"formCreated($event, moneyType)\"></ui-form>\n        </div>\n\n\n        <div class=\"note-type col-12 footer\">\n            <ui-label class=\"total\" [config]=\"totalLabel\"></ui-label>\n            <ui-button [config]=\"confirmButton\" (onClick)=\"updateValue()\"></ui-button>\n        </div>\n    </div>\n</div>\n","export class MoneySelectorComponentConfig {\n    money: {\n        image: string,\n        value: number,\n        quantity?: number,\n        total?: number\n    }[]\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport { ButtonComponentConfig } from '../button/button.model';\nimport { LabelComponentConfig } from '../label/label.model';\nimport { FormListComponentConfig } from './form-list.model';\n\n@Component({\n  selector: 'ui-form-list',\n  templateUrl: './form-list.component.html',\n  styleUrls: ['./form-list.component.scss']\n})\nexport class FormListComponent implements OnInit {\n  @Input() config: FormListComponentConfig = {\n    linear: true,\n    forms: [],\n    confirmLabel: { text: \"\" },\n    confirmButton: { text: \"\" },\n    addElementsButton: { text: \"\" },\n    removeElementsButton: true,\n    calculateTotal: () => 0\n  };\n\n  @Output() onConfirm = new EventEmitter();\n  @Output() onAddElements = new EventEmitter();\n\t@Output() onFormArrayCreation = new EventEmitter();\n\n  confirmLabel: LabelComponentConfig = {\n    align: \"left\",\n    label: {\n      text: \"\",\n      data: {\n        prop1: \"\"\n      }\n    }\n  }\n\n  confirmButton: ButtonComponentConfig = {\n    key: \"confirm\",\n    type: \"text\",\n    color: \"primary\",\n    label: { text: \"confirm\" }\n  }\n\n  addElementsButton: ButtonComponentConfig = {\n    key: \"add\",\n    type: \"text\",\n    color: \"primary\",\n    label: { text: \"add\" }\n  }\n\n  removeElementsButton: ButtonComponentConfig = {\n    key: \"remove\",\n    type: \"icon\",\n    color: undefined,\n    icon: \"delete\"\n  }\n\n  formArray = new FormArray([]);\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.addElementsButton.label = this.config.addElementsButton;\n    this.confirmButton.label = this.config.confirmButton;\n    this.confirmLabel.label = this.config.confirmLabel;\n\n    this.formArray.valueChanges.subscribe(data => {\n      if(this.confirmButton) {\n        this.confirmButton.disabled = !this.formArray.valid;\n      }\n\n      if (this.config.calculateTotal) {\n        this.confirmLabel = {\n          ...this.confirmLabel,\n          label: {\n            ...this.confirmLabel.label,\n            data: {\n              prop1: this.config.calculateTotal(data).toFixed(2)\n            }\n          }\n        }\n      }\n    })\n\n    if (this.config.calculateTotal) {\n      this.confirmLabel = {\n        ...this.confirmLabel,\n        label: {\n          ...this.confirmLabel.label,\n          data: {\n            prop1: this.config.calculateTotal([]).toFixed(2)\n          }\n        }\n      }\n    }\n\n    this.onFormArrayCreation.emit(this.formArray);\n  }\n\n  addForm(event: FormGroup) {\n    this.formArray.push(event);\n  }\n\n  confirm() {\n    this.onConfirm.emit(this.formArray.value);\n  }\n\n  addElements() {\n    this.onAddElements.emit();\n  }\n\n  removeElement(index) {\n    this.formArray.removeAt(index);\n    this.config.forms.splice(index, 1);\n  }\n}\n","<div class=\"line\" *ngFor=\"let form of config.forms; let i = index\">\n    <ui-form class=\"form\" [config]=\"form\" [linear]=\"config.linear\" (onFormCreation)=\"addForm($event)\"></ui-form>\n    <ui-button class=\"icon\" *ngIf=\"config.removeElementsButton\" [config]=\"removeElementsButton\" (onClick)=\"removeElement(i)\"></ui-button>\n</div>\n<div class=\"no-content\" *ngIf=\"!config.forms.length\">\n    <ui-button *ngIf=\"config.addElementsButton\" [config]=\"addElementsButton\" (onClick)=\"addElements()\"></ui-button>\n</div>\n<div class=\"footer\">\n    <ui-label class=\"label\" *ngIf=\"config.confirmLabel\" [config]=\"confirmLabel\"></ui-label>\n    <ui-button class=\"add-elements\" *ngIf=\"config.addElementsButton && config.forms.length\" [config]=\"addElementsButton\" (onClick)=\"addElements()\"></ui-button>\n    <ui-button *ngIf=\"config.confirmButton\" [config]=\"confirmButton\" (onClick)=\"confirm()\"></ui-button>\n</div>","import { FormComponentConfig } from \"../form/form.model\"\nimport { LabelConfig } from \"../label/label.model\"\n\nexport class FormListComponentConfig {\n  linear: boolean\n  forms: FormComponentConfig[]\n  confirmLabel?: LabelConfig\n  confirmButton?: LabelConfig\n  addElementsButton?: LabelConfig\n  removeElementsButton?: Boolean\n  calculateTotal?: (data: any[]) => number\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UiComponentsService } from '../../services/ui-components.service';\nimport { LabelConfig } from '../label/label.model';\nimport { PieChartComponentConfig } from './pie-chart.model';\n\n@Component({\n  selector: 'ui-pie-chart',\n  templateUrl: './pie-chart.component.html',\n  styleUrls: ['./pie-chart.component.scss']\n})\nexport class PieChartComponent implements OnInit {\n  @Input() config: PieChartComponentConfig;\n\n  colorScheme = {\n    domain: ['#5AA454', '#A10A28', '#C7B42C', '#AAAAAA']\n  };\n\n  euroFormatter = new Intl.NumberFormat('pt-PT', { style: 'currency', currency: 'EUR' });\n\n  constructor(\n    private uiComponentsService: UiComponentsService\n  ) {\n\n  }\n\n  ngOnInit(): void {\n    this.config.data = this.config.data.map(d => ({\n      ...d,\n      name: this.uiComponentsService.translate(d.label)\n    }));\n\n    if (this.config.colorScheme) {\n      this.colorScheme.domain = this.config.colorScheme;\n    }\n  }\n\n  onSelect(data): void {\n    console.log('Item clicked', JSON.parse(JSON.stringify(data)));\n  }\n\n  onActivate(data): void {\n    console.log('Activate', JSON.parse(JSON.stringify(data)));\n  }\n\n  onDeactivate(data): void {\n    console.log('Deactivate', JSON.parse(JSON.stringify(data)));\n  }\n\n  formatValue(data) {\n    return new Intl.NumberFormat('pt-PT', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(data);\n  }\n\n  formatEuro(data) {\n    return new Intl.NumberFormat('pt-PT', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(data);\n  }\n}\n","<div class=\"pie-chart\">\n  <ngx-charts-advanced-pie-chart\n    [scheme]=\"colorScheme\"\n    [results]=\"config.data\"\n    [label]=\"config.label | translate\"\n    [gradient]=\"true\"\n    [animations]=\"false\"\n    [valueFormatting]=\"config.type === 'EURO' ? formatEuro : formatValue\"\n    [percentageFormatting]=\"formatValue\"\n    (select)=\"onSelect($event)\"\n    (activate)=\"onActivate($event)\"\n    (deactivate)=\"onDeactivate($event)\"\n    >\n  </ngx-charts-advanced-pie-chart>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UiComponentsService } from '../../services/ui-components.service';\nimport { LabelConfig } from '../label/label.model';\nimport { LineChartComponentConfig } from './line-chart.model';\n\n@Component({\n  selector: 'ui-line-chart',\n  templateUrl: './line-chart.component.html',\n  styleUrls: ['./line-chart.component.scss']\n})\nexport class LineChartComponent implements OnInit {\n  @Input() config: LineChartComponentConfig;\n  @Output() onClick = new EventEmitter();\n\n  multi: any[];\n\n  // options\n  legend: boolean = true;\n  showLabels: boolean = true;\n  animations: boolean = true;\n  xAxis: boolean = true;\n  yAxis: boolean = true;\n  showYAxisLabel: boolean = true;\n  showXAxisLabel: boolean = true;\n  timeline: boolean = false;\n\n  colorScheme = {\n    domain: ['#5AA454', '#E44D25', '#CFC0BB', '#7aa3e5', '#a8385d', '#aae3f5']\n  };\n\n  constructor(\n    private uiComponentsService: UiComponentsService\n  ) {\n  }\n\n  ngOnInit(): void {\n    this.config.data = this.config.data.map(d => ({\n      ...d,\n      name: this.uiComponentsService.translate(d.label),\n      series: d.series.map(s => ({\n        ...s,\n        name: this.uiComponentsService.translate(s.label),\n      }))\n    }));\n\n    if (this.config.colorScheme) {\n      this.colorScheme.domain = this.config.colorScheme;\n    }\n  }\n\n  onSelect(data): void {\n    this.onClick.emit(data);\n  }\n\n  onActivate(data): void {\n    //console.log('Activate', JSON.parse(JSON.stringify(data)));\n  }\n\n  onDeactivate(data): void {\n    //console.log('Deactivate', JSON.parse(JSON.stringify(data)));\n  }\n}\n","<div class=\"line-chart\">\n  <ngx-charts-line-chart\n  [scheme]=\"colorScheme\"\n  [legend]=\"legend\"\n  [showXAxisLabel]=\"showXAxisLabel\"\n  [showYAxisLabel]=\"showYAxisLabel\"\n  [xAxis]=\"xAxis\"\n  [yAxis]=\"yAxis\"\n  [xAxisLabel]=\"config.xAxisLabel | translate\"\n  [yAxisLabel]=\"config.yAxisLabel | translate\"\n  [showXAxisLabel]=\"config.xAxisLabel\"\n  [showYAxisLabel]=\"config.yAxisLabel\"\n  [legendPosition]=\"'below'\"\n  [legendTitle]=\"config.legendTitle | translate\"\n  [timeline]=\"timeline\"\n  [results]=\"config.data\"\n  (select)=\"onSelect($event)\"\n  (activate)=\"onActivate($event)\"\n  (deactivate)=\"onDeactivate($event)\"\n  >\n</ngx-charts-line-chart>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { TabsComponentConfig } from '../../public-api';\n\n@Component({\n  selector: 'ui-tabs',\n  templateUrl: './tabs.component.html',\n  styleUrls: ['./tabs.component.scss'],\n  providers:[]\n})\nexport class TabsComponent implements OnInit, OnChanges {\n  @Input() config: TabsComponentConfig;\n  @Input() body: TemplateRef<any>;\n  @Output() onSelect = new EventEmitter();\n\n  selectedIndex = 0;\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.selectedIndex = this.config.tabs.findIndex( t => t.selected) || 0;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.ngOnInit();\n  }\n\n  selectTab(event: {index: number}) {\n    this.onSelect.emit(this.config.tabs[event.index]);\n  }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" mat-align-tabs=\"center\" (selectedTabChange)=\"selectTab($event)\" class=\"tab-scroll\">\n  <mat-tab *ngFor=\"let tab of config.tabs\" [label]=\"tab.title | translate\">\n    <ng-template mat-tab-label>\n      <mat-icon class=\"icon\" *ngIf=\"tab.icon\">{{tab.icon}}</mat-icon>\n      <span class=\"label\" *ngIf=\"tab.title\">{{tab.title | translate}}</span>\n    </ng-template>\n    <ng-container *ngTemplateOutlet=\"body; context: { data: tab }\"></ng-container>\n  </mat-tab>\n</mat-tab-group>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nexport class DateRangeToolbarComponentConfig {\n  value: 'day' | 'week' | 'month' | 'custom'\n}\n\n@Component({\n  selector: 'ui-date-range-toolbar',\n  templateUrl: './date-range-toolbar.component.html',\n  styleUrls: ['./date-range-toolbar.component.scss']\n})\nexport class DateRangeToolbarComponent implements OnInit, OnChanges {\n  @Input() config: DateRangeToolbarComponentConfig;\n\n  @Output() onValueChange = new EventEmitter();\n\n  toggle = new FormControl('day');\n\n  constructor() { }\n\n  ngOnInit() {\n    this.toggle.setValue(this.config.value);\n    this.toggle.valueChanges.subscribe((value) => {\n      this.onValueChange.emit(value);\n    })\n  }\n\n  ngOnChanges(): void {}\n}\n","<div class=\"toolbar\">\n  <mat-button-toggle-group class=\"toggle\" [formControl]=\"toggle\">\n    <mat-button-toggle value=\"day\">\n      <mat-icon>today</mat-icon>\n      <span>1</span>\n    </mat-button-toggle>\n    <mat-button-toggle value=\"week\">\n      <mat-icon>date_range</mat-icon>\n      <span>7</span>\n    </mat-button-toggle>\n    <mat-button-toggle value=\"month\">\n      <mat-icon>calendar_month</mat-icon>\n      <span>31</span>\n    </mat-button-toggle>\n    <mat-button-toggle value=\"custom\">\n      <mat-icon>edit</mat-icon>\n    </mat-button-toggle>\n  </mat-button-toggle-group>\n\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BottomBarComponentConfig, BottomBarComponentConfigAction } from './bottom-bar.model';\n\n@Component({\n  selector: 'ui-bottom-bar',\n  templateUrl: './bottom-bar.component.html',\n  styleUrls: ['./bottom-bar.component.scss']\n})\nexport class BottomBarComponent implements OnInit {\n  @Input() config: BottomBarComponentConfig;\n\n  @Output() onRightAction = new EventEmitter();\n  @Output() onLeftAction = new EventEmitter();\n\n  expanded = false;\n\n  constructor(\n    private router: Router,\n    private activatedRoute: ActivatedRoute\n  ) { }\n\n  screenWidth = 0;\n  ngOnInit(): void {\n    this.screenWidth = window.innerWidth;\n    window.onresize = () => this.screenWidth = window.innerWidth;\n\n    const routerAction = this.getRouterAction();\n    if(routerAction) {\n      this.selectAction(routerAction, false);\n    }\n\n    const active = this.config.actions.find(a => a.active);\n    if(!active && this.config.actions.length) {\n      this.selectAction(this.config.actions[0], true);\n    }\n  }\n\n  getRouterAction() {\n    const url = this.router.url.split(\"?\")[0];\n    return this.config.actions.find(action => url.endsWith(action.path));\n  }\n\n  selectAction(action: BottomBarComponentConfigAction, navigate: boolean) {\n    this.config.actions = this.config.actions.map(a => ({\n      ...a,\n      active: a.code === action.code\n    }));\n\n    if(!navigate) {\n      return;\n    }\n\n    this.router.navigate([action.path], {\n      relativeTo: this.activatedRoute,\n      queryParamsHandling: \"preserve\",\n      replaceUrl: true\n    })\n  }\n\n  expandAction() {\n    this.expanded = !this.expanded;\n  }\n}\n","<div class=\"full-block\">\n  <div class=\"bottom-bar-container\" [ngClass]=\"{'bottom-bar-container': screenWidth < 992, 'bottom-bar-container-vertical': screenWidth >= 992 }\">\n    <div class=\"bottom-bar-content\">\n      <router-outlet></router-outlet>\n    </div>\n    <div class=\"bottom-bar\" *ngIf=\"config?.actions?.length > 1 && screenWidth < 992\">\n      <div [id]=\"action.id\" class=\"action\" [ngClass]=\"{'active': action.active}\" *ngFor=\"let action of config.actions\">\n        <mat-icon class=\"icon\" (click)=\"selectAction(action, true)\">{{action.icon}}</mat-icon>\n        <p class=\"label\" *ngIf=\"action.active\">{{action.label | translate}}</p>\n      </div>\n    </div>\n\n    <div class=\"bottom-bar\" *ngIf=\"config?.actions?.length > 1 && screenWidth >= 992\">\n      <div class=\"action expanded\">\n        <mat-icon class=\"icon\" (click)=\"expandAction()\" *ngIf=\"!expanded\">keyboard_double_arrow_right</mat-icon>\n        <mat-icon class=\"icon\" (click)=\"expandAction()\" *ngIf=\"expanded\">keyboard_double_arrow_left</mat-icon>\n      </div>\n      <div [id]=\"action.id\" class=\"action\" [ngClass]=\"{'active': action.active}\" *ngFor=\"let action of config.actions\" (click)=\"selectAction(action, true)\">\n        <mat-icon class=\"icon\">{{action.icon}}</mat-icon>\n        <span class=\"label\" *ngIf=\"expanded\">{{action.label | translate}}</span>\n      </div>\n    </div>\n  </div>\n</div>\n\n","import { LabelConfig } from \"../label/label.model\"\n\nexport class BottomBarComponentConfig {\n  actions: BottomBarComponentConfigAction[]\n}\n\n\nexport class BottomBarComponentConfigAction {\n  id?: string\n  code: string\n  label: LabelConfig\n  icon: string\n  active?: boolean\n  path: string\n  data?: any\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatBottomSheetModule, MAT_BOTTOM_SHEET_DATA, MAT_BOTTOM_SHEET_DEFAULT_OPTIONS } from '@angular/material/bottom-sheet';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ButtonComponent } from './button/button.component';\nimport { HeaderComponent } from './header/header.component';\nimport { ListMenuComponent } from './list-menu/list-menu.component';\nimport { LabelComponent } from './label/label.component';\nimport { DayRangeSelectorComponent } from './day-range-selector/day-range-selector.component';\nimport { InfoCardComponent } from './info-card/info-card.component';\nimport { HolidaysCardComponent } from './holidays-card/holidays-card.component';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { SelectComponent } from './select/select.component';\nimport { YearSelectorComponent } from './year-selector/year-selector.component';\nimport { FormComponent } from './form/form.component';\nimport { LoadingComponent } from './loading/loading.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { InputComponent } from './input/input.component';\nimport { TitleComponent } from './title/title.component';\nimport { UiComponentsConfig, UiComponentsService } from '../services/ui-components.service';\nimport { TranslatePipe } from '../pipes/translate.pipe';\nimport { HistoricHolidaysCardComponent } from './historic-holidays-card/historic-holidays-card.component';\nimport { DialogComponent } from './dialog/dialog.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { TableComponent } from './table/table.component';\nimport { ScheduleComponent } from './schedule/schedule.component';\nimport { TimesheetCardComponent } from './timesheet-card/timesheet-card.component';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { ScheduleVizualizerComponent } from './schedule-vizualizer/schedule-vizualizer.component';\nimport { PdtDocumentBuilderComponent } from './pdt-document-builder/pdt-document-builder.component';\nimport { SearchProductComponent } from './search-product/search-product.component';\nimport { SearchSupplierComponent } from './search-supplier/search-supplier.component';\nimport { MetricCardComponent } from './metric-card/metric-card.component';\nimport { StepperComponent } from './stepper/stepper.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { TimelineVizualizerComponent } from './timeline-vizualizer/timeline-vizualizer.component';\nimport { DataTableComponent } from './data-table/data-table.component';\nimport { AccordionComponent } from './accordion/accordion.api';\nimport { CategoryMenuComponent } from './category-menu/category-menu.component';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { TreeSelectorComponent } from './tree-selector/tree-selector.api';\nimport { MoneySelectorComponent } from './money-selector/money-selector.api';\nimport { FormListComponent } from './form-list/form-list.api';\nimport { KeyboardComponent } from './keyboard/keyboard.api';\nimport { PieChartComponent } from './pie-chart/pie-chart.component';\nimport { NgxChartsModule }from '@swimlane/ngx-charts';\nimport { LineChartComponent } from './line-chart/line-chart.component';\nimport { TabsComponent } from './tabs/tabs.component';\nimport { DateRangeToolbarComponent } from './date-range-toolbar/date-range-toolbar.component';\nimport { BottomBarComponent } from './bottom-bar/bottom-bar.api';\nimport { FormService } from '../services/form.service';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  declarations: [\n    ButtonComponent,\n    HeaderComponent,\n    ListMenuComponent,\n    YearSelectorComponent,\n    DayRangeSelectorComponent,\n    InfoCardComponent,\n    HolidaysCardComponent,\n    HistoricHolidaysCardComponent,\n    CalendarComponent,\n    SelectComponent,\n    FormComponent,\n    LoadingComponent,\n    CheckboxComponent,\n    DateRangePickerComponent,\n    DayRangeSelectorComponent,\n    InputComponent,\n    LabelComponent,\n    TitleComponent,\n    TranslatePipe,\n    DialogComponent,\n    TimePickerComponent,\n    ScheduleComponent,\n    TimesheetCardComponent,\n    ScheduleVizualizerComponent,\n    PdtDocumentBuilderComponent,\n    TableComponent,\n    SearchProductComponent,\n    SearchSupplierComponent,\n    MetricCardComponent,\n    StepperComponent,\n    TimelineVizualizerComponent,\n    DataTableComponent,\n    AccordionComponent,\n    CategoryMenuComponent,\n    TreeSelectorComponent,\n    MoneySelectorComponent,\n    FormListComponent,\n    KeyboardComponent,\n    PieChartComponent,\n    LineChartComponent,\n    TabsComponent,\n    DateRangeToolbarComponent,\n    BottomBarComponent\n  ],\n  imports: [\n    CommonModule,\n    RouterModule,\n    MatButtonModule,\n    MatIconModule,\n    MatToolbarModule,\n    MatListModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatInputModule,\n    MatCheckboxModule,\n    MatFormFieldModule,\n    MatDialogModule,\n    MatCardModule,\n    MatProgressSpinnerModule,\n    MatDatepickerModule,\n    MatNativeDateModule,\n    MatExpansionModule,\n    MatSelectModule,\n    MatTooltipModule,\n    MatBottomSheetModule,\n    MatTableModule,\n    MatTabsModule,\n    MatButtonToggleModule,\n    DragDropModule,\n    MatGridListModule,\n    MatSnackBarModule,\n    MatStepperModule,\n    MatTreeModule,\n    NgxChartsModule\n  ],\n  exports: [\n    ButtonComponent,\n    HeaderComponent,\n    ListMenuComponent,\n    YearSelectorComponent,\n    DayRangeSelectorComponent,\n    InfoCardComponent,\n    HolidaysCardComponent,\n    HistoricHolidaysCardComponent,\n    CalendarComponent,\n    SelectComponent,\n    FormComponent,\n    LoadingComponent,\n    CheckboxComponent,\n    DateRangePickerComponent,\n    DayRangeSelectorComponent,\n    InputComponent,\n    LabelComponent,\n    TitleComponent,\n    DialogComponent,\n    TimePickerComponent,\n    ScheduleComponent,\n    TimesheetCardComponent,\n    ScheduleVizualizerComponent,\n    PdtDocumentBuilderComponent,\n    TableComponent,\n    SearchProductComponent,\n    SearchSupplierComponent,\n    MetricCardComponent,\n    StepperComponent,\n    TimelineVizualizerComponent,\n    DataTableComponent,\n    AccordionComponent,\n    CategoryMenuComponent,\n    TreeSelectorComponent,\n    MoneySelectorComponent,\n    FormListComponent,\n    KeyboardComponent,\n    PieChartComponent,\n    LineChartComponent,\n    TabsComponent,\n    DateRangeToolbarComponent,\n    BottomBarComponent\n  ],\n  providers: [\n    UiComponentsService,\n    FormService,\n    { provide: MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, useValue: { hasBackdrop: true } },\n    { provide: MAT_BOTTOM_SHEET_DATA, useValue: {} },\n  ]\n})\nexport class UiComponentsModule {\n  static forRoot(config: UiComponentsConfig): ModuleWithProviders<UiComponentsModule> {\n    return {\n      ngModule: UiComponentsModule,\n      providers: [UiComponentsService, { provide: 'config', useValue: config }]\n    };\n  }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\n\nexport class ButtonComponentConfig {\n  id?: string\n  type: 'text' | 'icon' | 'dashed' | 'text-icon' | 'float'\n  key: string\n  label?: LabelConfig\n  icon?: string\n  color: 'primary' | 'accent' | 'warn' | undefined\n  submit?: boolean\n  disabled?: boolean\n  formControl?: AbstractControl\n}\n","export class LabelConfig {\n    text: string\n    data?: LabelConfigProps\n}\n\nexport class LabelConfigProps {\n    prop1?: string\n    prop2?: string\n    prop3?: string\n}\n\nexport class LabelComponentConfig {\n    label: LabelConfig\n    align?: 'left' | 'center' | 'right'\n    key?: string\n    size?: string\n    bold?: boolean\n    icon?: string\n    color?: string\n}\n","import { AbstractControl } from '@angular/forms';\nimport { LabelConfig } from '../label/label.model';\nimport { Supplier } from '../search-supplier/search-supplier.model';\nimport { Product } from '../search-product/search-product.model';\n\nexport class ValueExtracted {\n  label: string\n  value: string\n}\n\nexport class PdtDocumentExtracted {\n  summary: ValueExtracted[]\n  lines: ValueExtracted[][]\n}\n\nexport class PdtDocumentBuilderComponentServices {\n  getSuppliers?: (description: string) => Promise<Supplier[]>\n  getProducts?: (description: string) => Promise<Product[]>\n}\n\nexport class PdtDocumentBuilderComponentConfig {\n  key: string\n  formControl?: AbstractControl\n  result?: PdtDocumentExtracted\n  products: { name: string, codes: string[], tax?: number }[]\n  status: 'NEW' | 'READING' | 'LOADED'\n  summary?: {\n    supplier?: {\n      code: string,\n      name: string\n    },\n    date?: string\n  }\n  pdtLabels?: {\n    code?: LabelConfig,\n    description?: LabelConfig,\n    quantity?: LabelConfig,\n    price?: LabelConfig,\n    discount?: LabelConfig,\n    tax?: LabelConfig,\n    batch?: LabelConfig,\n    supplier?: LabelConfig,\n    date?: LabelConfig,\n    other?: LabelConfig,\n    readingData?: LabelConfig,\n    supplierCode?: LabelConfig,\n    total?: LabelConfig,\n    grossTotal?: LabelConfig,\n    supplierTotal?: LabelConfig,\n  }\n  lines: {\n    supplierCode: string,\n    code: string,\n    quantity: string,\n    description: string,\n    price: string,\n    discount: string,\n    tax: string,\n    batch: string,\n  }[]\n  columns: {\n    supplierCode?: { mapper: string, translationKey: string },\n    code?: { mapper: string, translationKey: string },\n    quantity?: { mapper: string, translationKey: string },\n    description?: { mapper: string, translationKey: string },\n    price?: { mapper: string, translationKey: string },\n    discount?: { mapper: string, translationKey: string },\n    tax?: { mapper: string, translationKey: string },\n    batch?: { mapper: string, translationKey: string },\n    supplierTotal?: { mapper: string, translationKey: string },\n  }\n}\n","import { LabelConfig } from \"../label/label.model\"\nimport { Product } from \"../search-product/search-product.model\"\n\nexport class ColumnConfig {\n\tname: string\n\tlabel: LabelConfig\n\ttype: \"string\" | \"number\" | \"number_round_1\" | \"number_round_2\" | \"number_round_3\"\n\tfooter: \"sum\" | \"empty\" | \"count\"\n\tsticky?: boolean\n\twidth?: number\n\tcompare?: string[]\n\tmultiply?: string[]\n\tdivider?: string[]\n\ttax?: string[]\n\tdiscount?: string[]\n\tdisabled?: boolean\n\trequired?: boolean\n\tsearch?: boolean\n\tmapper?: string\n\ttranslationKey?: string\n}\n\nexport class LineValue {\n\tlabel: string\n\tvalue: string\n}\n\nexport class TableComponentConfig {\n\tcolumns: ColumnConfig[]\n\tdata: any[]\n\tlines?: LineValue[][]\n\tactions?: {\n\t\taddLine?: boolean\n\t\tremoveLine?: boolean\n\t\tsortLines?: boolean\n\t}\n}\n\nexport class TableComponentServices {\n\tgetProducts?: (description: string) => Promise<Product[]>\n}","import { LabelConfig } from \"../label/label.api\";\n\nexport class StepperComponentConfig {\n    steps: {\n        code: string\n        title: LabelConfig\n        selected?: boolean\n        description?: LabelConfig\n        next?: LabelConfig\n        back?: LabelConfig\n        data?: any\n    }[]\n}\n","import { FormGroup } from \"@angular/forms\"\nimport { FormComponentCode, FormComponentConfig } from \"../form/form.model\"\nimport { LabelComponentConfig, LabelConfig } from \"../label/label.model\"\nimport { Product } from \"../search-product/search-product.model\"\nimport { SelectComponentConfig } from \"../select/select.component\"\n\nexport class DataTableLine {\n  id: string\n  title?: LabelConfig\n  open: boolean\n  form: FormComponentConfig\n  data?: any\n  reactiveForm?: FormGroup\n}\n\nexport class DataTableComponentConfig {\n  title?: LabelComponentConfig\n  noDataLabel?: LabelComponentConfig\n  lines: DataTableLine[]\n  headers: DataTableComponentConfigHeader[]\n  page?: number\n  size?: number\n  exportAction?: boolean\n  addAction?: boolean\n  totalCount?: number\n  sort?: {code: string, type: string}\n  selectLine?: boolean\n  openDetails?: boolean\n}\n\nexport class DataTableComponentConfigHeader {\n  code: string\n  label: LabelConfig\n  sortEnabled?: boolean\n  sortAsc?: boolean\n  sortDesc?: boolean\n}\n\nexport class DataTableComponentServices {\n  getProducts?: (description: string) => Promise<Product[]>\n}\n","import { LabelConfig } from '../label/label.model';\n\nexport class PieChartComponentConfig {\n  data: {\n    label: LabelConfig,\n    value: number,\n    extra?: any\n  }[]\n  label: LabelConfig\n  type?: \"EURO\"\n  colorScheme?: string[]\n}\n","import { LabelConfig } from '../label/label.model';\n\nexport class LineChartComponentConfig {\n  data: {\n    label: LabelConfig,\n    series: {\n      code: string\n      label: LabelConfig,\n      value: number\n    }[]\n  }[]\n  legendTitle: LabelConfig\n  xAxisLabel?: LabelConfig\n  yAxisLabel?: LabelConfig\n  colorScheme?: string[]\n}\n","import { LabelConfig } from \"../label/label.api\";\n\nexport class TabsComponentConfig {\n    tabs: {\n        code: string\n        icon?: string\n        title?: LabelConfig\n        selected?: boolean\n    }[]\n}\n","/*\n * Public API Surface of ui-components\n */\n\nexport * from './lib/ui-components.module';\nexport * from './lib/button/button.api';\nexport * from './lib/header/header.component';\nexport * from './lib/list-menu/list-menu.component';\nexport * from './lib/year-selector/year-selector.component';\nexport * from './lib/label/label.api';\nexport * from './lib/day-range-selector/day-range-selector.component';\nexport * from './lib/info-card/info-card.component';\nexport * from './lib/holidays-card/holidays-card.component';\nexport * from './lib/historic-holidays-card/historic-holidays-card.component';\nexport * from './lib/calendar/calendar.component';\nexport * from './lib/select/select.component';\nexport * from './lib/input/input.component';\nexport * from './lib/form/form.api';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/date-range-picker/date-range-picker.component';\nexport * from './lib/loading/loading.component';\nexport * from './lib/title/title.component';\nexport * from './pipes/translate.pipe';\nexport * from './lib/dialog/dialog.api';\nexport * from './lib/time-picker/time-picker.component';\nexport * from './lib/schedule/schedule.component';\nexport * from './lib/timesheet-card/timesheet-card.component';\nexport * from './lib/schedule-vizualizer/schedule-vizualizer.component';\nexport * from './lib/timeline-vizualizer/timeline-vizualizer.component';\nexport * from './lib/pdt-document-builder/pdt-document-builder.component';\nexport * from './lib/pdt-document-builder/pdt-document-builder.model';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.model';\nexport * from './lib/search-product/search-product.component';\nexport * from './lib/search-product/search-product.model';\nexport * from './lib/search-supplier/search-supplier.component';\nexport * from './lib/search-supplier/search-supplier.model';\nexport * from './lib/metric-card/metric-card.component';\nexport * from './lib/stepper/stepper.api';\nexport * from './lib/data-table/data-table.api';\nexport * from './lib/accordion/accordion.api';\nexport * from './lib/category-menu/category-menu.component';\nexport * from './lib/tree-selector/tree-selector.api';\nexport * from './lib/money-selector/money-selector.api';\nexport * from './lib/form-list/form-list.api';\nexport * from './lib/keyboard/keyboard.api';\nexport * from './lib/pie-chart/pie-chart.api';\nexport * from './lib/line-chart/line-chart.api';\nexport * from './lib/tabs/tabs.api';\nexport * from './lib/date-range-toolbar/date-range-toolbar.component';\nexport * from './lib/bottom-bar/bottom-bar.api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UiComponentsService","i4.TranslatePipe","i1","i2","i3","i4","i5.TranslatePipe","i3.TranslatePipe","i1.SelectComponent","i2.ButtonComponent","i5.LabelComponent","i6","i8","i9","i1.InfoCardComponent","i5","i7","i8.TranslatePipe","i2.TranslatePipe","i3.TimePickerComponent","i1.FormService","i2.InputComponent","i3.CheckboxComponent","i4.ButtonComponent","i5.DateRangePickerComponent","i6.SelectComponent","i7.LabelComponent","i8.ScheduleComponent","i9.TimePickerComponent","i10.TreeSelectorComponent","i11","i12","i2.FormComponent","i3.ListMenuComponent","i4.LoadingComponent","i6.TranslatePipe","i10.TranslatePipe","i5.TableComponent","i1.ButtonComponent","i2.TitleComponent","i2.FormService","i3.LabelComponent","i5.SelectComponent","i6.AccordionComponent","i7.InputComponent","i8.CheckboxComponent","i9.DateRangePickerComponent","i10","i13.TranslatePipe","i1.FormComponent","i2.LabelComponent","i3.ButtonComponent"],"mappings":"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"}