chrv-components 0.0.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 (39) hide show
  1. package/README.md +25 -0
  2. package/chrv-components-0.0.1.tgz +0 -0
  3. package/esm2020/chrv-components.mjs +5 -0
  4. package/esm2020/lib/chr-breadcrumb/breadcrumb.component.mjs +22 -0
  5. package/esm2020/lib/chr-button/chr-button.component.mjs +46 -0
  6. package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
  7. package/esm2020/lib/chr-components.module.mjs +117 -0
  8. package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -0
  9. package/esm2020/lib/chr-form/chr-form.component.mjs +132 -0
  10. package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
  11. package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
  12. package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +52 -0
  13. package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +136 -0
  14. package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
  15. package/esm2020/lib/chr-separator/chr-separator.component.mjs +11 -0
  16. package/esm2020/lib/chr-table/chr-table.component.mjs +58 -0
  17. package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
  18. package/esm2020/public-api.mjs +18 -0
  19. package/fesm2015/chrv-components.mjs +774 -0
  20. package/fesm2015/chrv-components.mjs.map +1 -0
  21. package/fesm2020/chrv-components.mjs +768 -0
  22. package/fesm2020/chrv-components.mjs.map +1 -0
  23. package/index.d.ts +5 -0
  24. package/lib/chr-breadcrumb/breadcrumb.component.d.ts +15 -0
  25. package/lib/chr-button/chr-button.component.d.ts +17 -0
  26. package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -0
  27. package/lib/chr-components.module.d.ts +28 -0
  28. package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -0
  29. package/lib/chr-form/chr-form.component.d.ts +57 -0
  30. package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -0
  31. package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -0
  32. package/lib/chr-form/chr-validators/type-validator.d.ts +10 -0
  33. package/lib/chr-search-select/chr-search-select.component.d.ts +44 -0
  34. package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -0
  35. package/lib/chr-separator/chr-separator.component.d.ts +5 -0
  36. package/lib/chr-table/chr-table.component.d.ts +38 -0
  37. package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -0
  38. package/package.json +31 -0
  39. package/public-api.d.ts +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../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-breadcrumb/breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/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-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-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.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-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-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.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/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-components.module.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss']\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\" [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\" [class.bg-grey-400]=\"disabled\" class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\"><div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div></div>\n <div *ngIf=\"!checked\" (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\" [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\" class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\"><div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div></div>\n</div>","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\nexport interface Breadcrumb {\n display: string;\n link?: string;\n callback?: Function;\n}\n\n@Component({\n selector: 'app-chr-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\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';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\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: 'table' | 'full' | 'fixed' | 'none' = 'none';\n @Input() href?: string;\n @Input() target: '_blank' | '_parent' | '_self' | '_top';\n @Input() disabled: boolean = false;\n\n constructor() {}\n\n setDisabled = (is: boolean) => {\n this.disabled = is;\n };\n\n doClick = () => {\n this.click?.();\n };\n}\n","<div class=\"grid\">\n <a\n mat-button\n mat-flat-button\n *ngIf=\"predicate\"\n [disabled]=\"disabled\"\n [ngClass]=\"\n type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\n \"\n [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 w-36' : ''\"\n color=\"{{ color }}\"\n (click)=\"click?.()\"\n [attr.href]=\"href && href\"\n [attr.target]=\"target && target\"\n >\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-->\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} 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';\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})\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[] = [];\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 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 { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\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\n matInput\n [formControl]=\"searchBy\"\n placeholder=\"{{ placeholder }}\"\n 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 />\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\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})\nexport class ChrTableHeaderCellComponent {\n @Input() display: string;\n @Input() column: 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 justify-between align-middle self-center\"\n (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 { DatePipe } from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nexport interface IColumn {\n display: string;\n chipsTarget?: string[];\n chipsDisplay?: string[];\n chipsCallback?: Function;\n properties?: string[];\n callback?: Function;\n date?: 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})\nexport class ChrTableComponent implements AfterViewInit {\n @Input() columns: IColumn[];\n @Input() data: any[] = [];\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 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 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\"\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 <div 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>","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})\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})\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 * as 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})\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 { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn } 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';\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[];\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})\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=\"font-bold text-xl\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 mb-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\"></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 } from '@angular/core';\n\n@Component({\n selector: 'app-chr-separator',\n templateUrl: './chr-separator.component.html',\n styleUrls: ['./chr-separator.component.scss']\n})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\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\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"dark:!text-gray-400\">\n Attention:\n <hr>\n <br>\n La suppression d'un élément est irréversible.\n <hr>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <hr>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <hr>\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 { PipeModule } from 'chrv-pipes';\nimport { NgModule } from '@angular/core';\nimport { ChrCheckboxComponent } from './chr-checkbox/chr-checkbox.component';\nimport { BreadcrumbComponent } from './chr-breadcrumb/breadcrumb.component';\nimport { ChrButtonComponent } from './chr-button/chr-button.component';\nimport { ChrSearchSelectComponent } from './chr-search-select/chr-search-select.component';\nimport { ChrSearchbarComponent } from './chr-searchbar/chr-searchbar.component';\nimport { ChrTableComponent } from './chr-table/chr-table.component';\nimport { ChrTableHeaderCellComponent } from './chr-table-header-cell/chr-table-header-cell.component';\nimport { ChrFormComponent } from './chr-form/chr-form.component';\nimport { ChrSeparatorComponent } from './chr-separator/chr-separator.component';\nimport { ChrDeleteModalComponent } from './chr-delete-modal/chr-delete-modal.component';\nimport { TypeValidatorDirective } from './chr-form/chr-validators/type-validator';\nimport { DecimalValidatorDirective } from './chr-form/chr-validators/decimal-validator';\nimport { MaxDateValidatorDirective } from './chr-form/chr-validators/max-date-validator';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@NgModule({\n declarations: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule,\n MatDialogModule,\n PipeModule,\n ],\n exports: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n providers: [DatePipe],\n})\nexport class ChrComponentsModule {}\n","import { ChrButtonComponent } from './lib/chr-button/chr-button.component';\nimport { BreadcrumbComponent } from './lib/chr-breadcrumb/breadcrumb.component';\n/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-components.module';\nexport * from './lib/chr-breadcrumb/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-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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i2.ChrButtonComponent","i3.ChrTableHeaderCellComponent","i6.ChrSearchSelectComponent","i3.ChrButtonComponent"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="chrv-components" />
