barak-ui 1.0.0
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/README.md +63 -0
- package/fesm2022/barak-ui.mjs +382 -0
- package/fesm2022/barak-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/autocomplete/barak-ui-autocomplete.component.d.ts +24 -0
- package/lib/components/barak-ui-spinner/barak-ui-spinner.component.d.ts +5 -0
- package/lib/components/button/button.component.d.ts +11 -0
- package/lib/components/dialog/confirmation-dialog/barak-ui-dialog.component.d.ts +17 -0
- package/lib/components/dialog/generic-dialog/barak-ui-generic-dialog.component.d.ts +9 -0
- package/lib/components/pagination/barak-ui.pagniation.component.d.ts +11 -0
- package/lib/components/table/barak-ui-table.component.d.ts +28 -0
- package/lib/services/barak-ui.modal.service.d.ts +20 -0
- package/lib/services/barak-ui.toast.service.d.ts +21 -0
- package/package.json +23 -0
- package/public-api.d.ts +9 -0
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# BarakUi
|
|
2
|
+
|
|
3
|
+
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ng generate component component-name
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ng generate --help
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Building
|
|
20
|
+
|
|
21
|
+
To build the library, run:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ng build barak-ui
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
|
|
28
|
+
|
|
29
|
+
### Publishing the Library
|
|
30
|
+
|
|
31
|
+
Once the project is built, you can publish your library by following these steps:
|
|
32
|
+
|
|
33
|
+
1. Navigate to the `dist` directory:
|
|
34
|
+
```bash
|
|
35
|
+
cd dist/barak-ui
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. Run the `npm publish` command to publish your library to the npm registry:
|
|
39
|
+
```bash
|
|
40
|
+
npm publish
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Running unit tests
|
|
44
|
+
|
|
45
|
+
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
ng test
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Running end-to-end tests
|
|
52
|
+
|
|
53
|
+
For end-to-end (e2e) testing, run:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
ng e2e
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
|
|
60
|
+
|
|
61
|
+
## Additional Resources
|
|
62
|
+
|
|
63
|
+
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Output, Input, Component, Inject, ViewChild } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/material/dialog';
|
|
4
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
5
|
+
import * as i1$1 from '@angular/material/snack-bar';
|
|
6
|
+
import * as i1$2 from '@angular/common';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
8
|
+
import * as i3 from '@angular/material/button';
|
|
9
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
+
import * as i2 from '@angular/material/icon';
|
|
11
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
12
|
+
import * as i2$2 from '@angular/forms';
|
|
13
|
+
import { FormsModule } from '@angular/forms';
|
|
14
|
+
import * as i7 from '@angular/material/checkbox';
|
|
15
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
16
|
+
import * as i5 from '@angular/material/menu';
|
|
17
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
18
|
+
import * as i2$1 from '@angular/material/table';
|
|
19
|
+
import { MatTableModule } from '@angular/material/table';
|
|
20
|
+
import * as i6 from '@angular/material/tooltip';
|
|
21
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
22
|
+
import * as i1$3 from '@angular/material/paginator';
|
|
23
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
24
|
+
import * as i3$1 from '@angular/material/select';
|
|
25
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
26
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
27
|
+
import * as i4 from '@angular/material/input';
|
|
28
|
+
import { MatInputModule } from '@angular/material/input';
|
|
29
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
30
|
+
import * as i1$4 from '@angular/material/progress-spinner';
|
|
31
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
32
|
+
|
|
33
|
+
class BarakUiModalService {
|
|
34
|
+
dialog;
|
|
35
|
+
constructor(dialog) {
|
|
36
|
+
this.dialog = dialog;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ouvre une modale générique
|
|
40
|
+
*
|
|
41
|
+
* @param component Le composant à afficher dans la modale
|
|
42
|
+
* @param data Les données à transmettre au composant
|
|
43
|
+
* @param options Options supplémentaires pour configurer la modale
|
|
44
|
+
* @returns Une référence à la modale
|
|
45
|
+
*/
|
|
46
|
+
openModal(component, data, options = { width: '400px', maxWidth: '80wv' }) {
|
|
47
|
+
console.log("options.width", options.width);
|
|
48
|
+
return this.dialog.open(component, {
|
|
49
|
+
width: options.width,
|
|
50
|
+
maxWidth: options.maxWidth,
|
|
51
|
+
data: data,
|
|
52
|
+
disableClose: true
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiModalService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
56
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiModalService, providedIn: 'root' });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiModalService, decorators: [{
|
|
59
|
+
type: Injectable,
|
|
60
|
+
args: [{
|
|
61
|
+
providedIn: 'root'
|
|
62
|
+
}]
|
|
63
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }] });
|
|
64
|
+
|
|
65
|
+
class BarakUiToastService {
|
|
66
|
+
snackBar;
|
|
67
|
+
constructor(snackBar) {
|
|
68
|
+
this.snackBar = snackBar;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Affiche un message de snack bar
|
|
72
|
+
* @param message Le texte à afficher
|
|
73
|
+
* @param type Type de message ('success', 'error', 'info')
|
|
74
|
+
*/
|
|
75
|
+
open(message, type = 'info', duration = 3000, horizontalPosition = 'right', verticalPosition = 'top') {
|
|
76
|
+
const config = {
|
|
77
|
+
duration: duration,
|
|
78
|
+
horizontalPosition: horizontalPosition,
|
|
79
|
+
verticalPosition: verticalPosition,
|
|
80
|
+
panelClass: [`snackbar-${type}`]
|
|
81
|
+
};
|
|
82
|
+
this.snackBar.open(message, 'Fermer', config);
|
|
83
|
+
}
|
|
84
|
+
success(message) {
|
|
85
|
+
this.open(message, 'success');
|
|
86
|
+
}
|
|
87
|
+
error(message) {
|
|
88
|
+
this.open(message, 'error');
|
|
89
|
+
}
|
|
90
|
+
info(message) {
|
|
91
|
+
this.open(message, 'info');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Ferme tous les snackbars ouverts
|
|
95
|
+
*/
|
|
96
|
+
dismiss() {
|
|
97
|
+
this.snackBar.dismiss();
|
|
98
|
+
}
|
|
99
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiToastService, deps: [{ token: i1$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiToastService, providedIn: 'root' });
|
|
101
|
+
}
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiToastService, decorators: [{
|
|
103
|
+
type: Injectable,
|
|
104
|
+
args: [{
|
|
105
|
+
providedIn: 'root'
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: () => [{ type: i1$1.MatSnackBar }] });
|
|
108
|
+
|
|
109
|
+
class BarakUiButtonComponent {
|
|
110
|
+
variant = 'primary';
|
|
111
|
+
size = 'md';
|
|
112
|
+
disabled = false;
|
|
113
|
+
clicked = new EventEmitter();
|
|
114
|
+
onClick(event) {
|
|
115
|
+
if (!this.disabled) {
|
|
116
|
+
this.clicked.emit();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiButtonComponent, isStandalone: true, selector: "barak-ui-button", inputs: { variant: "variant", size: "size", disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button class=\"barak-btn\" [ngClass]=\"[\n 'barak-btn--' + variant,\n 'barak-btn--' + size,\n disabled ? 'barak-btn--disabled' : ''\n ]\" [disabled]=\"disabled\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}.barak-btn{border:none;border-radius:8px;padding:.5rem 1rem;font-weight:600;cursor:pointer;transition:all .2s ease-in-out}.barak-btn--primary{background-color:#c25729;color:#fff}.barak-btn--secondary{background-color:#6b7280;color:#fff}.barak-btn--danger{background-color:#e53935;color:#fff}.barak-btn--sm{font-size:.8rem}.barak-btn--md{font-size:1rem}.barak-btn--lg{font-size:1.2rem}.barak-btn:disabled{opacity:.6;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiButtonComponent, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: 'barak-ui-button', imports: [
|
|
125
|
+
CommonModule
|
|
126
|
+
], template: "<button class=\"barak-btn\" [ngClass]=\"[\n 'barak-btn--' + variant,\n 'barak-btn--' + size,\n disabled ? 'barak-btn--disabled' : ''\n ]\" [disabled]=\"disabled\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}.barak-btn{border:none;border-radius:8px;padding:.5rem 1rem;font-weight:600;cursor:pointer;transition:all .2s ease-in-out}.barak-btn--primary{background-color:#c25729;color:#fff}.barak-btn--secondary{background-color:#6b7280;color:#fff}.barak-btn--danger{background-color:#e53935;color:#fff}.barak-btn--sm{font-size:.8rem}.barak-btn--md{font-size:1rem}.barak-btn--lg{font-size:1.2rem}.barak-btn:disabled{opacity:.6;cursor:not-allowed}\n"] }]
|
|
127
|
+
}], propDecorators: { variant: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], size: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], disabled: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], clicked: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}] } });
|
|
136
|
+
|
|
137
|
+
class BarakUiConfirmationDialogComponent {
|
|
138
|
+
dialogRef;
|
|
139
|
+
data;
|
|
140
|
+
matIconRegistry;
|
|
141
|
+
constructor(dialogRef, data, matIconRegistry) {
|
|
142
|
+
this.dialogRef = dialogRef;
|
|
143
|
+
this.data = data;
|
|
144
|
+
this.matIconRegistry = matIconRegistry;
|
|
145
|
+
this.matIconRegistry.setDefaultFontSetClass('material-icons');
|
|
146
|
+
}
|
|
147
|
+
onCancel() {
|
|
148
|
+
this.dialogRef.close(false);
|
|
149
|
+
}
|
|
150
|
+
onConfirm() {
|
|
151
|
+
this.dialogRef.close(true);
|
|
152
|
+
}
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiConfirmationDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.MatIconRegistry }], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiConfirmationDialogComponent, isStandalone: true, selector: "barak-ui-confirmation-dialog", ngImport: i0, template: "<div class=\"confirmation-dialog\">\n <button mat-icon-button class=\"close-button\" (click)=\"onCancel()\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div class=\"dialog-icon-wrapper\">\n <mat-icon class=\"dialog-icon\">info</mat-icon>\n </div>\n\n <h2 mat-dialog-title class=\"dialog-title\">Confirmation</h2>\n\n <mat-dialog-content class=\"dialog-content\">\n <p class=\"dialog-message\">{{ data.message }}</p>\n </mat-dialog-content>\n\n <mat-dialog-actions class=\"dialog-actions\">\n <button mat-stroked-button class=\"cancel-btn\" (click)=\"onCancel()\">\n Annuler\n </button>\n <button mat-raised-button class=\"confirm-btn\" (click)=\"onConfirm()\">\n Confirmer\n </button>\n </mat-dialog-actions>\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}.confirmation-dialog{position:relative;padding:0;margin:0;background:#fff;border-radius:8px;overflow:hidden}.confirmation-dialog .close-button{position:absolute;top:12px;right:12px;z-index:10;width:32px;height:32px;color:#95a5a6;transition:all .3s ease}.confirmation-dialog .close-button:hover{background-color:#95a5a61a;color:#7f8c8d;transform:rotate(90deg)}.confirmation-dialog .close-button mat-icon{font-size:20px;width:20px;height:20px}.confirmation-dialog .dialog-icon-wrapper{display:flex;justify-content:center;align-items:center;padding:32px 24px 16px}.confirmation-dialog .dialog-icon-wrapper .dialog-icon{font-size:64px;width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#e8956f,#c25729);color:#fff;box-shadow:0 8px 24px #c257294d;animation:iconPulse 2s ease-in-out infinite}@keyframes iconPulse{0%,to{transform:scale(1);box-shadow:0 8px 24px #c257294d}50%{transform:scale(1.05);box-shadow:0 12px 32px #c2572966}}.confirmation-dialog .dialog-title{text-align:center;margin:0;padding:0 24px;color:#2c3e50;font-size:24px;font-weight:700;letter-spacing:-.5px}.confirmation-dialog .dialog-content{padding:20px 32px 32px;text-align:center}.confirmation-dialog .dialog-content .dialog-message{margin:0;font-size:16px;line-height:1.6;color:#7f8c8d;font-weight:400}.confirmation-dialog .dialog-actions{padding:0 24px 32px;margin:0;display:flex;justify-content:center;gap:16px}.confirmation-dialog .dialog-actions button{min-width:140px;height:48px;font-weight:600;font-size:15px;border-radius:12px;transition:all .3s cubic-bezier(.4,0,.2,1);text-transform:none;letter-spacing:.25px}.confirmation-dialog .dialog-actions button.cancel-btn{border:2px solid #e0e0e0;color:#7f8c8d;background:#fff}.confirmation-dialog .dialog-actions button.cancel-btn:hover{background-color:#f5f5f5;border-color:#bdc3c7;transform:translateY(-2px);box-shadow:0 6px 16px #00000014}.confirmation-dialog .dialog-actions button.cancel-btn:active{transform:translateY(0)}.confirmation-dialog .dialog-actions button.confirm-btn{background:linear-gradient(135deg,#c25729,#8b3a1f);color:#fff;box-shadow:0 4px 16px #c2572959;border:none}.confirmation-dialog .dialog-actions button.confirm-btn:hover{background:linear-gradient(135deg,#d36231,#c25729);transform:translateY(-2px);box-shadow:0 8px 24px #c2572973}.confirmation-dialog .dialog-actions button.confirm-btn:active{transform:translateY(0)}@media (max-width: 600px){.confirmation-dialog{border-radius:12px}.confirmation-dialog .close-button{top:8px;right:8px;width:28px;height:28px}.confirmation-dialog .close-button mat-icon{font-size:18px;width:18px;height:18px}.confirmation-dialog .dialog-icon-wrapper{padding:24px 20px 12px}.confirmation-dialog .dialog-icon-wrapper .dialog-icon{font-size:56px;width:56px;height:56px;padding:14px}.confirmation-dialog .dialog-title{font-size:20px;padding:0 20px}.confirmation-dialog .dialog-content{padding:16px 24px 24px}.confirmation-dialog .dialog-content .dialog-message{font-size:14px}.confirmation-dialog .dialog-actions{padding:0 20px 24px;flex-direction:column;gap:12px}.confirmation-dialog .dialog-actions button{width:100%;min-width:unset;height:44px}.confirmation-dialog .dialog-actions button.cancel-btn{order:2}.confirmation-dialog .dialog-actions button.confirm-btn{order:1}}:host ::ng-deep .mat-mdc-dialog-container{border-radius:16px;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiConfirmationDialogComponent, decorators: [{
|
|
157
|
+
type: Component,
|
|
158
|
+
args: [{ selector: 'barak-ui-confirmation-dialog', imports: [
|
|
159
|
+
CommonModule,
|
|
160
|
+
MatButtonModule,
|
|
161
|
+
MatIconModule,
|
|
162
|
+
MatDialogModule
|
|
163
|
+
], template: "<div class=\"confirmation-dialog\">\n <button mat-icon-button class=\"close-button\" (click)=\"onCancel()\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div class=\"dialog-icon-wrapper\">\n <mat-icon class=\"dialog-icon\">info</mat-icon>\n </div>\n\n <h2 mat-dialog-title class=\"dialog-title\">Confirmation</h2>\n\n <mat-dialog-content class=\"dialog-content\">\n <p class=\"dialog-message\">{{ data.message }}</p>\n </mat-dialog-content>\n\n <mat-dialog-actions class=\"dialog-actions\">\n <button mat-stroked-button class=\"cancel-btn\" (click)=\"onCancel()\">\n Annuler\n </button>\n <button mat-raised-button class=\"confirm-btn\" (click)=\"onConfirm()\">\n Confirmer\n </button>\n </mat-dialog-actions>\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}.confirmation-dialog{position:relative;padding:0;margin:0;background:#fff;border-radius:8px;overflow:hidden}.confirmation-dialog .close-button{position:absolute;top:12px;right:12px;z-index:10;width:32px;height:32px;color:#95a5a6;transition:all .3s ease}.confirmation-dialog .close-button:hover{background-color:#95a5a61a;color:#7f8c8d;transform:rotate(90deg)}.confirmation-dialog .close-button mat-icon{font-size:20px;width:20px;height:20px}.confirmation-dialog .dialog-icon-wrapper{display:flex;justify-content:center;align-items:center;padding:32px 24px 16px}.confirmation-dialog .dialog-icon-wrapper .dialog-icon{font-size:64px;width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#e8956f,#c25729);color:#fff;box-shadow:0 8px 24px #c257294d;animation:iconPulse 2s ease-in-out infinite}@keyframes iconPulse{0%,to{transform:scale(1);box-shadow:0 8px 24px #c257294d}50%{transform:scale(1.05);box-shadow:0 12px 32px #c2572966}}.confirmation-dialog .dialog-title{text-align:center;margin:0;padding:0 24px;color:#2c3e50;font-size:24px;font-weight:700;letter-spacing:-.5px}.confirmation-dialog .dialog-content{padding:20px 32px 32px;text-align:center}.confirmation-dialog .dialog-content .dialog-message{margin:0;font-size:16px;line-height:1.6;color:#7f8c8d;font-weight:400}.confirmation-dialog .dialog-actions{padding:0 24px 32px;margin:0;display:flex;justify-content:center;gap:16px}.confirmation-dialog .dialog-actions button{min-width:140px;height:48px;font-weight:600;font-size:15px;border-radius:12px;transition:all .3s cubic-bezier(.4,0,.2,1);text-transform:none;letter-spacing:.25px}.confirmation-dialog .dialog-actions button.cancel-btn{border:2px solid #e0e0e0;color:#7f8c8d;background:#fff}.confirmation-dialog .dialog-actions button.cancel-btn:hover{background-color:#f5f5f5;border-color:#bdc3c7;transform:translateY(-2px);box-shadow:0 6px 16px #00000014}.confirmation-dialog .dialog-actions button.cancel-btn:active{transform:translateY(0)}.confirmation-dialog .dialog-actions button.confirm-btn{background:linear-gradient(135deg,#c25729,#8b3a1f);color:#fff;box-shadow:0 4px 16px #c2572959;border:none}.confirmation-dialog .dialog-actions button.confirm-btn:hover{background:linear-gradient(135deg,#d36231,#c25729);transform:translateY(-2px);box-shadow:0 8px 24px #c2572973}.confirmation-dialog .dialog-actions button.confirm-btn:active{transform:translateY(0)}@media (max-width: 600px){.confirmation-dialog{border-radius:12px}.confirmation-dialog .close-button{top:8px;right:8px;width:28px;height:28px}.confirmation-dialog .close-button mat-icon{font-size:18px;width:18px;height:18px}.confirmation-dialog .dialog-icon-wrapper{padding:24px 20px 12px}.confirmation-dialog .dialog-icon-wrapper .dialog-icon{font-size:56px;width:56px;height:56px;padding:14px}.confirmation-dialog .dialog-title{font-size:20px;padding:0 20px}.confirmation-dialog .dialog-content{padding:16px 24px 24px}.confirmation-dialog .dialog-content .dialog-message{font-size:14px}.confirmation-dialog .dialog-actions{padding:0 20px 24px;flex-direction:column;gap:12px}.confirmation-dialog .dialog-actions button{width:100%;min-width:unset;height:44px}.confirmation-dialog .dialog-actions button.cancel-btn{order:2}.confirmation-dialog .dialog-actions button.confirm-btn{order:1}}:host ::ng-deep .mat-mdc-dialog-container{border-radius:16px;padding:0}\n"] }]
|
|
164
|
+
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
165
|
+
type: Inject,
|
|
166
|
+
args: [MAT_DIALOG_DATA]
|
|
167
|
+
}] }, { type: i2.MatIconRegistry }] });
|
|
168
|
+
|
|
169
|
+
class BarakUiGenericDialogComponent {
|
|
170
|
+
dialogRef;
|
|
171
|
+
constructor(dialogRef) {
|
|
172
|
+
this.dialogRef = dialogRef;
|
|
173
|
+
}
|
|
174
|
+
onClose() {
|
|
175
|
+
this.dialogRef.close();
|
|
176
|
+
}
|
|
177
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiGenericDialogComponent, deps: [{ token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
178
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiGenericDialogComponent, isStandalone: true, selector: "barak-ui-generic-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\n <h2 mat-dialog-title class=\"dialog-title\">\n <ng-content select=\"[dialog-header]\"></ng-content>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </h2>\n\n <mat-dialog-content>\n <ng-content select=\"[dialog-content]\"></ng-content>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <ng-content select=\"[dialog-actions]\"></ng-content>\n </mat-dialog-actions>\n</div>", styles: [":host .dialog-container{position:relative}:host .close-button{position:absolute;top:0;right:0;margin:10px;color:#000;background:transparent;border:none;cursor:pointer}:host .close-button mat-icon{font-size:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiGenericDialogComponent, decorators: [{
|
|
181
|
+
type: Component,
|
|
182
|
+
args: [{ selector: 'barak-ui-generic-dialog', imports: [
|
|
183
|
+
CommonModule,
|
|
184
|
+
MatButtonModule,
|
|
185
|
+
MatIconModule,
|
|
186
|
+
MatDialogModule
|
|
187
|
+
], template: "<div class=\"dialog-container\">\n <h2 mat-dialog-title class=\"dialog-title\">\n <ng-content select=\"[dialog-header]\"></ng-content>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </h2>\n\n <mat-dialog-content>\n <ng-content select=\"[dialog-content]\"></ng-content>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <ng-content select=\"[dialog-actions]\"></ng-content>\n </mat-dialog-actions>\n</div>", styles: [":host .dialog-container{position:relative}:host .close-button{position:absolute;top:0;right:0;margin:10px;color:#000;background:transparent;border:none;cursor:pointer}:host .close-button mat-icon{font-size:24px}\n"] }]
|
|
188
|
+
}], ctorParameters: () => [{ type: i1.MatDialogRef }] });
|
|
189
|
+
|
|
190
|
+
class BarakUiTableComponent {
|
|
191
|
+
columns = [];
|
|
192
|
+
actions = [];
|
|
193
|
+
dataSource = [];
|
|
194
|
+
isMenu = true;
|
|
195
|
+
displayedColumns = [];
|
|
196
|
+
ngOnChanges(changes) {
|
|
197
|
+
this.displayedColumns = this.columns.map(col => col.field);
|
|
198
|
+
if (this.actions && this.actions.length > 0 && !this.displayedColumns.includes('actions')) {
|
|
199
|
+
this.displayedColumns.push('actions');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
getColumnValue(column, element) {
|
|
203
|
+
if (column.template) {
|
|
204
|
+
return column.template(element);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
return element[column.field];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
isFunction(value) {
|
|
211
|
+
return value && {}.toString.call(value) === '[object Function]';
|
|
212
|
+
}
|
|
213
|
+
onToggleAll(event) {
|
|
214
|
+
const checked = event.checked;
|
|
215
|
+
this.dataSource.forEach((row) => row.selected = checked);
|
|
216
|
+
}
|
|
217
|
+
get allSelected() {
|
|
218
|
+
return this.dataSource.length > 0 && this.dataSource.every((row) => row.selected);
|
|
219
|
+
}
|
|
220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
221
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiTableComponent, isStandalone: true, selector: "barak-ui-table", inputs: { columns: "columns", actions: "actions", dataSource: "dataSource", isMenu: "isMenu" }, usesOnChanges: true, ngImport: i0, template: "<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z2 tables-mat-table\">\n\n <!-- Colonnes dynamiques normales -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.field\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container *ngIf=\"column.field === 'select'; else defaultHeader\">\n <mat-checkbox [checked]=\"allSelected\" (change)=\"onToggleAll($event)\"></mat-checkbox> {{ column.header }}\n </ng-container>\n <ng-template #defaultHeader>\n {{ column.header }}\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <ng-container *ngIf=\"column.field === 'select'; else cellContent\">\n <mat-checkbox [(ngModel)]=\"element.selected\"></mat-checkbox>\n </ng-container>\n <ng-template #cellContent>\n <ng-container *ngIf=\"column.template\">\n <ng-container *ngIf=\"isFunction(column.template); else templateOutlet\">\n {{ column.template(element) }}\n </ng-container>\n <ng-template #templateOutlet>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { $implicit: element }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!column.template\">\n {{ element[column.field] }}\n </ng-container>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Colonne Actions -->\n <ng-container *ngIf=\"actions.length > 0\" matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"align-right\">Actions</th>\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isMenu ? 'align-right' : 'actions-inline'\">\n <ng-container *ngIf=\"isMenu\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button mat-menu-item (click)=\"action?.handler(element)\" [matTooltip]=\"action.tooltip\"\n [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n <span>{{ action.displayName }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n <!-- Affichage sans menu (boutons directs) -->\n <ng-container *ngIf=\"!isMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button class=\"button-actions-no-menu\" mat-icon-button (click)=\"action?.handler(element)\"\n [matTooltip]=\"action.tooltip\" [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n </button>\n </ng-container>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Header et Row -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n</table>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}:host{display:block}:host ::ng-deep .tables-mat-table{width:100%;background:#fff;border-radius:0;box-shadow:none;overflow:visible;margin-bottom:0;border-collapse:separate;border-spacing:0;transition:none;border:none;position:relative}:host ::ng-deep .tables-mat-table:after{display:none}:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{background-color:#f8f9fa!important;color:#c25729!important;font-weight:600!important;font-size:14px!important;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid #c25729!important;padding:16px!important;border-top:none!important;border-left:none!important;border-right:none!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{padding:16px!important;font-size:14px;color:#333;border-bottom:1px solid #f0f0f0!important;border-top:none!important;border-left:none!important;border-right:none!important}:host ::ng-deep tr.mat-row,:host ::ng-deep .mat-mdc-row{transition:background-color .2s ease}:host ::ng-deep tr.mat-row:hover,:host ::ng-deep .mat-mdc-row:hover{background-color:#c257290d!important}:host ::ng-deep tr.mat-header-row,:host ::ng-deep .mat-mdc-header-row{background-color:transparent!important}:host ::ng-deep tr.mat-row:last-child td.mat-cell,:host ::ng-deep .mat-mdc-row:last-child .mat-mdc-cell{border-bottom:none!important}:host ::ng-deep .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,:host ::ng-deep .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:#c25729!important;background-color:#c25729!important}:host ::ng-deep .mdc-checkbox__native-control:hover:checked~.mdc-checkbox__background,:host ::ng-deep .mdc-checkbox__native-control:hover:indeterminate~.mdc-checkbox__background{border-color:#8b3a1f!important;background-color:#8b3a1f!important}:host ::ng-deep th.mat-header-cell mat-icon,:host ::ng-deep .mat-mdc-header-cell mat-icon{color:#c25729;vertical-align:middle}:host ::ng-deep .mat-mdc-menu-content{padding:8px 0}:host ::ng-deep .mat-mdc-menu-item{min-height:48px;padding:0 16px}:host ::ng-deep .mat-mdc-menu-item mat-icon{margin-right:16px;color:#c25729}:host ::ng-deep .mat-mdc-menu-item:hover{background-color:#c257290d}:host ::ng-deep button[mat-icon-button]{color:#c25729}:host ::ng-deep button[mat-icon-button]:hover{background-color:#c257291a}:host .align-right{text-align:right!important}:host .actions-inline{display:flex;gap:4px;justify-content:flex-end;align-items:center}:host .actions-btn-group{display:flex;gap:8px;align-items:center;justify-content:flex-end}@media (max-width: 600px){:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{font-size:12px!important;padding:12px 8px!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{font-size:13px!important;padding:12px 8px!important}}@media (max-width: 400px){:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{font-size:11px!important;padding:10px 6px!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{font-size:12px!important;padding:10px 6px!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
222
|
+
}
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiTableComponent, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
|
+
args: [{ selector: 'barak-ui-table', imports: [
|
|
226
|
+
CommonModule,
|
|
227
|
+
MatTableModule,
|
|
228
|
+
MatIconModule,
|
|
229
|
+
MatButtonModule,
|
|
230
|
+
MatMenuModule,
|
|
231
|
+
MatTooltipModule,
|
|
232
|
+
MatCheckboxModule,
|
|
233
|
+
FormsModule
|
|
234
|
+
], template: "<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z2 tables-mat-table\">\n\n <!-- Colonnes dynamiques normales -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.field\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container *ngIf=\"column.field === 'select'; else defaultHeader\">\n <mat-checkbox [checked]=\"allSelected\" (change)=\"onToggleAll($event)\"></mat-checkbox> {{ column.header }}\n </ng-container>\n <ng-template #defaultHeader>\n {{ column.header }}\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <ng-container *ngIf=\"column.field === 'select'; else cellContent\">\n <mat-checkbox [(ngModel)]=\"element.selected\"></mat-checkbox>\n </ng-container>\n <ng-template #cellContent>\n <ng-container *ngIf=\"column.template\">\n <ng-container *ngIf=\"isFunction(column.template); else templateOutlet\">\n {{ column.template(element) }}\n </ng-container>\n <ng-template #templateOutlet>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { $implicit: element }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!column.template\">\n {{ element[column.field] }}\n </ng-container>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Colonne Actions -->\n <ng-container *ngIf=\"actions.length > 0\" matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"align-right\">Actions</th>\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isMenu ? 'align-right' : 'actions-inline'\">\n <ng-container *ngIf=\"isMenu\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button mat-menu-item (click)=\"action?.handler(element)\" [matTooltip]=\"action.tooltip\"\n [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n <span>{{ action.displayName }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n <!-- Affichage sans menu (boutons directs) -->\n <ng-container *ngIf=\"!isMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button class=\"button-actions-no-menu\" mat-icon-button (click)=\"action?.handler(element)\"\n [matTooltip]=\"action.tooltip\" [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n </button>\n </ng-container>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Header et Row -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n</table>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}:host{display:block}:host ::ng-deep .tables-mat-table{width:100%;background:#fff;border-radius:0;box-shadow:none;overflow:visible;margin-bottom:0;border-collapse:separate;border-spacing:0;transition:none;border:none;position:relative}:host ::ng-deep .tables-mat-table:after{display:none}:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{background-color:#f8f9fa!important;color:#c25729!important;font-weight:600!important;font-size:14px!important;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid #c25729!important;padding:16px!important;border-top:none!important;border-left:none!important;border-right:none!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{padding:16px!important;font-size:14px;color:#333;border-bottom:1px solid #f0f0f0!important;border-top:none!important;border-left:none!important;border-right:none!important}:host ::ng-deep tr.mat-row,:host ::ng-deep .mat-mdc-row{transition:background-color .2s ease}:host ::ng-deep tr.mat-row:hover,:host ::ng-deep .mat-mdc-row:hover{background-color:#c257290d!important}:host ::ng-deep tr.mat-header-row,:host ::ng-deep .mat-mdc-header-row{background-color:transparent!important}:host ::ng-deep tr.mat-row:last-child td.mat-cell,:host ::ng-deep .mat-mdc-row:last-child .mat-mdc-cell{border-bottom:none!important}:host ::ng-deep .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,:host ::ng-deep .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:#c25729!important;background-color:#c25729!important}:host ::ng-deep .mdc-checkbox__native-control:hover:checked~.mdc-checkbox__background,:host ::ng-deep .mdc-checkbox__native-control:hover:indeterminate~.mdc-checkbox__background{border-color:#8b3a1f!important;background-color:#8b3a1f!important}:host ::ng-deep th.mat-header-cell mat-icon,:host ::ng-deep .mat-mdc-header-cell mat-icon{color:#c25729;vertical-align:middle}:host ::ng-deep .mat-mdc-menu-content{padding:8px 0}:host ::ng-deep .mat-mdc-menu-item{min-height:48px;padding:0 16px}:host ::ng-deep .mat-mdc-menu-item mat-icon{margin-right:16px;color:#c25729}:host ::ng-deep .mat-mdc-menu-item:hover{background-color:#c257290d}:host ::ng-deep button[mat-icon-button]{color:#c25729}:host ::ng-deep button[mat-icon-button]:hover{background-color:#c257291a}:host .align-right{text-align:right!important}:host .actions-inline{display:flex;gap:4px;justify-content:flex-end;align-items:center}:host .actions-btn-group{display:flex;gap:8px;align-items:center;justify-content:flex-end}@media (max-width: 600px){:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{font-size:12px!important;padding:12px 8px!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{font-size:13px!important;padding:12px 8px!important}}@media (max-width: 400px){:host ::ng-deep th.mat-header-cell,:host ::ng-deep .mat-mdc-header-cell{font-size:11px!important;padding:10px 6px!important}:host ::ng-deep td.mat-cell,:host ::ng-deep .mat-mdc-cell{font-size:12px!important;padding:10px 6px!important}}\n"] }]
|
|
235
|
+
}], propDecorators: { columns: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], actions: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], dataSource: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], isMenu: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}] } });
|
|
244
|
+
|
|
245
|
+
class BarakUiPaginationComponent {
|
|
246
|
+
totalItems = 0;
|
|
247
|
+
pageSize = 10;
|
|
248
|
+
pageIndex = 0;
|
|
249
|
+
pageChanged = new EventEmitter();
|
|
250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiPaginationComponent, isStandalone: true, selector: "barak-ui-pagination", inputs: { totalItems: "totalItems", pageSize: "pageSize", pageIndex: "pageIndex" }, outputs: { pageChanged: "pageChanged" }, ngImport: i0, template: "<mat-paginator [length]=\"totalItems\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" [pageSizeOptions]=\"[5, 10, 20, 50]\"\n (page)=\"pageChanged.emit($event)\">\n</mat-paginator>", styles: [":host ::ng-deep .mat-mdc-paginator{background-color:#fff!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] });
|
|
252
|
+
}
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiPaginationComponent, decorators: [{
|
|
254
|
+
type: Component,
|
|
255
|
+
args: [{ selector: 'barak-ui-pagination', imports: [
|
|
256
|
+
CommonModule,
|
|
257
|
+
MatPaginatorModule
|
|
258
|
+
], template: "<mat-paginator [length]=\"totalItems\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" [pageSizeOptions]=\"[5, 10, 20, 50]\"\n (page)=\"pageChanged.emit($event)\">\n</mat-paginator>", styles: [":host ::ng-deep .mat-mdc-paginator{background-color:#fff!important}\n"] }]
|
|
259
|
+
}], propDecorators: { totalItems: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], pageSize: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], pageIndex: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}], pageChanged: [{
|
|
266
|
+
type: Output
|
|
267
|
+
}] } });
|
|
268
|
+
|
|
269
|
+
class BarakUiSpinnerComponent {
|
|
270
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
271
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiSpinnerComponent, isStandalone: true, selector: "barak-ui-spinner", ngImport: i0, template: "<div class=\"loading-overlay\">\n <mat-progress-spinner \n mode=\"indeterminate\" \n color=\"primary\" \n diameter=\"50\">\n </mat-progress-spinner>\n</div>\n", styles: [":host ::ng-deep .loading-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background-color:#ffffffb3;width:100%;height:100%;z-index:1000}:host ::ng-deep .mdc-circular-progress__indeterminate-circle-graphic{stroke:#c25729!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
|
|
272
|
+
}
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiSpinnerComponent, decorators: [{
|
|
274
|
+
type: Component,
|
|
275
|
+
args: [{ selector: 'barak-ui-spinner', imports: [
|
|
276
|
+
CommonModule,
|
|
277
|
+
MatProgressSpinnerModule
|
|
278
|
+
], template: "<div class=\"loading-overlay\">\n <mat-progress-spinner \n mode=\"indeterminate\" \n color=\"primary\" \n diameter=\"50\">\n </mat-progress-spinner>\n</div>\n", styles: [":host ::ng-deep .loading-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background-color:#ffffffb3;width:100%;height:100%;z-index:1000}:host ::ng-deep .mdc-circular-progress__indeterminate-circle-graphic{stroke:#c25729!important}\n"] }]
|
|
279
|
+
}] });
|
|
280
|
+
|
|
281
|
+
class BarakUiAutocompleteComponent {
|
|
282
|
+
options = [];
|
|
283
|
+
placeholder = 'Sélectionner...';
|
|
284
|
+
multiple = false;
|
|
285
|
+
value = this.multiple ? [] : '';
|
|
286
|
+
displayField = 'fullName';
|
|
287
|
+
loading = false;
|
|
288
|
+
appearance = 'fill'; // Permet de changer l'apparence
|
|
289
|
+
customClass = ''; // Permet d'ajouter des classes personnalisées
|
|
290
|
+
valueChange = new EventEmitter();
|
|
291
|
+
scrolledToBottom = new EventEmitter();
|
|
292
|
+
searchText = '';
|
|
293
|
+
select;
|
|
294
|
+
filteredOptions() {
|
|
295
|
+
if (!this.searchText)
|
|
296
|
+
return this.options;
|
|
297
|
+
return this.options.filter(option => option[this.displayField]?.toLowerCase().includes(this.searchText.toLowerCase()));
|
|
298
|
+
}
|
|
299
|
+
onValueChange(val) {
|
|
300
|
+
this.value = val;
|
|
301
|
+
this.valueChange.emit(val);
|
|
302
|
+
}
|
|
303
|
+
getOptionLabel(option) {
|
|
304
|
+
if (!option)
|
|
305
|
+
return '';
|
|
306
|
+
return option[this.displayField] || '';
|
|
307
|
+
}
|
|
308
|
+
ngAfterViewInit() {
|
|
309
|
+
this.select.openedChange.subscribe(opened => {
|
|
310
|
+
if (opened) {
|
|
311
|
+
// Timeout pour laisser le panel s'ouvrir et apparaître dans le DOM
|
|
312
|
+
setTimeout(() => {
|
|
313
|
+
const panel = document.querySelector('.mat-select-panel-animations-enabled');
|
|
314
|
+
if (panel) {
|
|
315
|
+
panel.addEventListener('scroll', this.onScroll.bind(this));
|
|
316
|
+
}
|
|
317
|
+
}, 0);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
const panel = document.querySelector('.mat-select-panel-animations-enabled');
|
|
321
|
+
if (panel) {
|
|
322
|
+
panel.removeEventListener('scroll', this.onScroll.bind(this));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
onScroll(event) {
|
|
328
|
+
const element = event.target;
|
|
329
|
+
const atBottom = element.scrollHeight - element.scrollTop <= element.clientHeight + 1;
|
|
330
|
+
if (atBottom) {
|
|
331
|
+
this.scrolledToBottom.emit();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: BarakUiAutocompleteComponent, isStandalone: true, selector: "barak-ui-autocomplete", inputs: { options: "options", placeholder: "placeholder", multiple: "multiple", value: "value", displayField: "displayField", loading: "loading", appearance: "appearance", customClass: "customClass" }, outputs: { valueChange: "valueChange", scrolledToBottom: "scrolledToBottom" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "<mat-form-field [appearance]=\"appearance\" [ngClass]=\"customClass\" style=\"width: 100%;\">\n <mat-select #select [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" [placeholder]=\"placeholder\"\n [multiple]=\"multiple\" (selectionChange)=\"onValueChange($event.value)\" [disabled]=\"loading\">\n\n <mat-select-trigger>\n {{ multiple ? (value?.length ? value.length + ' s\u00E9lectionn\u00E9s' : placeholder) : getOptionLabel(value) }}\n </mat-select-trigger>\n\n <!-- Champ de recherche -->\n <mat-option class=\"no-checkbox\">\n <input matInput type=\"text\" placeholder=\"Rechercher...\" [(ngModel)]=\"searchText\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"$event.stopPropagation()\" class=\"search-input\"\n autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n </mat-option>\n\n <!-- Liste filtr\u00E9e -->\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\n {{ getOptionLabel(option) }}\n </mat-option>\n\n <!-- Indicateur de chargement -->\n <mat-option *ngIf=\"loading\" class=\"loading-option no-checkbox\" disabled>\n <barak-ui-spinner></barak-ui-spinner>\n <span>Chargement...</span>\n </mat-option>\n\n <!-- Message si aucune option ne correspond -->\n <mat-option *ngIf=\"filteredOptions().length === 0 && !loading\" class=\"no-results\" disabled>\n Aucune option trouv\u00E9e\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}::ng-deep .no-checkbox>.mat-pseudo-checkbox-full,::ng-deep .no-results>.mat-pseudo-checkbox-full{display:none!important}::ng-deep .no-checkbox{padding:8px 16px!important;background-color:var(--bg-primary, #ffffff)!important;position:sticky!important;top:0!important;z-index:10!important;border-bottom:1px solid var(--border-color, #e0e0e0)!important;margin-bottom:4px!important;cursor:default!important}::ng-deep .no-checkbox:hover{background-color:var(--bg-primary, #ffffff)!important}::ng-deep .search-input{width:100%;padding:8px 12px;height:40px;border-radius:8px;border:1px solid var(--border-color, #ced4da);outline:none;background-color:var(--bg-secondary, #f5f7fa)!important;color:var(--text-primary, #333)!important;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out;font-size:14px;box-sizing:border-box}::ng-deep .search-input:focus{border-color:#c25729;box-shadow:0 0 5px #c2572926;background-color:var(--bg-primary, white)!important}::ng-deep .loading-option{display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;font-style:italic!important;padding:12px 16px!important;color:var(--text-secondary, #666)!important;background-color:var(--bg-primary, #ffffff)!important;cursor:default!important}::ng-deep .loading-option:hover{background-color:var(--bg-primary, #ffffff)!important}::ng-deep .loading-option barak-ui-spinner{transform:scale(.6)}::ng-deep .mat-mdc-select-panel{background-color:var(--bg-primary, #ffffff)!important;border:1px solid var(--border-color, #e0e0e0);box-shadow:0 4px 6px #0000001a}::ng-deep .mat-mdc-option{background-color:var(--bg-primary, #ffffff)!important;color:var(--text-primary, #333)!important}::ng-deep .mat-mdc-option:hover{background-color:var(--bg-secondary, #f5f5f5)!important}::ng-deep .mat-mdc-option.mat-mdc-option-active{background-color:#fff5f0!important;color:#c25729!important}::ng-deep .mat-mdc-option.mdc-list-item--selected{background-color:#fff5f0!important;color:#c25729!important}::ng-deep .mat-mdc-option.mdc-list-item--selected .mat-pseudo-checkbox{background-color:#c25729!important;border-color:#c25729!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{border-color:var(--border-color, #999)}::ng-deep .mat-mdc-option .mat-pseudo-checkbox.mat-pseudo-checkbox-checked{background-color:#c25729!important;border-color:#c25729!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3$1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: BarakUiSpinnerComponent, selector: "barak-ui-spinner" }] });
|
|
336
|
+
}
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: BarakUiAutocompleteComponent, decorators: [{
|
|
338
|
+
type: Component,
|
|
339
|
+
args: [{ selector: 'barak-ui-autocomplete', imports: [
|
|
340
|
+
CommonModule,
|
|
341
|
+
FormsModule,
|
|
342
|
+
MatSelectModule,
|
|
343
|
+
MatOptionModule,
|
|
344
|
+
MatInputModule,
|
|
345
|
+
MatFormFieldModule,
|
|
346
|
+
BarakUiSpinnerComponent
|
|
347
|
+
], template: "<mat-form-field [appearance]=\"appearance\" [ngClass]=\"customClass\" style=\"width: 100%;\">\n <mat-select #select [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" [placeholder]=\"placeholder\"\n [multiple]=\"multiple\" (selectionChange)=\"onValueChange($event.value)\" [disabled]=\"loading\">\n\n <mat-select-trigger>\n {{ multiple ? (value?.length ? value.length + ' s\u00E9lectionn\u00E9s' : placeholder) : getOptionLabel(value) }}\n </mat-select-trigger>\n\n <!-- Champ de recherche -->\n <mat-option class=\"no-checkbox\">\n <input matInput type=\"text\" placeholder=\"Rechercher...\" [(ngModel)]=\"searchText\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"$event.stopPropagation()\" class=\"search-input\"\n autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n </mat-option>\n\n <!-- Liste filtr\u00E9e -->\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\n {{ getOptionLabel(option) }}\n </mat-option>\n\n <!-- Indicateur de chargement -->\n <mat-option *ngIf=\"loading\" class=\"loading-option no-checkbox\" disabled>\n <barak-ui-spinner></barak-ui-spinner>\n <span>Chargement...</span>\n </mat-option>\n\n <!-- Message si aucune option ne correspond -->\n <mat-option *ngIf=\"filteredOptions().length === 0 && !loading\" class=\"no-results\" disabled>\n Aucune option trouv\u00E9e\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.material-icons{font-family:Material Icons;font-weight:400;font-style:normal}::ng-deep .no-checkbox>.mat-pseudo-checkbox-full,::ng-deep .no-results>.mat-pseudo-checkbox-full{display:none!important}::ng-deep .no-checkbox{padding:8px 16px!important;background-color:var(--bg-primary, #ffffff)!important;position:sticky!important;top:0!important;z-index:10!important;border-bottom:1px solid var(--border-color, #e0e0e0)!important;margin-bottom:4px!important;cursor:default!important}::ng-deep .no-checkbox:hover{background-color:var(--bg-primary, #ffffff)!important}::ng-deep .search-input{width:100%;padding:8px 12px;height:40px;border-radius:8px;border:1px solid var(--border-color, #ced4da);outline:none;background-color:var(--bg-secondary, #f5f7fa)!important;color:var(--text-primary, #333)!important;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out;font-size:14px;box-sizing:border-box}::ng-deep .search-input:focus{border-color:#c25729;box-shadow:0 0 5px #c2572926;background-color:var(--bg-primary, white)!important}::ng-deep .loading-option{display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;font-style:italic!important;padding:12px 16px!important;color:var(--text-secondary, #666)!important;background-color:var(--bg-primary, #ffffff)!important;cursor:default!important}::ng-deep .loading-option:hover{background-color:var(--bg-primary, #ffffff)!important}::ng-deep .loading-option barak-ui-spinner{transform:scale(.6)}::ng-deep .mat-mdc-select-panel{background-color:var(--bg-primary, #ffffff)!important;border:1px solid var(--border-color, #e0e0e0);box-shadow:0 4px 6px #0000001a}::ng-deep .mat-mdc-option{background-color:var(--bg-primary, #ffffff)!important;color:var(--text-primary, #333)!important}::ng-deep .mat-mdc-option:hover{background-color:var(--bg-secondary, #f5f5f5)!important}::ng-deep .mat-mdc-option.mat-mdc-option-active{background-color:#fff5f0!important;color:#c25729!important}::ng-deep .mat-mdc-option.mdc-list-item--selected{background-color:#fff5f0!important;color:#c25729!important}::ng-deep .mat-mdc-option.mdc-list-item--selected .mat-pseudo-checkbox{background-color:#c25729!important;border-color:#c25729!important}::ng-deep .mat-mdc-option .mat-pseudo-checkbox{border-color:var(--border-color, #999)}::ng-deep .mat-mdc-option .mat-pseudo-checkbox.mat-pseudo-checkbox-checked{background-color:#c25729!important;border-color:#c25729!important}\n"] }]
|
|
348
|
+
}], propDecorators: { options: [{
|
|
349
|
+
type: Input
|
|
350
|
+
}], placeholder: [{
|
|
351
|
+
type: Input
|
|
352
|
+
}], multiple: [{
|
|
353
|
+
type: Input
|
|
354
|
+
}], value: [{
|
|
355
|
+
type: Input
|
|
356
|
+
}], displayField: [{
|
|
357
|
+
type: Input
|
|
358
|
+
}], loading: [{
|
|
359
|
+
type: Input
|
|
360
|
+
}], appearance: [{
|
|
361
|
+
type: Input
|
|
362
|
+
}], customClass: [{
|
|
363
|
+
type: Input
|
|
364
|
+
}], valueChange: [{
|
|
365
|
+
type: Output
|
|
366
|
+
}], scrolledToBottom: [{
|
|
367
|
+
type: Output
|
|
368
|
+
}], select: [{
|
|
369
|
+
type: ViewChild,
|
|
370
|
+
args: ['select']
|
|
371
|
+
}] } });
|
|
372
|
+
|
|
373
|
+
/*
|
|
374
|
+
* Public API Surface of barak-ui
|
|
375
|
+
*/
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Generated bundle index. Do not edit.
|
|
379
|
+
*/
|
|
380
|
+
|
|
381
|
+
export { BarakUiAutocompleteComponent, BarakUiButtonComponent, BarakUiConfirmationDialogComponent, BarakUiGenericDialogComponent, BarakUiModalService, BarakUiPaginationComponent, BarakUiSpinnerComponent, BarakUiTableComponent, BarakUiToastService };
|
|
382
|
+
//# sourceMappingURL=barak-ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barak-ui.mjs","sources":["../../../projects/barak-ui/src/lib/services/barak-ui.modal.service.ts","../../../projects/barak-ui/src/lib/services/barak-ui.toast.service.ts","../../../projects/barak-ui/src/lib/components/button/button.component.ts","../../../projects/barak-ui/src/lib/components/button/button.component.html","../../../projects/barak-ui/src/lib/components/dialog/confirmation-dialog/barak-ui-dialog.component.ts","../../../projects/barak-ui/src/lib/components/dialog/confirmation-dialog/barak-ui-dialog.component.html","../../../projects/barak-ui/src/lib/components/dialog/generic-dialog/barak-ui-generic-dialog.component.ts","../../../projects/barak-ui/src/lib/components/dialog/generic-dialog/barak-ui-generic-dialog.component.html","../../../projects/barak-ui/src/lib/components/table/barak-ui-table.component.ts","../../../projects/barak-ui/src/lib/components/table/barak-ui-table.component.html","../../../projects/barak-ui/src/lib/components/pagination/barak-ui.pagniation.component.ts","../../../projects/barak-ui/src/lib/components/pagination/barak-ui.pagination.component.html","../../../projects/barak-ui/src/lib/components/barak-ui-spinner/barak-ui-spinner.component.ts","../../../projects/barak-ui/src/lib/components/barak-ui-spinner/barak-ui-spinner.component.html","../../../projects/barak-ui/src/lib/components/autocomplete/barak-ui-autocomplete.component.ts","../../../projects/barak-ui/src/lib/components/autocomplete/barak-ui-autocomplete.component.html","../../../projects/barak-ui/src/public-api.ts","../../../projects/barak-ui/src/barak-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BarakUiModalService {\n\n constructor(private dialog: MatDialog) { }\n\n /**\n * Ouvre une modale générique\n * \n * @param component Le composant à afficher dans la modale\n * @param data Les données à transmettre au composant\n * @param options Options supplémentaires pour configurer la modale\n * @returns Une référence à la modale\n */\n openModal<T, D = any>(component: T, data: D, options: { width?: string, maxWidth?: string } = { width: '400px', maxWidth: '80wv' }): MatDialogRef<any> {\n console.log(\"options.width\", options.width)\n return this.dialog.open(component as any, {\n width: options.width,\n maxWidth: options.maxWidth,\n data: data,\n disableClose: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BarakUiToastService {\n\n constructor(private snackBar: MatSnackBar) { }\n\n /**\n * Affiche un message de snack bar\n * @param message Le texte à afficher\n * @param type Type de message ('success', 'error', 'info')\n */\n open(message: string, type: 'success' | 'error' | 'info' = 'info', duration: number = 3000, horizontalPosition: string = 'right', verticalPosition: string = 'top'): void {\n const config: MatSnackBarConfig = {\n duration: duration,\n horizontalPosition: horizontalPosition as 'start' | 'center' | 'end' | 'left' | 'right',\n verticalPosition: verticalPosition as 'top' | 'bottom',\n panelClass: [`snackbar-${type}`]\n };\n\n this.snackBar.open(message, 'Fermer', config);\n }\n\n success(message: string): void {\n this.open(message, 'success');\n }\n\n error(message: string): void {\n this.open(message, 'error');\n }\n\n info(message: string): void {\n this.open(message, 'info');\n }\n\n /**\n * Ferme tous les snackbars ouverts\n */\n dismiss(): void {\n this.snackBar.dismiss();\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'barak-ui-button',\n imports: [\n CommonModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss'\n})\nexport class BarakUiButtonComponent {\n @Input() variant: 'primary' | 'secondary' | 'danger' = 'primary';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() disabled = false;\n\n @Output() clicked = new EventEmitter<Event>();\n\n onClick(event: Event): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}\n\n","<button class=\"barak-btn\" [ngClass]=\"[\n 'barak-btn--' + variant,\n 'barak-btn--' + size,\n disabled ? 'barak-btn--disabled' : ''\n ]\" [disabled]=\"disabled\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\n\n@Component({\n selector: 'barak-ui-confirmation-dialog',\n templateUrl: './barak-ui-dialog.component.html',\n styleUrls: ['./barak-ui-dialog.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule\n ]\n})\nexport class BarakUiConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<BarakUiConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: { message: string },\n private matIconRegistry: MatIconRegistry,\n ) {\n this.matIconRegistry.setDefaultFontSetClass('material-icons');\n }\n\n onCancel(): void {\n this.dialogRef.close(false);\n }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n}\n","<div class=\"confirmation-dialog\">\n <button mat-icon-button class=\"close-button\" (click)=\"onCancel()\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div class=\"dialog-icon-wrapper\">\n <mat-icon class=\"dialog-icon\">info</mat-icon>\n </div>\n\n <h2 mat-dialog-title class=\"dialog-title\">Confirmation</h2>\n\n <mat-dialog-content class=\"dialog-content\">\n <p class=\"dialog-message\">{{ data.message }}</p>\n </mat-dialog-content>\n\n <mat-dialog-actions class=\"dialog-actions\">\n <button mat-stroked-button class=\"cancel-btn\" (click)=\"onCancel()\">\n Annuler\n </button>\n <button mat-raised-button class=\"confirm-btn\" (click)=\"onConfirm()\">\n Confirmer\n </button>\n </mat-dialog-actions>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'barak-ui-generic-dialog',\n templateUrl: './barak-ui-generic-dialog.component.html',\n styleUrls: ['./barak-ui-generic-dialog.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule\n ]\n})\nexport class BarakUiGenericDialogComponent {\n\n constructor(private dialogRef: MatDialogRef<BarakUiGenericDialogComponent>) { }\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","<div class=\"dialog-container\">\n <h2 mat-dialog-title class=\"dialog-title\">\n <ng-content select=\"[dialog-header]\"></ng-content>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </h2>\n\n <mat-dialog-content>\n <ng-content select=\"[dialog-content]\"></ng-content>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <ng-content select=\"[dialog-actions]\"></ng-content>\n </mat-dialog-actions>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'barak-ui-table',\n imports: [\n CommonModule,\n MatTableModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatTooltipModule,\n MatCheckboxModule,\n FormsModule\n ],\n templateUrl: './barak-ui-table.component.html',\n styleUrl: './barak-ui-table.component.scss'\n})\nexport class BarakUiTableComponent<T> implements OnChanges {\n @Input() columns: { header: string, field: string, template?: any }[] = [];\n @Input() actions: { label?: string, handler?: (element: any) => void, icon?: string, tooltip?: string, displayName?: string, color?: string, disabled?: (element: any) => boolean }[] = [];\n @Input() dataSource: T[] = [];\n @Input() isMenu = true;\n\n displayedColumns: string[] = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n this.displayedColumns = this.columns.map(col => col.field);\n\n if (this.actions && this.actions.length > 0 && !this.displayedColumns.includes('actions')) {\n this.displayedColumns.push('actions');\n }\n }\n\n\n getColumnValue(column: any, element: any): any {\n if (column.template) {\n return column.template(element);\n } else {\n return element[column.field];\n }\n }\n\n isFunction(value: any): boolean {\n return value && {}.toString.call(value) === '[object Function]';\n }\n\n onToggleAll(event: any): void {\n const checked = event.checked;\n this.dataSource.forEach((row: any) => row.selected = checked);\n }\n\n get allSelected(): boolean {\n return this.dataSource.length > 0 && this.dataSource.every((row: any) => row.selected);\n }\n}\n","<table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z2 tables-mat-table\">\n\n <!-- Colonnes dynamiques normales -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.field\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container *ngIf=\"column.field === 'select'; else defaultHeader\">\n <mat-checkbox [checked]=\"allSelected\" (change)=\"onToggleAll($event)\"></mat-checkbox> {{ column.header }}\n </ng-container>\n <ng-template #defaultHeader>\n {{ column.header }}\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <ng-container *ngIf=\"column.field === 'select'; else cellContent\">\n <mat-checkbox [(ngModel)]=\"element.selected\"></mat-checkbox>\n </ng-container>\n <ng-template #cellContent>\n <ng-container *ngIf=\"column.template\">\n <ng-container *ngIf=\"isFunction(column.template); else templateOutlet\">\n {{ column.template(element) }}\n </ng-container>\n <ng-template #templateOutlet>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { $implicit: element }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!column.template\">\n {{ element[column.field] }}\n </ng-container>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Colonne Actions -->\n <ng-container *ngIf=\"actions.length > 0\" matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"align-right\">Actions</th>\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isMenu ? 'align-right' : 'actions-inline'\">\n <ng-container *ngIf=\"isMenu\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button mat-menu-item (click)=\"action?.handler(element)\" [matTooltip]=\"action.tooltip\"\n [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n <span>{{ action.displayName }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </ng-container>\n <!-- Affichage sans menu (boutons directs) -->\n <ng-container *ngIf=\"!isMenu\">\n <ng-container *ngFor=\"let action of actions\">\n <button class=\"button-actions-no-menu\" mat-icon-button (click)=\"action?.handler(element)\"\n [matTooltip]=\"action.tooltip\" [disabled]=\"action.disabled ? action.disabled(element) : false\">\n <mat-icon>{{ action.icon }}</mat-icon>\n </button>\n </ng-container>\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Header et Row -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n\n</table>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\n\n@Component({\n selector: 'barak-ui-pagination',\n imports: [\n CommonModule,\n MatPaginatorModule\n ],\n templateUrl: './barak-ui.pagination.component.html',\n styleUrls: ['./barak-ui.pagination.component.scss']\n})\nexport class BarakUiPaginationComponent {\n @Input() totalItems: number = 0;\n @Input() pageSize: number = 10;\n @Input() pageIndex: number = 0;\n @Output() pageChanged = new EventEmitter<PageEvent>();\n}\n","<mat-paginator [length]=\"totalItems\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" [pageSizeOptions]=\"[5, 10, 20, 50]\"\n (page)=\"pageChanged.emit($event)\">\n</mat-paginator>","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'barak-ui-spinner',\n templateUrl: './barak-ui-spinner.component.html',\n styleUrls: ['./barak-ui-spinner.component.scss'],\n imports: [\n CommonModule,\n MatProgressSpinnerModule\n ]\n})\nexport class BarakUiSpinnerComponent {\n\n}\n","<div class=\"loading-overlay\">\n <mat-progress-spinner \n mode=\"indeterminate\" \n color=\"primary\" \n diameter=\"50\">\n </mat-progress-spinner>\n</div>\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { BarakUiSpinnerComponent } from '../barak-ui-spinner/barak-ui-spinner.component';\n\n@Component({\n selector: 'barak-ui-autocomplete',\n imports: [\n CommonModule,\n FormsModule,\n MatSelectModule,\n MatOptionModule,\n MatInputModule,\n MatFormFieldModule,\n BarakUiSpinnerComponent\n ],\n templateUrl: './barak-ui-autocomplete.component.html',\n styleUrls: ['./barak-ui-autocomplete.component.scss']\n})\n\nexport class BarakUiAutocompleteComponent implements AfterViewInit {\n @Input() options: any[] = [];\n @Input() placeholder = 'Sélectionner...';\n @Input() multiple = false;\n @Input() value: any | any[] = this.multiple ? [] : '';\n @Input() displayField: string = 'fullName';\n @Input() loading: boolean = false;\n @Input() appearance: 'fill' | 'outline' = 'fill'; // Permet de changer l'apparence\n @Input() customClass: string = ''; // Permet d'ajouter des classes personnalisées\n\n @Output() valueChange = new EventEmitter<any | any[]>();\n @Output() scrolledToBottom = new EventEmitter<void>();\n\n searchText = '';\n\n @ViewChild('select') select!: MatSelect;\n\n filteredOptions(): any[] {\n if (!this.searchText) return this.options;\n return this.options.filter(option =>\n option[this.displayField]?.toLowerCase().includes(this.searchText.toLowerCase())\n );\n }\n\n onValueChange(val: any) {\n this.value = val;\n this.valueChange.emit(val);\n }\n\n getOptionLabel(option: any): string {\n if (!option) return '';\n return option[this.displayField] || '';\n }\n\n ngAfterViewInit() {\n this.select.openedChange.subscribe(opened => {\n if (opened) {\n // Timeout pour laisser le panel s'ouvrir et apparaître dans le DOM\n setTimeout(() => {\n const panel = document.querySelector('.mat-select-panel-animations-enabled');\n if (panel) {\n panel.addEventListener('scroll', this.onScroll.bind(this));\n }\n }, 0);\n } else {\n const panel = document.querySelector('.mat-select-panel-animations-enabled');\n if (panel) {\n panel.removeEventListener('scroll', this.onScroll.bind(this));\n }\n }\n });\n }\n\n onScroll(event: any) {\n const element = event.target;\n const atBottom = element.scrollHeight - element.scrollTop <= element.clientHeight + 1;\n if (atBottom) {\n this.scrolledToBottom.emit();\n }\n }\n}\n","<mat-form-field [appearance]=\"appearance\" [ngClass]=\"customClass\" style=\"width: 100%;\">\n <mat-select #select [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" [placeholder]=\"placeholder\"\n [multiple]=\"multiple\" (selectionChange)=\"onValueChange($event.value)\" [disabled]=\"loading\">\n\n <mat-select-trigger>\n {{ multiple ? (value?.length ? value.length + ' sélectionnés' : placeholder) : getOptionLabel(value) }}\n </mat-select-trigger>\n\n <!-- Champ de recherche -->\n <mat-option class=\"no-checkbox\">\n <input matInput type=\"text\" placeholder=\"Rechercher...\" [(ngModel)]=\"searchText\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"$event.stopPropagation()\" class=\"search-input\"\n autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n </mat-option>\n\n <!-- Liste filtrée -->\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\">\n {{ getOptionLabel(option) }}\n </mat-option>\n\n <!-- Indicateur de chargement -->\n <mat-option *ngIf=\"loading\" class=\"loading-option no-checkbox\" disabled>\n <barak-ui-spinner></barak-ui-spinner>\n <span>Chargement...</span>\n </mat-option>\n\n <!-- Message si aucune option ne correspond -->\n <mat-option *ngIf=\"filteredOptions().length === 0 && !loading\" class=\"no-results\" disabled>\n Aucune option trouvée\n </mat-option>\n\n </mat-select>\n</mat-form-field>","/*\n * Public API Surface of barak-ui\n */\n\nexport * from './lib/services/barak-ui.modal.service';\nexport * from './lib/services/barak-ui.toast.service';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/dialog/confirmation-dialog/barak-ui-dialog.component';\nexport * from './lib/components/dialog/generic-dialog/barak-ui-generic-dialog.component';\nexport * from './lib/components/table/barak-ui-table.component';\nexport * from './lib/components/pagination/barak-ui.pagniation.component';\nexport * from './lib/components/autocomplete/barak-ui-autocomplete.component';\nexport * from './lib/components/barak-ui-spinner/barak-ui-spinner.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i8"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,mBAAmB,CAAA;AAER,IAAA,MAAA;AAApB,IAAA,WAAA,CAAoB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAE1B;;;;;;;AAOG;AACH,IAAA,SAAS,CAAa,SAAY,EAAE,IAAO,EAAE,OAAiD,GAAA,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA;QAC9H,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAgB,EAAE;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE;AACjB,SAAA,CAAC;;wGAnBG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA;;4FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,mBAAmB,CAAA;AAEV,IAAA,QAAA;AAApB,IAAA,WAAA,CAAoB,QAAqB,EAAA;QAArB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAE5B;;;;AAIG;AACH,IAAA,IAAI,CAAC,OAAe,EAAE,IAAA,GAAqC,MAAM,EAAE,QAAmB,GAAA,IAAI,EAAE,kBAAA,GAA6B,OAAO,EAAE,mBAA2B,KAAK,EAAA;AAChK,QAAA,MAAM,MAAM,GAAsB;AAChC,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,kBAAkB,EAAE,kBAAmE;AACvF,YAAA,gBAAgB,EAAE,gBAAoC;AACtD,YAAA,UAAU,EAAE,CAAC,CAAY,SAAA,EAAA,IAAI,EAAE;SAChC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;;AAG/C,IAAA,OAAO,CAAC,OAAe,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;;AAG/B,IAAA,KAAK,CAAC,OAAe,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;;AAG7B,IAAA,IAAI,CAAC,OAAe,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;;AAG5B;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;wGApCd,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCMY,sBAAsB,CAAA;IACxB,OAAO,GAAuC,SAAS;IACvD,IAAI,GAAuB,IAAI;IAC/B,QAAQ,GAAG,KAAK;AAEf,IAAA,OAAO,GAAG,IAAI,YAAY,EAAS;AAE7C,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;;wGATZ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnC,qPAMS,EAAA,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAL,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKH,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,qPAAA,EAAA,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA;8BAKQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,OAAO,EAAA,CAAA;sBAAhB;;;MECU,kCAAkC,CAAA;AAEpC,IAAA,SAAA;AACyB,IAAA,IAAA;AACxB,IAAA,eAAA;AAHV,IAAA,WAAA,CACS,SAA2D,EAClC,IAAyB,EACjD,eAAgC,EAAA;QAFjC,IAAS,CAAA,SAAA,GAAT,SAAS;QACgB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC5B,IAAe,CAAA,eAAA,GAAf,eAAe;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;;IAG/D,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;AAdjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,8CAGnC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAHd,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB/C,kzBAuBM,EDZF,MAAA,EAAA,CAAA,06GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA;;4FAGN,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAX9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAG/B,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,kzBAAA,EAAA,MAAA,EAAA,CAAA,06GAAA,CAAA,EAAA;;0BAKE,MAAM;2BAAC,eAAe;;;MEHd,6BAA6B,CAAA;AAEpB,IAAA,SAAA;AAApB,IAAA,WAAA,CAAoB,SAAsD,EAAA;QAAtD,IAAS,CAAA,SAAA,GAAT,SAAS;;IAE7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;wGALb,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1C,mgBAeM,EDJF,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA;;4FAGN,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAG1B,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,mgBAAA,EAAA,MAAA,EAAA,CAAA,uNAAA,CAAA,EAAA;;;MEUU,qBAAqB,CAAA;IACvB,OAAO,GAAwD,EAAE;IACjE,OAAO,GAAwK,EAAE;IACjL,UAAU,GAAQ,EAAE;IACpB,MAAM,GAAG,IAAI;IAEtB,gBAAgB,GAAa,EAAE;AAE/B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;QAE1D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzF,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAKzC,cAAc,CAAC,MAAW,EAAE,OAAY,EAAA;AACtC,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;;aAC1B;AACL,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAIhC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,OAAO,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,mBAAmB;;AAGjE,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;;AAG/D,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC;;wGAnC7E,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+LCzBlC,k7GAmEQ,EAAA,MAAA,EAAA,CAAA,8pGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtDJ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2IACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,mbACjB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,iBAAiB;wBACjB;AACD,qBAAA,EAAA,QAAA,EAAA,k7GAAA,EAAA,MAAA,EAAA,CAAA,8pGAAA,CAAA,EAAA;8BAKQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEhBU,0BAA0B,CAAA;IAC5B,UAAU,GAAW,CAAC;IACtB,QAAQ,GAAW,EAAE;IACrB,SAAS,GAAW,CAAC;AACpB,IAAA,WAAW,GAAG,IAAI,YAAY,EAAa;wGAJ1C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,ECbvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4LAEgB,EDKZ,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKT,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACtB,OAAA,EAAA;wBACP,YAAY;wBACZ;AACD,qBAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA;8BAKQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;MEJU,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,ECbpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2LAOA,EDEI,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGnB,OAAA,EAAA;wBACP,YAAY;wBACZ;AACD,qBAAA,EAAA,QAAA,EAAA,2LAAA,EAAA,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA;;;MEaU,4BAA4B,CAAA;IAC9B,OAAO,GAAU,EAAE;IACnB,WAAW,GAAG,iBAAiB;IAC/B,QAAQ,GAAG,KAAK;AAChB,IAAA,KAAK,GAAgB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE;IAC5C,YAAY,GAAW,UAAU;IACjC,OAAO,GAAY,KAAK;AACxB,IAAA,UAAU,GAAuB,MAAM,CAAC;AACxC,IAAA,WAAW,GAAW,EAAE,CAAC;AAExB,IAAA,WAAW,GAAG,IAAI,YAAY,EAAe;AAC7C,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ;IAErD,UAAU,GAAG,EAAE;AAEM,IAAA,MAAM;IAE3B,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,OAAO;AACzC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAC/B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CACjF;;AAGH,IAAA,aAAa,CAAC,GAAQ,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG5B,IAAA,cAAc,CAAC,MAAW,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;IAGxC,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAG;YAC1C,IAAI,MAAM,EAAE;;gBAEV,UAAU,CAAC,MAAK;oBACd,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,sCAAsC,CAAC;oBAC5E,IAAI,KAAK,EAAE;AACT,wBAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;iBAE7D,EAAE,CAAC,CAAC;;iBACA;gBACL,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,sCAAsC,CAAC;gBAC5E,IAAI,KAAK,EAAE;AACT,oBAAA,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;AAGnE,SAAC,CAAC;;AAGJ,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM;AAC5B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC;QACrF,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;;wGAzDrB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,ECxBzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,smDAgCiB,EDpBb,MAAA,EAAA,CAAA,u9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mWACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,+BAClB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA;;4FAMd,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAfxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACxB,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,smDAAA,EAAA,MAAA,EAAA,CAAA,u9EAAA,CAAA,EAAA;8BAMQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,WAAW,EAAA,CAAA;sBAApB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBAIoB,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;;;AEvCrB;;AAEG;;ACFH;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter, AfterViewInit } from '@angular/core';
|
|
2
|
+
import { MatSelect } from '@angular/material/select';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BarakUiAutocompleteComponent implements AfterViewInit {
|
|
5
|
+
options: any[];
|
|
6
|
+
placeholder: string;
|
|
7
|
+
multiple: boolean;
|
|
8
|
+
value: any | any[];
|
|
9
|
+
displayField: string;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
appearance: 'fill' | 'outline';
|
|
12
|
+
customClass: string;
|
|
13
|
+
valueChange: EventEmitter<any>;
|
|
14
|
+
scrolledToBottom: EventEmitter<void>;
|
|
15
|
+
searchText: string;
|
|
16
|
+
select: MatSelect;
|
|
17
|
+
filteredOptions(): any[];
|
|
18
|
+
onValueChange(val: any): void;
|
|
19
|
+
getOptionLabel(option: any): string;
|
|
20
|
+
ngAfterViewInit(): void;
|
|
21
|
+
onScroll(event: any): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiAutocompleteComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiAutocompleteComponent, "barak-ui-autocomplete", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "value": { "alias": "value"; "required": false; }; "displayField": { "alias": "displayField"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; }, { "valueChange": "valueChange"; "scrolledToBottom": "scrolledToBottom"; }, never, never, true, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class BarakUiSpinnerComponent {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiSpinnerComponent, never>;
|
|
4
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiSpinnerComponent, "barak-ui-spinner", never, {}, {}, never, never, true, never>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BarakUiButtonComponent {
|
|
4
|
+
variant: 'primary' | 'secondary' | 'danger';
|
|
5
|
+
size: 'sm' | 'md' | 'lg';
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
clicked: EventEmitter<Event>;
|
|
8
|
+
onClick(event: Event): void;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiButtonComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiButtonComponent, "barak-ui-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
import { MatIconRegistry } from '@angular/material/icon';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BarakUiConfirmationDialogComponent {
|
|
5
|
+
dialogRef: MatDialogRef<BarakUiConfirmationDialogComponent>;
|
|
6
|
+
data: {
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
private matIconRegistry;
|
|
10
|
+
constructor(dialogRef: MatDialogRef<BarakUiConfirmationDialogComponent>, data: {
|
|
11
|
+
message: string;
|
|
12
|
+
}, matIconRegistry: MatIconRegistry);
|
|
13
|
+
onCancel(): void;
|
|
14
|
+
onConfirm(): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiConfirmationDialogComponent, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiConfirmationDialogComponent, "barak-ui-confirmation-dialog", never, {}, {}, never, never, true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BarakUiGenericDialogComponent {
|
|
4
|
+
private dialogRef;
|
|
5
|
+
constructor(dialogRef: MatDialogRef<BarakUiGenericDialogComponent>);
|
|
6
|
+
onClose(): void;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiGenericDialogComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiGenericDialogComponent, "barak-ui-generic-dialog", never, {}, {}, never, ["[dialog-header]", "[dialog-content]", "[dialog-actions]"], true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { PageEvent } from '@angular/material/paginator';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BarakUiPaginationComponent {
|
|
5
|
+
totalItems: number;
|
|
6
|
+
pageSize: number;
|
|
7
|
+
pageIndex: number;
|
|
8
|
+
pageChanged: EventEmitter<PageEvent>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiPaginationComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiPaginationComponent, "barak-ui-pagination", never, { "totalItems": { "alias": "totalItems"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageIndex": { "alias": "pageIndex"; "required": false; }; }, { "pageChanged": "pageChanged"; }, never, never, true, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BarakUiTableComponent<T> implements OnChanges {
|
|
4
|
+
columns: {
|
|
5
|
+
header: string;
|
|
6
|
+
field: string;
|
|
7
|
+
template?: any;
|
|
8
|
+
}[];
|
|
9
|
+
actions: {
|
|
10
|
+
label?: string;
|
|
11
|
+
handler?: (element: any) => void;
|
|
12
|
+
icon?: string;
|
|
13
|
+
tooltip?: string;
|
|
14
|
+
displayName?: string;
|
|
15
|
+
color?: string;
|
|
16
|
+
disabled?: (element: any) => boolean;
|
|
17
|
+
}[];
|
|
18
|
+
dataSource: T[];
|
|
19
|
+
isMenu: boolean;
|
|
20
|
+
displayedColumns: string[];
|
|
21
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
+
getColumnValue(column: any, element: any): any;
|
|
23
|
+
isFunction(value: any): boolean;
|
|
24
|
+
onToggleAll(event: any): void;
|
|
25
|
+
get allSelected(): boolean;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiTableComponent<any>, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BarakUiTableComponent<any>, "barak-ui-table", never, { "columns": { "alias": "columns"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "isMenu": { "alias": "isMenu"; "required": false; }; }, {}, never, never, true, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BarakUiModalService {
|
|
4
|
+
private dialog;
|
|
5
|
+
constructor(dialog: MatDialog);
|
|
6
|
+
/**
|
|
7
|
+
* Ouvre une modale générique
|
|
8
|
+
*
|
|
9
|
+
* @param component Le composant à afficher dans la modale
|
|
10
|
+
* @param data Les données à transmettre au composant
|
|
11
|
+
* @param options Options supplémentaires pour configurer la modale
|
|
12
|
+
* @returns Une référence à la modale
|
|
13
|
+
*/
|
|
14
|
+
openModal<T, D = any>(component: T, data: D, options?: {
|
|
15
|
+
width?: string;
|
|
16
|
+
maxWidth?: string;
|
|
17
|
+
}): MatDialogRef<any>;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiModalService, never>;
|
|
19
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BarakUiModalService>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BarakUiToastService {
|
|
4
|
+
private snackBar;
|
|
5
|
+
constructor(snackBar: MatSnackBar);
|
|
6
|
+
/**
|
|
7
|
+
* Affiche un message de snack bar
|
|
8
|
+
* @param message Le texte à afficher
|
|
9
|
+
* @param type Type de message ('success', 'error', 'info')
|
|
10
|
+
*/
|
|
11
|
+
open(message: string, type?: 'success' | 'error' | 'info', duration?: number, horizontalPosition?: string, verticalPosition?: string): void;
|
|
12
|
+
success(message: string): void;
|
|
13
|
+
error(message: string): void;
|
|
14
|
+
info(message: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Ferme tous les snackbars ouverts
|
|
17
|
+
*/
|
|
18
|
+
dismiss(): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BarakUiToastService, never>;
|
|
20
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BarakUiToastService>;
|
|
21
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "barak-ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^19.2.0",
|
|
6
|
+
"@angular/core": "^19.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/barak-ui.mjs",
|
|
13
|
+
"typings": "index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./index.d.ts",
|
|
20
|
+
"default": "./fesm2022/barak-ui.mjs"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './lib/services/barak-ui.modal.service';
|
|
2
|
+
export * from './lib/services/barak-ui.toast.service';
|
|
3
|
+
export * from './lib/components/button/button.component';
|
|
4
|
+
export * from './lib/components/dialog/confirmation-dialog/barak-ui-dialog.component';
|
|
5
|
+
export * from './lib/components/dialog/generic-dialog/barak-ui-generic-dialog.component';
|
|
6
|
+
export * from './lib/components/table/barak-ui-table.component';
|
|
7
|
+
export * from './lib/components/pagination/barak-ui.pagniation.component';
|
|
8
|
+
export * from './lib/components/autocomplete/barak-ui-autocomplete.component';
|
|
9
|
+
export * from './lib/components/barak-ui-spinner/barak-ui-spinner.component';
|