ngx-gccb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/animations/fade-right.animation.mjs +9 -0
  3. package/esm2022/lib/animations/fade-up.animation.mjs +9 -0
  4. package/esm2022/lib/animations/index.mjs +3 -0
  5. package/esm2022/lib/components/form-errors/form-errors.component.mjs +38 -0
  6. package/esm2022/lib/components/form-errors/index.mjs +2 -0
  7. package/esm2022/lib/components/form-input/form-input.component.mjs +49 -0
  8. package/esm2022/lib/components/form-input/index.mjs +2 -0
  9. package/esm2022/lib/components/index.mjs +7 -0
  10. package/esm2022/lib/components/loading-indicator/index.mjs +2 -0
  11. package/esm2022/lib/components/loading-indicator/loading-indicator.component.mjs +17 -0
  12. package/esm2022/lib/components/modal/index.mjs +2 -0
  13. package/esm2022/lib/components/modal/modal.component.mjs +25 -0
  14. package/esm2022/lib/components/off-canvas/index.mjs +2 -0
  15. package/esm2022/lib/components/off-canvas/off-canvas.component.mjs +27 -0
  16. package/esm2022/lib/components/toast/index.mjs +2 -0
  17. package/esm2022/lib/components/toast/toast.component.mjs +44 -0
  18. package/esm2022/lib/directives/button-outline.directive.mjs +33 -0
  19. package/esm2022/lib/directives/button.directive.mjs +54 -0
  20. package/esm2022/lib/directives/form-input.directive.mjs +31 -0
  21. package/esm2022/lib/directives/form-label.directive.mjs +20 -0
  22. package/esm2022/lib/directives/form-select.directive.mjs +31 -0
  23. package/esm2022/lib/directives/icon-button.directive.mjs +37 -0
  24. package/esm2022/lib/directives/index.mjs +9 -0
  25. package/esm2022/lib/directives/list-group-item.directive.mjs +23 -0
  26. package/esm2022/lib/directives/list-group.directive.mjs +22 -0
  27. package/esm2022/lib/helpers/index.mjs +2 -0
  28. package/esm2022/lib/helpers/sort.helper.mjs +31 -0
  29. package/esm2022/lib/interfaces/dictionary.interface.mjs +2 -0
  30. package/esm2022/lib/interfaces/index.mjs +2 -0
  31. package/esm2022/lib/pipe/form-control.pipe.mjs +17 -0
  32. package/esm2022/lib/pipe/index.mjs +2 -0
  33. package/esm2022/lib/services/index.mjs +6 -0
  34. package/esm2022/lib/services/loading-indicator.service.mjs +16 -0
  35. package/esm2022/lib/services/local.service.mjs +30 -0
  36. package/esm2022/lib/services/modal.service.mjs +28 -0
  37. package/esm2022/lib/services/toast.service.mjs +39 -0
  38. package/esm2022/lib/services/token.service.mjs +26 -0
  39. package/esm2022/lib/typings/array-extension.mjs +32 -0
  40. package/esm2022/lib/typings/date-extension.mjs +28 -0
  41. package/esm2022/lib/typings/index.mjs +4 -0
  42. package/esm2022/lib/typings/string-extensions.mjs +5 -0
  43. package/esm2022/ngx-gccb.mjs +5 -0
  44. package/esm2022/public-api.mjs +14 -0
  45. package/fesm2022/ngx-gccb.mjs +684 -0
  46. package/fesm2022/ngx-gccb.mjs.map +1 -0
  47. package/index.d.ts +5 -0
  48. package/lib/animations/fade-right.animation.d.ts +1 -0
  49. package/lib/animations/fade-up.animation.d.ts +1 -0
  50. package/lib/animations/index.d.ts +2 -0
  51. package/lib/components/form-errors/form-errors.component.d.ts +7 -0
  52. package/lib/components/form-errors/index.d.ts +1 -0
  53. package/lib/components/form-input/form-input.component.d.ts +21 -0
  54. package/lib/components/form-input/index.d.ts +1 -0
  55. package/lib/components/index.d.ts +6 -0
  56. package/lib/components/loading-indicator/index.d.ts +1 -0
  57. package/lib/components/loading-indicator/loading-indicator.component.d.ts +6 -0
  58. package/lib/components/modal/index.d.ts +1 -0
  59. package/lib/components/modal/modal.component.d.ts +10 -0
  60. package/lib/components/off-canvas/index.d.ts +1 -0
  61. package/lib/components/off-canvas/off-canvas.component.d.ts +10 -0
  62. package/lib/components/toast/index.d.ts +1 -0
  63. package/lib/components/toast/toast.component.d.ts +8 -0
  64. package/lib/directives/button-outline.directive.d.ts +11 -0
  65. package/lib/directives/button.directive.d.ts +15 -0
  66. package/lib/directives/form-input.directive.d.ts +10 -0
  67. package/lib/directives/form-label.directive.d.ts +6 -0
  68. package/lib/directives/form-select.directive.d.ts +10 -0
  69. package/lib/directives/icon-button.directive.d.ts +11 -0
  70. package/lib/directives/index.d.ts +8 -0
  71. package/lib/directives/list-group-item.directive.d.ts +9 -0
  72. package/lib/directives/list-group.directive.d.ts +9 -0
  73. package/lib/helpers/index.d.ts +1 -0
  74. package/lib/helpers/sort.helper.d.ts +1 -0
  75. package/lib/interfaces/dictionary.interface.d.ts +3 -0
  76. package/lib/interfaces/index.d.ts +1 -0
  77. package/lib/pipe/form-control.pipe.d.ts +8 -0
  78. package/lib/pipe/index.d.ts +1 -0
  79. package/lib/services/index.d.ts +5 -0
  80. package/lib/services/loading-indicator.service.d.ts +8 -0
  81. package/lib/services/local.service.d.ts +9 -0
  82. package/lib/services/modal.service.d.ts +12 -0
  83. package/lib/services/toast.service.d.ts +13 -0
  84. package/lib/services/token.service.d.ts +11 -0
  85. package/lib/typings/array-extension.d.ts +10 -0
  86. package/lib/typings/date-extension.d.ts +13 -0
  87. package/lib/typings/index.d.ts +3 -0
  88. package/lib/typings/string-extensions.d.ts +6 -0
  89. package/package.json +30 -0
  90. package/public-api.d.ts +8 -0
