ngx-gccb 0.6.1 → 0.8.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.
Files changed (87) hide show
  1. package/fesm2022/ngx-gccb.mjs +421 -587
  2. package/fesm2022/ngx-gccb.mjs.map +1 -1
  3. package/lib/decorators/decorator.types.d.ts +2 -2
  4. package/lib/directives/autofocus.directive.d.ts +11 -0
  5. package/lib/directives/dropdown.directive.d.ts +1 -1
  6. package/lib/directives/tooltip.directive.d.ts +8 -0
  7. package/lib/validators/dateAfter.validator.d.ts +3 -1
  8. package/lib/validators/match.validator.d.ts +3 -1
  9. package/lib/validators/timeAfter.validator.d.ts +4 -2
  10. package/package.json +7 -12
  11. package/public-api.d.ts +18 -5
  12. package/esm2022/lib/animations/fade-right.animation.mjs +0 -6
  13. package/esm2022/lib/animations/fade-up.animation.mjs +0 -6
  14. package/esm2022/lib/animations/index.mjs +0 -3
  15. package/esm2022/lib/components/date-picker/date-picker.component.mjs +0 -50
  16. package/esm2022/lib/components/date-picker/index.mjs +0 -2
  17. package/esm2022/lib/components/form/form-errors/form-errors.component.mjs +0 -67
  18. package/esm2022/lib/components/form/form-errors/index.mjs +0 -2
  19. package/esm2022/lib/components/form/form-input/form-input.component.mjs +0 -53
  20. package/esm2022/lib/components/form/form-input/index.mjs +0 -2
  21. package/esm2022/lib/components/form/index.mjs +0 -3
  22. package/esm2022/lib/components/index.mjs +0 -7
  23. package/esm2022/lib/components/loading-indicator/index.mjs +0 -2
  24. package/esm2022/lib/components/loading-indicator/loading-indicator.component.mjs +0 -17
  25. package/esm2022/lib/components/modal/base-modal.component.mjs +0 -15
  26. package/esm2022/lib/components/modal/index.mjs +0 -3
  27. package/esm2022/lib/components/modal/modal.component.mjs +0 -43
  28. package/esm2022/lib/components/off-canvas/index.mjs +0 -2
  29. package/esm2022/lib/components/off-canvas/off-canvas.component.mjs +0 -27
  30. package/esm2022/lib/components/toast/index.mjs +0 -2
  31. package/esm2022/lib/components/toast/toast.component.mjs +0 -32
  32. package/esm2022/lib/decorators/class.decorator.mjs +0 -7
  33. package/esm2022/lib/decorators/decorator.types.mjs +0 -2
  34. package/esm2022/lib/decorators/index.mjs +0 -4
  35. package/esm2022/lib/decorators/log.decorator.mjs +0 -21
  36. package/esm2022/lib/directives/button.directive.mjs +0 -66
  37. package/esm2022/lib/directives/col.directive.mjs +0 -29
  38. package/esm2022/lib/directives/dropdown.directive.mjs +0 -118
  39. package/esm2022/lib/directives/form-input.directive.mjs +0 -30
  40. package/esm2022/lib/directives/form-label.directive.mjs +0 -20
  41. package/esm2022/lib/directives/form-select.directive.mjs +0 -30
  42. package/esm2022/lib/directives/icon-button.directive.mjs +0 -37
  43. package/esm2022/lib/directives/index.mjs +0 -11
  44. package/esm2022/lib/directives/list-group-item-avatar.directive.mjs +0 -20
  45. package/esm2022/lib/directives/list-group-item.directive.mjs +0 -45
  46. package/esm2022/lib/directives/list-group.directive.mjs +0 -21
  47. package/esm2022/lib/enums/index.mjs +0 -2
  48. package/esm2022/lib/enums/logtype.enum.mjs +0 -9
  49. package/esm2022/lib/helpers/index.mjs +0 -2
  50. package/esm2022/lib/helpers/sort.helper.mjs +0 -31
  51. package/esm2022/lib/interfaces/dictionary.interface.mjs +0 -2
  52. package/esm2022/lib/interfaces/index.mjs +0 -2
  53. package/esm2022/lib/pipe/form-control.pipe.mjs +0 -17
  54. package/esm2022/lib/pipe/index.mjs +0 -2
  55. package/esm2022/lib/services/clipboard.service.mjs +0 -16
  56. package/esm2022/lib/services/file.service.mjs +0 -71
  57. package/esm2022/lib/services/image.service.mjs +0 -49
  58. package/esm2022/lib/services/index.mjs +0 -10
  59. package/esm2022/lib/services/loading-indicator.service.mjs +0 -16
  60. package/esm2022/lib/services/local.service.mjs +0 -28
  61. package/esm2022/lib/services/logger.service.mjs +0 -36
  62. package/esm2022/lib/services/modal.service.mjs +0 -34
  63. package/esm2022/lib/services/toast.service.mjs +0 -42
  64. package/esm2022/lib/services/token.service.mjs +0 -26
  65. package/esm2022/lib/typings/array-extension.mjs +0 -39
  66. package/esm2022/lib/typings/date-extension.mjs +0 -34
  67. package/esm2022/lib/typings/index.mjs +0 -4
  68. package/esm2022/lib/typings/string-extensions.mjs +0 -5
  69. package/esm2022/lib/validators/dateAfter.validator.mjs +0 -20
  70. package/esm2022/lib/validators/index.mjs +0 -4
  71. package/esm2022/lib/validators/match.validator.mjs +0 -18
  72. package/esm2022/lib/validators/timeAfter.validator.mjs +0 -29
  73. package/esm2022/ngx-gccb.mjs +0 -5
  74. package/esm2022/public-api.mjs +0 -15
  75. package/lib/directives/index.d.ts +0 -10
  76. package/lib/helpers/index.d.ts +0 -1
  77. package/lib/helpers/sort.helper.d.ts +0 -1
  78. package/lib/interfaces/dictionary.interface.d.ts +0 -3
  79. package/lib/interfaces/index.d.ts +0 -1
  80. package/lib/services/clipboard.service.d.ts +0 -6
  81. package/lib/services/file.service.d.ts +0 -13
  82. package/lib/services/index.d.ts +0 -9
  83. package/lib/services/logger.service.d.ts +0 -18
  84. package/lib/typings/array-extension.d.ts +0 -11
  85. package/lib/typings/date-extension.d.ts +0 -15
  86. package/lib/typings/index.d.ts +0 -8
  87. package/lib/typings/string-extensions.d.ts +0 -6
@@ -2,27 +2,29 @@ import { trigger, transition, style, animate } from '@angular/animations';
2
2
  import * as i1$2 from '@angular/common';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { Component, Input, inject, ElementRef, Renderer2, Directive, HostListener, ViewContainerRef, HostBinding, EventEmitter, Output, Pipe, Injectable, ComponentFactoryResolver } from '@angular/core';
5
+ import { Component, Input, inject, ElementRef, Directive, HostBinding, EventEmitter, Output, Renderer2, HostListener, ViewContainerRef, Pipe, Injectable, ComponentFactoryResolver } from '@angular/core';
6
6
  import * as i1 from '@angular/forms';
7
7
  import { ReactiveFormsModule } from '@angular/forms';
8
- import { createPopper } from '@popperjs/core';
9
8
  import * as i1$1 from '@fortawesome/angular-fontawesome';
10
9
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
11
10
  import { faSpinner, faTimes } from '@fortawesome/free-solid-svg-icons';
