@cauca-911/material
Version:
Run `npm install @cauca-911/material --save` to add this library to your project
1 lines • 104 kB
Source Map (JSON)
{"version":3,"file":"cauca-911-material.mjs","sources":["../../../projects/cauca-material/src/lib/cauca-material.service.ts","../../../projects/cauca-material/src/lib/cauca-material.component.ts","../../../projects/cauca-material/src/lib/cauca-material.component.html","../../../projects/cauca-material/src/lib/shared/models/simple-dialog-data.ts","../../../projects/cauca-material/src/lib/cauca-simple-dialog/cauca-simple-dialog.component.html","../../../projects/cauca-material/src/lib/cauca-simple-dialog/cauca-simple-dialog.component.ts","../../../projects/cauca-material/src/lib/cauca-input-file/cauca-input-file.component.html","../../../projects/cauca-material/src/lib/cauca-input-file/cauca-input-file.component.ts","../../../projects/cauca-material/src/lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component.html","../../../projects/cauca-material/src/lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component.ts","../../../projects/cauca-material/src/lib/cauca-menu-vertical/cauca-menu-vertical.component.html","../../../projects/cauca-material/src/lib/cauca-menu-vertical/cauca-menu-vertical.component.ts","../../../projects/cauca-material/src/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.html","../../../projects/cauca-material/src/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.ts","../../../projects/cauca-material/src/lib/cauca-slideshow/cauca-slideshow.component.html","../../../projects/cauca-material/src/lib/cauca-slideshow/cauca-slideshow.component.ts","../../../projects/cauca-material/src/lib/test-component-with-classic-input/test-component-with-classic-input.component.ts","../../../projects/cauca-material/src/lib/test-component-with-classic-input/test-component-with-classic-input.component.html","../../../projects/cauca-material/src/lib/test-component-with-model-signal/test-component-with-model-signal.component.ts","../../../projects/cauca-material/src/lib/test-component-with-model-signal/test-component-with-model-signal.component.html","../../../projects/cauca-material/src/lib/test-component-with-signal-input/test-component-with-signal-input.component.ts","../../../projects/cauca-material/src/lib/test-component-with-signal-input/test-component-with-signal-input.component.html","../../../projects/cauca-material/src/lib/cauca-material.module.ts","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.ts","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.html","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.html","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.ts","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.html","../../../projects/cauca-material/src/lib/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.ts","../../../projects/cauca-material/src/lib/cauca-date-time-picker/cauca-date-time-picker.component.html","../../../projects/cauca-material/src/lib/cauca-date-time-picker/cauca-date-time-picker.component.ts","../../../projects/cauca-material/src/lib/shared/models/menu-item.ts","../../../projects/cauca-material/src/public-api.ts","../../../projects/cauca-material/src/cauca-911-material.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CaucaMaterialService {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'cauca-material',\n templateUrl: './cauca-material.component.html',\n styles: [],\n standalone: false\n})\nexport class CaucaMaterialComponent {\n\n}\n","<div>{{'core.noGenericComponentOnThisLibrary' | translate}}</div>","export class SimpleDialogData {\n public title: string;\n public message: string;\n public buttons: string[] = [];\n}\n","<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.message\"></div>\n</div>\n<div mat-dialog-actions *ngIf=\"data.buttons\">\n <button *ngFor=\"let label of data.buttons; let i = index\" mat-raised-button (click)=\"onClick(i)\">{{label}}</button>\n</div>","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { SimpleDialogData } from '../shared/models/simple-dialog-data';\n\n@Component({\n selector: 'cauca-simple-dialog',\n templateUrl: './cauca-simple-dialog.component.html',\n styleUrls: ['./cauca-simple-dialog.component.scss'],\n standalone: false\n})\nexport class CaucaSimpleDialogComponent{\n\n public constructor(\n private dialogRef: MatDialogRef<CaucaSimpleDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: SimpleDialogData,\n ) { }\n\n public onClick(buttonIndex: number): void {\n this.dialogRef.close(buttonIndex);\n }\n}\n","<button mat-raised-button (click)=\"openDialog($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n <span *ngIf=\"text\">{{text}}</span>\n</button>\n<ng-container *ngIf=\"multiple; else notMultipleInput\">\n <input #file type=\"file\" (change)=\"onSelectFile($event)\" [accept]=\"accept\" multiple=\"multiple\" />\n</ng-container>\n\n<ng-template #notMultipleInput>\n <input #file type=\"file\" (change)=\"onSelectFile($event)\" [accept]=\"accept\" />\n</ng-template>","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@cauca-911/core';\nimport { CaucaSimpleDialogComponent } from '../cauca-simple-dialog/cauca-simple-dialog.component';\n\n@Component({\n selector: 'cauca-input-file',\n templateUrl: './cauca-input-file.component.html',\n styleUrls: ['./cauca-input-file.component.scss'],\n standalone: false\n})\nexport class CaucaInputFileComponent implements OnInit {\n @ViewChild('file', {static: false})\n public file: ElementRef;\n @Output()\n public readend = new EventEmitter();\n @Input()\n public accept = '';\n @Input()\n public multiple = false;\n @Input()\n public icon = '';\n @Input()\n public text = '';\n\n private labels: any = {};\n\n public constructor(\n private translateService: TranslateService,\n private dialog: MatDialog,\n ) {\n }\n\n public ngOnInit(): void {\n if (!this.icon && !this.text) {\n this.translateService.get(\n ['material.select', 'material.dialogTitle', 'material.dialogMessage']\n ).subscribe((labels: any) => {\n this.labels = labels;\n this.text = labels['material.select'];\n });\n }\n }\n\n public onSelectFile(e: any): void {\n for (let i = 0, j = e.target.files.length; i < j; i++) {\n const file = e.target.files[i];\n const reader = new FileReader();\n reader.onerror = ((error: any) => this.onError(error));\n reader.onload = ((event: any) => this.onReadEnd(file, event));\n reader.readAsDataURL(file);\n }\n\n if (e.target.files.length) {\n this.dialog.open(CaucaSimpleDialogComponent, {\n width: '250px',\n disableClose: true,\n data: {\n title: this.labels['material.dialogTitle'],\n message: this.labels['material.dialogMessage']\n }\n });\n }\n }\n\n public openDialog(event: any): void {\n if (this.file) {\n this.file.nativeElement.click();\n }\n event.stopPropagation();\n }\n\n private onError(error: any): void {\n throw error;\n }\n\n private onReadEnd(file: any, e: any): void {\n this.dialog.closeAll();\n this.readend.emit({\n name: file.name,\n size: file.size,\n type: file.type,\n lastModifiedDate: file.lastModifiedDate,\n content: e.target['result'],\n file,\n });\n }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" (selectedIndexChange)=\"onTagChanged($event)\">\n <mat-tab *ngFor=\"let lang of labels; let i = index\" [label]=\"lang\">\n <mat-form-field hideRequiredMarker=\"never\">\n <input matInput [placeholder]=\"lang\" [formControl]=\"forms[i]\" required=\"required\">\n <mat-error *ngIf=\"forms[i].invalid\">{{getErrorMessage(i) | translate}}</mat-error>\n </mat-form-field>\n </mat-tab>\n</mat-tab-group>","import {Component, Input, OnInit} from '@angular/core';\nimport {UntypedFormControl, Validators} from '@angular/forms';\nimport {Configuration, CaucaCoreService, TranslateService} from '@cauca-911/core';\n\n@Component({\n selector: 'cauca-input-multiple-langue',\n templateUrl: './cauca-input-multiple-langue.component.html',\n styleUrls: ['./cauca-input-multiple-langue.component.scss'],\n standalone: false\n})\nexport class CaucaInputMultipleLangueComponent implements OnInit {\n @Input()\n public value: string[] = [];\n public config: Configuration;\n public forms: UntypedFormControl[] = [];\n public labels: string[] = [];\n public selectedIndex = 0;\n\n public constructor(\n coreService: CaucaCoreService,\n private translate: TranslateService,\n ) {\n this.config = coreService.getConfig();\n }\n\n public ngOnInit(): void {\n this.translate.get(this.config.languages).subscribe((labels: any) => {\n for (const i in labels) {\n if (labels[i]) {\n this.labels.push(labels[i]);\n }\n }\n this.initializeForms();\n });\n }\n\n public onTagChanged(tabIndex: number): void {\n console.log('cauca-material, onTabChanged', tabIndex);\n }\n\n public getErrorMessage(index: any): string {\n return this.forms[index].hasError('required') ? 'error.required' : '';\n }\n\n private initializeForms(): void {\n this.labels.forEach((item: any, index: number) => {\n this.forms[index] = new UntypedFormControl('', [Validators.required]);\n this.forms[index].setValue(this.value[index] || '');\n });\n }\n}\n","<h4 *ngFor=\"let menu of menuItems\" [class]=\"menu.activated ? 'selected' : ''\">\n <div (click)=\"goTo(menu.path, $event)\" class=\"menu\">\n <div *ngIf=\"menu.icon\" class=\"menu-icon\">\n <fa-icon *ngIf=\"menu.icon.filter !== undefined\" [icon]=\"menu.icon\"></fa-icon>\n <img *ngIf=\"menu.icon.filter === undefined\" [src]=\"menu.icon\" />\n </div>\n <div *ngIf=\"menu.label\" class=\"menu-caption\">\n <span>{{menu.label | translate}}</span>\n </div>\n </div>\n <div *ngIf=\"menu.childs.length && menu.activated\" class=\"submenu\">\n <div\n *ngFor=\"let submenu of menu.childs\"\n [class]=\"submenu.activated ? 'menu selected' : 'menu'\"\n (click)=\"goTo(submenu.path, $event)\">\n <div *ngIf=\"!submenu.icon\" class=\"menu-dot\">•</div>\n <div *ngIf=\"submenu.icon\" class=\"menu-icon\">\n <fa-icon *ngIf=\"submenu.icon.filter !== undefined\" [icon]=\"submenu.icon\"></fa-icon>\n <img *ngIf=\"submenu.icon.filter === undefined\" [src]=\"submenu.icon\" />\n </div>\n <div *ngIf=\"submenu.label\" class=\"menu-caption\">\n <span>{{submenu.label | translate}}</span>\n </div>\n </div>\n </div>\n</h4>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {MenuItem} from '../shared/models/menu-item';\n\n@Component({\n selector: 'cauca-menu-vertical',\n templateUrl: './cauca-menu-vertical.component.html',\n styleUrls: ['./cauca-menu-vertical.component.scss'],\n standalone: false\n})\nexport class CaucaMenuVerticalComponent {\n @Output()\n public itemClick = new EventEmitter();\n @Input()\n public menuItems: MenuItem[] = [];\n\n public constructor(\n private router: Router,\n ) {\n this.router.events.subscribe((route: NavigationEnd) => {\n if (route instanceof NavigationEnd) {\n this.selectActiveRoute(route);\n }\n });\n }\n\n public goTo(path: string, e: any): void {\n this.router.navigate([path]);\n this.itemClick.emit();\n\n e.stopPropagation();\n }\n\n private selectActiveRoute(route: NavigationEnd): void {\n this.menuItems.forEach((menu: MenuItem) => {\n if (route.url) {\n menu.activated = (route.url === menu.path || (menu.childs.length && route.url.indexOf(menu.path) > -1));\n }\n\n menu.childs.forEach((subMenu: MenuItem) => {\n if (route.url) {\n subMenu.activated = (route.url === subMenu.path || route.urlAfterRedirects === subMenu.path);\n }\n });\n });\n }\n}\n","<div class=\"header\">\n <button mat-icon-button class=\"close\" (click)=\"hideOnMobile()\">\n <mat-icon>clear</mat-icon>\n </button>\n <ng-content select=\"[header]\"></ng-content>\n</div>\n<div class=\"content\">\n <ng-content select=\"[beforeMenu]\"></ng-content>\n <cauca-menu-vertical #menu [menuItems]=\"menuItems\" (itemClick)=\"onMenuItemClick()\"></cauca-menu-vertical>\n <ng-content select=\"[afterMenu]\"></ng-content>\n</div>\n<div class=\"footer\">\n <ng-content select=\"[footer]\"></ng-content>\n</div>\n<div *ngIf=\"version\" class=\"version\">\n <div class=\"double-arrow\" (click)=\"onToggleCollapse()\"></div>\n <span class=\"full\">{{'material.version' | translate}} {{version}}</span>\n <span class=\"abbr\">{{version}}</span>\n</div>\n","import { Component, ElementRef, HostListener, Input } from '@angular/core';\nimport { MenuItem } from '../shared/models/menu-item';\n\n@Component({\n selector: 'cauca-menu-sidebar',\n templateUrl: './cauca-menu-sidebar.component.html',\n styleUrls: ['./cauca-menu-sidebar.component.scss'],\n standalone: false\n})\nexport class CaucaMenuSidebarComponent {\n @Input()\n public menuItems: MenuItem[] = [];\n @Input()\n public version = '';\n\n private hostElement: HTMLDivElement;\n private keepMenuExpanded = false;\n\n public constructor(element: ElementRef) {\n this.hostElement = element.nativeElement as HTMLDivElement;\n this.hostElement.addEventListener('mouseover', (e: any) => this.onMouseOver(e));\n this.hostElement.addEventListener('mouseout', (e: any) => this.onMouseOut(e));\n\n this.setDisplayMenu();\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(_e: any): void {\n this.setDisplayMenu();\n }\n\n public onMenuItemClick(): void {\n if (window.innerWidth < 1000) {\n this.hideOnMobile();\n }\n }\n\n public hideOnMobile(): void {\n this.hostElement.classList.remove('mobile');\n this.hostElement.classList.add('hidden');\n }\n\n public showOnMobile(): void {\n this.hostElement.classList.remove('hidden');\n this.hostElement.classList.add('mobile');\n }\n\n public onToggleCollapse(): void {\n if (this.keepMenuExpanded) {\n this.onCollapseMenu();\n this.hostElement.classList.remove('keepExpanded');\n } else {\n this.onExpandedMenu();\n this.hostElement.classList.add('keepExpanded');\n }\n\n this.keepMenuExpanded = !this.keepMenuExpanded;\n localStorage.setItem('cauca-menu-status', this.keepMenuExpanded ? 'expanded' : 'collapsed');\n }\n\n private setDisplayMenu(): void {\n this.hostElement.className = '';\n\n if (window.innerWidth < 1000) {\n this.hostElement.classList.add('hidden');\n } else {\n if (localStorage.getItem('cauca-menu-status') === 'expanded') {\n this.keepMenuExpanded = true;\n this.hostElement.classList.add('keepExpanded');\n }\n\n this.hostElement.classList.add(this.keepMenuExpanded ? 'expanded' : 'collapsed');\n }\n }\n\n private onMouseOver(e: any): void {\n if (!this.keepMenuExpanded) {\n this.onExpandedMenu();\n }\n\n e.stopPropagation();\n }\n\n private onMouseOut(e: any): void {\n if (!this.keepMenuExpanded) {\n this.onCollapseMenu();\n }\n\n e.stopPropagation();\n }\n\n private onExpandedMenu(): void {\n if (window.innerWidth >= 1000) {\n this.hostElement.classList.remove('collapsed');\n this.hostElement.classList.add('expanded');\n }\n }\n\n private onCollapseMenu(): void {\n if (window.innerWidth >= 1000) {\n this.hostElement.classList.remove('expanded');\n this.hostElement.classList.add('collapsed');\n }\n }\n}\n","<div #container class=\"slideshow\">\n <div *ngFor=\"let url of images; let index = index;\" [@slideLeftRight]=\"getState(index)\">\n <img [src]=\"url\" />\n </div>\n</div>","import { Component, OnInit, ElementRef, Input, ViewChild } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'cauca-slideshow',\n templateUrl: './cauca-slideshow.component.html',\n styleUrls: ['./cauca-slideshow.component.scss'],\n animations: [\n trigger('slideUpDown', [\n state('in', style({ transform: 'translateY(0%)' })),\n state('out', style({ transform: 'translateY(-100%)' })),\n transition('in => out', [\n animate('500ms ease-in')\n ]),\n transition('out => in', [\n style({ transform: 'translateY(100%)' }),\n animate('500ms ease-in')\n ]),\n ]),\n trigger('slideLeftRight', [\n state('in', style({ transform: 'translateX(0%)' })),\n state('out', style({ transform: 'translateX(-100%)' })),\n transition('in => out', [\n animate('500ms ease-in')\n ]),\n transition('out => in', [\n style({ transform: 'translateX(100%)' }),\n animate('500ms ease-in')\n ]),\n ]),\n ],\n standalone: false\n})\nexport class CaucaSlideshowComponent implements OnInit {\n @ViewChild('container', { static: true })\n public container: ElementRef;\n @Input()\n public height = '150px';\n @Input()\n public autoPlay = true;\n\n private timer = null;\n private items = [];\n private states = [];\n private selectedIndex = 0;\n\n @Input()\n public set images(list: string[]) {\n this.items = list;\n this.restart();\n }\n public get images(): string[] {\n return this.items;\n }\n\n public ngOnInit(): void {\n this.container.nativeElement.style.height = this.height;\n this.container.nativeElement.style.width = '100%';\n }\n\n public getState(index: number): string {\n if (this.states[index]) {\n return this.states[index];\n }\n\n return (this.selectedIndex === index ? 'in' : 'out');\n }\n\n public restart(): void {\n if (this.timer) {\n window.clearInterval(this.timer);\n }\n if (this.images && this.images.length) {\n this.timer = window.setInterval(() => this.changed('next'), 5000);\n }\n }\n\n public next(): void {\n if (this.selectedIndex < this.items.length - 1) {\n this.selectedIndex++;\n } else {\n this.selectedIndex = 0;\n }\n }\n\n private changed(action: string): void {\n this.states[this.selectedIndex] = 'out';\n this[action]();\n this.states[this.selectedIndex] = 'in';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cauca-test-component-with-classic-input',\r\n imports: [],\r\n templateUrl: './test-component-with-classic-input.component.html',\r\n styleUrl: './test-component-with-classic-input.component.scss'\r\n})\r\nexport class TestComponentWithClassicInputComponent {\r\n @Input() public value: string;\r\n @Output() public valueChange = new EventEmitter<string>();\r\n\r\n public changeValue(value: string): void {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","<p>{{value}}</p>\r\n","import { Component, model } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cauca-test-component-with-model-signal',\r\n imports: [],\r\n templateUrl: './test-component-with-model-signal.component.html',\r\n styleUrl: './test-component-with-model-signal.component.scss'\r\n})\r\nexport class TestComponentWithModelSignalComponent {\r\n public value = model<string>();\r\n\r\n public changeValue(value: string): void {\r\n this.value.set(value);\r\n }\r\n}\r\n","<p>{{value()}}</p>\r\n","import { Component, input, output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cauca-test-component-with-signal-input',\r\n imports: [],\r\n templateUrl: './test-component-with-signal-input.component.html',\r\n styleUrl: './test-component-with-signal-input.component.scss'\r\n})\r\nexport class TestComponentWithSignalInputComponent {\r\n public value = input<string>();\r\n public valueChange = output<string>();\r\n\r\n public changeValue(value: string): void {\r\n this.valueChange.emit(value);\r\n }\r\n}\r\n","<p>{{value()}}</p>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { CaucaCoreForChildModule } from '@cauca-911/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { CaucaMaterialComponent } from './cauca-material.component';\nimport { CaucaInputFileComponent } from './cauca-input-file/cauca-input-file.component';\nimport { CaucaInputMultipleLangueComponent } from './cauca-input-multiple-langue/cauca-input-multiple-langue.component';\nimport { CaucaMenuSidebarComponent } from './cauca-menu-sidebar/cauca-menu-sidebar.component';\nimport { CaucaMenuVerticalComponent } from './cauca-menu-vertical/cauca-menu-vertical.component';\nimport { CaucaSimpleDialogComponent } from './cauca-simple-dialog/cauca-simple-dialog.component';\nimport { CaucaSlideshowComponent } from './cauca-slideshow/cauca-slideshow.component';\nimport { TestComponentWithClassicInputComponent } from './test-component-with-classic-input/test-component-with-classic-input.component';\nimport { TestComponentWithModelSignalComponent } from './test-component-with-model-signal/test-component-with-model-signal.component';\nimport { TestComponentWithSignalInputComponent } from './test-component-with-signal-input/test-component-with-signal-input.component';\n\n@NgModule({\n declarations: [\n CaucaMaterialComponent,\n CaucaInputFileComponent,\n CaucaInputMultipleLangueComponent,\n CaucaMenuSidebarComponent,\n CaucaMenuVerticalComponent,\n CaucaSimpleDialogComponent,\n CaucaSlideshowComponent,\n ],\n imports: [\n CommonModule,\n CaucaCoreForChildModule,\n FontAwesomeModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTabsModule,\n MatDialogModule,\n TestComponentWithClassicInputComponent,\n TestComponentWithModelSignalComponent,\n TestComponentWithSignalInputComponent,\n ],\n exports: [\n CaucaMaterialComponent,\n CaucaInputFileComponent,\n CaucaInputMultipleLangueComponent,\n CaucaMenuSidebarComponent,\n CaucaMenuVerticalComponent,\n CaucaSimpleDialogComponent,\n CaucaSlideshowComponent,\n TestComponentWithClassicInputComponent,\n TestComponentWithModelSignalComponent,\n TestComponentWithSignalInputComponent,\n ],\n})\nexport class CaucaMaterialModule { }\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'cauca-mobile-time-picker',\n imports: [\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule\n ],\n templateUrl: './mobile-time-picker.component.html',\n styleUrl: './mobile-time-picker.component.scss'\n})\nexport class MobileTimePickerComponent {\n @Input({required: true}) public value: number;\n @Input({ required: true }) public options: number[];\n\n @Output() public valueChange = new EventEmitter<number>();\n\n public valueUp(): void {\n const currentIndex = this.options.indexOf(this.value);\n let newValue = 0;\n if (currentIndex === this.options.length - 1) {\n newValue = this.options[0];\n } else {\n newValue = this.options[currentIndex + 1];\n }\n\n this.valueChange.emit(newValue);\n }\n\n public valueDown(): void {\n const currentIndex = this.options.indexOf(this.value);\n let newValue = 0;\n if (currentIndex === 0) {\n newValue = this.options[this.options.length - 1];\n } else {\n newValue = this.options[currentIndex - 1];\n }\n\n this.valueChange.emit(newValue);\n }\n}\n","<button mat-icon-button (click)=\"valueUp()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n</button>\n<div>\n{{(value < 10 ? '0' : '' ) + value}}\n</div>\n<button mat-icon-button (click)=\"valueDown()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n</button>\n","<mat-list [disabled]=\"disabled?.all\">\n @for (option of options; track option) {\n <mat-list-item [activated]=\"value === option\" [disabled]=\"disabled?.someOptions.includes(option)\"\n (click)=\"valueChange.emit(option)\">{{(option < 10 ? '0' : '' ) + option}}</mat-list-item>\n }\n</mat-list>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n selector: 'cauca-desktop-time-picker',\n imports: [\n MatListModule\n ],\n templateUrl: './desktop-time-picker.component.html',\n styleUrl: './desktop-time-picker.component.scss'\n})\nexport class DesktopTimePickerComponent {\n @Input() public options: number[] = [];\n @Input() public value: number;\n @Input() public disabled: DesktopTimePickerComponentDisabled;\n\n @Output() public valueChange = new EventEmitter<number>();\n}\n\nexport interface DesktopTimePickerComponentDisabled {\n all: boolean;\n someOptions: number[];\n}","<div mat-dialog-content>\n <div [ngClass]=\"showSeconds ? 'show-seconds' : 'hide-seconds'\" class=\"date-time-picker\">\n <div class=\"calendar\">\n <mat-calendar\n [minDate]=\"minimumDate\"\n [maxDate]=\"maximumDate\"\n [selected]=\"selectedDate\"\n (selectedChange)=\"dateChanged($event)\"\n ></mat-calendar>\n </div>\n\n @if (showTime()) {\n <div class=\"hours\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.hours, someOptions: disabled.someHours}\" (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\"/>\n </div>\n <div class=\"hours\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\" />\n </div>\n \n <div class=\"hour-and-minute-separator\" *ngIf=\"showMobileUi\">:</div>\n \n <div class=\"minutes\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.minutes, someOptions: disabled.someMinutes}\" (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\"/>\n </div>\n <div class=\"minutes\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\" />\n </div>\n \n <div class=\"minute-and-second-separator\" *ngIf=\"showSeconds && showMobileUi\">:</div>\n <div class=\"seconds\" *ngIf=\"showSeconds && !showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.seconds, someOptions: disabled.someSeconds}\" (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\"/>\n </div>\n <div class=\"seconds\" *ngIf=\"showSeconds && showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\" />\n </div>\n }\n </div>\n</div>\n\n<div mat-dialog-actions align=\"end\">\n <button mat-stroked-button (click)=\"clear()\" *ngIf=\"showClearButton\">\n <mat-icon *ngIf=\"showButtonIcons\">clear</mat-icon>\n {{'material.clear' | translate}}\n </button>\n <button color=\"primary\" mat-stroked-button (click)=\"cancel()\">\n <mat-icon *ngIf=\"showButtonIcons\">cancel</mat-icon>\n {{'material.cancel' | translate}}\n </button>\n <button color=\"primary\" mat-raised-button cdkFocusInitial (click)=\"confirm()\">\n <mat-icon *ngIf=\"showButtonIcons\">check</mat-icon>\n {{'material.ok' | translate}}\n </button>\n</div>","import { Component, HostListener, Inject, OnInit, signal, WritableSignal } from '@angular/core';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { DialogDateTimePickerOptions, DialogDateTimePickerDataDisabled, DialogDateTimePickerDataStep } from '../../models/dialog-date-time-picker-data';\nimport { CaucaCoreForChildModule } from '@cauca-911/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { MobileTimePickerComponent } from '../mobile-time-picker/mobile-time-picker.component';\nimport { DesktopTimePickerComponent } from '../desktop-time-picker/desktop-time-picker.component';\n\n@Component({\n selector: 'cauca-dialog-date-time-picker',\n imports: [\n CommonModule,\n CaucaCoreForChildModule,\n MatButtonModule,\n MatDatepickerModule,\n MatIconModule,\n MatListModule,\n MobileTimePickerComponent,\n DesktopTimePickerComponent\n ],\n providers: [provideNativeDateAdapter()],\n templateUrl: './dialog-date-time-picker.component.html',\n styleUrl: './dialog-date-time-picker.component.scss'\n})\nexport class DialogDateTimePickerComponent implements OnInit {\n public selectedHour = 0;\n public selectedMinute = 0;\n public selectedSecond = 0;\n public initialDate: Date = null;\n public selectedDate: Date = null;\n public minimumDate = new Date();\n public maximumDate = new Date();\n public showSeconds: boolean = false;\n public showClearButton: boolean = true;\n public showButtonIcons: boolean = true;\n\n public hours = [...Array(24).keys()];\n public minutes = [...Array(60).keys()];\n public seconds = [...Array(60).keys()];\n public showMobileUi: boolean = false;\n\n public showTime: WritableSignal<boolean> = signal(true);\n\n public disabled: DialogDateTimePickerDataDisabled = {\n hours: true,\n someHours: [],\n minutes: true,\n someMinutes: [],\n seconds: true,\n someSeconds: [],\n };\n\n private step: DialogDateTimePickerDataStep = {\n hours: 1,\n minutes: 1,\n seconds: 1,\n };\n\n public constructor(\n public dialogRef: MatDialogRef<DialogDateTimePickerComponent>,\n @Inject(MAT_DIALOG_DATA) public options: DialogDateTimePickerOptions\n ) {\n this.step = options.step || this.step;\n this.showSeconds = options.showSeconds;\n this.showButtonIcons = options.showButtonIcons ?? this.showButtonIcons;\n this.showClearButton = options.showClearButton ?? this.showClearButton;\n this.showTime.set(options.showTime ?? true);\n this.setListHoursMinutes();\n this.initialEachComponentValue(options);\n }\n\n public ngOnInit(): void {\n this.onWindowWithChange(window.innerWidth);\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event) {\n this.onWindowWithChange(event.target.innerWidth);\n }\n\n public dateChanged(date: Date): void {\n if (date) {\n this.selectedDate = date;\n this.selectedDate.setHours(this.selectedHour);\n this.selectedDate.setMinutes(this.selectedMinute);\n this.selectedDate.setSeconds(this.selectedSecond);\n this.disabled.hours = false;\n this.disabled.someHours = this.hours.filter(hour => this.hourOfSelectedDateIsDisabled(hour));\n } else {\n this.selectedDate = null;\n this.disabled.hours = true;\n }\n }\n\n public hourChanged(hour: number): void {\n if (this.disabled.hours || this.disabled.someHours.includes(hour)) return;\n\n this.selectedHour = hour;\n this.selectedDate.setHours(hour);\n this.disabled.minutes = false;\n this.disabled.someMinutes = this.minutes.filter(minute => this.minuteOfSelectedDateIsDisabled(minute));\n }\n\n public minuteChanged(minute: number): void {\n if (this.disabled.minutes || this.disabled.someMinutes.includes(minute)) return;\n\n this.selectedMinute = minute;\n this.selectedDate.setMinutes(minute);\n this.disabled.seconds = false;\n this.disabled.someSeconds = this.seconds.filter(second => this.secondOfSelectedDateIsDisabled(second));\n }\n\n public secondChanged(second: number): void {\n if (this.disabled.seconds || this.disabled.someSeconds.includes(second)) return;\n\n this.selectedSecond = second;\n this.selectedDate.setSeconds(second);\n }\n\n public clear(): void {\n this.dialogRef.close({\n value: null\n });\n }\n\n public cancel(): void {\n this.dialogRef.close({\n value: this.initialDate\n });\n }\n\n public confirm(): void {\n this.dialogRef.close({\n value: this.selectedDate\n });\n }\n\n private onWindowWithChange(width: number): void {\n this.showMobileUi = width && width <= 555;\n }\n\n private hourOfSelectedDateIsDisabled(hour: number): boolean {\n if (this.selectedDateIsTheMinimumDate()) {\n return hour < this.minimumDate.getHours();\n } else if (this.selectedDateIsTheMaximumDate()) {\n return hour > this.maximumDate.getHours();\n }\n\n return false;\n }\n\n private minuteOfSelectedDateIsDisabled(minute: number): boolean {\n if (\n this.selectedDateIsTheMinimumDate() &&\n this.selectedDate.getHours() === this.minimumDate.getHours()\n ) {\n return minute < this.minimumDate.getMinutes();\n } else if (\n this.selectedDateIsTheMaximumDate() &&\n this.selectedDate.getHours() === this.maximumDate.getHours()\n ) {\n return minute > this.maximumDate.getMinutes();\n }\n\n return false;\n }\n\n private secondOfSelectedDateIsDisabled(second: number): boolean {\n if (\n this.selectedDateIsTheMinimumDate() &&\n this.selectedDate.getHours() === this.minimumDate.getHours() &&\n this.selectedDate.getMinutes() === this.minimumDate.getMinutes()\n ) {\n return second < this.minimumDate.getSeconds();\n } else if (\n this.selectedDateIsTheMaximumDate() &&\n this.selectedDate.getMinutes() === this.maximumDate.getMinutes()\n ) {\n return second > this.maximumDate.getSeconds();\n }\n\n return false;\n }\n\n private initialEachComponentValue(options: DialogDateTimePickerOptions): void {\n this.initialDate = options.selectedDate ? new Date(options.selectedDate) : null;\n this.minimumDate = options.minimumDate ? new Date(options.minimumDate) : null;\n this.maximumDate = options.maximumDate ? new Date(options.maximumDate) : null;\n this.selectedDate = options.selectedDate ? new Date(options.selectedDate) : new Date();\n this.dateChanged(options.selectedDate ? new Date(options.selectedDate) : null);\n this.hourChanged(options.selectedDate ? new Date(options.selectedDate).getHours() : 0);\n this.minuteChanged(options.selectedDate ? new Date(options.selectedDate).getMinutes() : 0);\n this.secondChanged(options.selectedDate ? new Date(options.selectedDate).getSeconds() : 0);\n }\n\n private selectedDateIsTheMinimumDate(): boolean {\n return (\n this.minimumDate &&\n this.selectedDate.getFullYear() === this.minimumDate.getFullYear() &&\n this.selectedDate.getMonth() === this.minimumDate.getMonth() &&\n this.selectedDate.getDate() === this.minimumDate.getDate()\n );\n }\n\n private selectedDateIsTheMaximumDate(): boolean {\n return (\n this.maximumDate &&\n this.selectedDate.getFullYear() === this.maximumDate.getFullYear() &&\n this.selectedDate.getMonth() === this.maximumDate.getMonth() &&\n this.selectedDate.getDate() === this.maximumDate.getDate()\n );\n }\n\n private setListHoursMinutes(): void {\n this.hours = this.hours.filter(hour => hour % this.step.hours === 0);\n this.minutes = this.minutes.filter(minute => minute % this.step.minutes === 0);\n this.seconds = this.seconds.filter(seconde => seconde % this.step.seconds === 0);\n }\n}\n","<mat-form-field [subscriptSizing]=\"subscriptSizing\">\n @if (label) {\n <mat-label>{{ translateLabel ? (label | translate) : label }}{{isRequired ? '*' : ''}}</mat-label>\n }\n <input (focusout)=\"onTouched()\" matInput [value]=\"stringDate\" readonly=\"readonly\">\n <button matSuffix mat-icon-button (click)=\"showDialog()\">\n <mat-icon>calendar_month</mat-icon>\n </button>\n</mat-form-field>","import { Component, ElementRef, EventEmitter, forwardRef, inject, Injector, Input, OnInit, Output } from '@angular/core';\nimport { DialogPosition, MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { DialogDateTimePickerComponent } from './components/dialog-date-time-picker/dialog-date-time-picker.component';\nimport { DialogDateTimePickerOptions, DialogDateTimePickerValue } from './models/dialog-date-time-picker-data';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DatePipe } from '@angular/common';\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, FormControlName, FormGroup, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { MatFormFieldModule, SubscriptSizing } from '@angular/material/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'cauca-date-time-picker',\n imports: [\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule\n ],\n providers: [\n DatePipe,\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CaucaDateTimePickerComponent),\n }\n ],\n templateUrl: './cauca-date-time-picker.component.html',\n styleUrl: './cauca-date-time-picker.component.scss'\n})\nexport class CaucaDateTimePickerComponent implements ControlValueAccessor, OnInit {\n @Input() public subscriptSizing: SubscriptSizing = 'fixed';\n @Input() public showTime: boolean = true;\n @Input() public label: string = '';\n @Input() public translateLabel: boolean = true;\n @Input() public stepHours = 1;\n @Input() public stepMinutes = 1;\n @Input() public stepSecondes = 1;\n @Input() public minimumDate: Date = null;\n @Input() public maximumDate: Date = null;\n @Input() public showSeconds: boolean = false;\n @Input() public showFormat: string = 'yyyy/MM/dd, HH:mm';\n @Input() public showClearButton: boolean = true;\n @Input() public showButtonIcons: boolean = true;\n @Output() public selectedChange = new EventEmitter<Date>();\n\n public control: AbstractControl;\n public stringDate: string = '';\n \n private injector = inject(Injector);\n private selectedDate: Date;\n\n public constructor(\n private elementRef: ElementRef,\n private dialog: MatDialog,\n private datePipe: DatePipe,\n ) {\n }\n \n @Input()\n public set value(value: Date) {\n if (value) {\n this.stringDate = this.stringifyDate(value);\n this.selectedDate = value;\n }\n }\n \n public get isRequired(): boolean {\n return Boolean(this.control?.hasValidator(Validators.required))\n }\n\n public ngOnInit(): void {\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n if (ngControl instanceof FormControlName) {\n const container = this.injector.get(ControlContainer).control as FormGroup;\n this.control = container.controls[ngControl.name] as FormControl;\n } else {\n this.control = new FormControl();\n }\n }\n\n public showDialog(): void {\n const dialogRef = this.dialog.open(DialogDateTimePickerComponent, {\n position: this.getDialogPosition(),\n data: this.getDateTimePickerOptions(),\n maxWidth: '100vw',\n });\n\n dialogRef.afterClosed().subscribe((data: DialogDateTimePickerValue) => {\n if (data) {\n this.stringDate = this.stringifyDate(data.value);\n this.selectedDate = data.value;\n this.selectedChange.emit(data.value);\n this.onChange(data.value);\n }\n });\n }\n\n public writeValue(date: Date): void {\n this.value = date;\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public onChange = (value: Date): Date => value;\n\n public onTouched = (): void => {/* This method needs to be empty */ };\n\n private getDateTimePickerOptions(): DialogDateTimePickerOptions {\n return {\n selectedDate: this.selectedDate,\n minimumDate: this.minimumDate,\n maximumDate: this.maximumDate,\n showSeconds: this.showSeconds,\n showClearButton: this.showClearButton,\n showButtonIcons: this.showButtonIcons,\n showTime: this.showTime,\n step: {\n hours: this.stepHours,\n minutes: this.stepMinutes,\n seconds: this.stepSecondes,\n }\n };\n }\n private stringifyDate(date: Date): string {\n return this.datePipe.transform(date, this.showFormat);\n }\n\n private getDialogPosition(): DialogPosition {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const top = rect.y + rect.height - 22;\n const bottom = window.innerHeight - rect.y;\n const minimumDialogHeight = 400;\n const minimumScreenSize = 800;\n\n if (window.innerHeight < minimumScreenSize || window.innerWidth < minimumScreenSize) {\n return null;\n } else if (window.innerHeight > (top + minimumDialogHeight)) {\n return {\n left: `${rect.x}px`,\n top: `${top}px`,\n };\n }\n\n return {\n left: `${rect.x}px`,\n bottom: `${bottom}px`,\n };\n }\n}\n","export class MenuItem {\n public activated: boolean;\n public childs: MenuItem[] = [];\n\n public constructor(\n public label: string,\n public path: string,\n public icon: string | string[] = '',\n ) {\n }\n}\n","/*\n * Public API Surface of cauca-material\n */\n\nexport * from './lib/cauca-material.service';\nexport * from './lib/cauca-material.component';\nexport * from './lib/cauca-material.module';\nexport * from './lib/cauca-date-time-picker/cauca-date-time-picker.component';\nexport * from './lib/cauca-input-file/cauca-input-file.component';\nexport * from './lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component';\nexport * from './lib/cauca-menu-sidebar/cauca-menu-sidebar.component';\nexport * from './lib/cauca-menu-vertical/cauca-menu-vertical.component';\nexport * from './lib/cauca-simple-dialog/cauca-simple-dialog.component';\nexport * from './lib/cauca-slideshow/cauca-slideshow.component';\nexport * from './lib/test-component-with-classic-input/test-component-with-classic-input.component';\nexport * from './lib/test-component-with-model-signal/test-component-with-model-signal.component';\nexport * from './lib/test-component-with-signal-input/test-component-with-signal-input.component';\n\nexport { MenuItem } from './lib/shared/models/menu-item';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i6"],"mappings":"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