chrv-components 1.0.2 → 1.0.3
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.
- package/esm2020/chrv-components.mjs +5 -0
- package/esm2020/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -0
- package/esm2020/lib/chr-button/chr-button.component.mjs +51 -0
- package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
- package/esm2020/lib/chr-components.module.mjs +117 -0
- package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -0
- package/esm2020/lib/chr-form/chr-form.component.mjs +132 -0
- package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
- package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
- package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +52 -0
- package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +136 -0
- package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
- package/esm2020/lib/chr-separator/chr-separator.component.mjs +11 -0
- package/esm2020/lib/chr-table/chr-table.component.mjs +58 -0
- package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
- package/esm2020/lib/services/dialog.service.mjs +29 -0
- package/esm2020/public-api.mjs +19 -0
- package/fesm2015/chrv-components.mjs +803 -0
- package/fesm2015/chrv-components.mjs.map +1 -0
- package/fesm2020/chrv-components.mjs +797 -0
- package/fesm2020/chrv-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -0
- package/lib/chr-button/chr-button.component.d.ts +19 -0
- package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -0
- package/lib/chr-components.module.d.ts +28 -0
- package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -0
- package/lib/chr-form/chr-form.component.d.ts +57 -0
- package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/type-validator.d.ts +10 -0
- package/lib/chr-search-select/chr-search-select.component.d.ts +44 -0
- package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -0
- package/lib/chr-separator/chr-separator.component.d.ts +5 -0
- package/lib/chr-table/chr-table.component.d.ts +38 -0
- package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -0
- package/lib/services/dialog.service.d.ts +10 -0
- package/package.json +22 -3
- package/{src/public-api.ts → public-api.d.ts} +15 -21
- package/chr-theme.scss +0 -97
- package/ng-package.json +0 -7
- package/src/lib/chr-breadcrumb/chr-breadcrumb.component.html +0 -9
- package/src/lib/chr-breadcrumb/chr-breadcrumb.component.scss +0 -0
- package/src/lib/chr-breadcrumb/chr-breadcrumb.component.spec.ts +0 -22
- package/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts +0 -23
- package/src/lib/chr-button/chr-button.component.html +0 -20
- package/src/lib/chr-button/chr-button.component.scss +0 -0
- package/src/lib/chr-button/chr-button.component.spec.ts +0 -23
- package/src/lib/chr-button/chr-button.component.ts +0 -36
- package/src/lib/chr-checkbox/chr-checkbox.component.html +0 -4
- package/src/lib/chr-checkbox/chr-checkbox.component.scss +0 -15
- package/src/lib/chr-checkbox/chr-checkbox.component.spec.ts +0 -23
- package/src/lib/chr-checkbox/chr-checkbox.component.ts +0 -30
- package/src/lib/chr-components.module.ts +0 -69
- package/src/lib/chr-delete-modal/chr-delete-modal.component.html +0 -26
- package/src/lib/chr-delete-modal/chr-delete-modal.component.scss +0 -0
- package/src/lib/chr-delete-modal/chr-delete-modal.component.spec.ts +0 -23
- package/src/lib/chr-delete-modal/chr-delete-modal.component.ts +0 -19
- package/src/lib/chr-form/chr-form.component.html +0 -98
- package/src/lib/chr-form/chr-form.component.scss +0 -37
- package/src/lib/chr-form/chr-form.component.spec.ts +0 -23
- package/src/lib/chr-form/chr-form.component.ts +0 -173
- package/src/lib/chr-form/chr-validators/decimal-validator.ts +0 -54
- package/src/lib/chr-form/chr-validators/max-date-validator.ts +0 -48
- package/src/lib/chr-form/chr-validators/type-validator.ts +0 -47
- package/src/lib/chr-search-select/chr-search-select.component.html +0 -19
- package/src/lib/chr-search-select/chr-search-select.component.scss +0 -3
- package/src/lib/chr-search-select/chr-search-select.component.spec.ts +0 -23
- package/src/lib/chr-search-select/chr-search-select.component.ts +0 -164
- package/src/lib/chr-searchbar/chr-searchbar.component.html +0 -10
- package/src/lib/chr-searchbar/chr-searchbar.component.scss +0 -0
- package/src/lib/chr-searchbar/chr-searchbar.component.spec.ts +0 -23
- package/src/lib/chr-searchbar/chr-searchbar.component.ts +0 -23
- package/src/lib/chr-separator/chr-separator.component.html +0 -3
- package/src/lib/chr-separator/chr-separator.component.scss +0 -24
- package/src/lib/chr-separator/chr-separator.component.spec.ts +0 -23
- package/src/lib/chr-separator/chr-separator.component.ts +0 -10
- package/src/lib/chr-table/chr-table.component.html +0 -88
- package/src/lib/chr-table/chr-table.component.scss +0 -53
- package/src/lib/chr-table/chr-table.component.spec.ts +0 -23
- package/src/lib/chr-table/chr-table.component.ts +0 -72
- package/src/lib/chr-table-header-cell/chr-table-header-cell.component.html +0 -9
- package/src/lib/chr-table-header-cell/chr-table-header-cell.component.scss +0 -31
- package/src/lib/chr-table-header-cell/chr-table-header-cell.component.spec.ts +0 -23
- package/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts +0 -39
- package/src/lib/services/dialog.service.ts +0 -23
- package/styles.scss +0 -93
- package/tailwind.config.js +0 -30
- package/theme.scss +0 -59
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
<div class="h-full no-scrollbar">
|
|
2
|
-
<ng-content class="mt-5"></ng-content>
|
|
3
|
-
<div class="h-full flex flex-col flex-1 overflow-auto no-scrollbar">
|
|
4
|
-
<table *ngIf="data"
|
|
5
|
-
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">
|
|
6
|
-
<thead class="text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10">
|
|
7
|
-
<tr *ngIf="data.length <= 0"
|
|
8
|
-
class="flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800">
|
|
9
|
-
<th app-chr-table-header-cell class="p-3" *ngFor="let column of columns" display="{{ column.display }}"
|
|
10
|
-
column="{{ column.properties }}" [(isAsc)]="isAsc" (isAscChange)="emitIsAsc($event)" [(sortBy)]="sortBy"
|
|
11
|
-
(sortByChange)="emitSortBy($event)"></th>
|
|
12
|
-
<th *ngIf="actions"
|
|
13
|
-
class="h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36"
|
|
14
|
-
[ngClass]="actions.length > 1 ? 'sm:w-72' : 'w-36'">
|
|
15
|
-
Actions
|
|
16
|
-
</th>
|
|
17
|
-
</tr>
|
|
18
|
-
<tr *ngFor="let entry of data"
|
|
19
|
-
class="flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800">
|
|
20
|
-
<th app-chr-table-header-cell class="p-3 h-auto" *ngFor="let column of columns" display="{{ column.display }}"
|
|
21
|
-
column="{{ column.properties }}" [(isAsc)]="isAsc" (isAscChange)="emitIsAsc($event)" [(sortBy)]="sortBy"
|
|
22
|
-
(sortByChange)="emitSortBy($event)"></th>
|
|
23
|
-
<th *ngIf="actions"
|
|
24
|
-
class="h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36"
|
|
25
|
-
[ngClass]="actions.length > 1 ? 'sm:w-72' : 'w-36'">
|
|
26
|
-
Actions
|
|
27
|
-
</th>
|
|
28
|
-
</tr>
|
|
29
|
-
</thead>
|
|
30
|
-
<tbody class="w-full dark:bg-slate-600">
|
|
31
|
-
<tr *ngIf="data.length <= 0"
|
|
32
|
-
class="flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600">
|
|
33
|
-
<td class="p-3 h-14">Pas de donnée(s)</td>
|
|
34
|
-
<td *ngIf="actions" class="p-3 h-14 grid gap-3 justify-center align-middle items-center"
|
|
35
|
-
[ngClass]="actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'"></td>
|
|
36
|
-
</tr>
|
|
37
|
-
<tr *ngFor="let entry of data | sort:isAsc:sortBy ; let i = index" [attr.data-index]="i"
|
|
38
|
-
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">
|
|
39
|
-
<td *ngFor="let column of columns" [ngClass]="
|
|
40
|
-
column.chipsTarget || column.chipsDisplay
|
|
41
|
-
? ''
|
|
42
|
-
: ''
|
|
43
|
-
" class="p-3 min-h-[2.75rem] h-auto">
|
|
44
|
-
<div class="flex flex-row justify-between">
|
|
45
|
-
{{
|
|
46
|
-
column.date
|
|
47
|
-
? column.callback
|
|
48
|
-
? column.callback(getProperty(entry, column.properties))
|
|
49
|
-
: (getProperty(entry, column.properties) | date : column.date)
|
|
50
|
-
: column.callback
|
|
51
|
-
? column.callback(getProperty(entry, column.properties))
|
|
52
|
-
: getProperty(entry, column.properties)
|
|
53
|
-
}}
|
|
54
|
-
<div *ngIf="column.chipsTarget || column.chipsDisplay">
|
|
55
|
-
<span *ngIf="
|
|
56
|
-
column.chipsCallback
|
|
57
|
-
? column.chipsCallback(entry)
|
|
58
|
-
: getProperty(entry, column.chipsTarget)
|
|
59
|
-
"
|
|
60
|
-
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">{{
|
|
61
|
-
column.chipsDisplay && column.chipsDisplay[0] }}</span>
|
|
62
|
-
<span *ngIf="
|
|
63
|
-
column.chipsCallback
|
|
64
|
-
? !column.chipsCallback(entry)
|
|
65
|
-
: !getProperty(entry, column.chipsTarget)
|
|
66
|
-
"
|
|
67
|
-
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">{{
|
|
68
|
-
column.chipsDisplay && column.chipsDisplay[1] }}</span>
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
</td>
|
|
72
|
-
<td *ngIf="actions" class="p-3 h-14">
|
|
73
|
-
<div class="grid gap-3 justify-center align-middle items-center"
|
|
74
|
-
[ngClass]="actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'">
|
|
75
|
-
<app-chr-button *ngFor="let action of actions" [disabled]="
|
|
76
|
-
action.disabledCallback
|
|
77
|
-
? action.disabledCallback(entry)
|
|
78
|
-
: action.disabled || false
|
|
79
|
-
" [display]="action.display" [click]="action.callback.bind(null, entry, i)" [color]="action.color"
|
|
80
|
-
type="table">
|
|
81
|
-
</app-chr-button>
|
|
82
|
-
</div>
|
|
83
|
-
</td>
|
|
84
|
-
</tr>
|
|
85
|
-
</tbody>
|
|
86
|
-
</table>
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
@use '@angular/material' as mat;
|
|
3
|
-
@import '../../../styles.scss';
|
|
4
|
-
|
|
5
|
-
$color-config: mat.get-color-config($chr-theme);
|
|
6
|
-
$primary-palette: map.get($color-config, 'primary');
|
|
7
|
-
$accent-palette: map.get($color-config, 'accent');
|
|
8
|
-
|
|
9
|
-
.text-primary {
|
|
10
|
-
color: mat.get-color-from-palette($primary-palette);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
thead {
|
|
14
|
-
background-color: mat.get-color-from-palette($accent-palette, A200);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
::ng-deep tbody tr td{
|
|
18
|
-
padding: theme('padding.3');
|
|
19
|
-
height: theme('height.14');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
::ng-deep .cell {
|
|
23
|
-
padding: theme('padding.3');
|
|
24
|
-
height: theme('height.14');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@media (min-width: 640px) {
|
|
28
|
-
table {
|
|
29
|
-
display: inline-table !important;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
thead tr:not(:first-child) {
|
|
33
|
-
display: none;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.border-primary {
|
|
37
|
-
border-width: 2px;
|
|
38
|
-
--tw-border-opacity: 1;
|
|
39
|
-
border-color: mat.get-color-from-palette($accent-palette, A200);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.no-scrollbar::-webkit-scrollbar {
|
|
44
|
-
display: none;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Hide scrollbar for IE, Edge and Firefox */
|
|
48
|
-
.no-scrollbar {
|
|
49
|
-
-ms-overflow-style: none;
|
|
50
|
-
/* IE and Edge */
|
|
51
|
-
scrollbar-width: none;
|
|
52
|
-
/* Firefox */
|
|
53
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { ChrTableComponent } from './chr-table.component';
|
|
4
|
-
|
|
5
|
-
describe('ChrTableComponent', () => {
|
|
6
|
-
let component: ChrTableComponent;
|
|
7
|
-
let fixture: ComponentFixture<ChrTableComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ ChrTableComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
|
|
15
|
-
fixture = TestBed.createComponent(ChrTableComponent);
|
|
16
|
-
component = fixture.componentInstance;
|
|
17
|
-
fixture.detectChanges();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('should create', () => {
|
|
21
|
-
expect(component).toBeTruthy();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import * as moment from 'moment';
|
|
3
|
-
import {
|
|
4
|
-
Component,
|
|
5
|
-
Input,
|
|
6
|
-
AfterViewInit,
|
|
7
|
-
EventEmitter,
|
|
8
|
-
Output,
|
|
9
|
-
} from '@angular/core';
|
|
10
|
-
|
|
11
|
-
export interface IColumn {
|
|
12
|
-
display: string;
|
|
13
|
-
chipsTarget?: string[];
|
|
14
|
-
chipsDisplay?: string[];
|
|
15
|
-
chipsCallback?: Function;
|
|
16
|
-
properties?: string[];
|
|
17
|
-
callback?: Function;
|
|
18
|
-
date?: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface IAction {
|
|
22
|
-
display: string;
|
|
23
|
-
callback: Function;
|
|
24
|
-
disabled?: boolean;
|
|
25
|
-
disabledCallback?: Function;
|
|
26
|
-
color: 'accent' | 'primary' | 'warn';
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@Component({
|
|
30
|
-
selector: 'app-chr-table, [app-chr-table]',
|
|
31
|
-
templateUrl: './chr-table.component.html',
|
|
32
|
-
styleUrls: ['./chr-table.component.scss'],
|
|
33
|
-
})
|
|
34
|
-
export class ChrTableComponent implements AfterViewInit {
|
|
35
|
-
@Input() columns: IColumn[];
|
|
36
|
-
@Input() data: any[] = [];
|
|
37
|
-
@Input() actions: IAction[];
|
|
38
|
-
|
|
39
|
-
@Input() isAsc: boolean = true;
|
|
40
|
-
@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();
|
|
41
|
-
@Input() sortBy: string;
|
|
42
|
-
@Output() sortByChange: EventEmitter<string> = new EventEmitter();
|
|
43
|
-
|
|
44
|
-
constructor(private _date: DatePipe) {}
|
|
45
|
-
|
|
46
|
-
ngAfterViewInit(): void {}
|
|
47
|
-
|
|
48
|
-
emitIsAsc(isAsc: any) {
|
|
49
|
-
this.isAscChange.emit(isAsc);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
emitSortBy(sortBy: any) {
|
|
53
|
-
this.sortByChange.emit(sortBy);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
getProperty = (entry: any, properties?: any[]) => {
|
|
57
|
-
if (!properties) return entry;
|
|
58
|
-
let value = entry;
|
|
59
|
-
for (const i of properties) {
|
|
60
|
-
value = (value as any)?.[i];
|
|
61
|
-
}
|
|
62
|
-
return value;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
getIsAsc = () => {
|
|
66
|
-
return this.isAsc;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
getSortBy = () => {
|
|
70
|
-
return this.sortBy;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<div class="relative w-full cursor-pointer flex flex-row justify-between align-middle self-center"
|
|
2
|
-
(click)="orderBy(column)" id="chr_th_cell_{{ column }}">
|
|
3
|
-
<p>{{ display }}</p>
|
|
4
|
-
<div *ngIf="sortBy" class="absolute right-3 top-0 h-0 w-0">
|
|
5
|
-
<mat-icon *ngIf="sortBy == column && isAsc">arrow_upward</mat-icon>
|
|
6
|
-
<mat-icon *ngIf="sortBy == column && !isAsc">arrow_downward</mat-icon>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
9
|
-
<ng-content></ng-content>
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
@use '@angular/material' as mat;
|
|
3
|
-
@import '../../../styles.scss';
|
|
4
|
-
|
|
5
|
-
$color-config: mat.get-color-config($chr-theme);
|
|
6
|
-
$primary-palette: map.get($color-config, 'primary');
|
|
7
|
-
$accent-palette: map.get($color-config, 'accent');
|
|
8
|
-
|
|
9
|
-
.text-primary {
|
|
10
|
-
color: mat.get-color-from-palette($primary-palette);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
thead {
|
|
14
|
-
background-color: mat.get-color-from-palette($accent-palette, A200);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@media (min-width: 640px) {
|
|
18
|
-
table {
|
|
19
|
-
display: inline-table !important;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
thead tr:not(:first-child) {
|
|
23
|
-
display: none;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.border-primary {
|
|
27
|
-
border-width: 2px;
|
|
28
|
-
--tw-border-opacity: 1;
|
|
29
|
-
border-color: mat.get-color-from-palette($accent-palette, A200);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { ChrTableHeaderCellComponent } from './chr-table-header-cell.component';
|
|
4
|
-
|
|
5
|
-
describe('ChrTableHeaderCellComponent', () => {
|
|
6
|
-
let component: ChrTableHeaderCellComponent;
|
|
7
|
-
let fixture: ComponentFixture<ChrTableHeaderCellComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ ChrTableHeaderCellComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
|
|
15
|
-
fixture = TestBed.createComponent(ChrTableHeaderCellComponent);
|
|
16
|
-
component = fixture.componentInstance;
|
|
17
|
-
fixture.detectChanges();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('should create', () => {
|
|
21
|
-
expect(component).toBeTruthy();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Component,
|
|
3
|
-
Input,
|
|
4
|
-
Output,
|
|
5
|
-
EventEmitter,
|
|
6
|
-
Directive,
|
|
7
|
-
} from '@angular/core';
|
|
8
|
-
/**
|
|
9
|
-
* This should only be used as a directive
|
|
10
|
-
*/
|
|
11
|
-
@Component({
|
|
12
|
-
selector: 'app-chr-table-header-cell, [app-chr-table-header-cell]',
|
|
13
|
-
templateUrl: './chr-table-header-cell.component.html',
|
|
14
|
-
styleUrls: ['./chr-table-header-cell.component.scss'],
|
|
15
|
-
})
|
|
16
|
-
export class ChrTableHeaderCellComponent {
|
|
17
|
-
@Input() display: string;
|
|
18
|
-
@Input() column: string;
|
|
19
|
-
@Input() isAsc: boolean = true;
|
|
20
|
-
@Output() isAscChange: EventEmitter<boolean> = new EventEmitter();
|
|
21
|
-
@Input() sortBy: string;
|
|
22
|
-
@Output() sortByChange: EventEmitter<string> = new EventEmitter();
|
|
23
|
-
|
|
24
|
-
orderBy = (column: string) => {
|
|
25
|
-
if (!this.sortBy) this.sortBy = column;
|
|
26
|
-
|
|
27
|
-
if (this.sortBy == column) {
|
|
28
|
-
this.isAsc = !this.isAsc;
|
|
29
|
-
this.sortBy = column;
|
|
30
|
-
this.isAscChange.emit(this.isAsc);
|
|
31
|
-
this.sortByChange.emit(this.sortBy);
|
|
32
|
-
} else {
|
|
33
|
-
this.isAsc = true;
|
|
34
|
-
this.sortBy = column;
|
|
35
|
-
this.isAscChange.emit(this.isAsc);
|
|
36
|
-
this.sortByChange.emit(this.sortBy);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { ChrDeleteModalComponent } from '../chr-delete-modal/chr-delete-modal.component';
|
|
4
|
-
|
|
5
|
-
@Injectable({
|
|
6
|
-
providedIn: 'root',
|
|
7
|
-
})
|
|
8
|
-
export class DialogService {
|
|
9
|
-
constructor(private dialog: MatDialog) {}
|
|
10
|
-
|
|
11
|
-
openDelete = (callback?: Function, callbackElement?: any) => {
|
|
12
|
-
const dialogRef = this.open(ChrDeleteModalComponent);
|
|
13
|
-
|
|
14
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
15
|
-
console.log(result);
|
|
16
|
-
if (result == true) callback?.(callbackElement);
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
open = (component: any) => {
|
|
21
|
-
return this.dialog.open(component);
|
|
22
|
-
};
|
|
23
|
-
}
|
package/styles.scss
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// Custom Theming for Angular Material
|
|
2
|
-
// For more information: https://material.angular.io/guide/theming
|
|
3
|
-
@use '@angular/material' as mat;
|
|
4
|
-
//Tailwind import
|
|
5
|
-
@tailwind base;
|
|
6
|
-
@tailwind components;
|
|
7
|
-
@tailwind utilities;
|
|
8
|
-
// Plus imports for other components in your app.
|
|
9
|
-
//IMPORT MY THEME
|
|
10
|
-
@import 'chr-theme.scss';
|
|
11
|
-
@import '@angular/material/theming';
|
|
12
|
-
@import url('node_modules/material-design-icons-iconfont/dist/material-design-icons.css');
|
|
13
|
-
|
|
14
|
-
// Include the common styles for Angular Material. We include this here so that you only
|
|
15
|
-
// have to load a single css file for Angular Material in your app.
|
|
16
|
-
// Be sure that you only ever include this mixin once!
|
|
17
|
-
@include mat.core();
|
|
18
|
-
|
|
19
|
-
// Define the palettes for your theme using the Material Design palettes available in palette.scss
|
|
20
|
-
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
|
|
21
|
-
// hue. Available color palettes: https://material.io/design/color/
|
|
22
|
-
$StockManager-primary: mat.define-palette(mat.$indigo-palette);
|
|
23
|
-
$StockManager-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
|
|
24
|
-
|
|
25
|
-
// The warn palette is optional (defaults to red).
|
|
26
|
-
$StockManager-warn: mat.define-palette(mat.$red-palette);
|
|
27
|
-
|
|
28
|
-
// Create the theme object. A theme consists of configurations for individual
|
|
29
|
-
// theming systems such as "color" or "typography".
|
|
30
|
-
$StockManager-theme: mat.define-light-theme((
|
|
31
|
-
color: (
|
|
32
|
-
primary: $StockManager-primary,
|
|
33
|
-
accent: $StockManager-accent,
|
|
34
|
-
warn: $StockManager-warn,
|
|
35
|
-
)
|
|
36
|
-
));
|
|
37
|
-
|
|
38
|
-
$StockManager-dark-theme: mat.define-dark-theme((color: (
|
|
39
|
-
primary: $StockManager-primary,
|
|
40
|
-
accent: $StockManager-accent,
|
|
41
|
-
warn: $StockManager-warn,
|
|
42
|
-
)));
|
|
43
|
-
|
|
44
|
-
// Include theme styles for core and each component used in your app.
|
|
45
|
-
// Alternatively, you can import and @include the theme mixins for each component
|
|
46
|
-
// that you are using.
|
|
47
|
-
|
|
48
|
-
//COMMENT OUT THE DEFAULT THEME
|
|
49
|
-
//@include mat.all-component-themes($StockManager-theme);
|
|
50
|
-
//USE THE IMPORTED THEME INSTEAD
|
|
51
|
-
//@include mat.all-component-themes($chr-theme);
|
|
52
|
-
|
|
53
|
-
.dark-theme {
|
|
54
|
-
// use our theme with angular-material-theme mixin
|
|
55
|
-
// @include angular-material-theme($dark-theme);
|
|
56
|
-
// @include mat.core-theme($light-theme);
|
|
57
|
-
@include mat.all-component-themes($chr-dark-theme);
|
|
58
|
-
background-color: black;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.light-theme {
|
|
62
|
-
// use our theme with angular-material-theme mixin
|
|
63
|
-
// @include angular-material-theme($dark-theme);
|
|
64
|
-
// @include mat.core-theme($light-theme);
|
|
65
|
-
@include mat.all-component-themes($chr-theme);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* You can add global styles to this file, and also import other style files */
|
|
69
|
-
html, body { height: 100%; }
|
|
70
|
-
body { margin: 0; font-family: Roboto, "Helvetica Neue", serif; }
|
|
71
|
-
|
|
72
|
-
@layer base {
|
|
73
|
-
a {
|
|
74
|
-
@apply text-black;
|
|
75
|
-
@apply dark:text-gray-400
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.mat-toolbar{
|
|
79
|
-
@apply z-50
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.no-scrollbar::-webkit-scrollbar {
|
|
84
|
-
display: none;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/* Hide scrollbar for IE, Edge and Firefox */
|
|
88
|
-
.no-scrollbar {
|
|
89
|
-
-ms-overflow-style: none;
|
|
90
|
-
/* IE and Edge */
|
|
91
|
-
scrollbar-width: none;
|
|
92
|
-
/* Firefox */
|
|
93
|
-
}
|
package/tailwind.config.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
content: [
|
|
4
|
-
"./lib/**/*.{html,ts,js}",
|
|
5
|
-
"./**/*.{html,js,ts}",
|
|
6
|
-
"./projects/chrv-components/**/*.{html,js,ts}",
|
|
7
|
-
],
|
|
8
|
-
theme: {
|
|
9
|
-
extend: {},
|
|
10
|
-
screens: {
|
|
11
|
-
sm: "640px",
|
|
12
|
-
// => @media (min-width: 640px) { ... }
|
|
13
|
-
|
|
14
|
-
md: "768px",
|
|
15
|
-
// => @media (min-width: 768px) { ... }
|
|
16
|
-
xmd: "961px",
|
|
17
|
-
lg: "1024px",
|
|
18
|
-
// => @media (min-width: 1024px) { ... }
|
|
19
|
-
|
|
20
|
-
xl: "1280px",
|
|
21
|
-
// => @media (min-width: 1280px) { ... }
|
|
22
|
-
|
|
23
|
-
"2xl": "1536px",
|
|
24
|
-
// => @media (min-width: 1536px) { ... }
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
corePlugins: {
|
|
28
|
-
preflight: true,
|
|
29
|
-
},
|
|
30
|
-
};
|
package/theme.scss
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
@use '@angular/material' as mat;
|
|
2
|
-
@import 'chr-theme.scss';
|
|
3
|
-
@include mat.core();
|
|
4
|
-
|
|
5
|
-
$my-theme-primary: mat.define-palette(mat.$indigo-palette, 500, 200, 800);
|
|
6
|
-
$my-theme-accent: mat.define-palette(mat.$cyan-palette);
|
|
7
|
-
$my-theme-warn: mat.define-palette(mat.$deep-orange-palette, A200);
|
|
8
|
-
|
|
9
|
-
$light-theme: mat.define-light-theme(
|
|
10
|
-
(
|
|
11
|
-
color: (
|
|
12
|
-
primary: $my-theme-primary,
|
|
13
|
-
accent: $my-theme-accent,
|
|
14
|
-
warn: $my-theme-warn,
|
|
15
|
-
),
|
|
16
|
-
)
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
// ====================================
|
|
20
|
-
// Make sure to have a dark background
|
|
21
|
-
// Dropdowns will blend in with light
|
|
22
|
-
// backgrounds.
|
|
23
|
-
// ====================================
|
|
24
|
-
$dark-theme: mat.define-dark-theme(
|
|
25
|
-
(
|
|
26
|
-
color: (
|
|
27
|
-
primary: $my-theme-primary,
|
|
28
|
-
accent: $my-theme-accent,
|
|
29
|
-
warn: $my-theme-warn,
|
|
30
|
-
),
|
|
31
|
-
)
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
// =====================================
|
|
35
|
-
// always include only once per project
|
|
36
|
-
// =====================================
|
|
37
|
-
/*
|
|
38
|
-
.dark-theme {
|
|
39
|
-
// use our theme with angular-material-theme mixin
|
|
40
|
-
// @include angular-material-theme($dark-theme);
|
|
41
|
-
// @include mat.core-theme($light-theme);
|
|
42
|
-
@include mat.all-component-themes($dark-theme);
|
|
43
|
-
background-color: black;
|
|
44
|
-
}
|
|
45
|
-
.light-theme {
|
|
46
|
-
// use our theme with angular-material-theme mixin
|
|
47
|
-
// @include angular-material-theme($dark-theme);
|
|
48
|
-
// @include mat.core-theme($light-theme);
|
|
49
|
-
@include mat.all-component-themes($light-theme);
|
|
50
|
-
}
|
|
51
|
-
*/
|
|
52
|
-
html,
|
|
53
|
-
body {
|
|
54
|
-
height: 100%;
|
|
55
|
-
}
|
|
56
|
-
body {
|
|
57
|
-
margin: 0;
|
|
58
|
-
font-family: Roboto, 'Helvetica Neue', sans-serif;
|
|
59
|
-
}
|
package/tsconfig.lib.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
-
{
|
|
3
|
-
"extends": "../../tsconfig.json",
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
"outDir": "../../out-tsc/lib",
|
|
6
|
-
"declaration": true,
|
|
7
|
-
"declarationMap": true,
|
|
8
|
-
"inlineSources": true,
|
|
9
|
-
"types": []
|
|
10
|
-
},
|
|
11
|
-
"exclude": [
|
|
12
|
-
"**/*.spec.ts"
|
|
13
|
-
]
|
|
14
|
-
}
|
package/tsconfig.lib.prod.json
DELETED
package/tsconfig.spec.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
-
{
|
|
3
|
-
"extends": "../../tsconfig.json",
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
"outDir": "../../out-tsc/spec",
|
|
6
|
-
"types": [
|
|
7
|
-
"jasmine"
|
|
8
|
-
]
|
|
9
|
-
},
|
|
10
|
-
"include": [
|
|
11
|
-
"**/*.spec.ts",
|
|
12
|
-
"**/*.d.ts"
|
|
13
|
-
]
|
|
14
|
-
}
|