12
- import saveAs from 'file-saver';
13
- import { unparse, parse } from 'papaparse';
14
- import { BehaviorSubject, Subject } from 'rxjs';
11
+ import { createPopper } from '@popperjs/core';
12
+ import { BehaviorSubject } from 'rxjs';
15
13
  import { DomPortalOutlet, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
16
- import dayjs from 'dayjs';
17
- import localizedFormat from 'dayjs/plugin/localizedFormat';
18
14
 
19
15
  const FadeRightAnimation = trigger('fadeRightAnimation', [
20
- transition(':enter', [style({ transform: 'translateX(-100%)', zIndex: 9999 }), animate('200ms ease-in', style({ transform: 'translateX(0%)' }))]),
16
+ transition(':enter', [
17
+ style({ transform: 'translateX(-100%)', zIndex: 9999 }),
18
+ animate('200ms ease-in', style({ transform: 'translateX(0%)' })),
19
+ ]),
21
20
  transition(':leave', [animate('200ms ease-in', style({ transform: 'translateX(-100%)' }))]),
22
21
  ]);
23
22
 
24
23
  const FadeAnimation = trigger('fadeAnimation', [
25
- transition(':enter', [style({ opacity: 0, transform: 'translateY(10px)' }), animate('500ms', style({ opacity: 1, transform: 'translateY(0)' }))]),
24
+ transition(':enter', [
25
+ style({ opacity: 0, transform: 'translateY(10px)' }),
26
+ animate('500ms', style({ opacity: 1, transform: 'translateY(0)' })),
27
+ ]),
26
28
  transition(':leave', [animate('500ms', style({ opacity: 0, transform: 'translateY(10px)' }))]),
27
29
  ]);
28
30
 
@@ -44,12 +46,12 @@ class DatePickerComponent {
44
46
  // }
45
47
  // }
46
48
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: DatePickerComponent, isStandalone: true, selector: "app-date-picker", ngImport: i0, template: "coming soon\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: DatePickerComponent, isStandalone: true, selector: "app-date-picker", ngImport: i0, template: "coming soon\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
49
51
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DatePickerComponent, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DatePickerComponent, decorators: [{
51
53
  type: Component,
52
- args: [{ selector: 'app-date-picker', standalone: true, imports: [CommonModule], template: "coming soon\n" }]
54
+ args: [{ selector: 'app-date-picker', imports: [CommonModule], template: "coming soon\n" }]
53
55
  }] });
54
56
  var DayOfWeek;