@@ -0,0 +1,684 @@
1
+ import { trigger, transition, style, animate } from '@angular/animations';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Component, Input, inject, Renderer2, ElementRef, Directive, HostListener, HostBinding, EventEmitter, Output, Pipe, Injectable, ComponentFactoryResolver } from '@angular/core';
5
+ import * as i1 from '@angular/forms';
6
+ import { ReactiveFormsModule } from '@angular/forms';
7
+ import * as i1$1 from '@fortawesome/angular-fontawesome';
8
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
9
+ import { faSpinner, faTimes } from '@fortawesome/free-solid-svg-icons';
10
+ import { BehaviorSubject } from 'rxjs';
11
+ import { DomPortalOutlet, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
12
+ import dayjs from 'dayjs';
13
+ import localizedFormat from 'dayjs/plugin/localizedFormat';
14
+
15
+ const FadeRightAnimation = trigger('fadeRightAnimation', [
16
+ transition(':enter', [
17
+ style({ transform: 'translateX(-100%)', zIndex: 9999 }),
18
+ animate('200ms ease-in', style({ transform: 'translateX(0%)' })),
19
+ ]),
20
+ transition(':leave', [animate('200ms ease-in', style({ transform: 'translateX(-100%)' }))]),
21
+ ]);
22
+
23
+ const FadeAnimation = trigger('fadeAnimation', [
24
+ transition(':enter', [
25
+ style({ opacity: 0, transform: 'translateY(10px)' }),
26
+ animate('500ms', style({ opacity: 1, transform: 'translateY(0)' })),
27
+ ]),
28
+ transition(':leave', [animate('500ms', style({ opacity: 0, transform: 'translateY(10px)' }))]),
29
+ ]);
30
+
31
+ class FormErrors {
32
+ constructor() {
33
+ this.errors = null;
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormErrors, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: FormErrors, isStandalone: true, selector: "app-form-errors", inputs: { errors: "errors" }, ngImport: i0, template: `
37
+ <div class="invalid-feedback d-block">
38
+ @if (errors) {
39
+ @if (errors['required']) {
40
+ <div>Feld wird benötigt</div>
41
+ }
42
+ }
43
+ </div>
44
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormErrors, decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ selector: 'app-form-errors',
50
+ template: `
51
+ <div class="invalid-feedback d-block">
52
+ @if (errors) {
53
+ @if (errors['required']) {
54
+ <div>Feld wird benötigt</div>
55
+ }
56
+ }
57
+ </div>
58
+ `,
59
+ standalone: true,
60
+ imports: [CommonModule],
61
+ }]
62
+ }], propDecorators: { errors: [{
63
+ type: Input
64
+ }] } });
65
+
66
+ class ButtonOutlineDirective {
67
+ constructor() {
68
+ this.renderer = inject(Renderer2);
69
+ this.elementRef = inject((ElementRef));
70
+ }
71
+ set appButton(val) {
72
+ this.elementRef.nativeElement.classList.add(`btn-outline-${val || 'secondary'}`);
73
+ }
74
+ set size(val) {
75
+ this.elementRef.nativeElement.classList.add(`btn-${val || 'sm'}`);
76
+ }
77
+ ngOnInit() {
78
+ this.elementRef.nativeElement.classList.add('btn');
79
+ this.elementRef.nativeElement.classList.add('shadow-sm');
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ButtonOutlineDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: ButtonOutlineDirective, isStandalone: true, selector: "button[app-button-outline]", inputs: { appButton: ["app-button-outline", "appButton"], size: "size" }, ngImport: i0 }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ButtonOutlineDirective, decorators: [{
85
+ type: Directive,
86
+ args: [{
87
+ selector: 'button[app-button-outline]',
88
+ standalone: true,
89
+ }]
90
+ }], propDecorators: { appButton: [{
91
+ type: Input,
92
+ args: ['app-button-outline']
93
+ }], size: [{
94
+ type: Input
95
+ }] } });
96
+
97
+ // extends from autofocus?
98
+ class ButtonDirective {
99
+ constructor() {
100
+ this.renderer = inject(Renderer2);
101
+ this.elementRef = inject((ElementRef));
102
+ }
103
+ onFocus() {
104
+ this.isFocused = true;
105
+ }
106
+ onblur() {
107
+ this.isFocused = false;
108
+ }
109
+ set isFocused(val) {
110
+ if (val) {
111
+ this.elementRef.nativeElement.classList.add(`focus-ring-${this.color}`);
112
+ }
113
+ else {
114
+ this.elementRef.nativeElement.classList.remove(`focus-ring-${this.color}`);
115
+ }
116
+ }
117
+ set appButton(val) {
118
+ this.color = val || 'secondary';
119
+ this.elementRef.nativeElement.classList.add(`btn-${this.color}`);
120
+ }
121
+ set size(val) {
122
+ this.elementRef.nativeElement.classList.add(`btn-${val || 'sm'}`);
123
+ }
124
+ ngOnInit() {
125
+ this.elementRef.nativeElement.classList.add('btn');
126
+ }
127
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
128
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: ButtonDirective, isStandalone: true, selector: "button[app-button]", inputs: { appButton: ["app-button", "appButton"], size: "size" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onblur($event)" } }, ngImport: i0 }); }
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ButtonDirective, decorators: [{
131
+ type: Directive,
132
+ args: [{
133
+ selector: 'button[app-button]',
134
+ standalone: true,
135
+ }]
136
+ }], propDecorators: { onFocus: [{
137
+ type: HostListener,
138
+ args: ['focus', ['$event']]
139
+ }], onblur: [{
140
+ type: HostListener,
141
+ args: ['blur', ['$event']]
142
+ }], appButton: [{
143
+ type: Input,
144
+ args: ['app-button']
145
+ }], size: [{
146
+ type: Input
147
+ }] } });
148
+
149
+ class FormInputDirective {
150
+ constructor() {
151
+ this.renderer = inject(Renderer2);
152
+ this.elementRef = inject((ElementRef));
153
+ }
154
+ set formInputInvalid(val) {
155
+ if (val === true) {
156
+ this.elementRef.nativeElement.classList.add('is-invalid');
157
+ }
158
+ else {
159
+ this.elementRef.nativeElement.classList.remove('is-invalid');
160
+ }
161
+ }
162
+ ngOnInit() {
163
+ this.elementRef.nativeElement.classList.add('form-control');
164
+ }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
166
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: FormInputDirective, isStandalone: true, selector: "input,textarea[app-form-input]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
167
+ }
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormInputDirective, decorators: [{
169
+ type: Directive,
170
+ args: [{
171
+ selector: 'input,textarea[app-form-input]',
172
+ standalone: true,
173
+ }]
174
+ }], propDecorators: { formInputInvalid: [{
175
+ type: Input
176
+ }] } });
177
+
178
+ class FormLabelDirective {
179
+ constructor() {
180
+ this.elementClass = 'form-label';
181
+ }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
183
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: FormLabelDirective, isStandalone: true, selector: "label[app-form-label]", host: { properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormLabelDirective, decorators: [{
186
+ type: Directive,
187
+ args: [{
188
+ selector: 'label[app-form-label]',
189
+ standalone: true,
190
+ }]
191
+ }], propDecorators: { elementClass: [{
192
+ type: HostBinding,
193
+ args: ['class']
194
+ }] } });
195
+
196
+ class FormSelectDirective {
197
+ constructor() {
198
+ this.renderer = inject(Renderer2);
199
+ this.elementRef = inject((ElementRef));
200
+ }
201
+ set formInputInvalid(val) {
202
+ if (val === true) {
203
+ this.elementRef.nativeElement.classList.add('is-invalid');
204
+ }
205
+ else {
206
+ this.elementRef.nativeElement.classList.remove('is-invalid');
207
+ }
208
+ }
209
+ ngOnInit() {
210
+ this.elementRef.nativeElement.classList.add('form-select');
211
+ }
212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
213
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: FormSelectDirective, isStandalone: true, selector: "select[app-form-select]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
214
+ }
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormSelectDirective, decorators: [{
216
+ type: Directive,
217
+ args: [{
218
+ selector: 'select[app-form-select]',
219
+ standalone: true,
220
+ }]
221
+ }], propDecorators: { formInputInvalid: [{
222
+ type: Input
223
+ }] } });
224
+
225
+ class IconButtonDirective {
226
+ constructor() {
227
+ this.renderer = inject(Renderer2);
228
+ this.elementRef = inject((ElementRef));
229
+ }
230
+ set appButton(val) {
231
+ this.elementRef.nativeElement.classList.add(`btn-${val || 'light'}`);
232
+ }
233
+ set shadow(val) {
234
+ if (val === true || val === undefined) {
235
+ this.elementRef.nativeElement.classList.add('shadow-sm');
236
+ }
237
+ else {
238
+ this.elementRef.nativeElement.classList.remove('shadow-sm');
239
+ }
240
+ }
241
+ ngOnInit() {
242
+ this.elementRef.nativeElement.classList.add('btn', 'icon-button');
243
+ }
244
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
245
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: IconButtonDirective, isStandalone: true, selector: "button[app-icon-button]", inputs: { appButton: ["app-icon-button", "appButton"], shadow: "shadow" }, ngImport: i0 }); }
246
+ }
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IconButtonDirective, decorators: [{
248
+ type: Directive,
249
+ args: [{
250
+ selector: 'button[app-icon-button]',
251
+ standalone: true,
252
+ }]
253
+ }], propDecorators: { appButton: [{
254
+ type: Input,
255
+ args: ['app-icon-button']
256
+ }], shadow: [{
257
+ type: Input
258
+ }] } });
259
+
260
+ class ListGroupItemDirective {
261
+ constructor() {
262
+ this.renderer = inject(Renderer2);
263
+ this.elementRef = inject((ElementRef));
264
+ }
265
+ ngOnInit() {
266
+ this.elementRef.nativeElement.classList.add('list-group-item');
267
+ this.elementRef.nativeElement.classList.add('list-group-item-action');
268
+ this.elementRef.nativeElement.classList.add('d-flex', 'flex-row', 'justify-content-between');
269
+ }
270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ListGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
271
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: ListGroupItemDirective, isStandalone: true, selector: "li[app-list-group-item]", ngImport: i0 }); }
272
+ }
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ListGroupItemDirective, decorators: [{
274
+ type: Directive,
275
+ args: [{
276
+ selector: 'li[app-list-group-item]',
277
+ standalone: true,
278
+ }]
279
+ }] });
280
+
281
+ class ListGroupDirective {
282
+ constructor() {
283
+ this.renderer = inject(Renderer2);
284
+ this.elementRef = inject((ElementRef));
285
+ }
286
+ ngOnInit() {
287
+ this.elementRef.nativeElement.classList.add('list-group');
288
+ this.elementRef.nativeElement.classList.add('list-group-flush');
289
+ }
290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ListGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
291
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: ListGroupDirective, isStandalone: true, selector: "ul[app-list-group]", ngImport: i0 }); }
292
+ }
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ListGroupDirective, decorators: [{
294
+ type: Directive,
295
+ args: [{
296
+ selector: 'ul[app-list-group]',
297
+ standalone: true,
298
+ }]
299
+ }] });
300
+
301
+ class FormInputComponent {
302
+ constructor() {
303
+ this.inputType = 'text';
304
+ this.isSubmitted = false;
305
+ this.onEnter = new EventEmitter();
306
+ }
307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", 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" }, outputs: { onEnter: "onEnter" }, ngImport: i0, template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === \"text\" ||\n\t\tinputType === \"number\" ||\n\t\tinputType === \"date\" ||\n\t\tinputType === \"datetime-local\"\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\t/>\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>\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\">\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\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: FormErrors, 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"] }] }); }
309
+ }
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormInputComponent, decorators: [{
311
+ type: Component,
312
+ args: [{ selector: 'app-form-input', standalone: true, imports: [
313
+ ReactiveFormsModule,
314
+ FormErrors,
315
+ FormLabelDirective,
316
+ FormInputDirective,
317
+ FormSelectDirective,
318
+ ], template: "<div class=\"form-floating mb-3\">\n\t@if (\n\t\tinputType === \"text\" ||\n\t\tinputType === \"number\" ||\n\t\tinputType === \"date\" ||\n\t\tinputType === \"datetime-local\"\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\t/>\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>\n\t\t\t@for (option of selectOptions; track option.value) {\n\t\t\t\t<option [value]=\"option.value\">\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\t@if (isSubmitted && control.errors) {\n\t\t<app-form-errors [errors]=\"control.errors\" />\n\t}\n</div>\n" }]
319
+ }], propDecorators: { control: [{
320
+ type: Input,
321
+ args: [{ required: true }]
322
+ }], inputType: [{
323
+ type: Input
324
+ }], inputLabel: [{
325
+ type: Input,
326
+ args: [{ required: true }]
327
+ }], inputPlaceholder: [{
328
+ type: Input
329
+ }], inputId: [{
330
+ type: Input
331
+ }], inputName: [{
332
+ type: Input,
333
+ args: [{ required: true }]
334
+ }], inputTabIndex: [{
335
+ type: Input
336
+ }], isSubmitted: [{
337
+ type: Input
338
+ }], selectOptions: [{
339
+ type: Input
340
+ }], onEnter: [{
341
+ type: Output
342
+ }] } });
343
+
344
+ class LoadingIndicatorComponent {
345
+ constructor() {
346
+ this.faSpinner = faSpinner;
347
+ }
348
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
349
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", 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", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
350
+ }
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoadingIndicatorComponent, decorators: [{
352
+ type: Component,
353
+ 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"] }]
354
+ }] });
355
+
356
+ class ModalComponent {
357
+ constructor() {
358
+ this.title = '';
359
+ this.showClose = true;
360
+ this.onClose = new EventEmitter();
361
+ }
362
+ handleClickClose() {
363
+ this.onClose.next();
364
+ }
365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
366
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { title: "title", showClose: "showClose" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"modal d-block\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header\">\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 type=\"button\" class=\"btn-close\" (click)=\"handleClickClose()\"></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" }); }
367
+ }
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ModalComponent, decorators: [{
369
+ type: Component,
370
+ args: [{ selector: 'app-modal', standalone: true, template: "<div class=\"modal d-block\" tabindex=\"-1\">\n\t<div class=\"modal-dialog\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"modal-header\">\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 type=\"button\" class=\"btn-close\" (click)=\"handleClickClose()\"></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" }]
371
+ }], propDecorators: { title: [{
372
+ type: Input
373
+ }], showClose: [{
374
+ type: Input
375
+ }], onClose: [{
376
+ type: Output
377
+ }] } });
378
+
379
+ class OffCanvasComponent {
380
+ constructor() {
381
+ this.title = '';
382
+ this.onClose = new EventEmitter();
383
+ this.faTimes = faTimes;
384
+ }
385
+ handleClickClose() {
386
+ this.onClose.next();
387
+ }
388
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: OffCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
389
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", 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\">\n\t<div class=\"offcanvas-header\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button type=\"button\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\"></fa-icon>\n\t\t</button>\n\t</div>\n\t<ng-content />\n</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", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: IconButtonDirective, selector: "button[app-icon-button]", inputs: ["app-icon-button", "shadow"] }] }); }
390
+ }
391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: OffCanvasComponent, decorators: [{
392
+ type: Component,
393
+ args: [{ selector: 'app-off-canvas', standalone: true, imports: [FontAwesomeModule, IconButtonDirective], template: "<div class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\">\n\t<div class=\"offcanvas-header\">\n\t\t<h5 class=\"offcanvas-title\" id=\"offcanvasLabel\">{{ title }}</h5>\n\t\t<button app-icon-button type=\"button\" (click)=\"handleClickClose()\">\n\t\t\t<fa-icon [icon]=\"faTimes\"></fa-icon>\n\t\t</button>\n\t</div>\n\t<ng-content />\n</div>\n", styles: [":host{z-index:9999;display:block}\n"] }]
394
+ }], propDecorators: { title: [{
395
+ type: Input
396
+ }], onClose: [{
397
+ type: Output
398
+ }] } });
399
+
400
+ class ToastComponent {
401
+ constructor() {
402
+ this.onClose = new EventEmitter();
403
+ }
404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
405
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: ToastComponent, isStandalone: true, selector: "app-toast", inputs: { message: "message" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
406
+ <div class="toast align-items-center text-bg-dark border-0 show">
407
+ <div class="d-flex">
408
+ <div class="toast-body" [innerHTML]="message"></div>
409
+ <button
410
+ type="button"
411
+ class="btn-close btn-close-white me-2 m-auto"
412
+ (click)="onClose.next()"
413
+ ></button>
414
+ </div>
415
+ </div>
416
+ `, isInline: true }); }
417
+ }
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ToastComponent, decorators: [{
419
+ type: Component,
420
+ args: [{
421
+ selector: 'app-toast',
422
+ template: `
423
+ <div class="toast align-items-center text-bg-dark border-0 show">
424
+ <div class="d-flex">
425
+ <div class="toast-body" [innerHTML]="message"></div>
426
+ <button
427
+ type="button"
428
+ class="btn-close btn-close-white me-2 m-auto"
429
+ (click)="onClose.next()"
430
+ ></button>
431
+ </div>
432
+ </div>
433
+ `,
434
+ standalone: true,
435
+ }]
436
+ }], propDecorators: { message: [{
437
+ type: Input
438
+ }], onClose: [{
439
+ type: Output
440
+ }] } });
441
+
442
+ var SortOrder;
443
+ (function (SortOrder) {
444
+ SortOrder[SortOrder["NONE"] = 0] = "NONE";
445
+ SortOrder[SortOrder["ASC"] = 1] = "ASC";
446
+ SortOrder[SortOrder["DESC"] = -1] = "DESC";
447
+ })(SortOrder || (SortOrder = {}));
448
+ const compareString = (valA, valB, ascending) => {
449
+ return valA.localeCompare(valB) * (ascending ? SortOrder.ASC : SortOrder.DESC);
450
+ };
451
+ const getSortOrder = (valA, valB) => {
452
+ return valA < valB ? SortOrder.DESC : valA === valB ? SortOrder.NONE : SortOrder.ASC;
453
+ };
454
+ const compareNonString = (valA, valB, ascending) => {
455
+ return getSortOrder(valA, valB) * (ascending ? SortOrder.ASC : SortOrder.DESC);
456
+ };
457
+ const getValue = (valA, valB, ascending) => {
458
+ let result = 0;
459
+ if (typeof valA === 'string' && typeof valB === 'string') {
460
+ result = compareString(valA, valB, ascending);
461
+ }
462
+ else {
463
+ result = compareNonString(valA, valB, ascending);
464
+ }
465
+ return result;
466
+ };
467
+ const sortHelper = (a, b, valueGetter, ascending) => {
468
+ const valA = valueGetter(a);
469
+ const valB = valueGetter(b);
470
+ return getValue(valA, valB, ascending);
471
+ };
472
+
473
+ class FormControlPipe {
474
+ transform(value) {
475
+ return value;
476
+ }
477
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
478
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FormControlPipe, isStandalone: true, name: "formControl" }); }
479
+ }
480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FormControlPipe, decorators: [{
481
+ type: Pipe,
482
+ args: [{
483
+ name: 'formControl',
484
+ standalone: true,
485
+ }]
486
+ }] });
487
+
488
+ class LoadingIndicatorService {
489
+ constructor() {
490
+ this.show = new BehaviorSubject(undefined);
491
+ this.hide = new BehaviorSubject(undefined);
492
+ }
493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoadingIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
494
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoadingIndicatorService, providedIn: 'root' }); }
495
+ }
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoadingIndicatorService, decorators: [{
497
+ type: Injectable,
498
+ args: [{ providedIn: 'root' }]
499
+ }] });
500
+
501
+ class LocalService {
502
+ get(key) {
503
+ let result = null;
504
+ let local = localStorage.getItem(key);
505
+ if (local) {
506
+ result = JSON.parse(local);
507
+ }
508
+ return result;
509
+ }
510
+ set(key, val) {
511
+ localStorage.setItem(key, JSON.stringify(val));
512
+ }
513
+ remove(key) {
514
+ localStorage.removeItem(key);
515
+ }
516
+ removeAll() {
517
+ localStorage.clear();
518
+ }
519
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LocalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
520
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LocalService, providedIn: 'root' }); }
521
+ }
522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LocalService, decorators: [{
523
+ type: Injectable,
524
+ args: [{
525
+ providedIn: 'root',
526
+ }]
527
+ }] });
528
+
529
+ class ModalService {
530
+ init(viewContainerRef) {
531
+ this.portalHost = new DomPortalOutlet(document.body);
532
+ this.viewContainerRef = viewContainerRef;
533
+ }
534
+ showTemplate(templateRef) {
535
+ if (this.viewContainerRef) {
536
+ const newPortal = new TemplatePortal(templateRef, this.viewContainerRef);
537
+ this.portalHost.attach(newPortal);
538
+ }
539
+ else {
540
+ throw Error('no viewcontainer ref is set');
541
+ }
542
+ }
543
+ hide() {
544
+ this.portalHost.detach();
545
+ }
546
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
547
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ModalService, providedIn: 'root' }); }
548
+ }
549
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ModalService, decorators: [{
550
+ type: Injectable,
551
+ args: [{ providedIn: 'root' }]
552
+ }] });
553
+
554
+ class ToastService {
555
+ constructor() {
556
+ this.componentFactoryResolver = inject(ComponentFactoryResolver);
557
+ }
558
+ init(viewContainerRef) {
559
+ this.portalHost = new DomPortalOutlet(document.body);
560
+ this.viewContainerRef = viewContainerRef;
561
+ }
562
+ show(message) {
563
+ if (this.viewContainerRef) {
564
+ const componentPortal = new ComponentPortal(ToastComponent, this.viewContainerRef, null, this.componentFactoryResolver);
565
+ const componentRef = this.portalHost.attachComponentPortal(componentPortal);
566
+ componentRef.instance.message = message;
567
+ componentRef.instance.onClose.subscribe(() => {
568
+ this.hide();
569
+ });
570
+ setTimeout(() => {
571
+ this.hide();
572
+ }, 3500);
573
+ }
574
+ else {
575
+ throw Error('no viewcontainer ref is set');
576
+ }
577
+ }
578
+ hide() {
579
+ this.portalHost.detach();
580
+ }
581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
582
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ToastService, providedIn: 'root' }); }
583
+ }
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ToastService, decorators: [{
585
+ type: Injectable,
586
+ args: [{ providedIn: 'root' }]
587
+ }] });
588
+
589
+ class TokenService {
590
+ constructor(localService) {
591
+ this.localService = localService;
592
+ }
593
+ get(key) {
594
+ return this.localService.get(key);
595
+ }
596
+ set(key, token) {
597
+ this.localService.set(key, token);
598
+ }
599
+ remove(key) {
600
+ this.localService.remove(key);
601
+ }
602
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: TokenService, deps: [{ token: LocalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
603
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: TokenService, providedIn: 'root' }); }
604
+ }
605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: TokenService, decorators: [{
606
+ type: Injectable,
607
+ args: [{
608
+ providedIn: 'root',
609
+ }]
610
+ }], ctorParameters: () => [{ type: LocalService }] });
611
+
612
+ Array.prototype.groupBy = function (valueGetter) {
613
+ return this.reduce((curr, obj) => {
614
+ const key = valueGetter(obj);
615
+ (curr[key] = curr[key] || []).push(obj);
616
+ return curr;
617
+ }, {});
618
+ };
619
+ Array.prototype.orderBy = function (valueGetter, ascending = true) {
620
+ this?.sort((a, b) => sortHelper(a, b, valueGetter, ascending));
621
+ return this;
622
+ };
623
+ Array.prototype.filterBy = function (key) {
624
+ return this.filter((a) => {
625
+ let result = false;
626
+ if (key && a[key]) {
627
+ result = a[key] === key;
628
+ }
629
+ else {
630
+ result = a === key;
631
+ }
632
+ return result;
633
+ });
634
+ };
635
+ Array.prototype.distinct = function (comparator) {
636
+ const thisAsArray = this;
637
+ const result = comparator
638
+ ? thisAsArray.filter((value, index, array) => array.findIndex((o) => comparator(o, value)) === index)
639
+ : thisAsArray.filter((value, index, array) => array.indexOf(value) === index);
640
+ return result;
641
+ };
642
+
643
+ dayjs.extend(localizedFormat);
644
+ Date.prototype.isAfter = function (date, unit) {
645
+ return dayjs(this).isAfter(date, unit);
646
+ };
647
+ Date.prototype.isBefore = function (date, unit) {
648
+ return dayjs(this).isBefore(date, unit);
649
+ };
650
+ Date.prototype.format = function (template) {
651
+ return dayjs(this).format(template);
652
+ };
653
+ Date.prototype.isValid = function () {
654
+ return dayjs(this).isValid();
655
+ };
656
+ Date.prototype.add = function (value, unit) {
657
+ return dayjs(this).add(value, unit).toDate();
658
+ };
659
+ Date.prototype.subtract = function (value, unit) {
660
+ return dayjs(this).subtract(value, unit).toDate();
661
+ };
662
+ Date.prototype.firstDayOfMonth = function () {
663
+ return dayjs(this).startOf('month').toDate();
664
+ };
665
+ Date.prototype.lastDayOfMonth = function () {
666
+ return dayjs(this).endOf('month').toDate();
667
+ };
668
+
669
+ String.prototype.capitalize = function () {
670
+ return this.charAt(0).toUpperCase() + this.slice(1);
671
+ };
672
+
673
+ /*
674
+ * Public API Surface of ngx-gccb
675
+ */
676
+ // export * from './lib/ngx-gccb.component';
677
+ // export * from './lib/ngx-gccb.service';
678
+
679
+ /**
680
+ * Generated bundle index. Do not edit.
681
+ */
682
+
683
+ export { ButtonDirective, ButtonOutlineDirective, FadeAnimation, FadeRightAnimation, FormControlPipe, FormErrors, FormInputComponent, FormInputDirective, FormLabelDirective, FormSelectDirective, IconButtonDirective, ListGroupDirective, ListGroupItemDirective, LoadingIndicatorComponent, LoadingIndicatorService, LocalService, ModalComponent, ModalService, OffCanvasComponent, ToastComponent, ToastService, TokenService, sortHelper };
684
+ //# sourceMappingURL=ngx-gccb.mjs.map