chrv-components 1.2.28 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/chrv-components-1.3.1.tgz +0 -0
  2. package/{esm2020 → esm2022}/chrv-components.mjs +4 -4
  3. package/esm2022/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -0
  4. package/esm2022/lib/chr-button/chr-button.component.mjs +55 -0
  5. package/esm2022/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
  6. package/esm2022/lib/chr-delete-modal/chr-delete-modal.component.mjs +30 -0
  7. package/esm2022/lib/chr-form/chr-form.component.mjs +143 -0
  8. package/esm2022/lib/chr-form/chr-validators/decimal-validator.mjs +59 -0
  9. package/esm2022/lib/chr-form/chr-validators/max-date-validator.mjs +55 -0
  10. package/esm2022/lib/chr-form/chr-validators/type-validator.mjs +53 -0
  11. package/esm2022/lib/chr-paginator/chr-paginator.component.mjs +80 -0
  12. package/esm2022/lib/chr-search-select/chr-search-select.component.mjs +145 -0
  13. package/esm2022/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
  14. package/esm2022/lib/chr-separator/chr-separator.component.mjs +11 -0
  15. package/esm2022/lib/chr-table/chr-table.component.mjs +93 -0
  16. package/esm2022/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +51 -0
  17. package/{esm2020 → esm2022}/lib/services/dialog.service.mjs +29 -29
  18. package/{esm2020 → esm2022}/public-api.mjs +21 -21
  19. package/fesm2022/chrv-components.mjs +842 -0
  20. package/fesm2022/chrv-components.mjs.map +1 -0
  21. package/index.d.ts +5 -5
  22. package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -15
  23. package/lib/chr-button/chr-button.component.d.ts +19 -19
  24. package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -13
  25. package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -11
  26. package/lib/chr-form/chr-form.component.d.ts +57 -57
  27. package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -10
  28. package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -10
  29. package/lib/chr-form/chr-validators/type-validator.d.ts +10 -10
  30. package/lib/chr-paginator/chr-paginator.component.d.ts +27 -27
  31. package/lib/chr-search-select/chr-search-select.component.d.ts +44 -44
  32. package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -14
  33. package/lib/chr-separator/chr-separator.component.d.ts +5 -5
  34. package/lib/chr-table/chr-table.component.d.ts +58 -58
  35. package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +17 -17
  36. package/lib/services/dialog.service.d.ts +10 -10
  37. package/package.json +11 -16
  38. package/public-api.d.ts +17 -17
  39. package/chrv-components-1.2.28.tgz +0 -0
  40. package/esm2020/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +0 -22
  41. package/esm2020/lib/chr-button/chr-button.component.mjs +0 -51
  42. package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +0 -37
  43. package/esm2020/lib/chr-components.module.mjs +0 -126
  44. package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +0 -22
  45. package/esm2020/lib/chr-form/chr-form.component.mjs +0 -132
  46. package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +0 -58
  47. package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +0 -54
  48. package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +0 -52
  49. package/esm2020/lib/chr-paginator/chr-paginator.component.mjs +0 -79
  50. package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +0 -136
  51. package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +0 -29
  52. package/esm2020/lib/chr-separator/chr-separator.component.mjs +0 -11
  53. package/esm2020/lib/chr-table/chr-table.component.mjs +0 -80
  54. package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +0 -51
  55. package/fesm2015/chrv-components.mjs +0 -911
  56. package/fesm2015/chrv-components.mjs.map +0 -1
  57. package/fesm2020/chrv-components.mjs +0 -903
  58. package/fesm2020/chrv-components.mjs.map +0 -1
  59. package/lib/chr-components.module.d.ts +0 -30
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.html","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.ts","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.html","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.ts","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-validators/type-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/decimal-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/max-date-validator.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.html","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.html","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.ts","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.html","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.html","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.ts","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.html","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.ts","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.html","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.html","../../../projects/chrv-components/src/lib/services/dialog.service.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\nimport { NgFor } from '@angular/common';\n\nexport interface Breadcrumb {\n display: string;\n link?: string;\n callback?: Function;\n}\n\n@Component({\n selector: 'app-chr-breadcrumb',\n templateUrl: './chr-breadcrumb.component.html',\n styleUrls: ['./chr-breadcrumb.component.scss'],\n standalone: true,\n imports: [NgFor, MatButton],\n})\nexport class BreadcrumbComponent {\n @Input() crumbs?: Breadcrumb[];\n\n constructor(public router: Router) {}\n\n navigateTo = (uri: string, data?: any) => {\n this.router.navigate([uri], { state: data });\n };\n}\n","<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n <div *ngFor=\"let crumb of crumbs\" class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\n standalone: true,\n imports: [MatTooltipModule, MatIconModule, MatButtonModule, CommonModule],\n})\nexport class ChrButtonComponent {\n @Input() display: string = '';\n @Input() icon: string = '';\n @Input() click?: Function;\n @Input() color: 'primary' | 'accent' | 'warn' | 'none' = 'none';\n @Input() predicate?: boolean = true;\n @Input() type: 'responsive' | 'table' | 'full' | 'fixed' | 'none' = 'none';\n @Input() href?: string;\n @Input() target?: '_blank' | '_parent' | '_self' | '_top';\n @Input() disabled: boolean = false;\n @Input() tooltip?: string;\n @Input() tooltipPosition?:\n | 'above'\n | 'below'\n | 'left'\n | 'right'\n | 'before'\n | 'after';\n\n constructor() {}\n\n setDisabled = (is: boolean) => {\n this.disabled = is;\n };\n\n doClick = () => {\n this.click?.();\n };\n}\n","<div [ngClass]=\"type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\" [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 !w-36' : ''\"\n [ngClass]=\"type == 'responsive' ? 'h-14 grid grid-cols-1 w-full sm:!w-36': ''\">\n <a mat-button mat-flat-button *ngIf=\"predicate\" [disabled]=\"disabled\" class=\"w-full\" color=\"{{ color }}\"\n (click)=\"click?.()\" [attr.href]=\"href && href\" [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\"\n [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\n-->","import { Component } from '@angular/core';\nimport {\n MatDialogRef,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose,\n} from '@angular/material/dialog';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n ChrButtonComponent,\n MatDialogClose,\n MatTooltip,\n ],\n})\nexport class ChrDeleteModalComponent {\n public valid: boolean = false;\n\n constructor(public dialogRef: MatDialogRef<ChrDeleteModalComponent>) {}\n\n ngOnInit() {}\n\n public close = () => {\n this.dialogRef.close(true);\n };\n}\n","<div class=\"dark:bg-slate-800 w-full overflow-auto overflow-x-hidden\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"mat-typography dark:!text-gray-400\">\n Attention:\n <br>\n <br>\n La suppression d'un élément est irréversible.\n <br>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <br>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <br>\n <br>\n En effectuant cette action et cliquant sur \"Confirmer\" vous certifiez que vous avez pris connaissance des\n conséquences possibles et souhaitez tout de même poursuivre.\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"w-full flex flex-row justify-between\">\n <app-chr-button class=\"w-36\" display=\"Annuler\" color=\"accent\" mat-dialog-close></app-chr-button>\n <app-chr-button class=\"w-36\" display=\"Confirmer\" color=\"warn\" [click]=\"close\"\n [matTooltip]=\"'Attention: cette action est irréversible !'\" matTooltipPosition=\"above\"></app-chr-button>\n </div>\n </mat-dialog-actions>\n</div>","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-type]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: TypeValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class TypeValidatorDirective implements Validator {\r\n @Input() type?: string;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.type ? type(this.type)(control) : null;\r\n }\r\n}\r\n\r\nexport function type(type: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const isType = typeof value == type;\r\n\r\n return !isType\r\n ? ({\r\n type: true,\r\n requiredType: type,\r\n actualType: typeof value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-decimal]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DecimalValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class DecimalValidatorDirective implements Validator {\r\n @Input() amount?: number;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.amount ? decimal(this.amount)(control) : null;\r\n }\r\n}\r\n\r\nexport function decimal(amount: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n let isTooLong = false;\r\n\r\n const str = `${value}`;\r\n isTooLong =\r\n str.indexOf(',') != -1\r\n ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount\r\n : str.indexOf('.') != -1\r\n ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount\r\n : false;\r\n\r\n return isTooLong\r\n ? ({\r\n decimal: true,\r\n max: amount,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-max-date]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxDateValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class MaxDateValidatorDirective implements Validator {\r\n @Input() date?: Date;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.date ? maxDate(this.date)(control) : null;\r\n }\r\n}\r\n\r\nexport function maxDate(date: Date): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const maxDate = moment(date);\r\n const inputDate = moment(value);\r\n\r\n return !(inputDate.isValid() && inputDate.isBefore(maxDate))\r\n ? ({\r\n maxdate: true,\r\n max: maxDate.toDate(),\r\n actual: value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport {\n MatAutocomplete,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n Observable,\n startWith,\n map,\n of,\n combineLatest,\n combineLatestAll,\n} from 'rxjs';\nimport { MatOption } from '@angular/material/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\nexport interface IInputSearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\n@Component({\n selector: 'app-chr-search-select',\n templateUrl: './chr-search-select.component.html',\n styleUrls: ['./chr-search-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: ChrSearchSelectComponent,\n },\n ],\n standalone: true,\n imports: [\n NgIf,\n ReactiveFormsModule,\n MatAutocompleteTrigger,\n MatTooltip,\n MatAutocomplete,\n NgFor,\n MatOption,\n AsyncPipe,\n ],\n})\nexport class ChrSearchSelectComponent implements ControlValueAccessor {\n public predicate: boolean = true;\n\n public searchSelect: FormControl = new FormControl();\n public filteredModelOptions?: Observable<any>;\n\n public onTouched: any = () => {};\n\n @Input() placeholder?: string;\n @Input() data: any[] | null = [];\n @Input() display?: Function;\n @Input() disabled: boolean = false;\n @Input() model: any | null = null;\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n @Output() keyup: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n\n @Input() filters?: IInputSearchFilter[];\n public filterIndex: number = 0;\n\n ngOnInit() {\n this.registerFilters();\n this.registerAutoComplete();\n }\n\n getModelDisplay(model: any) {\n return this.display?.(model);\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n\n writeValue(obj: any): void {\n this.searchSelect.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.searchSelect.valueChanges.subscribe((value) => {\n this.checkNull(value);\n fn(value);\n });\n }\n\n checkNull(value: any | null) {\n if (typeof value == 'string')\n if (value == '' || value.trim() == '') this.setNull;\n if (value == null || value == '') {\n this.setNull();\n }\n }\n\n setNull() {\n this.emit(null);\n this.model = null;\n }\n\n registerOnTouched(fn: any): void {\n this.searchSelect.markAsTouched = fn;\n }\n\n registerFilters = () => {\n this.filteredModelOptions = this.searchSelect.valueChanges.pipe(\n startWith(''),\n map((value) => this._filterModel(value! || -1)),\n map((values) => {\n return this.filters && this.filters[this.filterIndex].callback\n ? values.filter((r) => this.filters![this.filterIndex].callback!(r))\n : values;\n })\n );\n };\n\n registerAutoComplete = () => {\n //If there is only one value left,\n this.filteredModelOptions?.subscribe((values) => {\n if (values.length == 1) {\n this.emit(values[0]);\n }\n });\n };\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n isDisabled ? this.searchSelect.disable() : this.searchSelect.enable();\n }\n\n increment = () => {\n this.writeValue('');\n const modulo = this.filters ? this.filters.length : 1;\n this.filterIndex = (this.filterIndex + 1) % modulo;\n };\n\n getValue = () => {\n return this.searchSelect.value;\n };\n\n void = () => {};\n\n private _filterModel(value: number | string): any[] {\n return typeof value == 'string'\n ? this._doFilterModelString(`${value}`)\n : this._doFilterModelInt(value);\n }\n\n private _doFilterModelInt = (id: number) => {\n const tmp = this.data?.find((r) => r.id == id);\n return tmp ? tmp : [];\n };\n\n private _doFilterModelString(input: string) {\n return this.data?.filter((r) => this._filterValues(r, input));\n }\n\n private _filterValues(value: any, input: string) {\n return `${this.getModelDisplay(value)}`\n .toLowerCase()\n .includes(input.toLowerCase());\n }\n}\n","<div *ngIf=\"predicate\" class=\"w-full dark:bg-slate-600 rounded-lg relative\">\n <div class=\"w-full relative\">\n <input #input type=\"text\" matInput [formControl]=\"searchSelect\" [(ngModel)]=\"model\"\n class=\"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"\n placeholder=\"{{ placeholder }}\" required (keyup)=\"keyup.emit($event)\" [matAutocomplete]=\"auto\" />\n <span *ngIf=\"filters\" [matTooltip]=\"filters[filterIndex].tooltip || ''\" matTooltipPosition=\"above\"\n class=\"absolute inner-button cursor-pointer top-[1px] right-[1.5px] h-[calc(100%_-_2px)] text-gray-900 dark:text-gray-400 px-1 border-l border-gray-300 rounded-r-md text-end opacity-100 bg-gray-50 dark:bg-gray-700 flex justify-center align-middle items-center\"\n (click)=\"filters ? increment() : void\">{{ filters[filterIndex].display }}\n </span>\n </div>\n\n <mat-autocomplete class=\"dark:!bg-slate-600 dark:!text-white rounded-lg\" #auto=\"matAutocomplete\" id=\"auto\"\n [displayWith]=\"getModelDisplay.bind(this)\" (optionSelected)=\"emit($event.option.value)\">\n <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n *ngFor=\"let model of filteredModelOptions | async\" [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n </mat-autocomplete>\n</div>","import { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn, ReactiveFormsModule } from '@angular/forms';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { decimal } from './chr-validators/decimal-validator';\nimport { maxDate } from './chr-validators/max-date-validator';\nimport { MatError } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ChrSearchSelectComponent } from '../chr-search-select/chr-search-select.component';\nimport { NgFor, NgIf, NgClass, DatePipe } from '@angular/common';\n\nexport interface ISearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\nexport interface IControlValidation {\n rule: string;\n value?: any;\n display?: string;\n}\n\nexport interface IControl {\n label?: string;\n name: string;\n span?: string;\n placeholder?: any;\n width?: 'col' | 'row';\n type:\n | 'text'\n | 'password'\n | 'textArea'\n | 'number'\n | 'date'\n | 'searchSelect'\n | 'select';\n value?: any;\n data?: any[] | null;\n icon?: string;\n iconCallback?: Function;\n iconCallbackDisabled?: boolean;\n iconTooltip?: string;\n fn?: Function;\n filters?: ISearchFilter[];\n validations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n title?: string;\n controls: IControl[];\n}\n@Component({\n selector: 'app-chr-form',\n templateUrl: './chr-form.component.html',\n styleUrls: ['./chr-form.component.scss'],\n standalone: true,\n imports: [\n ReactiveFormsModule,\n NgFor,\n NgIf,\n NgClass,\n ChrSearchSelectComponent,\n MatTooltip,\n MatIcon,\n MatError,\n DatePipe,\n ],\n})\nexport class ChrFormComponent {\n @Input() sections: IFormSection[] = [];\n @Input() valid: boolean = false;\n @Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Input() model: any;\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean = false;\n\n @Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n public form: FormGroup;\n constructor(private builder: FormBuilder) {\n this.form = builder.group({});\n }\n\n ngOnInit(): void {\n this._initValidators();\n this.form.valueChanges.subscribe((res) => {\n this.valid = this.form.valid;\n this.validChange.emit(this.form.valid);\n this.valuesChange.emit(res);\n });\n }\n\n value = (input?: string) => {\n if (input) return this.form.controls[input]?.value;\n return this.form.value;\n };\n\n setValue = (input: string, value: any) => {\n if (input) this.form.controls[input]?.setValue(value);\n };\n\n isValid = (input?: string) => {\n if (input) return this.form.controls[input]?.valid;\n return this.valid;\n };\n\n isControlRequired = (control: IControl) => {\n return control.validations?.find((v) => v.rule.toLowerCase() == 'required');\n };\n\n patchValue = (key: string, value: any) => {\n this.form.patchValue({ [key]: value });\n };\n\n reset = () => {\n this.form.reset();\n };\n\n private _initValidators() {\n for (const section of this.sections) {\n for (const input of section.controls) {\n if (input.type == 'searchSelect' && !input.fn)\n throw new Error(\n \"An input of type 'searchSelect' needs a display function !\"\n );\n const control = new FormControl(\n input.value,\n this._getValidators(input.validations)\n );\n this.form.addControl(input.name, control);\n }\n }\n }\n\n private _getValidators = (validations?: IControlValidation[]) => {\n const validators: ValidatorFn[] = [];\n if (!validations) return validators;\n //Switch case breaks the mobile app so we'll do if statements\n for (const validation of validations) {\n const rule = validation.rule.toLocaleLowerCase();\n if (rule == 'min') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.min(validation.value));\n }\n if (rule == 'max') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.max(validation.value));\n }\n if (rule == 'required') {\n validation.display = 'Ce champs est requis !';\n validators.push(Validators.required);\n }\n if (rule == 'email') {\n validation.display = \"Cette adresse email n'est pas valide !\";\n validators.push(Validators.email);\n }\n if (rule == 'minlength') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.minLength(validation.value));\n }\n if (rule == 'maxlength') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.maxLength(validation.value));\n }\n if (rule == 'type') {\n validation.display = \"Cette valeur n'est pas valide !\";\n validators.push(type(validation.value));\n }\n if (rule == 'decimal') {\n validation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n validators.push(decimal(validation.value));\n }\n if (rule == 'maxdate') {\n validation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n validators.push(maxDate(validation.value));\n }\n }\n return validators;\n };\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n <div *ngFor=\"let section of sections; let index = index\">\n <h2 *ngIf=\"section.title\" class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n <div *ngFor=\"let control of section.controls; let index = index\" class=\"relative\"\n [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n <label *ngIf=\"control.label\"\n class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n <span class=\"text-red-500\" *ngIf=\"isControlRequired(control)\">*</span>\n :\n </label>\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--TEXT-->\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'text'\" type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n <!--PASSWORD-->\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'password'\" type=\"password\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n\n <!--TEXT AREA-->\n <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'textArea'\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\n class=\"h-11 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"></textarea>\n <!--NUMBER-->\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'number'\" type=\"number\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n <!--DATE-->\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-200 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'date'\" type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [ngModel]=\"\n control.value\n ? (control.value | date : 'yyyy-MM-dd')\n : (model && model[control.name] | date : 'yyyy-MM-dd')\n \" (ngModelChange)=\"\n control.value\n ? (control.value = $event)\n : (model[control.name] = $event)\n \"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n <!--SearchSelect-->\n <app-chr-search-select class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? '[&_input]:!bg-red-100 dark:[&_input]:!bg-red-800':''\"\n *ngIf=\"control.type == 'searchSelect'\" id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\"\n [display]=\"control.fn!\" [placeholder]=\"control.placeholder\" [(model)]=\"\n control.value ? control.value : model && model[control.name]\n \" [filters]=\"control.filters\" [formControlName]=\"control.name\">\n </app-chr-search-select>\n <span *ngIf=\"control.icon\"\n [ngClass]=\"control.iconCallbackDisabled ? 'text-gray-400 dark:text-gray-500':'text-gray-900 dark:text-white'\"\n class=\"absolute p-2.5 bottom-0 right-0\" [matTooltip]=\"control.iconTooltip || ''\"\n matTooltipPosition=\"above\"\n (click)=\"!control.iconCallbackDisabled && control.iconCallback?.(form.controls[control.name].value)\"><mat-icon\n class=\"flex justify-center align-middle items-center content-center text-lg\">{{control.icon}}</mat-icon></span>\n <div *ngFor=\"let validation of control.validations\" class=\"h-0\">\n <mat-error *ngIf=\"\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n \">{{ validation.display }}</mat-error>\n </div>\n <span *ngIf=\"control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)\"\n class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n </div>\n </div>\n <div class=\"py-4\" *ngIf=\"index != sections.length - 1\">\n <hr class=\"\" />\n </div>\n </div>\n </fieldset>\n </form>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule],\n})\nexport class ChrSearchbarComponent {\n @Input() model?: string | null;\n @Output() modelChange: EventEmitter<string> = new EventEmitter();\n @Input() placeholder?: string | null;\n @Input() label?: string | null;\n public searchBy = new FormControl<string>('');\n\n constructor() {\n this.searchBy.valueChanges.subscribe((value) => this.emit(value));\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n}\n","<div class=\"w-full\">\n <label>{{ label }}</label>\n <input matInput [formControl]=\"searchBy\" placeholder=\"{{ placeholder }}\" type=\"text\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n</div>","import {\n AfterContentChecked,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\nimport { NgIf, NgClass } from '@angular/common';\nimport { ChrFormComponent } from '../chr-form/chr-form.component';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n standalone: true,\n imports: [ChrFormComponent, NgIf, NgClass],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n public currentPage: number = 1;\n\n @Input() page: number = 1;\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n instance?: PaginationInstance;\n\n constructor(public service: PaginationService) {}\n\n ngAfterContentChecked(): void {\n //console.log(this.service, this.service.getInstance('chr_data-table'));\n this.instance = this.service.getInstance(\n 'chr_data-table'\n ) as PaginationInstance;\n }\n\n ngOnInit(): void {}\n\n public previous = () => {\n this.currentPage--;\n this.emit();\n };\n\n public next = () => {\n this.currentPage++;\n this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.currentPage = page;\n this.emit();\n };\n\n public setPageEventHandler = (event: any) => {\n return this.setPage(event.target.value);\n };\n\n public isFirstPage = () => {\n return this.currentPage == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n if (this.instance) this.instance.itemsPerPage = pageSize;\n this.pageSizeChange.emit(pageSize);\n };\n\n public setPageSizeEventHandler = (event: any) => {\n return this.setPageSize(event.target.value);\n };\n\n public isLastPage = () => {\n if (!this.instance?.totalItems) return false;\n return (\n this.currentPage ==\n Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n );\n };\n\n // public pageSize = () => this.instance.itemsPerPage;\n\n public lastPage = () =>\n this.instance?.totalItems\n ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n : 1;\n\n private emit = (page: number | undefined = undefined) => {\n if (!page) this.pageChange.emit(this.currentPage);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <div class=\"w-20 ml-1\">\n <app-chr-form (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n }]\n }]\">\n </app-chr-form>\n </div>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Précédent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-20 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'currentPage',\n value: currentPage,\n width: 'row',\n icon: 'check',\n iconCallback: setPage,\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass, NgIf } from '@angular/common';\n/**\n * This should only be used as a directive\n */\n@Component({\n selector: 'app-chr-table-header-cell, [app-chr-table-header-cell]',\n templateUrl: './chr-table-header-cell.component.html',\n styleUrls: ['./chr-table-header-cell.component.scss'],\n standalone: true,\n imports: [NgClass, NgIf, MatIcon],\n})\nexport class ChrTableHeaderCellComponent {\n @Input() display?: string;\n @Input() column?: string;\n @Input() alignment?: string;\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n orderBy = (column?: string) => {\n if (!this.sortBy) this.sortBy = column;\n\n if (this.sortBy == column) {\n this.isAsc = !this.isAsc;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n } else {\n this.isAsc = true;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n }\n };\n}\n","<div class=\"relative w-full cursor-pointer flex flex-row align-middle self-center\" [ngClass]=\"\n alignment == 'left' ? 'justify-start' : \n alignment == 'center' ? 'justify-center' : \n alignment == 'right' ? 'justify-end' : \n 'justify-left'\" (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n <div *ngIf=\"sortBy\" class=\"absolute right-3 top-0 h-0 w-0\">\n <mat-icon *ngIf=\"sortBy == column && isAsc\">arrow_upward</mat-icon>\n <mat-icon *ngIf=\"sortBy == column && !isAsc\">arrow_downward</mat-icon>\n </div>\n</div>\n<ng-content></ng-content>","import {\n DatePipe,\n NgIf,\n NgFor,\n NgClass,\n NgTemplateOutlet,\n} from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ChrPaginatorComponent } from '../chr-paginator/chr-paginator.component';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\nimport { ChrTableHeaderCellComponent } from '../chr-table-header-cell/chr-table-header-cell.component';\nimport { SortPipe } from 'chrv-pipes';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\nexport interface IColumn {\n display: string;\n alignment?: 'left' | 'center' | 'right';\n chipsTarget?: string[];\n chipsDisplay?: string[];\n chipsCallback?: Function;\n properties?: string[];\n callback?: Function;\n date?: string;\n isLink?: boolean;\n linkStaticUrl?: string;\n}\n\nexport interface IComputedRow {\n columns: IComputedColumn[];\n}\n\nexport interface IComputedColumn {\n label?: string;\n value?: any;\n callback?: Function;\n alignment?: 'left' | 'center' | 'right';\n after?: string;\n}\n\nexport interface IAction {\n display: string;\n callback: Function;\n disabled?: boolean;\n disabledCallback?: Function;\n color: 'accent' | 'primary' | 'warn';\n}\n\n@Component({\n selector: 'app-chr-table, [app-chr-table]',\n templateUrl: './chr-table.component.html',\n styleUrls: ['./chr-table.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n ChrTableHeaderCellComponent,\n NgClass,\n NgTemplateOutlet,\n ChrButtonComponent,\n ChrPaginatorComponent,\n DatePipe,\n SortPipe,\n NgxPaginationModule,\n ],\n})\nexport class ChrTableComponent implements AfterViewInit {\n @Input() computedRows?: IComputedRow[];\n @Input() columns?: IColumn[];\n @Input() data: any[] | null = [];\n @Input() actions?: IAction[];\n\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n\n @Input() currentPage: number = 1;\n @Output() currentPageChange: EventEmitter<number> = new EventEmitter();\n\n constructor(private _date: DatePipe) {}\n\n ngAfterViewInit(): void {}\n\n emitIsAsc(isAsc: any) {\n this.isAscChange.emit(isAsc);\n }\n\n emitSortBy(sortBy: any) {\n this.sortByChange.emit(sortBy);\n }\n\n emitPageSize(pageSize: any) {\n this.pageSizeChange.emit(pageSize);\n }\n\n emitCurrentPage(currentPage: any) {\n this.currentPageChange.emit(currentPage);\n }\n\n getProperty = (entry: any, properties?: any[]) => {\n if (!properties) return entry;\n let value = entry;\n for (const i of properties) {\n value = (value as any)?.[i];\n }\n return value;\n };\n\n getIsAsc = () => {\n return this.isAsc;\n };\n\n getSortBy = () => {\n return this.sortBy;\n };\n}\n","<div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" alignment=\"{{column.alignment}}\"\r\n (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <!--\r\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\r\n <td *ngFor=\"let column of columns\">\r\n <ng-container [ngTemplateOutlet]=\"\r\n column.isLink ? link: div\r\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\r\n </ng-container>\r\n <ng-template #link let-prop='prop'>\r\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\r\n prop}}</a>\r\n </ng-template>\r\n <ng-template #div let-prop='prop'>\r\n <div>\r\n <span *ngIf=\"column.chipsDisplay\">\r\n\r\n </span>\r\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n -->\r\n\r\n <tr\r\n *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} | sort:isAsc:sortBy; let i = index\"\r\n [attr.data-index]=\"i\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"default\"\r\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\r\n </ng-container>\r\n </td>\r\n <ng-template #default let-column='column' let-property=\"prop\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\"\r\n class=\"w-full text-{{column.alignment || (column.chipsDisplay ? 'justify-between' : 'justify-start')}}\"\r\n href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n </a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row\" [ngClass]=\"\r\n column.alignment == 'center' ? 'justify-center' : \r\n column.alignment =='right' ? 'justify-end' : \r\n column.alignment =='left' ? 'justify-start' : \r\n (column.chipsDisplay ? 'justify-between' : 'justify-start')\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\r\n </ng-container>\r\n <ng-template #OK>\r\n <span\r\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n </ng-template>\r\n <ng-template #NOK>\r\n <span\r\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let r of computedRows\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\r\n <td *ngFor=\"let c of r.columns\" [ngClass]=\"c.alignment && 'text-'+(c.alignment||'left')\"\r\n class=\"p-3 min-h-[2.75rem] h-auto\">\r\n {{c.label && c.label + ':'}} {{c.value || (c.callback && c.callback(data))}} {{c.after}}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <app-chr-paginator [(pageSize)]=\"pageSize\" [(page)]=\"currentPage\" (pageSizeChange)=\"emitPageSize($event)\"\r\n (pageChange)=\"emitCurrentPage($event)\"></app-chr-paginator>\r\n</div>\r\n<!-- <div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}</a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? column.chipsCallback(entry)\r\n : getProperty(entry, column.chipsTarget)\r\n \"\r\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? !column.chipsCallback(entry)\r\n : !getProperty(entry, column.chipsTarget)\r\n \"\r\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n-->","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss'],\n standalone: true,\n imports: [NgIf, MatIcon]\n})\nexport class ChrCheckboxComponent {\n\n public checked:boolean = false\n\n @Input() type:'info'|'success' = 'info'\n\n @Input() disabled:boolean = false\n\n @Output() change: EventEmitter<{checked:boolean}> = new EventEmitter<{checked:boolean}>();\n\n check(end:boolean){\n if(this.disabled)\n return\n if(end){\n this.checked = true;\n this.change.emit({checked:true})\n } else {\n this.checked = false;\n this.change.emit({checked:false})\n }\n }\n}\n","<div>\n <div *ngIf=\"checked\" (click)=\"check(false)\" [class.info]=\"type=='info'&&!disabled\"\n [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\"\n [class.bg-grey-400]=\"disabled\"\n class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div>\n </div>\n <div *ngIf=\"!checked\" (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\"\n [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\"\n class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div>\n </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-chr-separator',\n templateUrl: './chr-separator.component.html',\n styleUrls: ['./chr-separator.component.scss'],\n standalone: true\n})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ChrDeleteModalComponent } from '../chr-delete-modal/chr-delete-modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DialogService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n openDelete = (callback?: Function, callbackElement?: any) => {\r\n const dialogRef = this.open(ChrDeleteModalComponent);\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n console.log(result);\r\n if (result == true) callback?.(callbackElement);\r\n });\r\n };\r\n\r\n open = (component: any, options: any | undefined = undefined) => {\r\n return this.dialog.open(component, options);\r\n };\r\n}\r\n","/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-breadcrumb/chr-breadcrumb.component';\nexport * from './lib/chr-button/chr-button.component';\nexport * from './lib/chr-delete-modal/chr-delete-modal.component';\nexport * from './lib/chr-form/chr-form.component';\nexport * from './lib/chr-search-select/chr-search-select.component';\nexport * from './lib/chr-searchbar/chr-searchbar.component';\nexport * from './lib/chr-paginator/chr-paginator.component';\nexport * from './lib/chr-table/chr-table.component';\nexport * from './lib/chr-table-header-cell/chr-table-header-cell.component';\nexport * from './lib/chr-checkbox/chr-checkbox.component';\nexport * from './lib/chr-separator/chr-separator.component';\nexport * from './lib/chr-form/chr-validators/decimal-validator';\nexport * from './lib/chr-form/chr-validators/max-date-validator';\nexport * from './lib/chr-form/chr-validators/type-validator';\nexport * from './lib/services/dialog.service';\nexport * from 'chrv-pipes';\nexport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="chrv-components" />
5
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="chrv-components" />
5
+ export * from './public-api';
@@ -1,15 +1,15 @@
1
- import { Router } from '@angular/router';
2
- import * as i0 from "@angular/core";
3
- export interface Breadcrumb {
4
- display: string;
5
- link?: string;
6
- callback?: Function;
7
- }
8
- export declare class BreadcrumbComponent {
9
- router: Router;
10
- crumbs: Breadcrumb[];
11
- constructor(router: Router);
12
- navigateTo: (uri: string, data?: any) => void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "app-chr-breadcrumb", never, { "crumbs": "crumbs"; }, {}, never, never, false, never>;
15
- }
1
+ import { Router } from '@angular/router';
2
+ import * as i0 from "@angular/core";
3
+ export interface Breadcrumb {
4
+ display: string;
5
+ link?: string;
6
+ callback?: Function;
7
+ }
8
+ export declare class BreadcrumbComponent {
9
+ router: Router;
10
+ crumbs?: Breadcrumb[];
11
+ constructor(router: Router);
12
+ navigateTo: (uri: string, data?: any) => void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "app-chr-breadcrumb", never, { "crumbs": { "alias": "crumbs"; "required": false; }; }, {}, never, never, true, never>;
15
+ }
@@ -1,19 +1,19 @@
1
- import * as i0 from "@angular/core";
2
- export declare class ChrButtonComponent {
3
- display: string;
4
- icon: string;
5
- click?: Function;
6
- color: 'primary' | 'accent' | 'warn' | 'none';
7
- predicate?: boolean;
8
- type: 'responsive' | 'table' | 'full' | 'fixed' | 'none';
9
- href?: string;
10
- target: '_blank' | '_parent' | '_self' | '_top';
11
- disabled: boolean;
12
- tooltip?: string;
13
- tooltipPosition?: 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
14
- constructor();
15
- setDisabled: (is: boolean) => void;
16
- doClick: () => void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<ChrButtonComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<ChrButtonComponent, "app-chr-button", never, { "display": "display"; "icon": "icon"; "click": "click"; "color": "color"; "predicate": "predicate"; "type": "type"; "href": "href"; "target": "target"; "disabled": "disabled"; "tooltip": "tooltip"; "tooltipPosition": "tooltipPosition"; }, {}, never, never, false, never>;
19
- }
1
+ import * as i0 from "@angular/core";
2
+ export declare class ChrButtonComponent {
3
+ display: string;
4
+ icon: string;
5
+ click?: Function;
6
+ color: 'primary' | 'accent' | 'warn' | 'none';
7
+ predicate?: boolean;
8
+ type: 'responsive' | 'table' | 'full' | 'fixed' | 'none';
9
+ href?: string;
10
+ target?: '_blank' | '_parent' | '_self' | '_top';
11
+ disabled: boolean;
12
+ tooltip?: string;
13
+ tooltipPosition?: 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
14
+ constructor();
15
+ setDisabled: (is: boolean) => void;
16
+ doClick: () => void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrButtonComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrButtonComponent, "app-chr-button", never, { "display": { "alias": "display"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "click": { "alias": "click"; "required": false; }; "color": { "alias": "color"; "required": false; }; "predicate": { "alias": "predicate"; "required": false; }; "type": { "alias": "type"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; }, {}, never, never, true, never>;
19
+ }
@@ -1,13 +1,13 @@
1
- import { EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class ChrCheckboxComponent {
4
- checked: boolean;
5
- type: 'info' | 'success';
6
- disabled: boolean;
7
- change: EventEmitter<{
8
- checked: boolean;
9
- }>;
10
- check(end: boolean): void;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<ChrCheckboxComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<ChrCheckboxComponent, "app-chr-checkbox", never, { "type": "type"; "disabled": "disabled"; }, { "change": "change"; }, never, never, false, never>;
13
- }
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ChrCheckboxComponent {
4
+ checked: boolean;
5
+ type: 'info' | 'success';
6
+ disabled: boolean;
7
+ change: EventEmitter<{
8
+ checked: boolean;
9
+ }>;
10
+ check(end: boolean): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrCheckboxComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrCheckboxComponent, "app-chr-checkbox", never, { "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
13
+ }
@@ -1,11 +1,11 @@
1
- import { MatDialogRef } from '@angular/material/dialog';
2
- import * as i0 from "@angular/core";
3
- export declare class ChrDeleteModalComponent {
4
- dialogRef: MatDialogRef<ChrDeleteModalComponent>;
5
- valid: boolean;
6
- constructor(dialogRef: MatDialogRef<ChrDeleteModalComponent>);
7
- ngOnInit(): void;
8
- close: () => void;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<ChrDeleteModalComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<ChrDeleteModalComponent, "app-chr-delete-modal", never, {}, {}, never, never, false, never>;
11
- }
1
+ import { MatDialogRef } from '@angular/material/dialog';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ChrDeleteModalComponent {
4
+ dialogRef: MatDialogRef<ChrDeleteModalComponent>;
5
+ valid: boolean;
6
+ constructor(dialogRef: MatDialogRef<ChrDeleteModalComponent>);
7
+ ngOnInit(): void;
8
+ close: () => void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrDeleteModalComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrDeleteModalComponent, "app-chr-delete-modal", never, {}, {}, never, never, true, never>;
11
+ }
@@ -1,57 +1,57 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { FormBuilder, FormGroup } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- export interface ISearchFilter {
5
- display: string;
6
- callback?: Function;
7
- tooltip?: string;
8
- }
9
- export interface IControlValidation {
10
- rule: string;
11
- value?: any;
12
- display?: string;
13
- }
14
- export interface IControl {
15
- label?: string;
16
- name: string;
17
- span?: string;
18
- placeholder?: any;
19
- width?: 'col' | 'row';
20
- type: 'text' | 'password' | 'textArea' | 'number' | 'date' | 'searchSelect' | 'select';
21
- value?: any;
22
- data?: any[] | null;
23
- icon?: string;
24
- iconCallback?: Function;
25
- iconCallbackDisabled?: boolean;
26
- iconTooltip?: string;
27
- fn?: Function;
28
- filters?: ISearchFilter[];
29
- validations?: IControlValidation[];
30
- }
31
- export interface IFormSection {
32
- title?: string;
33
- controls: IControl[];
34
- }
35
- export declare class ChrFormComponent {
36
- private builder;
37
- sections: IFormSection[];
38
- valid: boolean;
39
- validChange: EventEmitter<boolean>;
40
- model: any;
41
- modelChange: EventEmitter<any>;
42
- disabled: boolean;
43
- valuesChange: EventEmitter<any>;
44
- form: FormGroup;
45
- constructor(builder: FormBuilder);
46
- ngOnInit(): void;
47
- value: (input?: string) => any;
48
- setValue: (input: string, value: any) => void;
49
- isValid: (input?: string) => boolean;
50
- isControlRequired: (control: IControl) => IControlValidation | undefined;
51
- patchValue: (key: string, value: any) => void;
52
- reset: () => void;
53
- private _initValidators;
54
- private _getValidators;
55
- static ɵfac: i0.ɵɵFactoryDeclaration<ChrFormComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<ChrFormComponent, "app-chr-form", never, { "sections": "sections"; "valid": "valid"; "model": "model"; "disabled": "disabled"; }, { "validChange": "validChange"; "modelChange": "modelChange"; "valuesChange": "valuesChange"; }, never, never, false, never>;
57
- }
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormBuilder, FormGroup } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export interface ISearchFilter {
5
+ display: string;
6
+ callback?: Function;
7
+ tooltip?: string;
8
+ }
9
+ export interface IControlValidation {
10
+ rule: string;
11
+ value?: any;
12
+ display?: string;
13
+ }
14
+ export interface IControl {
15
+ label?: string;
16
+ name: string;
17
+ span?: string;
18
+ placeholder?: any;
19
+ width?: 'col' | 'row';
20
+ type: 'text' | 'password' | 'textArea' | 'number' | 'date' | 'searchSelect' | 'select';
21
+ value?: any;
22
+ data?: any[] | null;
23
+ icon?: string;
24
+ iconCallback?: Function;
25
+ iconCallbackDisabled?: boolean;
26
+ iconTooltip?: string;
27
+ fn?: Function;
28
+ filters?: ISearchFilter[];
29
+ validations?: IControlValidation[];
30
+ }
31
+ export interface IFormSection {
32
+ title?: string;
33
+ controls: IControl[];
34
+ }
35
+ export declare class ChrFormComponent {
36
+ private builder;
37
+ sections: IFormSection[];
38
+ valid: boolean;
39
+ validChange: EventEmitter<boolean>;
40
+ model: any;
41
+ modelChange: EventEmitter<any>;
42
+ disabled: boolean;
43
+ valuesChange: EventEmitter<any>;
44
+ form: FormGroup;
45
+ constructor(builder: FormBuilder);
46
+ ngOnInit(): void;
47
+ value: (input?: string) => any;
48
+ setValue: (input: string, value: any) => void;
49
+ isValid: (input?: string) => boolean;
50
+ isControlRequired: (control: IControl) => IControlValidation | undefined;
51
+ patchValue: (key: string, value: any) => void;
52
+ reset: () => void;
53
+ private _initValidators;
54
+ private _getValidators;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrFormComponent, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrFormComponent, "app-chr-form", never, { "sections": { "alias": "sections"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; "model": { "alias": "model"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "validChange": "validChange"; "modelChange": "modelChange"; "valuesChange": "valuesChange"; }, never, never, true, never>;
57
+ }
@@ -1,10 +1,10 @@
1
- import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
- import * as i0 from "@angular/core";
3
- export declare class DecimalValidatorDirective implements Validator {
4
- amount: number;
5
- validate(control: AbstractControl): ValidationErrors | null;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<DecimalValidatorDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<DecimalValidatorDirective, "[app-decimal]", never, { "amount": "amount"; }, {}, never, never, false, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<DecimalValidatorDirective>;
9
- }
10
- export declare function decimal(amount: number): ValidatorFn;
1
+ import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DecimalValidatorDirective implements Validator {
4
+ amount?: number;
5
+ validate(control: AbstractControl): ValidationErrors | null;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<DecimalValidatorDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DecimalValidatorDirective, "[app-decimal]", never, { "amount": { "alias": "amount"; "required": false; }; }, {}, never, never, true, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<DecimalValidatorDirective>;
9
+ }
10
+ export declare function decimal(amount: number): ValidatorFn;
@@ -1,10 +1,10 @@
1
- import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
- import * as i0 from "@angular/core";
3
- export declare class MaxDateValidatorDirective implements Validator {
4
- date: Date;
5
- validate(control: AbstractControl): ValidationErrors | null;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<MaxDateValidatorDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<MaxDateValidatorDirective, "[app-max-date]", never, { "date": "date"; }, {}, never, never, false, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<MaxDateValidatorDirective>;
9
- }
10
- export declare function maxDate(date: Date): ValidatorFn;
1
+ import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class MaxDateValidatorDirective implements Validator {
4
+ date?: Date;
5
+ validate(control: AbstractControl): ValidationErrors | null;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<MaxDateValidatorDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MaxDateValidatorDirective, "[app-max-date]", never, { "date": { "alias": "date"; "required": false; }; }, {}, never, never, true, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<MaxDateValidatorDirective>;
9
+ }
10
+ export declare function maxDate(date: Date): ValidatorFn;
@@ -1,10 +1,10 @@
1
- import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
- import * as i0 from "@angular/core";
3
- export declare class TypeValidatorDirective implements Validator {
4
- type: string;
5
- validate(control: AbstractControl): ValidationErrors | null;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<TypeValidatorDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<TypeValidatorDirective, "[app-type]", never, { "type": "type"; }, {}, never, never, false, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<TypeValidatorDirective>;
9
- }
10
- export declare function type(type: string): ValidatorFn;
1
+ import { AbstractControl, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TypeValidatorDirective implements Validator {
4
+ type?: string;
5
+ validate(control: AbstractControl): ValidationErrors | null;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<TypeValidatorDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TypeValidatorDirective, "[app-type]", never, { "type": { "alias": "type"; "required": false; }; }, {}, never, never, true, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<TypeValidatorDirective>;
9
+ }
10
+ export declare function type(type: string): ValidatorFn;