55
57
  (function (DayOfWeek) {
@@ -106,8 +108,8 @@ class FormErrorsComponent {
106
108
  }
107
109
  }
108
110
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: FormErrorsComponent, isStandalone: true, selector: "app-form-errors", inputs: { errors: "errors" }, usesOnChanges: true, ngImport: i0, template: `
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: FormErrorsComponent, isStandalone: true, selector: "app-form-errors", inputs: { errors: "errors" }, usesOnChanges: true, ngImport: i0, template: `
111
113
  <div class="invalid-feedback d-block">
112
114
  @if (errorMessages) {
113
115
  @for (errorMessage of errorMessages; track $index) {
@@ -117,7 +119,7 @@ class FormErrorsComponent {
117
119
  </div>
118
120
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
119
121
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormErrorsComponent, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormErrorsComponent, decorators: [{
121
123
  type: Component,
122
124
  args: [{
123
125
  selector: 'app-form-errors',
@@ -130,13 +132,344 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
130
132
  }
131
133
  </div>
132
134
  `,
133
- standalone: true,
134
135
  imports: [CommonModule],
135
136
  }]
136
137
  }], propDecorators: { errors: [{
137
138
  type: Input
138
139
  }] } });
139
140
 
141
+ class FormInputDirective {
142
+ constructor() {
143
+ this.elementRef = inject((ElementRef));
144
+ }
145
+ set formInputInvalid(val) {
146
+ if (val === true) {
147
+ this.elementRef.nativeElement.classList.add('is-invalid');
148
+ }
149
+ else {
150
+ this.elementRef.nativeElement.classList.remove('is-invalid');
151
+ }
152
+ }
153
+ ngOnInit() {
154
+ this.elementRef.nativeElement.classList.add('form-control');
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
157
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: FormInputDirective, isStandalone: true, selector: "input,textarea[app-form-input]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormInputDirective, decorators: [{
160
+ type: Directive,
161
+ args: [{
162
+ selector: 'input,textarea[app-form-input]',
163
+ standalone: true,
164
+ }]
165
+ }], propDecorators: { formInputInvalid: [{
166
+ type: Input
167
+ }] } });
168
+
169
+ class FormLabelDirective {
170
+ constructor() {
171
+ this.elementClass = 'form-label';
172
+ }
173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
174
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: FormLabelDirective, isStandalone: true, selector: "label[app-form-label]", host: { properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
175
+ }
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormLabelDirective, decorators: [{
177
+ type: Directive,
178
+ args: [{
179
+ selector: 'label[app-form-label]',
180
+ standalone: true,
181
+ }]
182
+ }], propDecorators: { elementClass: [{
183
+ type: HostBinding,
184
+ args: ['class']
185
+ }] } });
186
+
187
+ class FormSelectDirective {
188
+ constructor() {
189
+ this.elementRef = inject((ElementRef));
190
+ }
191
+ set formInputInvalid(val) {
192
+ if (val === true) {
193
+ this.elementRef.nativeElement.classList.add('is-invalid');
194
+ }
195
+ else {
196
+ this.elementRef.nativeElement.classList.remove('is-invalid');
197
+ }
198
+ }
199
+ ngOnInit() {
200
+ this.elementRef.nativeElement.classList.add('form-select');
201
+ }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
203
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: FormSelectDirective, isStandalone: true, selector: "select[app-form-select]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormSelectDirective, decorators: [{
206
+ type: Directive,
207
+ args: [{
208
+ selector: 'select[app-form-select]',
209
+ standalone: true,
210
+ }]
211
+ }], propDecorators: { formInputInvalid: [{
212
+ type: Input
213
+ }] } });
214
+
215
+ class FormInputComponent {
216
+ constructor() {
217
+ this.inputType = 'text';
218
+ this.isSubmitted = false;
219
+ this.selectOptions = [];
220
+ this.hintText = '';
221
+ this.onEnter = new EventEmitter();
222
+ this.onChange = new EventEmitter();
223
+ }
224
+ handleSelect(event) {
225
+ this.onChange.next(event);
226
+ }
227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: FormInputComponent, isStandalone: true, selector: "app-form-input", inputs: { control: "control", inputType: "inputType", inputLabel: "inputLabel", inputPlaceholder: "inputPlaceholder", inputId: "inputId", inputName: "inputName", inputTabIndex: "inputTabIndex", isSubmitted: "isSubmitted", selectOptions: "selectOptions", hintText: "hintText" }, outputs: { onEnter: "onEnter", onChange: "onChange" }, ngImport: i0, template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === 'text' ||\n\t\tinputType === 'number' ||\n\t\tinputType === 'password' ||\n\t\tinputType === 'email' ||\n\t\tinputType === 'date' ||\n\t\tinputType === 'datetime-local' ||\n\t\tinputType === 'time'\n\t) {\n\t\t<input\n\t\t\t[type]=\"inputType\"\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\" />\n\t}\n\t@if (inputType === 'textarea') {\n\t\t<textarea\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\tstyle=\"min-height: 100px\">\n\t\t</textarea>\n\t}\n\t@if (inputType === 'select') {\n\t\t<select\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-select\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\"\n\t\t\t(change)=\"handleSelect($event)\">\n\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t{{ option.label }}\n\t\t\t\t</option>\n\t\t\t}\n\t\t</select>\n\t}\n\t<label app-form-label [attr.for]=\"inputName || inputId\"> {{ inputLabel }} </label>\n\n\t@if (hintText) {\n\t\t<div class=\"form-text\">\n\t\t\t{{ hintText }}\n\t\t</div>\n\t}\n\n\t@if (isSubmitted && control.errors) {\n\t\t<app-form-errors [errors]=\"control.errors\" />\n\t}\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: FormErrorsComponent, selector: "app-form-errors", inputs: ["errors"] }, { kind: "directive", type: FormLabelDirective, selector: "label[app-form-label]" }, { kind: "directive", type: FormInputDirective, selector: "input,textarea[app-form-input]", inputs: ["formInputInvalid"] }, { kind: "directive", type: FormSelectDirective, selector: "select[app-form-select]", inputs: ["formInputInvalid"] }] }); }
229
+ }
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormInputComponent, decorators: [{
231
+ type: Component,
232
+ args: [{ selector: 'app-form-input', imports: [ReactiveFormsModule, FormErrorsComponent, FormLabelDirective, FormInputDirective, FormSelectDirective], template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === 'text' ||\n\t\tinputType === 'number' ||\n\t\tinputType === 'password' ||\n\t\tinputType === 'email' ||\n\t\tinputType === 'date' ||\n\t\tinputType === 'datetime-local' ||\n\t\tinputType === 'time'\n\t) {\n\t\t<input\n\t\t\t[type]=\"inputType\"\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\" />\n\t}\n\t@if (inputType === 'textarea') {\n\t\t<textarea\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\tstyle=\"min-height: 100px\">\n\t\t</textarea>\n\t}\n\t@if (inputType === 'select') {\n\t\t<select\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-select\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\"\n\t\t\t(change)=\"handleSelect($event)\">\n\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t{{ option.label }}\n\t\t\t\t</option>\n\t\t\t}\n\t\t</select>\n\t}\n\t<label app-form-label [attr.for]=\"inputName || inputId\"> {{ inputLabel }} </label>\n\n\t@if (hintText) {\n\t\t<div class=\"form-text\">\n\t\t\t{{ hintText }}\n\t\t</div>\n\t}\n\n\t@if (isSubmitted && control.errors) {\n\t\t<app-form-errors [errors]=\"control.errors\" />\n\t}\n</div>\n" }]
233
+ }], propDecorators: { control: [{
234
+ type: Input,
235
+ args: [{ required: true }]
236
+ }], inputType: [{
237
+ type: Input
238
+ }], inputLabel: [{
239
+ type: Input,
240
+ args: [{ required: true }]
241
+ }], inputPlaceholder: [{
242
+ type: Input
243
+ }], inputId: [{
244
+ type: Input
245
+ }], inputName: [{
246
+ type: Input,
247
+ args: [{ required: true }]
248
+ }], inputTabIndex: [{
249
+ type: Input
250
+ }], isSubmitted: [{
251
+ type: Input
252
+ }], selectOptions: [{
253
+ type: Input
254
+ }], hintText: [{
255
+ type: Input
256
+ }], onEnter: [{
257
+ type: Output
258
+ }], onChange: [{
259
+ type: Output
260
+ }] } });
261
+
262
+ class LoadingIndicatorComponent {
263
+ constructor() {
264
+ this.faSpinner = faSpinner;
265
+ }
266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
267
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: LoadingIndicatorComponent, isStandalone: true, selector: "app-loading-indicator", ngImport: i0, template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\"></fa-icon>\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"], dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LoadingIndicatorComponent, decorators: [{
270
+ type: Component,
271
+ args: [{ selector: 'app-loading-indicator', imports: [FontAwesomeModule], template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\"></fa-icon>\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"] }]
272
+ }] });
273
+
274
+ class BaseModalComponent {
275
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
276
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: BaseModalComponent, isStandalone: true, selector: "app-base-modal", ngImport: i0, template: ``, isInline: true }); }
277
+ }
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: BaseModalComponent, decorators: [{
279
+ type: Component,
280
+ args: [{
281
+ selector: 'app-base-modal',
282
+ template: ``,
283
+ standalone: true,
284
+ }]
285
+ }] });
286
+
287
+ class IconButtonDirective {
288
+ constructor() {
289
+ this.elementRef = inject((ElementRef));
290
+ }
291
+ set appIconButton(val) {
292
+ this.color = val || 'primary';
293
+ this.elementRef.nativeElement.classList.add(`icon-button-${this.color}`);
294
+ }
295
+ set shadow(val) {
296
+ if (val === true || val === undefined) {
297
+ this.elementRef.nativeElement.classList.add('shadow-sm');
298
+ }
299
+ else {
300
+ this.elementRef.nativeElement.classList.remove('shadow-sm');
301
+ }
302
+ }
303
+ ngOnInit() {
304
+ this.elementRef.nativeElement.classList.add('btn', 'icon-button');
305
+ }
306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: IconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
307
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: IconButtonDirective, isStandalone: true, selector: "button[app-icon-button]", inputs: { appIconButton: ["app-icon-button", "appIconButton"], shadow: "shadow" }, ngImport: i0 }); }
308
+ }
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: IconButtonDirective, decorators: [{
310
+ type: Directive,
311
+ args: [{
312
+ selector: 'button[app-icon-button]',
313
+ standalone: true,
314
+ }]
315
+ }], propDecorators: { appIconButton: [{
316
+ type: Input,
317
+ args: ['app-icon-button']
318
+ }], shadow: [{
319
+ type: Input
320
+ }] } });
321
+
322
+ class ModalComponent {
323
+ constructor() {
324
+ this.title = '';
325
+ this.showClose = true;
326
+ this.onClose = new EventEmitter();
327
+ this.dialogCssClasses = [];
328
+ this.faTimes = faTimes;
329
+ }
330
+ set fullScreen(val) {
331
+ if (val === true) {
332
+ this.dialogCssClasses.push(`modal-fullscreen`);
333
+ }
334
+ else {
335
+ this.dialogCssClasses = this.dialogCssClasses.filter(cssClass => cssClass !== 'modal-fullscreen');
336
+ }
337
+ }
338
+ handleClickClose() {
339
+ this.onClose.next();
340
+ }
341
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
342
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { title: "title", showClose: "showClose", fullScreen: "fullScreen" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"modal d-flex justify-content-center align-items-center\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\" [ngClass]=\"dialogCssClasses\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header justify-content-between\">\n\t\t\t\t<h5 class=\"modal-title\">{{ title }}</h5>\n\t\t\t\t@if (showClose) {\n\t\t\t\t\t<button app-icon-button=\"secondary\" class=\"ms-2\" (click)=\"handleClickClose()\">\n\t\t\t\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-body\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-footer\">\n\t\t\t\t<ng-content select=\"[footer]\"></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"modal-backdrop fade show\"></div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconButtonDirective, selector: "button[app-icon-button]", inputs: ["app-icon-button", "shadow"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
343
+ }
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ModalComponent, decorators: [{
345
+ type: Component,
346
+ args: [{ selector: 'app-modal', imports: [CommonModule, IconButtonDirective, FontAwesomeModule], template: "<div class=\"modal d-flex justify-content-center align-items-center\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\" [ngClass]=\"dialogCssClasses\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header justify-content-between\">\n\t\t\t\t<h5 class=\"modal-title\">{{ title }}</h5>\n\t\t\t\t@if (showClose) {\n\t\t\t\t\t<button app-icon-button=\"secondary\" class=\"ms-2\" (click)=\"handleClickClose()\">\n\t\t\t\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-body\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-footer\">\n\t\t\t\t<ng-content select=\"[footer]\"></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"modal-backdrop fade show\"></div>\n" }]
347
+ }], propDecorators: { title: [{
348
+ type: Input
349
+ }], showClose: [{
350
+ type: Input
351
+ }], fullScreen: [{
352
+ type: Input
353
+ }], onClose: [{
354
+ type: Output
355
+ }] } });
356
+
357
+ class OffCanvasComponent {
358
+ constructor() {
359
+ this.title = '';
360
+ this.onClose = new EventEmitter();
361
+ this.faTimes = faTimes;
362
+ }
363
+ handleClickClose() {
364
+ this.onClose.next();
365
+ }
366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: OffCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: OffCanvasComponent, isStandalone: true, selector: "app-off-canvas", inputs: { title: "title" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" style=\"z-index: 1051\">\n\t<div class=\"offcanvas-header justify-content-between\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button=\"secondary\" class=\"ml-auto\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t</button>\n\t</div>\n\t<ng-content />\n</div>\n\n<div class=\"modal-backdrop fade show\" (click)=\"handleClickClose()\"></div>\n", styles: [":host{z-index:9999;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: IconButtonDirective, selector: "button[app-icon-button]", inputs: ["app-icon-button", "shadow"] }] }); }
368
+ }
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: OffCanvasComponent, decorators: [{
370
+ type: Component,
371
+ args: [{ selector: 'app-off-canvas', imports: [FontAwesomeModule, IconButtonDirective], template: "<div class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" style=\"z-index: 1051\">\n\t<div class=\"offcanvas-header justify-content-between\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button=\"secondary\" class=\"ml-auto\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t</button>\n\t</div>\n\t<ng-content />\n</div>\n\n<div class=\"modal-backdrop fade show\" (click)=\"handleClickClose()\"></div>\n", styles: [":host{z-index:9999;display:block}\n"] }]
372
+ }], propDecorators: { title: [{
373
+ type: Input
374
+ }], onClose: [{
375
+ type: Output
376
+ }] } });
377
+
378
+ class ToastComponent {
379
+ constructor() {
380
+ this.onClose = new EventEmitter();
381
+ }
382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: ToastComponent, isStandalone: true, selector: "app-toast", inputs: { message: "message" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
384
+ <div class="toast align-items-center text-bg-dark border-0 show">
385
+ <div class="d-flex">
386
+ <div class="toast-body" [innerHTML]="message"></div>
387
+ <button class="btn-close btn-close-white me-2 m-auto" (click)="onClose.next()"></button>
388
+ </div>
389
+ </div>
390
+ `, isInline: true, styles: [":host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1051}\n"] }); }
391
+ }
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ToastComponent, decorators: [{
393
+ type: Component,
394
+ args: [{ selector: 'app-toast', template: `
395
+ <div class="toast align-items-center text-bg-dark border-0 show">
396
+ <div class="d-flex">
397
+ <div class="toast-body" [innerHTML]="message"></div>
398
+ <button class="btn-close btn-close-white me-2 m-auto" (click)="onClose.next()"></button>
399
+ </div>
400
+ </div>
401
+ `, styles: [":host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1051}\n"] }]
402
+ }], propDecorators: { message: [{
403
+ type: Input
404
+ }], onClose: [{
405
+ type: Output
406
+ }] } });
407
+
408
+ const Class = (className) => (obj) => {
409
+ Object.defineProperty(obj.prototype, 'className', {
410
+ value: className,
411
+ writable: false,
412
+ });
413
+ };
414
+
415
+ var LogType;
416
+ (function (LogType) {
417
+ LogType["log"] = "log";
418
+ LogType["info"] = "info";
419
+ LogType["warn"] = "warn";
420
+ LogType["debug"] = "debug";
421
+ LogType["error"] = "error";
422
+ })(LogType || (LogType = {}));
423
+
424
+ /* eslint-disable @typescript-eslint/naming-convention */
425
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
426
+ function Log(methodName, logType = LogType.log, logArgs) {
427
+ return function (target, key, descriptor) {
428
+ const method = descriptor.value;
429
+ descriptor.value = function (...args) {
430
+ const className = target.constructor.name;
431
+ const newMethodName = methodName || key;
432
+ let logStatements = [className, newMethodName];
433
+ if (logArgs && args && args.length > 0) {
434
+ logStatements = logStatements.concat(args);
435
+ }
436
+ // eslint-disable-next-line no-console
437
+ console[logType](...logStatements);
438
+ return method.apply(this, args);
439
+ };
440
+ return descriptor;
441
+ };
442
+ }
443
+
444
+ class AutofocusDirective {
445
+ constructor(el) {
446
+ this.el = el;
447
+ this.focus = true;
448
+ }
449
+ set autofocus(condition) {
450
+ this.focus = condition !== false;
451
+ }
452
+ ngAfterViewInit() {
453
+ if (this.focus) {
454
+ setTimeout(() => {
455
+ this.el.nativeElement.focus();
456
+ this.el.nativeElement.classList.add('focus-ring');
457
+ }, 100);
458
+ }
459
+ }
460
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AutofocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
461
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: AutofocusDirective, isStandalone: true, selector: "[autofocus]", inputs: { autofocus: "autofocus" }, ngImport: i0 }); }
462
+ }
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AutofocusDirective, decorators: [{
464
+ type: Directive,
465
+ args: [{
466
+ selector: '[autofocus]',
467
+ standalone: true,
468
+ }]
469
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { autofocus: [{
470
+ type: Input
471
+ }] } });
472
+
140
473
  class ButtonDirective {
141
474
  constructor() {
142
475
  this.elementRef = inject((ElementRef));
@@ -177,10 +510,10 @@ class ButtonDirective {
177
510
  this.elementRef.nativeElement.classList.add('flex-shrink-0');
178
511
  this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');
179
512
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
181
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: ButtonDirective, isStandalone: true, selector: "button[app-button]", inputs: { appButton: ["app-button", "appButton"], variant: "variant", size: "size" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onblur($event)" } }, ngImport: i0 }); }
513
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
514
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: ButtonDirective, isStandalone: true, selector: "button[app-button]", inputs: { appButton: ["app-button", "appButton"], variant: "variant", size: "size" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onblur($event)" } }, ngImport: i0 }); }
182
515
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ButtonDirective, decorators: [{
516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ButtonDirective, decorators: [{
184
517
  type: Directive,
185
518
  args: [{
186
519
  selector: 'button[app-button]',
@@ -215,10 +548,10 @@ class ColDirective {
215
548
  ngAfterViewInit() {
216
549
  this.el.nativeElement.classList.add(this.span);
217
550
  }
218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ColDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
219
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: ColDirective, isStandalone: true, selector: "[col]", inputs: { col: "col" }, ngImport: i0 }); }
551
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ColDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
552
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: ColDirective, isStandalone: true, selector: "[col]", inputs: { col: "col" }, ngImport: i0 }); }
220
553
  }
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ColDirective, decorators: [{
554
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ColDirective, decorators: [{
222
555
  type: Directive,
223
556
  args: [{
224
557
  selector: '[col]',
@@ -312,7 +645,9 @@ class DropdownDirective {
312
645
  this.isDropdownVisible = false;
313
646
  }
314
647
  onDocumentClick(event) {
315
- if (this.wrapperElement && !this.wrapperElement.contains(event.target) && !this.elementRef.nativeElement.contains(event.target)) {
648
+ if (this.wrapperElement &&
649
+ !this.wrapperElement.contains(event.target) &&
650
+ !this.elementRef.nativeElement.contains(event.target)) {
316
651
  this.closeDropdown();
317
652
  }
318
653
  }
@@ -320,136 +655,27 @@ class DropdownDirective {
320
655
  const links = this.dropdownContent?.querySelectorAll('.dropdown-item');
321
656
  links?.forEach(link => {
322
657
  this.renderer.listen(link, 'click', () => {
323
- this.closeDropdown();
324
- });
325
- });
326
- }
327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
328
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: DropdownDirective, isStandalone: true, selector: "[appDropdown]", inputs: { dropdownTemplate: ["appDropdown", "dropdownTemplate"], placement: "placement" }, host: { listeners: { "click": "toggleDropdown()" } }, ngImport: i0 }); }
329
- }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DropdownDirective, decorators: [{
331
- type: Directive,
332
- args: [{
333
- selector: '[appDropdown]',
334
- standalone: true,
335
- }]
336
- }], ctorParameters: () => [], propDecorators: { dropdownTemplate: [{
337
- type: Input,
338
- args: ['appDropdown']
339
- }], placement: [{
340
- type: Input
341
- }], toggleDropdown: [{
342
- type: HostListener,
343
- args: ['click']
344
- }] } });
345
-
346
- class FormInputDirective {
347
- constructor() {
348
- this.elementRef = inject((ElementRef));
349
- }
350
- set formInputInvalid(val) {
351
- if (val === true) {
352
- this.elementRef.nativeElement.classList.add('is-invalid');
353
- }
354
- else {
355
- this.elementRef.nativeElement.classList.remove('is-invalid');
356
- }
357
- }
358
- ngOnInit() {
359
- this.elementRef.nativeElement.classList.add('form-control');
360
- }
361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
362
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: FormInputDirective, isStandalone: true, selector: "input,textarea[app-form-input]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
363
- }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormInputDirective, decorators: [{
365
- type: Directive,
366
- args: [{
367
- selector: 'input,textarea[app-form-input]',
368
- standalone: true,
369
- }]
370
- }], propDecorators: { formInputInvalid: [{
371
- type: Input
372
- }] } });
373
-
374
- class FormLabelDirective {
375
- constructor() {
376
- this.elementClass = 'form-label';
377
- }
378
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
379
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: FormLabelDirective, isStandalone: true, selector: "label[app-form-label]", host: { properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
380
- }
381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormLabelDirective, decorators: [{
382
- type: Directive,
383
- args: [{
384
- selector: 'label[app-form-label]',
385
- standalone: true,
386
- }]
387
- }], propDecorators: { elementClass: [{
388
- type: HostBinding,
389
- args: ['class']
390
- }] } });
391
-
392
- class FormSelectDirective {
393
- constructor() {
394
- this.elementRef = inject((ElementRef));
395
- }
396
- set formInputInvalid(val) {
397
- if (val === true) {
398
- this.elementRef.nativeElement.classList.add('is-invalid');
399
- }
400
- else {
401
- this.elementRef.nativeElement.classList.remove('is-invalid');
402
- }
403
- }
404
- ngOnInit() {
405
- this.elementRef.nativeElement.classList.add('form-select');
406
- }
407
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
408
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: FormSelectDirective, isStandalone: true, selector: "select[app-form-select]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
409
- }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormSelectDirective, decorators: [{
411
- type: Directive,
412
- args: [{
413
- selector: 'select[app-form-select]',
414
- standalone: true,
415
- }]
416
- }], propDecorators: { formInputInvalid: [{
417
- type: Input
418
- }] } });
419
-
420
- class IconButtonDirective {
421
- constructor() {
422
- this.elementRef = inject((ElementRef));
423
- }
424
- set appIconButton(val) {
425
- this.color = val || 'primary';
426
- this.elementRef.nativeElement.classList.add(`icon-button-${this.color}`);
427
- }
428
- set shadow(val) {
429
- if (val === true || val === undefined) {
430
- this.elementRef.nativeElement.classList.add('shadow-sm');
431
- }
432
- else {
433
- this.elementRef.nativeElement.classList.remove('shadow-sm');
434
- }
435
- }
436
- ngOnInit() {
437
- this.elementRef.nativeElement.classList.add('btn', 'icon-button');
658
+ this.closeDropdown();
659
+ });
660
+ });
438
661
  }