5
+ export * from './public-api';
@@ -0,0 +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
+ }
@@ -0,0 +1,17 @@
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: 'table' | 'full' | 'fixed' | 'none';
9
+ href?: string;
10
+ target: '_blank' | '_parent' | '_self' | '_top';
11
+ disabled: boolean;
12
+ constructor();
13
+ setDisabled: (is: boolean) => void;
14
+ doClick: () => void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrButtonComponent, never>;
16
+ 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"; }, {}, never, never, false, never>;
17
+ }
@@ -0,0 +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
+ }
@@ -0,0 +1,28 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./chr-checkbox/chr-checkbox.component";
3
+ import * as i2 from "./chr-breadcrumb/breadcrumb.component";
4
+ import * as i3 from "./chr-button/chr-button.component";
5
+ import * as i4 from "./chr-search-select/chr-search-select.component";
6
+ import * as i5 from "./chr-searchbar/chr-searchbar.component";
7
+ import * as i6 from "./chr-table/chr-table.component";
8
+ import * as i7 from "./chr-table-header-cell/chr-table-header-cell.component";
9
+ import * as i8 from "./chr-form/chr-form.component";
10
+ import * as i9 from "./chr-separator/chr-separator.component";
11
+ import * as i10 from "./chr-delete-modal/chr-delete-modal.component";
12
+ import * as i11 from "./chr-form/chr-validators/type-validator";
13
+ import * as i12 from "./chr-form/chr-validators/decimal-validator";
14
+ import * as i13 from "./chr-form/chr-validators/max-date-validator";
15
+ import * as i14 from "@angular/common";
16
+ import * as i15 from "@angular/material/icon";
17
+ import * as i16 from "@angular/material/button";
18
+ import * as i17 from "@angular/material/autocomplete";
19
+ import * as i18 from "@angular/forms";
20
+ import * as i19 from "@angular/material/form-field";
21
+ import * as i20 from "@angular/material/tooltip";
22
+ import * as i21 from "@angular/material/dialog";
23
+ import * as i22 from "chrv-pipes";
24
+ export declare class ChrComponentsModule {
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrComponentsModule, never>;
26
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ChrComponentsModule, [typeof i1.ChrCheckboxComponent, typeof i2.BreadcrumbComponent, typeof i3.ChrButtonComponent, typeof i4.ChrSearchSelectComponent, typeof i5.ChrSearchbarComponent, typeof i6.ChrTableComponent, typeof i7.ChrTableHeaderCellComponent, typeof i8.ChrFormComponent, typeof i9.ChrSeparatorComponent, typeof i10.ChrDeleteModalComponent, typeof i11.TypeValidatorDirective, typeof i12.DecimalValidatorDirective, typeof i13.MaxDateValidatorDirective], [typeof i14.CommonModule, typeof i15.MatIconModule, typeof i16.MatButtonModule, typeof i17.MatAutocompleteModule, typeof i18.ReactiveFormsModule, typeof i19.MatFormFieldModule, typeof i20.MatTooltipModule, typeof i21.MatDialogModule, typeof i22.PipeModule], [typeof i1.ChrCheckboxComponent, typeof i2.BreadcrumbComponent, typeof i3.ChrButtonComponent, typeof i4.ChrSearchSelectComponent, typeof i5.ChrSearchbarComponent, typeof i6.ChrTableComponent, typeof i7.ChrTableHeaderCellComponent, typeof i8.ChrFormComponent, typeof i9.ChrSeparatorComponent, typeof i10.ChrDeleteModalComponent, typeof i11.TypeValidatorDirective, typeof i12.DecimalValidatorDirective, typeof i13.MaxDateValidatorDirective]>;
27
+ static ɵinj: i0.ɵɵInjectorDeclaration<ChrComponentsModule>;
28
+ }
@@ -0,0 +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
+ }
@@ -0,0 +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[];
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
+ }
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +1,44 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export interface IInputSearchFilter {
6
+ display: string;
7
+ callback?: Function;
8
+ tooltip?: string;
9
+ }
10
+ export declare class ChrSearchSelectComponent implements ControlValueAccessor {
11
+ predicate: boolean;
12
+ searchSelect: FormControl;
13
+ filteredModelOptions: Observable<any>;
14
+ onTouched: any;
15
+ placeholder: string;
16
+ data: any[];
17
+ display: Function;
18
+ disabled: boolean;
19
+ model: any | null;
20
+ modelChange: EventEmitter<any>;
21
+ keyup: EventEmitter<KeyboardEvent>;
22
+ filters?: IInputSearchFilter[];
23
+ filterIndex: number;
24
+ ngOnInit(): void;
25
+ getModelDisplay(model: any): any;
26
+ emit(event: any): void;
27
+ writeValue(obj: any): void;
28
+ registerOnChange(fn: any): void;
29
+ checkNull(value: any | null): void;
30
+ setNull(): void;
31
+ registerOnTouched(fn: any): void;
32
+ registerFilters: () => void;
33
+ registerAutoComplete: () => void;
34
+ setDisabledState?(isDisabled: boolean): void;
35
+ increment: () => void;
36
+ getValue: () => any;
37
+ void: () => void;
38
+ private _filterModel;
39
+ private _doFilterModelInt;
40
+ private _doFilterModelString;
41
+ private _filterValues;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrSearchSelectComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrSearchSelectComponent, "app-chr-search-select", never, { "placeholder": "placeholder"; "data": "data"; "display": "display"; "disabled": "disabled"; "model": "model"; "filters": "filters"; }, { "modelChange": "modelChange"; "keyup": "keyup"; }, never, never, false, never>;
44
+ }
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ChrSearchbarComponent {
5
+ model: string | null;
6
+ modelChange: EventEmitter<string>;
7
+ placeholder: string | null;
8
+ label: string | null;
9
+ searchBy: FormControl<string | null>;
10
+ constructor();
11
+ emit(event: any): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrSearchbarComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrSearchbarComponent, "app-chr-searchbar", never, { "model": "model"; "placeholder": "placeholder"; "label": "label"; }, { "modelChange": "modelChange"; }, never, never, false, never>;
14
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ChrSeparatorComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrSeparatorComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrSeparatorComponent, "app-chr-separator", never, {}, {}, never, never, false, never>;
5
+ }
@@ -0,0 +1,38 @@
1
+ import { DatePipe } from '@angular/common';
2
+ import { AfterViewInit, EventEmitter } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export interface IColumn {
5
+ display: string;
6
+ chipsTarget?: string[];
7
+ chipsDisplay?: string[];
8
+ chipsCallback?: Function;
9
+ properties?: string[];
10
+ callback?: Function;
11
+ date?: string;
12
+ }
13
+ export interface IAction {
14
+ display: string;
15
+ callback: Function;
16
+ disabled?: boolean;
17
+ disabledCallback?: Function;
18
+ color: 'accent' | 'primary' | 'warn';
19
+ }
20
+ export declare class ChrTableComponent implements AfterViewInit {
21
+ private _date;
22
+ columns: IColumn[];
23
+ data: any[];
24
+ actions: IAction[];
25
+ isAsc: boolean;
26
+ isAscChange: EventEmitter<boolean>;
27
+ sortBy: string;
28
+ sortByChange: EventEmitter<string>;
29
+ constructor(_date: DatePipe);
30
+ ngAfterViewInit(): void;
31
+ emitIsAsc(isAsc: any): void;
32
+ emitSortBy(sortBy: any): void;
33
+ getProperty: (entry: any, properties?: any[]) => any;
34
+ getIsAsc: () => boolean;
35
+ getSortBy: () => string;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrTableComponent, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrTableComponent, "app-chr-table, [app-chr-table]", never, { "columns": "columns"; "data": "data"; "actions": "actions"; "isAsc": "isAsc"; "sortBy": "sortBy"; }, { "isAscChange": "isAscChange"; "sortByChange": "sortByChange"; }, never, ["*"], false, never>;
38
+ }
@@ -0,0 +1,16 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * This should only be used as a directive
5
+ */
6
+ export declare class ChrTableHeaderCellComponent {
7
+ display: string;
8
+ column: string;
9
+ isAsc: boolean;
10
+ isAscChange: EventEmitter<boolean>;
11
+ sortBy: string;
12
+ sortByChange: EventEmitter<string>;
13
+ orderBy: (column: string) => void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChrTableHeaderCellComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChrTableHeaderCellComponent, "app-chr-table-header-cell, [app-chr-table-header-cell]", never, { "display": "display"; "column": "column"; "isAsc": "isAsc"; "sortBy": "sortBy"; }, { "isAscChange": "isAscChange"; "sortByChange": "sortByChange"; }, never, ["*"], false, never>;
16
+ }
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "chrv-components",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^15.1.0",
6
+ "@angular/core": "^15.1.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2015/chrv-components.mjs",
13
+ "es2020": "fesm2020/chrv-components.mjs",
14
+ "esm2020": "esm2020/chrv-components.mjs",
15
+ "fesm2020": "fesm2020/chrv-components.mjs",
16
+ "fesm2015": "fesm2015/chrv-components.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "esm2020": "./esm2020/chrv-components.mjs",
25
+ "es2020": "./fesm2020/chrv-components.mjs",
26
+ "es2015": "./fesm2015/chrv-components.mjs",
27
+ "node": "./fesm2015/chrv-components.mjs",
28
+ "default": "./fesm2020/chrv-components.mjs"
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,14 @@
1
+ export * from './lib/chr-components.module';
2
+ export * from './lib/chr-breadcrumb/breadcrumb.component';
3
+ export * from './lib/chr-button/chr-button.component';
4
+ export * from './lib/chr-delete-modal/chr-delete-modal.component';
5
+ export * from './lib/chr-form/chr-form.component';
6
+ export * from './lib/chr-search-select/chr-search-select.component';
7
+ export * from './lib/chr-searchbar/chr-searchbar.component';
8
+ export * from './lib/chr-table/chr-table.component';
9
+ export * from './lib/chr-table-header-cell/chr-table-header-cell.component';
10
+ export * from './lib/chr-checkbox/chr-checkbox.component';
11
+ export * from './lib/chr-separator/chr-separator.component';
12
+ export * from './lib/chr-form/chr-validators/decimal-validator';
13
+ export * from './lib/chr-form/chr-validators/max-date-validator';
14
+ export * from './lib/chr-form/chr-validators/type-validator';