439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: IconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
440
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: IconButtonDirective, isStandalone: true, selector: "button[app-icon-button]", inputs: { appIconButton: ["app-icon-button", "appIconButton"], shadow: "shadow" }, ngImport: i0 }); }
662
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
663
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: DropdownDirective, isStandalone: true, selector: "[appDropdown]", inputs: { dropdownTemplate: ["appDropdown", "dropdownTemplate"], placement: "placement" }, host: { listeners: { "click": "toggleDropdown()" } }, ngImport: i0 }); }
441
664
  }
442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: IconButtonDirective, decorators: [{
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DropdownDirective, decorators: [{
443
666
  type: Directive,
444
667
  args: [{
445
- selector: 'button[app-icon-button]',
668
+ selector: '[appDropdown]',
446
669
  standalone: true,
447
670
  }]
448
- }], propDecorators: { appIconButton: [{
671
+ }], ctorParameters: () => [], propDecorators: { dropdownTemplate: [{
449
672
  type: Input,
450
- args: ['app-icon-button']
451
- }], shadow: [{
673
+ args: ['appDropdown']
674
+ }], placement: [{
452
675
  type: Input
676
+ }], toggleDropdown: [{
677
+ type: HostListener,
678
+ args: ['click']
453
679
  }] } });
454
680
 
455
681
  class ListGroupItemAvatarDirective {
@@ -459,10 +685,10 @@ class ListGroupItemAvatarDirective {
459
685
  ngOnInit() {
460
686
  this.elementRef.nativeElement.classList.add('list-group-item-avatar');
461
687
  }
462
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
463
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: ListGroupItemAvatarDirective, isStandalone: true, selector: "[app-list-group-item-avatar]", ngImport: i0 }); }
688
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
689
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: ListGroupItemAvatarDirective, isStandalone: true, selector: "[app-list-group-item-avatar]", ngImport: i0 }); }
464
690
  }
465
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupItemAvatarDirective, decorators: [{
691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupItemAvatarDirective, decorators: [{
466
692
  type: Directive,
467
693
  args: [{
468
694
  selector: '[app-list-group-item-avatar]',
@@ -498,10 +724,10 @@ class ListGroupItemDirective {
498
724
  }
499
725
  });
500
726
  }
501
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
502
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: ListGroupItemDirective, isStandalone: true, selector: "li[app-list-group-item]", inputs: { isActive: "isActive" }, outputs: { onOutsideClick: "onOutsideClick" }, ngImport: i0 }); }
727
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
728
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: ListGroupItemDirective, isStandalone: true, selector: "li[app-list-group-item]", inputs: { isActive: "isActive" }, outputs: { onOutsideClick: "onOutsideClick" }, ngImport: i0 }); }
503
729
  }
504
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupItemDirective, decorators: [{
730
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupItemDirective, decorators: [{
505
731
  type: Directive,
506
732
  args: [{
507
733
  selector: 'li[app-list-group-item]',
@@ -521,10 +747,10 @@ class ListGroupDirective {
521
747
  this.elementRef.nativeElement.classList.add('list-group');
522
748
  this.elementRef.nativeElement.classList.add('list-group-flush');
523
749
  }
524
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
525
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: ListGroupDirective, isStandalone: true, selector: "ul[app-list-group]", ngImport: i0 }); }
750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
751
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: ListGroupDirective, isStandalone: true, selector: "ul[app-list-group]", ngImport: i0 }); }
526
752
  }
527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ListGroupDirective, decorators: [{
753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ListGroupDirective, decorators: [{
528
754
  type: Directive,
529
755
  args: [{
530
756
  selector: 'ul[app-list-group]',
@@ -532,239 +758,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
532
758
  }]
533
759
  }] });
534
760
 
535
- class FormInputComponent {
536
- constructor() {
537
- this.inputType = 'text';
538
- this.isSubmitted = false;
539
- this.selectOptions = [];
540
- this.hintText = '';
541
- this.onEnter = new EventEmitter();
542
- this.onChange = new EventEmitter();
543
- }
544
- handleSelect(event) {
545
- this.onChange.next(event);
546
- }
547
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
548
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: FormInputComponent, isStandalone: true, selector: "app-form-input", inputs: { control: "control", inputType: "inputType", inputLabel: "inputLabel", inputPlaceholder: "inputPlaceholder", inputId: "inputId", inputName: "inputName", inputTabIndex: "inputTabIndex", isSubmitted: "isSubmitted", selectOptions: "selectOptions", hintText: "hintText" }, outputs: { onEnter: "onEnter", onChange: "onChange" }, ngImport: i0, template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === 'text' ||\n\t\tinputType === 'number' ||\n\t\tinputType === 'password' ||\n\t\tinputType === 'email' ||\n\t\tinputType === 'date' ||\n\t\tinputType === 'datetime-local' ||\n\t\tinputType === 'time'\n\t) {\n\t\t<input\n\t\t\t[type]=\"inputType\"\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\" />\n\t}\n\t@if (inputType === 'textarea') {\n\t\t<textarea\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\tstyle=\"min-height: 100px\">\n\t\t</textarea>\n\t}\n\t@if (inputType === 'select') {\n\t\t<select\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-select\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\"\n\t\t\t(change)=\"handleSelect($event)\">\n\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t{{ option.label }}\n\t\t\t\t</option>\n\t\t\t}\n\t\t</select>\n\t}\n\t<label app-form-label [attr.for]=\"inputName || inputId\"> {{ inputLabel }} </label>\n\n\t@if (hintText) {\n\t\t<div class=\"form-text\">\n\t\t\t{{ hintText }}\n\t\t</div>\n\t}\n\n\t@if (isSubmitted && control.errors) {\n\t\t<app-form-errors [errors]=\"control.errors\" />\n\t}\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: FormErrorsComponent, selector: "app-form-errors", inputs: ["errors"] }, { kind: "directive", type: FormLabelDirective, selector: "label[app-form-label]" }, { kind: "directive", type: FormInputDirective, selector: "input,textarea[app-form-input]", inputs: ["formInputInvalid"] }, { kind: "directive", type: FormSelectDirective, selector: "select[app-form-select]", inputs: ["formInputInvalid"] }] }); }
549
- }
550
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormInputComponent, decorators: [{
551
- type: Component,
552
- args: [{ selector: 'app-form-input', standalone: true, imports: [ReactiveFormsModule, FormErrorsComponent, FormLabelDirective, FormInputDirective, FormSelectDirective], template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === 'text' ||\n\t\tinputType === 'number' ||\n\t\tinputType === 'password' ||\n\t\tinputType === 'email' ||\n\t\tinputType === 'date' ||\n\t\tinputType === 'datetime-local' ||\n\t\tinputType === 'time'\n\t) {\n\t\t<input\n\t\t\t[type]=\"inputType\"\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\" />\n\t}\n\t@if (inputType === 'textarea') {\n\t\t<textarea\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-input\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[placeholder]=\"inputPlaceholder\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\tstyle=\"min-height: 100px\">\n\t\t</textarea>\n\t}\n\t@if (inputType === 'select') {\n\t\t<select\n\t\t\t[attr.id]=\"inputId || inputName\"\n\t\t\t[attr.name]=\"inputName\"\n\t\t\t[formControl]=\"control\"\n\t\t\tapp-form-select\n\t\t\t[formInputInvalid]=\"isSubmitted && !!control.errors\"\n\t\t\t[tabIndex]=\"inputTabIndex\"\n\t\t\t(keydown.enter)=\"onEnter.next()\"\n\t\t\t(change)=\"handleSelect($event)\">\n\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t{{ option.label }}\n\t\t\t\t</option>\n\t\t\t}\n\t\t</select>\n\t}\n\t<label app-form-label [attr.for]=\"inputName || inputId\"> {{ inputLabel }} </label>\n\n\t@if (hintText) {\n\t\t<div class=\"form-text\">\n\t\t\t{{ hintText }}\n\t\t</div>\n\t}\n\n\t@if (isSubmitted && control.errors) {\n\t\t<app-form-errors [errors]=\"control.errors\" />\n\t}\n</div>\n" }]
553
- }], propDecorators: { control: [{
554
- type: Input,
555
- args: [{ required: true }]
556
- }], inputType: [{
557
- type: Input
558
- }], inputLabel: [{
559
- type: Input,
560
- args: [{ required: true }]
561
- }], inputPlaceholder: [{
562
- type: Input
563
- }], inputId: [{
564
- type: Input
565
- }], inputName: [{
566
- type: Input,
567
- args: [{ required: true }]
568
- }], inputTabIndex: [{
569
- type: Input
570
- }], isSubmitted: [{
571
- type: Input
572
- }], selectOptions: [{
573
- type: Input
574
- }], hintText: [{
575
- type: Input
576
- }], onEnter: [{
577
- type: Output
578
- }], onChange: [{
579
- type: Output
580
- }] } });
581
-
582
- class LoadingIndicatorComponent {
761
+ class TooltipDirective {
583
762
  constructor() {
584
- this.faSpinner = faSpinner;
763
+ this.placement = 'bottom-start';
585
764
  }
586
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
587
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: LoadingIndicatorComponent, isStandalone: true, selector: "app-loading-indicator", ngImport: i0, template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\"></fa-icon>\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"], dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
588
- }
589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoadingIndicatorComponent, decorators: [{
590
- type: Component,
591
- args: [{ selector: 'app-loading-indicator', standalone: true, imports: [FontAwesomeModule], template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\"></fa-icon>\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"] }]
592
- }] });
593
-
594
- class BaseModalComponent {
595
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
596
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: BaseModalComponent, isStandalone: true, selector: "app-base-modal", ngImport: i0, template: ``, isInline: true }); }
765
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
766
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: TooltipDirective, isStandalone: true, selector: "[appTooltip]", inputs: { tooltip: ["appTooltip", "tooltip"], placement: "placement" }, ngImport: i0 }); }
597
767
  }
598
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseModalComponent, decorators: [{
599
- type: Component,
768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TooltipDirective, decorators: [{
769
+ type: Directive,
600
770
  args: [{
601
- selector: 'app-base-modal',
602
- template: ``,
771
+ selector: '[appTooltip]',
603
772
  standalone: true,
604
773
  }]
605
- }] });
606
-
607
- class ModalComponent {
608
- constructor() {
609
- this.title = '';
610
- this.showClose = true;
611
- this.onClose = new EventEmitter();
612
- this.dialogCssClasses = [];
613
- this.faTimes = faTimes;
614
- }
615
- set fullScreen(val) {
616
- if (val === true) {
617
- this.dialogCssClasses.push(`modal-fullscreen`);
618
- }
619
- else {
620
- this.dialogCssClasses = this.dialogCssClasses.removeBy((cssClass) => cssClass, 'modal-fullscreen');
621
- }
622
- }
623
- handleClickClose() {
624
- this.onClose.next();
625
- }
626
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
627
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { title: "title", showClose: "showClose", fullScreen: "fullScreen" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"modal d-flex justify-content-center align-items-center\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\" [ngClass]=\"dialogCssClasses\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header justify-content-between\">\n\t\t\t\t<h5 class=\"modal-title\">{{ title }}</h5>\n\t\t\t\t@if (showClose) {\n\t\t\t\t\t<button app-icon-button=\"secondary\" class=\"ms-2\" (click)=\"handleClickClose()\">\n\t\t\t\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-body\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-footer\">\n\t\t\t\t<ng-content select=\"[footer]\"></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"modal-backdrop fade show\"></div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconButtonDirective, selector: "button[app-icon-button]", inputs: ["app-icon-button", "shadow"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
628
- }
629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ModalComponent, decorators: [{
630
- type: Component,
631
- args: [{ selector: 'app-modal', standalone: true, imports: [CommonModule, IconButtonDirective, FontAwesomeModule], template: "<div class=\"modal d-flex justify-content-center align-items-center\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\" [ngClass]=\"dialogCssClasses\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header justify-content-between\">\n\t\t\t\t<h5 class=\"modal-title\">{{ title }}</h5>\n\t\t\t\t@if (showClose) {\n\t\t\t\t\t<button app-icon-button=\"secondary\" class=\"ms-2\" (click)=\"handleClickClose()\">\n\t\t\t\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-body\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\n\t\t\t<div class=\"modal-footer\">\n\t\t\t\t<ng-content select=\"[footer]\"></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"modal-backdrop fade show\"></div>\n" }]
632
- }], propDecorators: { title: [{
633
- type: Input
634
- }], showClose: [{
635
- type: Input
636
- }], fullScreen: [{
637
- type: Input
638
- }], onClose: [{
639
- type: Output
640
- }] } });
641
-
642
- class OffCanvasComponent {
643
- constructor() {
644
- this.title = '';
645
- this.onClose = new EventEmitter();
646
- this.faTimes = faTimes;
647
- }
648
- handleClickClose() {
649
- this.onClose.next();
650
- }
651
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
652
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: OffCanvasComponent, isStandalone: true, selector: "app-off-canvas", inputs: { title: "title" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" style=\"z-index: 1051\">\n\t<div class=\"offcanvas-header justify-content-between\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button=\"secondary\" class=\"ml-auto\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t</button>\n\t</div>\n\t<ng-content />\n</div>\n\n<div class=\"modal-backdrop fade show\" (click)=\"handleClickClose()\"></div>\n", styles: [":host{z-index:9999;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: IconButtonDirective, selector: "button[app-icon-button]", inputs: ["app-icon-button", "shadow"] }] }); }
653
- }
654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffCanvasComponent, decorators: [{
655
- type: Component,
656
- args: [{ selector: 'app-off-canvas', standalone: true, imports: [FontAwesomeModule, IconButtonDirective], template: "<div class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" style=\"z-index: 1051\">\n\t<div class=\"offcanvas-header justify-content-between\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button=\"secondary\" class=\"ml-auto\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\" />\n\t\t</button>\n\t</div>\n\t<ng-content />\n</div>\n\n<div class=\"modal-backdrop fade show\" (click)=\"handleClickClose()\"></div>\n", styles: [":host{z-index:9999;display:block}\n"] }]
657
- }], propDecorators: { title: [{
658
- type: Input
659
- }], onClose: [{
660
- type: Output
661
- }] } });
662
-
663
- class ToastComponent {
664
- constructor() {
665
- this.onClose = new EventEmitter();
666
- }
667
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
668
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: ToastComponent, isStandalone: true, selector: "app-toast", inputs: { message: "message" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
669
- <div class="toast align-items-center text-bg-dark border-0 show">
670
- <div class="d-flex">
671
- <div class="toast-body" [innerHTML]="message"></div>
672
- <button class="btn-close btn-close-white me-2 m-auto" (click)="onClose.next()"></button>
673
- </div>
674
- </div>
675
- `, isInline: true, styles: [":host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1051}\n"] }); }
676
- }
677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ToastComponent, decorators: [{
678
- type: Component,
679
- args: [{ selector: 'app-toast', template: `
680
- <div class="toast align-items-center text-bg-dark border-0 show">
681
- <div class="d-flex">
682
- <div class="toast-body" [innerHTML]="message"></div>
683
- <button class="btn-close btn-close-white me-2 m-auto" (click)="onClose.next()"></button>
684
- </div>
685
- </div>
686
- `, standalone: true, styles: [":host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1051}\n"] }]
687
- }], propDecorators: { message: [{
774
+ }], propDecorators: { tooltip: [{
775
+ type: Input,
776
+ args: ['appTooltip']
777
+ }], placement: [{
688
778
  type: Input
689
- }], onClose: [{
690
- type: Output
691
779
  }] } });
692
780
 
693
- const Class = (className) => (obj) => {
694
- Object.defineProperty(obj.prototype, 'className', {
695
- value: className,
696
- writable: false,
697
- });
698
- };
699
-
700
- var LogType;
701
- (function (LogType) {
702
- LogType["log"] = "log";
703
- LogType["info"] = "info";
704
- LogType["warn"] = "warn";
705
- LogType["debug"] = "debug";
706
- LogType["error"] = "error";
707
- })(LogType || (LogType = {}));
708
-
709
- /* eslint-disable @typescript-eslint/naming-convention */
710
- /* eslint-disable prefer-arrow/prefer-arrow-functions */
711
- function Log(methodName, logType = LogType.log, logArgs) {
712
- return function (target, key, descriptor) {
713
- const method = descriptor.value;
714
- descriptor.value = function (...args) {
715
- const className = target.className || target.constructor.name;
716
- const newMethodName = methodName || key;
717
- let logStatements = [className, newMethodName];
718
- if (logArgs && args && args.length > 0) {
719
- logStatements = logStatements.concat([...args]);
720
- }
721
- // eslint-disable-next-line no-console
722
- console[logType].apply(console, [...logStatements]);
723
- return method.apply(this, args);
724
- };
725
- return descriptor;
726
- };
727
- }
728
-
729
- var SortOrder;
730
- (function (SortOrder) {
731
- SortOrder[SortOrder["NONE"] = 0] = "NONE";
732
- SortOrder[SortOrder["ASC"] = 1] = "ASC";
733
- SortOrder[SortOrder["DESC"] = -1] = "DESC";
734
- })(SortOrder || (SortOrder = {}));
735
- const compareString = (valA, valB, ascending) => {
736
- return valA.localeCompare(valB) * (ascending ? SortOrder.ASC : SortOrder.DESC);
737
- };
738
- const getSortOrder = (valA, valB) => {
739
- return valA < valB ? SortOrder.DESC : valA === valB ? SortOrder.NONE : SortOrder.ASC;
740
- };
741
- const compareNonString = (valA, valB, ascending) => {
742
- return getSortOrder(valA, valB) * (ascending ? SortOrder.ASC : SortOrder.DESC);
743
- };
744
- const getValue = (valA, valB, ascending) => {
745
- let result = 0;
746
- if (typeof valA === 'string' && typeof valB === 'string') {
747
- result = compareString(valA, valB, ascending);
748
- }
749
- else {
750
- result = compareNonString(valA, valB, ascending);
751
- }
752
- return result;
753
- };
754
- const sortHelper = (a, b, valueGetter, ascending) => {
755
- const valA = valueGetter(a);
756
- const valB = valueGetter(b);
757
- return getValue(valA, valB, ascending);
758
- };
759
-
760
781
  class FormControlPipe {
761
782
  transform(value) {
762
783
  return value;
763
784
  }
764
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
765
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: FormControlPipe, isStandalone: true, name: "formControl" }); }
785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
786
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: FormControlPipe, isStandalone: true, name: "formControl" }); }
766
787
  }
767
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FormControlPipe, decorators: [{
788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: FormControlPipe, decorators: [{
768
789
  type: Pipe,
769
790
  args: [{
770
791
  name: 'formControl',
@@ -772,87 +793,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
772
793
  }]
773
794
  }] });
774
795
 
775
- class ClipboardService {
776
- copy(text) {
777
- return navigator.clipboard.writeText(text);
778
- }
779
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
780
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ClipboardService, providedIn: 'root' }); }
781
- }
782
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ClipboardService, decorators: [{
783
- type: Injectable,
784
- args: [{
785
- providedIn: 'root',
786
- }]
787
- }] });
788
-
789
- class FileService {
790
- readAsText(file) {
791
- const fileReader = new FileReader();
792
- return new Promise((resolve, reject) => {
793
- fileReader.onload = (event) => {
794
- resolve(event);
795
- };
796
- fileReader.onerror = (event) => {
797
- reject(event);
798
- };
799
- fileReader.readAsText(file);
800
- });
801
- }
802
- readAsBinaryString(file) {
803
- const fileReader = new FileReader();
804
- return new Promise((resolve, reject) => {
805
- fileReader.onload = (event) => {
806
- resolve(event);
807
- };
808
- fileReader.onerror = (event) => {
809
- reject(event);
810
- };
811
- fileReader.readAsBinaryString(file);
812
- });
813
- }
814
- readAsDataUrl(file) {
815
- const reader = new FileReader();
816
- return new Promise((resolve, reject) => {
817
- reader.onload = (event) => {
818
- resolve(event);
819
- };
820
- reader.onerror = (error) => reject(error);
821
- reader.readAsDataURL(file);
822
- });
823
- }
824
- unparse(data, config) {
825
- return unparse(data, config);
826
- }
827
- parse(content) {
828
- return new Promise((resolve, reject) => {
829
- parse(content, {
830
- header: true,
831
- complete: (results) => resolve(results),
832
- error: (err) => reject(err),
833
- });
834
- });
835
- }
836
- getFileExtension(filename) {
837
- let result = '-';
838
- if (/[.]/.exec(filename)) {
839
- const regexp = /[^.]+$/.exec(filename);
840
- result = `.${regexp?.[0]}`;
841
- }
842
- return result;
843
- }
844
- save(content, fileName, fileType) {
845
- const blob = new Blob([content], { type: fileType });
846
- saveAs(blob, fileName, { autoBom: true });
847
- }
848
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
849
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, providedIn: 'root' }); }
850
- }
851
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, decorators: [{
852
- type: Injectable,
853
- args: [{ providedIn: 'root' }]
854
- }] });
855
-
856
796
  class ImageService {
857
797
  async compress(imageBase64, quality = 0.8, fileType = 'image/jpeg') {
858
798
  const img = await this.load(imageBase64);
@@ -892,10 +832,10 @@ class ImageService {
892
832
  canvas.height = img.height;
893
833
  context.drawImage(img, 0, 0, canvas.width, canvas.height);
894
834
  }
895
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
896
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageService, providedIn: 'root' }); }
835
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
836
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ImageService, providedIn: 'root' }); }
897
837
  }
898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageService, decorators: [{
838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ImageService, decorators: [{
899
839
  type: Injectable,
900
840
  args: [{ providedIn: 'root' }]
901
841
  }] });
@@ -905,10 +845,10 @@ class LoadingIndicatorService {
905
845
  this.show = new BehaviorSubject(undefined);
906
846
  this.hide = new BehaviorSubject(undefined);
907
847
  }
908
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoadingIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
909
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoadingIndicatorService, providedIn: 'root' }); }
848
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LoadingIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
849
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LoadingIndicatorService, providedIn: 'root' }); }
910
850
  }
911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoadingIndicatorService, decorators: [{
851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LoadingIndicatorService, decorators: [{
912
852
  type: Injectable,
913
853
  args: [{ providedIn: 'root' }]
914
854
  }] });
@@ -931,42 +871,10 @@ class LocalService {
931
871
  removeAll() {
932
872
  localStorage.clear();
933
873
  }
934
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LocalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
935
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LocalService, providedIn: 'root' }); }
936
- }
937
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LocalService, decorators: [{
938
- type: Injectable,
939
- args: [{ providedIn: 'root' }]
940
- }] });
941
-
942
- class LoggerService {
943
- constructor() {
944
- this.onLog = new Subject();
945
- }
946
- log(...args) {
947
- this._doLog(LogType.log, args);
948
- }
949
- info(...args) {
950
- this._doLog(LogType.info, args);
951
- }
952
- warn(...args) {
953
- this._doLog(LogType.warn, args);
954
- }
955
- debug(...args) {
956
- this._doLog(LogType.debug, args);
957
- }
958
- error(...args) {
959
- this._doLog(LogType.error, args);
960
- }
961
- _doLog(logType, ...args) {
962
- // eslint-disable-next-line no-console
963
- console[logType].apply(console, args);
964
- this.onLog.next({ logType: logType, args: args });
965
- }
966
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
967
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoggerService, providedIn: 'root' }); }
874
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LocalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
875
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LocalService, providedIn: 'root' }); }
968
876
  }
969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LoggerService, decorators: [{
877
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: LocalService, decorators: [{
970
878
  type: Injectable,
971
879
  args: [{ providedIn: 'root' }]
972
880
  }] });
@@ -994,10 +902,10 @@ class ModalService {
994
902
  hide() {
995
903
  this.portalHost.detach();
996
904
  }
997
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
998
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ModalService, providedIn: 'root' }); }
905
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
906
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ModalService, providedIn: 'root' }); }
999
907
  }
1000
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ModalService, decorators: [{
908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ModalService, decorators: [{
1001
909
  type: Injectable,
1002
910
  args: [{ providedIn: 'root' }]
1003
911
  }] });
@@ -1032,10 +940,10 @@ class ToastService {
1032
940
  hide() {
1033
941
  this.portalHost.detach();
1034
942
  }
1035
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1036
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ToastService, providedIn: 'root' }); }
943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
944
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ToastService, providedIn: 'root' }); }
1037
945
  }
1038
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ToastService, decorators: [{
946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: ToastService, decorators: [{
1039
947
  type: Injectable,
1040
948
  args: [{ providedIn: 'root' }]
1041
949
  }] });
@@ -1053,90 +961,14 @@ class TokenService {
1053
961
  remove(key) {
1054
962
  this.localService.remove(key);
1055
963
  }
1056
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TokenService, deps: [{ token: LocalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1057
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TokenService, providedIn: 'root' }); }
964
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TokenService, deps: [{ token: LocalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
965
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TokenService, providedIn: 'root' }); }
1058
966
  }
1059
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TokenService, decorators: [{
967
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TokenService, decorators: [{
1060
968
  type: Injectable,
1061
- args: [{
1062
- providedIn: 'root',
1063
- }]
969
+ args: [{ providedIn: 'root' }]
1064
970
  }], ctorParameters: () => [{ type: LocalService }] });
1065
971
 
1066
- Array.prototype.groupBy = function (valueGetter) {
1067
- return this.reduce((curr, obj) => {
1068
- const key = valueGetter(obj);
1069
- (curr[key] = curr[key] || []).push(obj);
1070
- return curr;
1071
- }, {});
1072
- };
1073
- Array.prototype.removeBy = function (valueGetter, val) {
1074
- return this.filter((curr) => {
1075
- const key = valueGetter(curr);
1076
- // change to split to remove only first item found
1077
- return key !== val;
1078
- });
1079
- };
1080
- Array.prototype.orderBy = function (valueGetter, ascending = true) {
1081
- this?.sort((a, b) => sortHelper(a, b, valueGetter, ascending));
1082
- return this;
1083
- };
1084
- Array.prototype.filterBy = function (key) {
1085
- return this.filter((a) => {
1086
- let result = false;
1087
- if (key && a[key]) {
1088
- result = a[key] === key;
1089
- }
1090
- else {
1091
- result = a === key;
1092
- }
1093
- return result;
1094
- });
1095
- };
1096
- Array.prototype.distinct = function (comparator) {
1097
- const thisAsArray = this;
1098
- const result = comparator
1099
- ? thisAsArray.filter((value, index, array) => array.findIndex((o) => comparator(o, value)) === index)
1100
- : thisAsArray.filter((value, index, array) => array.indexOf(value) === index);
1101
- return result;
1102
- };
1103
-
1104
- dayjs.extend(localizedFormat);
1105
- Date.prototype.isAfter = function (date, unit) {
1106
- return dayjs(this).isAfter(date, unit);
1107
- };
1108
- Date.prototype.isBefore = function (date, unit) {
1109
- return dayjs(this).isBefore(date, unit);
1110
- };
1111
- Date.prototype.format = function (template) {
1112
- return dayjs(this).format(template);
1113
- };
1114
- Date.prototype.isValid = function () {
1115
- return dayjs(this).isValid();
1116
- };
1117
- Date.prototype.add = function (value, unit) {
1118
- return dayjs(this).add(value, unit).toDate();
1119
- };
1120
- Date.prototype.subtract = function (value, unit) {
1121
- return dayjs(this).subtract(value, unit).toDate();
1122
- };
1123
- Date.prototype.firstDayOfMonth = function () {
1124
- return dayjs(this).startOf('month').toDate();
1125
- };
1126
- Date.prototype.lastDayOfMonth = function () {
1127
- return dayjs(this).endOf('month').toDate();
1128
- };
1129
- Date.prototype.set = function (unit, value) {
1130
- return dayjs(this).set(unit, value).toDate();
1131
- };
1132
- Date.prototype.diff = function (date, unit) {
1133
- return dayjs(this).diff(date, unit);
1134
- };
1135
-
1136
- String.prototype.capitalize = function () {
1137
- return this.charAt(0).toUpperCase() + this.slice(1);
1138
- };
1139
-
1140
972
  function dateAfterValidator(startDateControlKey) {
1141
973
  return (endDateControl) => {
1142
974
  let result = null;
@@ -1188,10 +1020,12 @@ function timeAfterValidator(startTimeControlKey) {
1188
1020
  const startTime = startTimeControl.value;
1189
1021
  const endTime = control.value;
1190
1022
  // Umwandlung der Zeit in Minuten (z.B. 20:00 Uhr = 1200 Minuten)
1191
- const startMinutes = convertToMinutes(startTime);
1192
- const endMinutes = convertToMinutes(endTime);
1193
- if (endMinutes <= startMinutes) {
1194
- result = { timeAfterError: startTimeControl.value };
1023
+ if (startTime && endTime) {
1024
+ const startMinutes = convertToMinutes(startTime);
1025
+ const endMinutes = convertToMinutes(endTime);
1026
+ if (endMinutes <= startMinutes) {
1027
+ result = { timeAfterError: startTimeControl.value };
1028
+ }
1195
1029
  }
1196
1030
  }
1197
1031
  }
@@ -1212,5 +1046,5 @@ function convertToMinutes(time) {
1212
1046
  * Generated bundle index. Do not edit.
1213
1047
  */
1214
1048
 
1215
- export { BaseModalComponent, ButtonDirective, Class, ClipboardService, ColDirective, DatePickerComponent, DropdownDirective, FadeAnimation, FadeRightAnimation, FileService, FormControlPipe, FormErrorsComponent, FormInputComponent, FormInputDirective, FormLabelDirective, FormSelectDirective, IconButtonDirective, ImageService, ListGroupDirective, ListGroupItemAvatarDirective, ListGroupItemDirective, LoadingIndicatorComponent, LoadingIndicatorService, LocalService, Log, LogType, LoggerService, ModalComponent, ModalService, OffCanvasComponent, ToastComponent, ToastService, TokenService, dateAfterValidator, matchValidator, sortHelper, timeAfterValidator };
1049
+ export { AutofocusDirective, BaseModalComponent, ButtonDirective, Class, ColDirective, DatePickerComponent, DropdownDirective, FadeAnimation, FadeRightAnimation, FormControlPipe, FormErrorsComponent, FormInputComponent, FormInputDirective, FormLabelDirective, FormSelectDirective, IconButtonDirective, ImageService, ListGroupDirective, ListGroupItemAvatarDirective, ListGroupItemDirective, LoadingIndicatorComponent, LoadingIndicatorService, LocalService, Log, LogType, ModalComponent, ModalService, OffCanvasComponent, ToastComponent, ToastService, TokenService, TooltipDirective, dateAfterValidator, matchValidator, timeAfterValidator };
1216
1050
  //# sourceMappingURL=ngx-gccb.mjs.map