ngx-gccb 0.18.0 → 0.20.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.
@@ -2,15 +2,15 @@ import { trigger, transition, style, animate } from '@angular/animations';
2
2
  import * as i1 from '@angular/common';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { inject, NgZone, ElementRef, input, Directive, Input, HostListener, Renderer2, ViewContainerRef, effect, HostBinding, EventEmitter, Output, TemplateRef, output, Component, computed, Pipe, viewChild, model, contentChildren, Injectable } from '@angular/core';
5
+ import { inject, ElementRef, input, Input, HostListener, Directive, output, Component, computed, NgZone, Renderer2, effect, HostBinding, Pipe, viewChild, ViewContainerRef, TemplateRef, model, contentChildren, EventEmitter, Output, Injectable } from '@angular/core';
6
6
  import dayjs from 'dayjs';
7
- import { createPopper } from '@popperjs/core';
8
7
  import * as i2 from '@angular/forms';
9
8
  import { UntypedFormGroup, UntypedFormControl, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
10
9
  import { debounceTime } from 'rxjs';
11
10
  import * as i1$1 from '@fortawesome/angular-fontawesome';
12
11
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
13
12
  import { faSpinner, faTimes } from '@fortawesome/free-solid-svg-icons';
13
+ import { createPopper } from '@popperjs/core';
14
14
 
15
15
  const NgxFadeRightAnimation = trigger('ngxFadeRightAnimation', [
16
16
  transition(':enter', [
@@ -28,29 +28,6 @@ const NgxFadeAnimation = trigger('ngxFadeAnimation', [
28
28
  transition(':leave', [animate('500ms', style({ opacity: 0, transform: 'translateY(10px)' }))]),
29
29
  ]);
30
30
 
31
- class NgxAutofocusDirective {
32
- constructor() {
33
- this.ngZone = inject(NgZone);
34
- this.el = inject(ElementRef);
35
- this.ngxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "ngxAutofocus" }] : []));
36
- }
37
- ngAfterViewInit() {
38
- if (this.ngxAutofocus()) {
39
- this.ngZone.runOutsideAngular(() => {
40
- setTimeout(() => {
41
- this.el.nativeElement.focus();
42
- }, 0);
43
- });
44
- }
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxAutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxAutofocusDirective, isStandalone: true, selector: "[ngxAutofocus]", inputs: { ngxAutofocus: { classPropertyName: "ngxAutofocus", publicName: "ngxAutofocus", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
48
- }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxAutofocusDirective, decorators: [{
50
- type: Directive,
51
- args: [{ selector: '[ngxAutofocus]' }]
52
- }] });
53
-
54
31
  class NgxButtonDirective {
55
32
  constructor() {
56
33
  this.elementRef = inject((ElementRef));
@@ -91,10 +68,10 @@ class NgxButtonDirective {
91
68
  }
92
69
  this.elementRef.nativeElement.classList.add('flex-shrink-0');
93
70
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
95
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxButtonDirective, isStandalone: true, selector: "button[ngxButton]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, ngxButton: { classPropertyName: "ngxButton", publicName: "ngxButton", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "onFocus($event)", "blur": "onblur($event)" } }, ngImport: i0 }); }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
72
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxButtonDirective, isStandalone: true, selector: "button[ngxButton]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, ngxButton: { classPropertyName: "ngxButton", publicName: "ngxButton", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "onFocus($event)", "blur": "onblur($event)" } }, ngImport: i0 }); }
96
73
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxButtonDirective, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxButtonDirective, decorators: [{
98
75
  type: Directive,
99
76
  args: [{ selector: 'button[ngxButton]' }]
100
77
  }], propDecorators: { onFocus: [{
@@ -112,279 +89,229 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
112
89
  type: Input
113
90
  }] } });
114
91
 
115
- class NgxCardBodyDirective {
92
+ class CalendarComponent {
116
93
  constructor() {
117
- this.elementRef = inject((ElementRef));
94
+ this.onDaySelected = output();
95
+ this.currentMonth = dayjs();
96
+ this.weeks = [];
97
+ this.selectedDay = null;
98
+ this.hoveredDay = null;
118
99
  }
119
100
  ngOnInit() {
120
- this.elementRef.nativeElement.classList.add('card-body');
101
+ this.generateCalendar();
102
+ }
103
+ onSelectDay(day) {
104
+ this.selectedDay = day;
105
+ this.onDaySelected.emit(this.selectedDay);
106
+ }
107
+ generateCalendar() {
108
+ const startOfMonth = this.currentMonth.startOf('month');
109
+ const endOfMonth = this.currentMonth.endOf('month');
110
+ const startDate = startOfMonth.startOf('week');
111
+ const endDate = endOfMonth.endOf('week');
112
+ let date = startDate.clone();
113
+ const calendar = [];
114
+ while (date.isBefore(endDate, 'day')) {
115
+ const week = [];
116
+ for (let i = 0; i < 7; i++) {
117
+ week.push(date.clone());
118
+ date = date.add(1, 'day');
119
+ }
120
+ calendar.push(week);
121
+ }
122
+ this.weeks = calendar;
123
+ }
124
+ previousMonth() {
125
+ this.currentMonth = this.currentMonth.subtract(1, 'month');
126
+ this.generateCalendar();
127
+ }
128
+ nextMonth() {
129
+ this.currentMonth = this.currentMonth.add(1, 'month');
130
+ this.generateCalendar();
131
+ }
132
+ isToday(date) {
133
+ return date.isSame(dayjs(), 'day');
121
134
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardBodyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxCardBodyDirective, isStandalone: true, selector: "[ngxCardBody]", ngImport: i0 }); }
135
+ isCurrentMonth(date) {
136
+ return date.isSame(this.currentMonth, 'month');
137
+ }
138
+ isSelected(day) {
139
+ return this.selectedDay?.isSame(day, 'day') || false;
140
+ }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: CalendarComponent, isStandalone: true, selector: "ngx-calendar", outputs: { onDaySelected: "onDaySelected" }, ngImport: i0, template: "<div class=\"container my-3\">\n\t<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t\t<button ngxButton variant=\"outline\" (click)=\"previousMonth()\">\u00AB</button>\n\t\t<h4 class=\"m-0\">\n\t\t\t{{ currentMonth.format('MMMM YYYY') }}\n\t\t</h4>\n\t\t<button ngxButton variant=\"outline\" (click)=\"nextMonth()\">\u00BB</button>\n\t</div>\n\n\t<div class=\"table-responsive\">\n\t\t<table class=\"table table-bordered text-center\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t@for (day of ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; track day) {\n\t\t\t\t\t\t<th>{{ day }}</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t@for (week of weeks; track $index) {\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t@for (day of week; track day.date()) {\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\tclass=\"day\"\n\t\t\t\t\t\t\t\t[class.bg-light]=\"!isCurrentMonth(day)\"\n\t\t\t\t\t\t\t\t[class.bg-dark-subtle]=\"isSelected(day) || day === hoveredDay\"\n\t\t\t\t\t\t\t\t[class.text-white]=\"isToday(day) && !(isSelected(day) || day === hoveredDay)\"\n\t\t\t\t\t\t\t\t[class.bg-primary]=\"isToday(day)\"\n\t\t\t\t\t\t\t\t(click)=\"onSelectDay(day)\"\n\t\t\t\t\t\t\t\t(mouseover)=\"hoveredDay = day\"\n\t\t\t\t\t\t\t\t(mouseout)=\"hoveredDay = null\">\n\t\t\t\t\t\t\t\t{{ day.date() }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t}\n\t\t\t\t\t</tr>\n\t\t\t\t}\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", styles: [".day:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxButtonDirective, selector: "button[ngxButton]", inputs: ["type", "ngxButton", "variant", "size"] }] }); }
124
143
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardBodyDirective, decorators: [{
126
- type: Directive,
127
- args: [{ selector: '[ngxCardBody]' }]
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: CalendarComponent, decorators: [{
145
+ type: Component,
146
+ args: [{ selector: 'ngx-calendar', imports: [CommonModule, NgxButtonDirective], template: "<div class=\"container my-3\">\n\t<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t\t<button ngxButton variant=\"outline\" (click)=\"previousMonth()\">\u00AB</button>\n\t\t<h4 class=\"m-0\">\n\t\t\t{{ currentMonth.format('MMMM YYYY') }}\n\t\t</h4>\n\t\t<button ngxButton variant=\"outline\" (click)=\"nextMonth()\">\u00BB</button>\n\t</div>\n\n\t<div class=\"table-responsive\">\n\t\t<table class=\"table table-bordered text-center\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t@for (day of ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; track day) {\n\t\t\t\t\t\t<th>{{ day }}</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t@for (week of weeks; track $index) {\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t@for (day of week; track day.date()) {\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\tclass=\"day\"\n\t\t\t\t\t\t\t\t[class.bg-light]=\"!isCurrentMonth(day)\"\n\t\t\t\t\t\t\t\t[class.bg-dark-subtle]=\"isSelected(day) || day === hoveredDay\"\n\t\t\t\t\t\t\t\t[class.text-white]=\"isToday(day) && !(isSelected(day) || day === hoveredDay)\"\n\t\t\t\t\t\t\t\t[class.bg-primary]=\"isToday(day)\"\n\t\t\t\t\t\t\t\t(click)=\"onSelectDay(day)\"\n\t\t\t\t\t\t\t\t(mouseover)=\"hoveredDay = day\"\n\t\t\t\t\t\t\t\t(mouseout)=\"hoveredDay = null\">\n\t\t\t\t\t\t\t\t{{ day.date() }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t}\n\t\t\t\t\t</tr>\n\t\t\t\t}\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", styles: [".day:hover{cursor:pointer}\n"] }]
128
147
  }] });
129
148
 
130
- class NgxCardHeaderDirective {
131
- constructor() {
132
- this.elementRef = inject((ElementRef));
149
+ class NgxFormGroup extends UntypedFormGroup {
150
+ }
151
+ class NgxFormControl extends UntypedFormControl {
152
+ constructor(formState, validatorOrOpts, asyncValidator, config) {
153
+ super(formState, validatorOrOpts, asyncValidator);
154
+ this.config = config;
133
155
  }
134
- ngOnInit() {
135
- this.elementRef.nativeElement.classList.add('card-header');
156
+ updateSelecOptions(options) {
157
+ if (this.config?.selectConfig?.options) {
158
+ this.config.selectConfig.options = [...options];
159
+ }
136
160
  }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
138
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxCardHeaderDirective, isStandalone: true, selector: "[ngxCardHeader]", ngImport: i0 }); }
139
161
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardHeaderDirective, decorators: [{
141
- type: Directive,
142
- args: [{ selector: '[ngxCardHeader]' }]
162
+
163
+ class NgxFormErrorsComponent {
164
+ constructor() {
165
+ this.isDirty = input(false, ...(ngDevMode ? [{ debugName: "isDirty" }] : []));
166
+ this.errors = input(null, ...(ngDevMode ? [{ debugName: "errors" }] : []));
167
+ this.errorMessages = computed(() => {
168
+ const result = [];
169
+ if (this.isDirty() && this.errors()) {
170
+ for (const key in this.errors()) {
171
+ if (this.errorMessageDictionary[key]) {
172
+ result.push(this.errorMessageDictionary[key](this.errors()));
173
+ }
174
+ }
175
+ }
176
+ return result;
177
+ }, ...(ngDevMode ? [{ debugName: "errorMessages" }] : []));
178
+ this.errorMessageDictionary = {
179
+ required: () => 'Field is required',
180
+ requiredTrue: () => 'Field is required',
181
+ email: () => 'Invalid E-Mail',
182
+ min: (errors) => `At least ${errors['min']?.requiredLength} characters are required`,
183
+ minlength: (errors) => `At least ${errors['minlength']?.requiredLength} characters are required`,
184
+ max: (errors) => `Maximum of ${errors['max']?.requiredLength} characters exceeded`,
185
+ maxlength: (errors) => `Maximum of ${errors['maxlength']?.requiredLength} characters exceeded`,
186
+ pattern: () => `Input does not match pattern`,
187
+ dateAfterInvalid: (errors) => `Date must be after ${errors?.['startDateValue']}`,
188
+ match: () => `Input does not match!`,
189
+ timeAfterError: (errors) => `The time must be after ${errors?.['timeAfterError']}`,
190
+ };
191
+ }
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: NgxFormErrorsComponent, isStandalone: true, selector: "ngx-form-errors", inputs: { isDirty: { classPropertyName: "isDirty", publicName: "isDirty", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
194
+ @if (errorMessages()) {
195
+ <div class="invalid-feedback d-block">
196
+ @for (errorMessage of errorMessages(); track $index) {
197
+ <div>{{ errorMessage }}</div>
198
+ }
199
+ </div>
200
+ }
201
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
202
+ }
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormErrorsComponent, decorators: [{
204
+ type: Component,
205
+ args: [{
206
+ selector: 'ngx-form-errors',
207
+ template: `
208
+ @if (errorMessages()) {
209
+ <div class="invalid-feedback d-block">
210
+ @for (errorMessage of errorMessages(); track $index) {
211
+ <div>{{ errorMessage }}</div>
212
+ }
213
+ </div>
214
+ }
215
+ `,
216
+ imports: [CommonModule],
217
+ }]
143
218
  }] });
144
219
 
145
- class NgxCardDirective {
220
+ class NgxAutofocusDirective {
146
221
  constructor() {
147
- this.elementRef = inject((ElementRef));
222
+ this.ngZone = inject(NgZone);
223
+ this.el = inject(ElementRef);
224
+ this.ngxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "ngxAutofocus" }] : []));
148
225
  }
149
- ngOnInit() {
150
- this.elementRef.nativeElement.classList.add('card');
226
+ ngAfterViewInit() {
227
+ if (this.ngxAutofocus()) {
228
+ this.ngZone.runOutsideAngular(() => {
229
+ setTimeout(() => {
230
+ this.el.nativeElement.focus();
231
+ }, 0);
232
+ });
233
+ }
151
234
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxCardDirective, isStandalone: true, selector: "[ngxCard]", ngImport: i0 }); }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxAutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
236
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxAutofocusDirective, isStandalone: true, selector: "[ngxAutofocus]", inputs: { ngxAutofocus: { classPropertyName: "ngxAutofocus", publicName: "ngxAutofocus", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
154
237
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxCardDirective, decorators: [{
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxAutofocusDirective, decorators: [{
156
239
  type: Directive,
157
- args: [{ selector: '[ngxCard]' }]
240
+ args: [{ selector: '[ngxAutofocus]' }]
158
241
  }] });
159
242
 
160
- class NgxColDirective {
243
+ class NgxFormGroupDirective {
161
244
  constructor() {
162
- this.el = inject(ElementRef);
163
- this.span = 'col';
245
+ this.formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
246
+ this.validateOnChange = input(true, ...(ngDevMode ? [{ debugName: "validateOnChange" }] : []));
164
247
  }
165
- set col(val) {
166
- if (val) {
167
- this.span = val;
168
- }
248
+ validateForm() {
249
+ Object.keys(this.formGroup().controls).forEach(key => {
250
+ const control = this.formGroup().get(key);
251
+ if (control instanceof NgxFormControl || control instanceof FormControl) {
252
+ this.formGroup().get(key)?.markAsTouched({ onlySelf: true });
253
+ this.formGroup().get(key)?.markAsDirty({ onlySelf: true });
254
+ this.formGroup().get(key)?.updateValueAndValidity({ onlySelf: true });
255
+ }
256
+ else if (control instanceof NgxFormGroup || control instanceof FormGroup) {
257
+ Object.keys(control.controls).forEach(subKey => {
258
+ control.get(subKey)?.markAsTouched({ onlySelf: true });
259
+ control.get(subKey)?.markAsDirty({ onlySelf: true });
260
+ control.get(subKey)?.updateValueAndValidity({ onlySelf: true });
261
+ });
262
+ }
263
+ });
169
264
  }
170
- ngAfterViewInit() {
171
- this.el.nativeElement.classList.add(this.span);
265
+ resetForm() {
266
+ this.formGroup().setErrors({});
267
+ this.formGroup().reset();
268
+ Object.keys(this.formGroup().controls).forEach(key => {
269
+ this.formGroup().get(key)?.markAsUntouched({ onlySelf: true });
270
+ });
172
271
  }
173
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxColDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
174
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxColDirective, isStandalone: true, selector: "[ngxCol]", inputs: { col: "col" }, ngImport: i0 }); }
272
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
273
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxFormGroupDirective, isStandalone: true, selector: "[ngxFormGroup]", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, validateOnChange: { classPropertyName: "validateOnChange", publicName: "validateOnChange", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ngxFormGroup"], ngImport: i0 }); }
175
274
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxColDirective, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormGroupDirective, decorators: [{
177
276
  type: Directive,
178
- args: [{ selector: '[ngxCol]' }]
179
- }], propDecorators: { col: [{
180
- type: Input
181
- }] } });
277
+ args: [{
278
+ selector: '[ngxFormGroup]',
279
+ exportAs: 'ngxFormGroup',
280
+ }]
281
+ }] });
182
282
 
183
- class NgxDropdownDirective {
283
+ class NgxFormInputDirective {
184
284
  constructor() {
185
- this.elementRef = inject(ElementRef);
186
- this.renderer = inject(Renderer2);
187
- this.viewContainerRef = inject(ViewContainerRef);
188
- this.ngxDropdown = input.required(...(ngDevMode ? [{ debugName: "ngxDropdown" }] : []));
189
- this.placement = input('bottom-start', ...(ngDevMode ? [{ debugName: "placement" }] : []));
190
- // adaptivePosition: InputSignal<boolean> = input(true);
191
- // fallbackPlacements: InputSignal<Placement[]> = input<Placement[]>(['top-end', 'bottom-end', 'right', 'left']);
192
- this.dropdownElement = null;
193
- this.dropdownMenuContentElement = null;
194
- this.isDropdownVisible = false;
285
+ this.elementRef = inject((ElementRef));
286
+ this.renderer2 = inject(Renderer2);
287
+ this.ngxFormInput = input.required(...(ngDevMode ? [{ debugName: "ngxFormInput" }] : []));
288
+ this.formControl = input(...(ngDevMode ? [undefined, { debugName: "formControl" }] : []));
289
+ this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
290
+ this.name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
291
+ this.type = input(...(ngDevMode ? [undefined, { debugName: "type" }] : []));
292
+ this.placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : []));
293
+ this.isFloatingLabel = input(true, ...(ngDevMode ? [{ debugName: "isFloatingLabel" }] : []));
294
+ effect(() => {
295
+ const fc = this.formControl();
296
+ if (fc && this.type() === 'checkbox') {
297
+ const native = this.elementRef.nativeElement;
298
+ native.checked = fc.value === true;
299
+ }
300
+ this.checkIsValid();
301
+ });
195
302
  }
196
303
  ngOnInit() {
197
- if (!this.dropdownElement) {
198
- this.dropdownElement = this.renderer.createElement('div');
199
- this.renderer.addClass(this.dropdownElement, 'dropdown');
200
- const parent = this.elementRef.nativeElement.parentNode;
201
- this.renderer.insertBefore(parent, this.dropdownElement, this.elementRef.nativeElement);
202
- this.renderer.appendChild(this.dropdownElement, this.elementRef.nativeElement);
304
+ if (this.type() === 'select') {
305
+ this.elementRef.nativeElement.classList.add('form-select');
203
306
  }
204
- }
205
- toggleDropdown() {
206
- if (this.isDropdownVisible) {
207
- this.hide();
307
+ else if (this.type() === 'checkbox') {
308
+ this.elementRef.nativeElement.classList.add('form-check-input');
208
309
  }
209
310
  else {
210
- this.show();
311
+ this.elementRef.nativeElement.classList.add('form-control');
211
312
  }
212
- }
213
- onDocumentClick(event) {
214
- if (this.isDropdownVisible &&
215
- this.dropdownElement &&
216
- !this.dropdownElement.contains(event.target) &&
217
- !this.elementRef.nativeElement.contains(event.target)) {
218
- this.hide();
219
- }
220
- }
221
- show() {
222
- if (!this.dropdownMenuContentElement && this.dropdownElement) {
223
- const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.ngxDropdown());
224
- embeddedViewRef.detectChanges();
225
- this.dropdownMenuContentElement = embeddedViewRef.rootNodes[0];
226
- this.renderer.appendChild(this.dropdownElement, this.dropdownMenuContentElement);
227
- this.addDropdownLinksListener();
228
- this.popperInstance = createPopper(this.dropdownElement, this.dropdownMenuContentElement, {
229
- placement: this.placement(),
230
- modifiers: [
231
- {
232
- name: 'offset',
233
- options: {
234
- offset: ({ placement }) => {
235
- if (placement.startsWith('bottom')) {
236
- return [1, -(this.dropdownElement?.offsetHeight + 1)];
237
- }
238
- if (placement.startsWith('top')) {
239
- return [1, -(this.dropdownElement?.offsetHeight + 1)];
240
- }
241
- if (placement.startsWith('left')) {
242
- return [
243
- this.dropdownElement?.offsetHeight,
244
- -this.dropdownElement?.offsetWidth,
245
- ];
246
- }
247
- return [1, 1];
248
- },
249
- },
250
- },
251
- // {
252
- // name: 'flip',
253
- // options: {
254
- // fallbackPlacements: this.adaptivePosition() ? this.fallbackPlacements() : [],
255
- // boundary: 'viewport',
256
- // padding: 0,
257
- // },
258
- // },
259
- {
260
- name: 'preventOverflow',
261
- options: {
262
- boundary: 'viewport',
263
- padding: 0,
264
- tether: false,
265
- },
266
- },
267
- ],
268
- });
269
- }
270
- this.isDropdownVisible = true;
271
- }
272
- hide() {
273
- if (this.dropdownMenuContentElement) {
274
- this.viewContainerRef.clear();
275
- this.dropdownMenuContentElement = null;
276
- this.popperInstance?.destroy();
277
- }
278
- this.isDropdownVisible = false;
279
- }
280
- addDropdownLinksListener() {
281
- const links = this.dropdownMenuContentElement?.querySelectorAll('.dropdown-item');
282
- links?.forEach(link => {
283
- this.renderer.listen(link, 'click', () => {
284
- this.hide();
285
- });
286
- });
287
- }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
289
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxDropdownDirective, isStandalone: true, selector: "[ngxDropdown]", inputs: { ngxDropdown: { classPropertyName: "ngxDropdown", publicName: "ngxDropdown", isSignal: true, isRequired: true, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggleDropdown()", "document:click": "onDocumentClick($event)" } }, exportAs: ["ngxDropdown"], ngImport: i0 }); }
290
- }
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxDropdownDirective, decorators: [{
292
- type: Directive,
293
- args: [{ selector: '[ngxDropdown]', exportAs: 'ngxDropdown' }]
294
- }], propDecorators: { toggleDropdown: [{
295
- type: HostListener,
296
- args: ['click']
297
- }], onDocumentClick: [{
298
- type: HostListener,
299
- args: ['document:click', ['$event']]
300
- }] } });
301
-
302
- class NgxFormGroup extends UntypedFormGroup {
303
- }
304
- class NgxFormControl extends UntypedFormControl {
305
- constructor(formState, validatorOrOpts, asyncValidator, customConfig) {
306
- super(formState, validatorOrOpts, asyncValidator);
307
- this.customConfig = customConfig;
308
- }
309
- updateSelecOptions(options) {
310
- if (this.customConfig?.selectConfig?.options) {
311
- this.customConfig.selectConfig.options = [...options];
312
- }
313
- }
314
- }
315
-
316
- class NgxFormGroupDirective {
317
- constructor() {
318
- this.formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
319
- this.validateOnChange = input(true, ...(ngDevMode ? [{ debugName: "validateOnChange" }] : []));
320
- }
321
- validateForm() {
322
- Object.keys(this.formGroup().controls).forEach(key => {
323
- const control = this.formGroup().get(key);
324
- if (control instanceof NgxFormControl || control instanceof FormControl) {
325
- this.formGroup().get(key)?.markAsTouched({ onlySelf: true });
326
- this.formGroup().get(key)?.markAsDirty({ onlySelf: true });
327
- this.formGroup().get(key)?.updateValueAndValidity({ onlySelf: true });
328
- }
329
- else if (control instanceof NgxFormGroup || control instanceof FormGroup) {
330
- Object.keys(control.controls).forEach(subKey => {
331
- control.get(subKey)?.markAsTouched({ onlySelf: true });
332
- control.get(subKey)?.markAsDirty({ onlySelf: true });
333
- control.get(subKey)?.updateValueAndValidity({ onlySelf: true });
334
- });
335
- }
336
- });
337
- }
338
- resetForm() {
339
- this.formGroup().setErrors({});
340
- this.formGroup().reset();
341
- Object.keys(this.formGroup().controls).forEach(key => {
342
- this.formGroup().get(key)?.markAsUntouched({ onlySelf: true });
343
- });
344
- }
345
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
346
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxFormGroupDirective, isStandalone: true, selector: "[ngxFormGroup]", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, validateOnChange: { classPropertyName: "validateOnChange", publicName: "validateOnChange", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ngxFormGroup"], ngImport: i0 }); }
347
- }
348
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormGroupDirective, decorators: [{
349
- type: Directive,
350
- args: [{
351
- selector: '[ngxFormGroup]',
352
- exportAs: 'ngxFormGroup',
353
- }]
354
- }] });
355
-
356
- class NgxFormInputDirective {
357
- constructor() {
358
- this.elementRef = inject((ElementRef));
359
- this.renderer2 = inject(Renderer2);
360
- this.ngxFormInput = input.required(...(ngDevMode ? [{ debugName: "ngxFormInput" }] : []));
361
- this.formControl = input(...(ngDevMode ? [undefined, { debugName: "formControl" }] : []));
362
- this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
363
- this.name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
364
- this.type = input(...(ngDevMode ? [undefined, { debugName: "type" }] : []));
365
- this.placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : []));
366
- this.isFloatingLabel = input(true, ...(ngDevMode ? [{ debugName: "isFloatingLabel" }] : []));
367
- effect(() => {
368
- const fc = this.formControl();
369
- if (fc && this.type() === 'checkbox') {
370
- const native = this.elementRef.nativeElement;
371
- native.checked = fc.value === true;
372
- }
373
- this.checkIsValid();
374
- });
375
- }
376
- ngOnInit() {
377
- if (this.type() === 'select') {
378
- this.elementRef.nativeElement.classList.add('form-select');
379
- }
380
- else if (this.type() === 'checkbox') {
381
- this.elementRef.nativeElement.classList.add('form-check-input');
382
- }
383
- else {
384
- this.elementRef.nativeElement.classList.add('form-control');
385
- }
386
- if (this.type()) {
387
- this.elementRef.nativeElement.setAttribute('type', this.type());
313
+ if (this.type()) {
314
+ this.elementRef.nativeElement.setAttribute('type', this.type());
388
315
  }
389
316
  this.elementRef.nativeElement.setAttribute('placeholder', this.placeholder() ?? (this.name() || this.ngxFormInput()));
390
317
  if (this.id() ?? (this.name() || this.ngxFormInput())) {
@@ -413,10 +340,10 @@ class NgxFormInputDirective {
413
340
  this.elementRef.nativeElement.classList.remove('is-invalid');
414
341
  }
415
342
  }
416
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
417
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxFormInputDirective, isStandalone: true, selector: "[ngxFormInput]", inputs: { ngxFormInput: { classPropertyName: "ngxFormInput", publicName: "ngxFormInput", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, isFloatingLabel: { classPropertyName: "isFloatingLabel", publicName: "isFloatingLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
343
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
344
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxFormInputDirective, isStandalone: true, selector: "[ngxFormInput]", inputs: { ngxFormInput: { classPropertyName: "ngxFormInput", publicName: "ngxFormInput", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, isFloatingLabel: { classPropertyName: "isFloatingLabel", publicName: "isFloatingLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
418
345
  }
419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormInputDirective, decorators: [{
346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormInputDirective, decorators: [{
420
347
  type: Directive,
421
348
  args: [{ selector: '[ngxFormInput]' }]
422
349
  }], ctorParameters: () => [] });
@@ -425,10 +352,10 @@ class NgxFormLabelDirective {
425
352
  constructor() {
426
353
  this.elementClass = 'form-label';
427
354
  }
428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
429
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxFormLabelDirective, isStandalone: true, selector: "label[ngxFormLabel]", host: { properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
356
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxFormLabelDirective, isStandalone: true, selector: "label[ngxFormLabel]", host: { properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
430
357
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormLabelDirective, decorators: [{
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormLabelDirective, decorators: [{
432
359
  type: Directive,
433
360
  args: [{ selector: 'label[ngxFormLabel]' }]
434
361
  }], propDecorators: { elementClass: [{
@@ -436,30 +363,88 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
436
363
  args: ['class']
437
364
  }] } });
438
365
 
439
- class NgxFormSelectDirective {
366
+ class AppIsFormControlPipe {
367
+ transform(value) {
368
+ return value;
369
+ }
370
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AppIsFormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
371
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AppIsFormControlPipe, isStandalone: true, name: "appIsFormControl" }); }
372
+ }
373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AppIsFormControlPipe, decorators: [{
374
+ type: Pipe,
375
+ args: [{ name: 'appIsFormControl' }]
376
+ }] });
377
+
378
+ class NgxIsFormGroupPipe {
379
+ transform(value) {
380
+ return value;
381
+ }
382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxIsFormGroupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
383
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: NgxIsFormGroupPipe, isStandalone: true, name: "ngxIsFormGroup" }); }
384
+ }
385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxIsFormGroupPipe, decorators: [{
386
+ type: Pipe,
387
+ args: [{ name: 'ngxIsFormGroup' }]
388
+ }] });
389
+
390
+ class NgxFormComponent {
440
391
  constructor() {
441
- this.elementRef = inject((ElementRef));
392
+ this.formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
393
+ this.formGroupDirective = viewChild(NgxFormGroupDirective, ...(ngDevMode ? [{ debugName: "formGroupDirective" }] : []));
394
+ this.onValidated = output();
395
+ this.keepOriginalOrder = () => 0;
442
396
  }
443
- set formInputInvalid(val) {
444
- if (val === true) {
445
- this.elementRef.nativeElement.classList.add('is-invalid');
446
- }
447
- else {
448
- this.elementRef.nativeElement.classList.remove('is-invalid');
449
- }
397
+ isFormControl(control) {
398
+ return control instanceof NgxFormControl;
450
399
  }
451
- ngOnInit() {
452
- this.elementRef.nativeElement.classList.add('form-select');
400
+ validate() {
401
+ this.formGroupDirective()?.validateForm();
402
+ this.onValidated.emit();
403
+ }
404
+ reset() {
405
+ this.formGroupDirective()?.resetForm();
453
406
  }
454
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
455
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxFormSelectDirective, isStandalone: true, selector: "select[ngxFormSelect]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
407
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
408
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: NgxFormComponent, isStandalone: true, selector: "ngx-form", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onValidated: "onValidated" }, viewQueries: [{ propertyName: "formGroupDirective", first: true, predicate: NgxFormGroupDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<form ngxFormGroup #formGroupDirective=\"ngxFormGroup\" [formGroup]=\"formGroup()\">\n\t@for (control of formGroup().controls | keyvalue: keepOriginalOrder; track $index) {\n\t\t@if (isFormControl(control.value)) {\n\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: control }\" />\n\t\t} @else {\n\t\t\t<div ngxFormGroup [formGroup]=\"control.value | ngxIsFormGroup\" class=\"row\">\n\t\t\t\t@for (\n\t\t\t\t\tsubControl of (control.value | ngxIsFormGroup).controls | keyvalue: keepOriginalOrder;\n\t\t\t\t\ttrack $index\n\t\t\t\t) {\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: subControl }\" />\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t}\n</form>\n\n<ng-template #formField let-control=\"control\">\n\t@if (control.value | appIsFormControl; as typedControl) {\n\t\t<div class=\"mb-3\">\n\t\t\t<!-- <label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ typedControl.customConfig?.label }}\n\t\t</label> -->\n\n\t\t\t@switch (typedControl.config?.type) {\n\t\t\t\t@case ('textarea') {\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"textarea\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[placeholder]=\"typedControl.config?.placeholder\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t[rows]=\"typedControl.config?.textareaConfig?.rows || 4\">\n\t\t\t\t\t</textarea>\n\t\t\t\t}\n\n\t\t\t\t@case ('select') {\n\t\t\t\t\t<select\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\">\n\t\t\t\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\t\t\t\t\t\t@for (option of typedControl.config?.selectConfig?.options; track option.value) {\n\t\t\t\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t}\n\t\t\t\t\t</select>\n\t\t\t\t}\n\n\t\t\t\t@case ('checkbox') {\n\t\t\t\t\t<input\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t\t}\n\n\t\t\t\t@default {\n\t\t\t\t\t<input\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\t[type]=\"typedControl.config?.type || 'text'\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[placeholder]=\"typedControl.config?.placeholder\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t[autocomplete]=\"typedControl.config?.type === 'password' ? 'new-password' : undefined\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t<label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t\t{{ typedControl.config?.label }}\n\t\t\t</label>\n\n\t\t\t@if (typedControl.config?.hint) {\n\t\t\t\t<small class=\"text-muted\">\n\t\t\t\t\t{{ typedControl.config?.hint }}\n\t\t\t\t</small>\n\t\t\t}\n\n\t\t\t<ngx-form-errors [errors]=\"control.value.errors\" [isDirty]=\"control.value.dirty\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgxFormGroupDirective, selector: "[ngxFormGroup]", inputs: ["formGroup", "validateOnChange"], exportAs: ["ngxFormGroup"] }, { kind: "directive", type: NgxFormLabelDirective, selector: "label[ngxFormLabel]" }, { kind: "component", type: NgxFormErrorsComponent, selector: "ngx-form-errors", inputs: ["isDirty", "errors"] }, { kind: "directive", type: NgxFormInputDirective, selector: "[ngxFormInput]", inputs: ["ngxFormInput", "formControl", "id", "name", "type", "placeholder", "isFloatingLabel"] }, { kind: "directive", type: NgxAutofocusDirective, selector: "[ngxAutofocus]", inputs: ["ngxAutofocus"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: AppIsFormControlPipe, name: "appIsFormControl" }, { kind: "pipe", type: NgxIsFormGroupPipe, name: "ngxIsFormGroup" }] }); }
456
409
  }
457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormSelectDirective, decorators: [{
458
- type: Directive,
459
- args: [{ selector: 'select[ngxFormSelect]' }]
460
- }], propDecorators: { formInputInvalid: [{
461
- type: Input
462
- }] } });
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormComponent, decorators: [{
411
+ type: Component,
412
+ args: [{ selector: 'ngx-form', imports: [
413
+ CommonModule,
414
+ ReactiveFormsModule,
415
+ NgxFormGroupDirective,
416
+ NgxFormLabelDirective,
417
+ NgxFormErrorsComponent,
418
+ NgxFormInputDirective,
419
+ AppIsFormControlPipe,
420
+ NgxIsFormGroupPipe,
421
+ NgxAutofocusDirective,
422
+ ], template: "<form ngxFormGroup #formGroupDirective=\"ngxFormGroup\" [formGroup]=\"formGroup()\">\n\t@for (control of formGroup().controls | keyvalue: keepOriginalOrder; track $index) {\n\t\t@if (isFormControl(control.value)) {\n\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: control }\" />\n\t\t} @else {\n\t\t\t<div ngxFormGroup [formGroup]=\"control.value | ngxIsFormGroup\" class=\"row\">\n\t\t\t\t@for (\n\t\t\t\t\tsubControl of (control.value | ngxIsFormGroup).controls | keyvalue: keepOriginalOrder;\n\t\t\t\t\ttrack $index\n\t\t\t\t) {\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: subControl }\" />\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t}\n</form>\n\n<ng-template #formField let-control=\"control\">\n\t@if (control.value | appIsFormControl; as typedControl) {\n\t\t<div class=\"mb-3\">\n\t\t\t<!-- <label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ typedControl.customConfig?.label }}\n\t\t</label> -->\n\n\t\t\t@switch (typedControl.config?.type) {\n\t\t\t\t@case ('textarea') {\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"textarea\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[placeholder]=\"typedControl.config?.placeholder\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t[rows]=\"typedControl.config?.textareaConfig?.rows || 4\">\n\t\t\t\t\t</textarea>\n\t\t\t\t}\n\n\t\t\t\t@case ('select') {\n\t\t\t\t\t<select\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\">\n\t\t\t\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\t\t\t\t\t\t@for (option of typedControl.config?.selectConfig?.options; track option.value) {\n\t\t\t\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t}\n\t\t\t\t\t</select>\n\t\t\t\t}\n\n\t\t\t\t@case ('checkbox') {\n\t\t\t\t\t<input\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t\t}\n\n\t\t\t\t@default {\n\t\t\t\t\t<input\n\t\t\t\t\t\tngxFormInput\n\t\t\t\t\t\t[type]=\"typedControl.config?.type || 'text'\"\n\t\t\t\t\t\t[ngxAutofocus]=\"typedControl.config?.autofocus || false\"\n\t\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t\t[placeholder]=\"typedControl.config?.placeholder\"\n\t\t\t\t\t\t[formControl]=\"typedControl\"\n\t\t\t\t\t\t[autocomplete]=\"typedControl.config?.type === 'password' ? 'new-password' : undefined\"\n\t\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t<label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t\t{{ typedControl.config?.label }}\n\t\t\t</label>\n\n\t\t\t@if (typedControl.config?.hint) {\n\t\t\t\t<small class=\"text-muted\">\n\t\t\t\t\t{{ typedControl.config?.hint }}\n\t\t\t\t</small>\n\t\t\t}\n\n\t\t\t<ngx-form-errors [errors]=\"control.value.errors\" [isDirty]=\"control.value.dirty\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: [":host{display:block}\n"] }]
423
+ }] });
424
+
425
+ class NgxLoadingIndicatorComponent {
426
+ constructor() {
427
+ this.faSpinner = faSpinner;
428
+ }
429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxLoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: NgxLoadingIndicatorComponent, isStandalone: true, selector: "ngx-loading-indicator", ngImport: i0, template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\" />\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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] }); }
431
+ }
432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxLoadingIndicatorComponent, decorators: [{
433
+ type: Component,
434
+ args: [{ selector: 'ngx-loading-indicator', imports: [FontAwesomeModule], template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\" />\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"] }]
435
+ }] });
436
+
437
+ class BaseModalComponent {
438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
439
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: BaseModalComponent, isStandalone: true, selector: "ngx-base-modal", ngImport: i0, template: ``, isInline: true }); }
440
+ }
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: BaseModalComponent, decorators: [{
442
+ type: Component,
443
+ args: [{
444
+ selector: 'ngx-base-modal',
445
+ template: ``,
446
+ }]
447
+ }] });
463
448
 
464
449
  class NgxIconButtonDirective {
465
450
  constructor() {
@@ -480,10 +465,10 @@ class NgxIconButtonDirective {
480
465
  ngOnInit() {
481
466
  this.elementRef.nativeElement.classList.add('btn', 'icon-button');
482
467
  }
483
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxIconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
484
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxIconButtonDirective, isStandalone: true, selector: "button[ngxIconButton]", inputs: { appIconButton: ["ngxIconButton", "appIconButton"], shadow: "shadow" }, ngImport: i0 }); }
468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxIconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
469
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxIconButtonDirective, isStandalone: true, selector: "button[ngxIconButton]", inputs: { appIconButton: ["ngxIconButton", "appIconButton"], shadow: "shadow" }, ngImport: i0 }); }
485
470
  }
486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxIconButtonDirective, decorators: [{
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxIconButtonDirective, decorators: [{
487
472
  type: Directive,
488
473
  args: [{ selector: 'button[ngxIconButton]' }]
489
474
  }], propDecorators: { appIconButton: [{
@@ -493,80 +478,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
493
478
  type: Input
494
479
  }] } });
495
480
 
496
- class NgxListGroupItemAvatarDirective {
497
- constructor() {
498
- this.elementRef = inject((ElementRef));
499
- }
500
- ngOnInit() {
501
- this.elementRef.nativeElement.classList.add('list-group-item-avatar');
502
- }
503
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
504
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxListGroupItemAvatarDirective, isStandalone: true, selector: "[ngxListGroupItemAvatar]", ngImport: i0 }); }
505
- }
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupItemAvatarDirective, decorators: [{
507
- type: Directive,
508
- args: [{ selector: '[ngxListGroupItemAvatar]' }]
509
- }] });
510
-
511
- class NgxListGroupItemDirective {
481
+ class NgxTooltipDirective {
512
482
  constructor() {
513
- this.renderer = inject(Renderer2);
514
- this.elementRef = inject((ElementRef));
515
- this._isActive = false;
516
- this.onOutsideClick = new EventEmitter();
517
- }
518
- set isActive(val) {
519
- this._isActive = val;
520
- if (val) {
521
- this.elementRef.nativeElement.classList.add('focus-active');
522
- }
523
- else {
524
- this.elementRef.nativeElement.classList.remove('focus-active');
525
- }
526
- }
527
- ngOnInit() {
528
- this.elementRef.nativeElement.classList.add('list-group-item');
529
- this.elementRef.nativeElement.classList.add('list-group-item-action');
530
- this.elementRef.nativeElement.classList.add('d-flex', 'flex-row', 'align-items-center');
531
- this.renderer.listen('window', 'click', (e) => {
532
- if (e.target !== this.elementRef.nativeElement) {
533
- this._isActive = false;
534
- this.elementRef.nativeElement.classList.remove('focus-active');
535
- this.onOutsideClick.next();
536
- }
537
- });
538
- }
539
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
540
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxListGroupItemDirective, isStandalone: true, selector: "li[ngxListGroupItem]", inputs: { isActive: "isActive" }, outputs: { onOutsideClick: "onOutsideClick" }, ngImport: i0 }); }
541
- }
542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupItemDirective, decorators: [{
543
- type: Directive,
544
- args: [{ selector: 'li[ngxListGroupItem]' }]
545
- }], propDecorators: { isActive: [{
546
- type: Input
547
- }], onOutsideClick: [{
548
- type: Output
549
- }] } });
550
-
551
- class NgxListGroupDirective {
552
- constructor() {
553
- this.elementRef = inject((ElementRef));
554
- }
555
- ngOnInit() {
556
- this.elementRef.nativeElement.classList.add('list-group');
557
- this.elementRef.nativeElement.classList.add('list-group-flush');
558
- }
559
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
560
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: NgxListGroupDirective, isStandalone: true, selector: "ul[ngxListGroup]", ngImport: i0 }); }
561
- }
562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxListGroupDirective, decorators: [{
563
- type: Directive,
564
- args: [{ selector: 'ul[ngxListGroup]' }]
565
- }] });
566
-
567
- class NgxTooltipDirective {
568
- constructor() {
569
- this.elementRef = inject(ElementRef);
483
+ this.elementRef = inject(ElementRef);
570
484
  this.renderer = inject(Renderer2);
571
485
  this.viewContainerRef = inject(ViewContainerRef);
572
486
  this.ngxTooltip = input.required(...(ngDevMode ? [{ debugName: "ngxTooltip" }] : []));
@@ -752,10 +666,10 @@ class NgxTooltipDirective {
752
666
  this.show();
753
667
  }
754
668
  }
755
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
756
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxTooltipDirective, isStandalone: true, selector: "[ngxTooltip]", inputs: { ngxTooltip: { classPropertyName: "ngxTooltip", publicName: "ngxTooltip", isSignal: true, isRequired: true, transformFunction: null }, ngxTooltipClass: { classPropertyName: "ngxTooltipClass", publicName: "ngxTooltipClass", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipPlacement: { classPropertyName: "ngxTooltipPlacement", publicName: "ngxTooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipIsShow: { classPropertyName: "ngxTooltipIsShow", publicName: "ngxTooltipIsShow", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipXOffset: { classPropertyName: "ngxTooltipXOffset", publicName: "ngxTooltipXOffset", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipYOffset: { classPropertyName: "ngxTooltipYOffset", publicName: "ngxTooltipYOffset", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipDelay: { classPropertyName: "ngxTooltipDelay", publicName: "ngxTooltipDelay", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipTriggers: { classPropertyName: "ngxTooltipTriggers", publicName: "ngxTooltipTriggers", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipSize: { classPropertyName: "ngxTooltipSize", publicName: "ngxTooltipSize", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipZIndex: { classPropertyName: "ngxTooltipZIndex", publicName: "ngxTooltipZIndex", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipAdaptivePosition: { classPropertyName: "ngxTooltipAdaptivePosition", publicName: "ngxTooltipAdaptivePosition", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipFallbackPlacements: { classPropertyName: "ngxTooltipFallbackPlacements", publicName: "ngxTooltipFallbackPlacements", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onHover()", "mouseleave": "onLeave()", "pointerenter": "onPointerEnter()", "pointerout": "onPointerOut()", "focusin": "onFocusIn()", "focusout": "onFocusOut()", "click": "onClick($event)", "document:click": "onDocumentClick($event)" } }, exportAs: ["ngxTooltip"], ngImport: i0 }); }
669
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
670
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxTooltipDirective, isStandalone: true, selector: "[ngxTooltip]", inputs: { ngxTooltip: { classPropertyName: "ngxTooltip", publicName: "ngxTooltip", isSignal: true, isRequired: true, transformFunction: null }, ngxTooltipClass: { classPropertyName: "ngxTooltipClass", publicName: "ngxTooltipClass", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipPlacement: { classPropertyName: "ngxTooltipPlacement", publicName: "ngxTooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipIsShow: { classPropertyName: "ngxTooltipIsShow", publicName: "ngxTooltipIsShow", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipXOffset: { classPropertyName: "ngxTooltipXOffset", publicName: "ngxTooltipXOffset", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipYOffset: { classPropertyName: "ngxTooltipYOffset", publicName: "ngxTooltipYOffset", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipDelay: { classPropertyName: "ngxTooltipDelay", publicName: "ngxTooltipDelay", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipTriggers: { classPropertyName: "ngxTooltipTriggers", publicName: "ngxTooltipTriggers", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipSize: { classPropertyName: "ngxTooltipSize", publicName: "ngxTooltipSize", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipZIndex: { classPropertyName: "ngxTooltipZIndex", publicName: "ngxTooltipZIndex", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipAdaptivePosition: { classPropertyName: "ngxTooltipAdaptivePosition", publicName: "ngxTooltipAdaptivePosition", isSignal: true, isRequired: false, transformFunction: null }, ngxTooltipFallbackPlacements: { classPropertyName: "ngxTooltipFallbackPlacements", publicName: "ngxTooltipFallbackPlacements", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onHover()", "mouseleave": "onLeave()", "pointerenter": "onPointerEnter()", "pointerout": "onPointerOut()", "focusin": "onFocusIn()", "focusout": "onFocusOut()", "click": "onClick($event)", "document:click": "onDocumentClick($event)" } }, exportAs: ["ngxTooltip"], ngImport: i0 }); }
757
671
  }
758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTooltipDirective, decorators: [{
672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTooltipDirective, decorators: [{
759
673
  type: Directive,
760
674
  args: [{ selector: '[ngxTooltip]', exportAs: 'ngxTooltip' }]
761
675
  }], ctorParameters: () => [], propDecorators: { onHover: [{
@@ -784,216 +698,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
784
698
  args: ['document:click', ['$event']]
785
699
  }] } });
786
700
 
787
- class CalendarComponent {
788
- constructor() {
789
- this.onDaySelected = output();
790
- this.currentMonth = dayjs();
791
- this.weeks = [];
792
- this.selectedDay = null;
793
- this.hoveredDay = null;
794
- }
795
- ngOnInit() {
796
- this.generateCalendar();
797
- }
798
- onSelectDay(day) {
799
- this.selectedDay = day;
800
- this.onDaySelected.emit(this.selectedDay);
801
- }
802
- generateCalendar() {
803
- const startOfMonth = this.currentMonth.startOf('month');
804
- const endOfMonth = this.currentMonth.endOf('month');
805
- const startDate = startOfMonth.startOf('week');
806
- const endDate = endOfMonth.endOf('week');
807
- let date = startDate.clone();
808
- const calendar = [];
809
- while (date.isBefore(endDate, 'day')) {
810
- const week = [];
811
- for (let i = 0; i < 7; i++) {
812
- week.push(date.clone());
813
- date = date.add(1, 'day');
814
- }
815
- calendar.push(week);
816
- }
817
- this.weeks = calendar;
818
- }
819
- previousMonth() {
820
- this.currentMonth = this.currentMonth.subtract(1, 'month');
821
- this.generateCalendar();
822
- }
823
- nextMonth() {
824
- this.currentMonth = this.currentMonth.add(1, 'month');
825
- this.generateCalendar();
826
- }
827
- isToday(date) {
828
- return date.isSame(dayjs(), 'day');
829
- }
830
- isCurrentMonth(date) {
831
- return date.isSame(this.currentMonth, 'month');
832
- }
833
- isSelected(day) {
834
- return this.selectedDay?.isSame(day, 'day') || false;
835
- }
836
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
837
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CalendarComponent, isStandalone: true, selector: "ngx-calendar", outputs: { onDaySelected: "onDaySelected" }, ngImport: i0, template: "<div class=\"container my-3\">\n\t<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t\t<button ngxButton variant=\"outline\" (click)=\"previousMonth()\">\u00AB</button>\n\t\t<h4 class=\"m-0\">\n\t\t\t{{ currentMonth.format('MMMM YYYY') }}\n\t\t</h4>\n\t\t<button ngxButton variant=\"outline\" (click)=\"nextMonth()\">\u00BB</button>\n\t</div>\n\n\t<div class=\"table-responsive\">\n\t\t<table class=\"table table-bordered text-center\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t@for (day of ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; track day) {\n\t\t\t\t\t\t<th>{{ day }}</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t@for (week of weeks; track $index) {\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t@for (day of week; track day.date()) {\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\tclass=\"day\"\n\t\t\t\t\t\t\t\t[class.bg-light]=\"!isCurrentMonth(day)\"\n\t\t\t\t\t\t\t\t[class.bg-dark-subtle]=\"isSelected(day) || day === hoveredDay\"\n\t\t\t\t\t\t\t\t[class.text-white]=\"isToday(day) && !(isSelected(day) || day === hoveredDay)\"\n\t\t\t\t\t\t\t\t[class.bg-primary]=\"isToday(day)\"\n\t\t\t\t\t\t\t\t(click)=\"onSelectDay(day)\"\n\t\t\t\t\t\t\t\t(mouseover)=\"hoveredDay = day\"\n\t\t\t\t\t\t\t\t(mouseout)=\"hoveredDay = null\">\n\t\t\t\t\t\t\t\t{{ day.date() }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t}\n\t\t\t\t\t</tr>\n\t\t\t\t}\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", styles: [".day:hover{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxButtonDirective, selector: "button[ngxButton]", inputs: ["type", "ngxButton", "variant", "size"] }] }); }
838
- }
839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CalendarComponent, decorators: [{
840
- type: Component,
841
- args: [{ selector: 'ngx-calendar', imports: [CommonModule, NgxButtonDirective], template: "<div class=\"container my-3\">\n\t<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t\t<button ngxButton variant=\"outline\" (click)=\"previousMonth()\">\u00AB</button>\n\t\t<h4 class=\"m-0\">\n\t\t\t{{ currentMonth.format('MMMM YYYY') }}\n\t\t</h4>\n\t\t<button ngxButton variant=\"outline\" (click)=\"nextMonth()\">\u00BB</button>\n\t</div>\n\n\t<div class=\"table-responsive\">\n\t\t<table class=\"table table-bordered text-center\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t@for (day of ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']; track day) {\n\t\t\t\t\t\t<th>{{ day }}</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t@for (week of weeks; track $index) {\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t@for (day of week; track day.date()) {\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\tclass=\"day\"\n\t\t\t\t\t\t\t\t[class.bg-light]=\"!isCurrentMonth(day)\"\n\t\t\t\t\t\t\t\t[class.bg-dark-subtle]=\"isSelected(day) || day === hoveredDay\"\n\t\t\t\t\t\t\t\t[class.text-white]=\"isToday(day) && !(isSelected(day) || day === hoveredDay)\"\n\t\t\t\t\t\t\t\t[class.bg-primary]=\"isToday(day)\"\n\t\t\t\t\t\t\t\t(click)=\"onSelectDay(day)\"\n\t\t\t\t\t\t\t\t(mouseover)=\"hoveredDay = day\"\n\t\t\t\t\t\t\t\t(mouseout)=\"hoveredDay = null\">\n\t\t\t\t\t\t\t\t{{ day.date() }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t}\n\t\t\t\t\t</tr>\n\t\t\t\t}\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", styles: [".day:hover{cursor:pointer}\n"] }]
842
- }] });
843
-
844
- class NgxFormErrorsComponent {
845
- constructor() {
846
- this.isDirty = input(false, ...(ngDevMode ? [{ debugName: "isDirty" }] : []));
847
- this.errors = input(null, ...(ngDevMode ? [{ debugName: "errors" }] : []));
848
- this.errorMessages = computed(() => {
849
- const result = [];
850
- if (this.isDirty() && this.errors()) {
851
- for (const key in this.errors()) {
852
- if (this.errorMessageDictionary[key]) {
853
- result.push(this.errorMessageDictionary[key](this.errors()));
854
- }
855
- }
856
- }
857
- return result;
858
- }, ...(ngDevMode ? [{ debugName: "errorMessages" }] : []));
859
- this.errorMessageDictionary = {
860
- required: () => 'Field is required',
861
- requiredTrue: () => 'Field is required',
862
- email: () => 'Invalid E-Mail',
863
- min: (errors) => `At least ${errors['min']?.requiredLength} characters are required`,
864
- minlength: (errors) => `At least ${errors['minlength']?.requiredLength} characters are required`,
865
- max: (errors) => `Maximum of ${errors['max']?.requiredLength} characters exceeded`,
866
- maxlength: (errors) => `Maximum of ${errors['maxlength']?.requiredLength} characters exceeded`,
867
- pattern: () => `Input does not match pattern`,
868
- dateAfterInvalid: (errors) => `Date must be after ${errors?.['startDateValue']}`,
869
- match: () => `Input does not match!`,
870
- timeAfterError: (errors) => `The time must be after ${errors?.['timeAfterError']}`,
871
- };
872
- }
873
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
874
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: NgxFormErrorsComponent, isStandalone: true, selector: "ngx-form-errors", inputs: { isDirty: { classPropertyName: "isDirty", publicName: "isDirty", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
875
- @if (errorMessages()) {
876
- <div class="invalid-feedback d-block">
877
- @for (errorMessage of errorMessages(); track $index) {
878
- <div>{{ errorMessage }}</div>
879
- }
880
- </div>
881
- }
882
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
883
- }
884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormErrorsComponent, decorators: [{
885
- type: Component,
886
- args: [{
887
- selector: 'ngx-form-errors',
888
- template: `
889
- @if (errorMessages()) {
890
- <div class="invalid-feedback d-block">
891
- @for (errorMessage of errorMessages(); track $index) {
892
- <div>{{ errorMessage }}</div>
893
- }
894
- </div>
895
- }
896
- `,
897
- imports: [CommonModule],
898
- }]
899
- }] });
900
-
901
- class NgxFormControlPipe {
902
- transform(value) {
903
- return value;
904
- }
905
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
906
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: NgxFormControlPipe, isStandalone: true, name: "ngxAsFormControl" }); }
907
- }
908
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormControlPipe, decorators: [{
909
- type: Pipe,
910
- args: [{ name: 'ngxAsFormControl' }]
911
- }] });
912
-
913
- class AppIsFormControlPipe {
914
- transform(value) {
915
- return value;
916
- }
917
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AppIsFormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
918
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: AppIsFormControlPipe, isStandalone: true, name: "appIsFormControl" }); }
919
- }
920
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AppIsFormControlPipe, decorators: [{
921
- type: Pipe,
922
- args: [{ name: 'appIsFormControl' }]
923
- }] });
924
-
925
- class NgxIsFormGroupPipe {
926
- transform(value) {
927
- return value;
928
- }
929
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxIsFormGroupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
930
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: NgxIsFormGroupPipe, isStandalone: true, name: "ngxIsFormGroup" }); }
931
- }
932
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxIsFormGroupPipe, decorators: [{
933
- type: Pipe,
934
- args: [{ name: 'ngxIsFormGroup' }]
935
- }] });
936
-
937
- class NgxFormComponent {
938
- constructor() {
939
- this.formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
940
- this.formGroupDir = viewChild(NgxFormGroupDirective, ...(ngDevMode ? [{ debugName: "formGroupDir" }] : []));
941
- this.onValidated = output();
942
- this.keepOriginalOrder = () => 0;
943
- }
944
- isFormControl(control) {
945
- return control instanceof NgxFormControl;
946
- }
947
- validate() {
948
- this.formGroupDir()?.validateForm();
949
- this.onValidated.emit();
950
- }
951
- reset() {
952
- this.formGroupDir()?.resetForm();
953
- }
954
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
955
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: NgxFormComponent, isStandalone: true, selector: "ngx-form", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onValidated: "onValidated" }, viewQueries: [{ propertyName: "formGroupDir", first: true, predicate: NgxFormGroupDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<form ngxFormGroup #formGroupDir=\"ngxFormGroup\" [formGroup]=\"formGroup()\">\n\t@for (control of formGroup().controls | keyvalue: keepOriginalOrder; track $index) {\n\t\t@if (isFormControl(control.value)) {\n\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: control }\" />\n\t\t} @else {\n\t\t\t<div ngxFormGroup [formGroup]=\"control.value | ngxIsFormGroup\" class=\"row\">\n\t\t\t\t@for (\n\t\t\t\t\tsubControl of (control.value | ngxIsFormGroup).controls | keyvalue: keepOriginalOrder;\n\t\t\t\t\ttrack $index\n\t\t\t\t) {\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: subControl }\" />\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t}\n</form>\n\n<ng-template #formField let-control=\"control\">\n\t<div class=\"mb-3\">\n\t\t<!-- <label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ (control.value | appIsFormControl).customConfig?.label }}\n\t\t</label> -->\n\n\t\t@switch ((control.value | appIsFormControl).customConfig?.type) {\n\t\t\t@case ('textarea') {\n\t\t\t\t<textarea\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"textarea\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[placeholder]=\"(control.value | appIsFormControl).customConfig?.placeholder\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t[rows]=\"(control.value | appIsFormControl).customConfig?.textareaConfig?.rows || 4\">\n\t\t\t\t</textarea>\n\t\t\t}\n\n\t\t\t@case ('select') {\n\t\t\t\t<select\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t(keydown.enter)=\"validate()\">\n\t\t\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\t\t\t\t\t@for (\n\t\t\t\t\t\toption of (control.value | appIsFormControl).customConfig?.selectConfig?.options;\n\t\t\t\t\t\ttrack option.value\n\t\t\t\t\t) {\n\t\t\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t}\n\t\t\t\t</select>\n\t\t\t}\n\n\t\t\t@case ('checkbox') {\n\t\t\t\t<input\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t}\n\n\t\t\t@default {\n\t\t\t\t<input\n\t\t\t\t\tngxFormInput\n\t\t\t\t\t[type]=\"(control.value | appIsFormControl).customConfig?.type || 'text'\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[placeholder]=\"(control.value | appIsFormControl).customConfig?.placeholder\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t[autocomplete]=\"\n\t\t\t\t\t\t(control.value | appIsFormControl).customConfig?.type === 'password'\n\t\t\t\t\t\t\t? 'new-password'\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\"\n\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t}\n\t\t}\n\n\t\t<!-- @if ((control.value | appIsFormControl).customConfig?.type !== 'textarea') { -->\n\t\t<label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ (control.value | appIsFormControl).customConfig?.label }}\n\t\t</label>\n\t\t<!-- } -->\n\n\t\t@if ((control.value | appIsFormControl).customConfig?.hint) {\n\t\t\t<small class=\"text-muted\">\n\t\t\t\t{{ (control.value | appIsFormControl).customConfig?.hint }}\n\t\t\t</small>\n\t\t}\n\n\t\t<ngx-form-errors [errors]=\"control.value.errors\" [isDirty]=\"control.value.dirty\" />\n\t</div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgxFormGroupDirective, selector: "[ngxFormGroup]", inputs: ["formGroup", "validateOnChange"], exportAs: ["ngxFormGroup"] }, { kind: "directive", type: NgxFormLabelDirective, selector: "label[ngxFormLabel]" }, { kind: "component", type: NgxFormErrorsComponent, selector: "ngx-form-errors", inputs: ["isDirty", "errors"] }, { kind: "directive", type: NgxFormInputDirective, selector: "[ngxFormInput]", inputs: ["ngxFormInput", "formControl", "id", "name", "type", "placeholder", "isFloatingLabel"] }, { kind: "directive", type: NgxAutofocusDirective, selector: "[ngxAutofocus]", inputs: ["ngxAutofocus"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: NgxFormControlPipe, name: "ngxAsFormControl" }, { kind: "pipe", type: AppIsFormControlPipe, name: "appIsFormControl" }, { kind: "pipe", type: NgxIsFormGroupPipe, name: "ngxIsFormGroup" }] }); }
956
- }
957
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxFormComponent, decorators: [{
958
- type: Component,
959
- args: [{ selector: 'ngx-form', imports: [
960
- CommonModule,
961
- ReactiveFormsModule,
962
- NgxFormControlPipe,
963
- NgxFormGroupDirective,
964
- NgxFormLabelDirective,
965
- NgxFormErrorsComponent,
966
- NgxFormInputDirective,
967
- AppIsFormControlPipe,
968
- NgxIsFormGroupPipe,
969
- NgxAutofocusDirective,
970
- ], template: "<form ngxFormGroup #formGroupDir=\"ngxFormGroup\" [formGroup]=\"formGroup()\">\n\t@for (control of formGroup().controls | keyvalue: keepOriginalOrder; track $index) {\n\t\t@if (isFormControl(control.value)) {\n\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: control }\" />\n\t\t} @else {\n\t\t\t<div ngxFormGroup [formGroup]=\"control.value | ngxIsFormGroup\" class=\"row\">\n\t\t\t\t@for (\n\t\t\t\t\tsubControl of (control.value | ngxIsFormGroup).controls | keyvalue: keepOriginalOrder;\n\t\t\t\t\ttrack $index\n\t\t\t\t) {\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"formField; context: { control: subControl }\" />\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t}\n</form>\n\n<ng-template #formField let-control=\"control\">\n\t<div class=\"mb-3\">\n\t\t<!-- <label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ (control.value | appIsFormControl).customConfig?.label }}\n\t\t</label> -->\n\n\t\t@switch ((control.value | appIsFormControl).customConfig?.type) {\n\t\t\t@case ('textarea') {\n\t\t\t\t<textarea\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"textarea\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[placeholder]=\"(control.value | appIsFormControl).customConfig?.placeholder\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t[rows]=\"(control.value | appIsFormControl).customConfig?.textareaConfig?.rows || 4\">\n\t\t\t\t</textarea>\n\t\t\t}\n\n\t\t\t@case ('select') {\n\t\t\t\t<select\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t(keydown.enter)=\"validate()\">\n\t\t\t\t\t<option value=\"\" disabled selected>Select your option</option>\n\t\t\t\t\t@for (\n\t\t\t\t\t\toption of (control.value | appIsFormControl).customConfig?.selectConfig?.options;\n\t\t\t\t\t\ttrack option.value\n\t\t\t\t\t) {\n\t\t\t\t\t\t<option [value]=\"option.value\" [disabled]=\"option.disabled\">\n\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t}\n\t\t\t\t</select>\n\t\t\t}\n\n\t\t\t@case ('checkbox') {\n\t\t\t\t<input\n\t\t\t\t\tngxFormInput\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t}\n\n\t\t\t@default {\n\t\t\t\t<input\n\t\t\t\t\tngxFormInput\n\t\t\t\t\t[type]=\"(control.value | appIsFormControl).customConfig?.type || 'text'\"\n\t\t\t\t\t[ngxAutofocus]=\"(control.value | appIsFormControl).customConfig?.autofocus || false\"\n\t\t\t\t\t[id]=\"control.key\"\n\t\t\t\t\t[placeholder]=\"(control.value | appIsFormControl).customConfig?.placeholder\"\n\t\t\t\t\t[formControl]=\"control.value | ngxAsFormControl\"\n\t\t\t\t\t[autocomplete]=\"\n\t\t\t\t\t\t(control.value | appIsFormControl).customConfig?.type === 'password'\n\t\t\t\t\t\t\t? 'new-password'\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\"\n\t\t\t\t\t(keydown.enter)=\"validate()\" />\n\t\t\t}\n\t\t}\n\n\t\t<!-- @if ((control.value | appIsFormControl).customConfig?.type !== 'textarea') { -->\n\t\t<label ngxFormLabel [attr.for]=\"control.key\">\n\t\t\t{{ (control.value | appIsFormControl).customConfig?.label }}\n\t\t</label>\n\t\t<!-- } -->\n\n\t\t@if ((control.value | appIsFormControl).customConfig?.hint) {\n\t\t\t<small class=\"text-muted\">\n\t\t\t\t{{ (control.value | appIsFormControl).customConfig?.hint }}\n\t\t\t</small>\n\t\t}\n\n\t\t<ngx-form-errors [errors]=\"control.value.errors\" [isDirty]=\"control.value.dirty\" />\n\t</div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
971
- }] });
972
-
973
- class NgxLoadingIndicatorComponent {
974
- constructor() {
975
- this.faSpinner = faSpinner;
976
- }
977
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxLoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
978
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: NgxLoadingIndicatorComponent, isStandalone: true, selector: "ngx-loading-indicator", ngImport: i0, template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\" />\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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] }); }
979
- }
980
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxLoadingIndicatorComponent, decorators: [{
981
- type: Component,
982
- args: [{ selector: 'ngx-loading-indicator', imports: [FontAwesomeModule], template: "<fa-icon animation=\"spin\" size=\"2x\" [icon]=\"faSpinner\" />\n", styles: [":host{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);color:#495057}\n"] }]
983
- }] });
984
-
985
- class BaseModalComponent {
986
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
987
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: BaseModalComponent, isStandalone: true, selector: "ngx-base-modal", ngImport: i0, template: ``, isInline: true }); }
988
- }
989
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BaseModalComponent, decorators: [{
990
- type: Component,
991
- args: [{
992
- selector: 'ngx-base-modal',
993
- template: ``,
994
- }]
995
- }] });
996
-
997
701
  class NgxModalComponent {
998
702
  constructor() {
999
703
  this.title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
@@ -1028,10 +732,10 @@ class NgxModalComponent {
1028
732
  handleClickClose() {
1029
733
  this.onClose.emit();
1030
734
  }
1031
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1032
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: NgxModalComponent, isStandalone: true, selector: "ngx-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showClose: { classPropertyName: "showClose", publicName: "showClose", isSignal: true, isRequired: false, transformFunction: null }, fullScreen: { classPropertyName: "fullScreen", publicName: "fullScreen", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose" }, host: { listeners: { "document:keydown.escape": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<div class=\"modal d-flex justify-content-center align-items-center\" [ngxAutofocus]=\"true\" tabindex=\"0\">\n\t<div class=\"modal-dialog w-100\" [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\n\t\t\t\t@if (showClose()) {\n\t\t\t\t\t<button\n\t\t\t\t\t\tngxIconButton=\"secondary\"\n\t\t\t\t\t\tngxTooltip=\"close\"\n\t\t\t\t\t\t[ngxTooltipZIndex]=\"1055\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\t(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]\" />\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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgxIconButtonDirective, selector: "button[ngxIconButton]", inputs: ["ngxIconButton", "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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgxAutofocusDirective, selector: "[ngxAutofocus]", inputs: ["ngxAutofocus"] }, { kind: "directive", type: NgxTooltipDirective, selector: "[ngxTooltip]", inputs: ["ngxTooltip", "ngxTooltipClass", "ngxTooltipPlacement", "ngxTooltipIsShow", "ngxTooltipXOffset", "ngxTooltipYOffset", "ngxTooltipDelay", "ngxTooltipTriggers", "ngxTooltipSize", "ngxTooltipZIndex", "ngxTooltipAdaptivePosition", "ngxTooltipFallbackPlacements"], exportAs: ["ngxTooltip"] }] }); }
735
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
736
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: NgxModalComponent, isStandalone: true, selector: "ngx-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showClose: { classPropertyName: "showClose", publicName: "showClose", isSignal: true, isRequired: false, transformFunction: null }, fullScreen: { classPropertyName: "fullScreen", publicName: "fullScreen", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose" }, host: { listeners: { "document:keydown.escape": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<div class=\"modal d-flex justify-content-center align-items-center\" [ngxAutofocus]=\"true\" tabindex=\"0\">\n\t<div class=\"modal-dialog w-100\" [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\n\t\t\t\t@if (showClose()) {\n\t\t\t\t\t<button\n\t\t\t\t\t\tngxIconButton=\"secondary\"\n\t\t\t\t\t\tngxTooltip=\"close\"\n\t\t\t\t\t\t[ngxTooltipZIndex]=\"1055\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\t(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]\" />\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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgxIconButtonDirective, selector: "button[ngxIconButton]", inputs: ["ngxIconButton", "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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgxAutofocusDirective, selector: "[ngxAutofocus]", inputs: ["ngxAutofocus"] }, { kind: "directive", type: NgxTooltipDirective, selector: "[ngxTooltip]", inputs: ["ngxTooltip", "ngxTooltipClass", "ngxTooltipPlacement", "ngxTooltipIsShow", "ngxTooltipXOffset", "ngxTooltipYOffset", "ngxTooltipDelay", "ngxTooltipTriggers", "ngxTooltipSize", "ngxTooltipZIndex", "ngxTooltipAdaptivePosition", "ngxTooltipFallbackPlacements"], exportAs: ["ngxTooltip"] }] }); }
1033
737
  }
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxModalComponent, decorators: [{
738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxModalComponent, decorators: [{
1035
739
  type: Component,
1036
740
  args: [{ selector: 'ngx-modal', imports: [CommonModule, NgxIconButtonDirective, FontAwesomeModule, NgxAutofocusDirective, NgxTooltipDirective], template: "<div class=\"modal d-flex justify-content-center align-items-center\" [ngxAutofocus]=\"true\" tabindex=\"0\">\n\t<div class=\"modal-dialog w-100\" [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\n\t\t\t\t@if (showClose()) {\n\t\t\t\t\t<button\n\t\t\t\t\t\tngxIconButton=\"secondary\"\n\t\t\t\t\t\tngxTooltip=\"close\"\n\t\t\t\t\t\t[ngxTooltipZIndex]=\"1055\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\t(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]\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"modal-backdrop fade show\"></div>\n" }]
1037
741
  }], propDecorators: { handleKeyboardEvent: [{
@@ -1048,10 +752,10 @@ class NgxOffCanvasComponent {
1048
752
  handleClickClose() {
1049
753
  this.onClose.emit();
1050
754
  }
1051
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxOffCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1052
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: NgxOffCanvasComponent, isStandalone: true, selector: "ngx-off-canvas", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, 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 ngxIconButton=\"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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgxIconButtonDirective, selector: "button[ngxIconButton]", inputs: ["ngxIconButton", "shadow"] }] }); }
755
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxOffCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
756
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.3", type: NgxOffCanvasComponent, isStandalone: true, selector: "ngx-off-canvas", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, 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 ngxIconButton=\"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"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgxIconButtonDirective, selector: "button[ngxIconButton]", inputs: ["ngxIconButton", "shadow"] }] }); }
1053
757
  }
1054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxOffCanvasComponent, decorators: [{
758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxOffCanvasComponent, decorators: [{
1055
759
  type: Component,
1056
760
  args: [{ selector: 'ngx-off-canvas', imports: [FontAwesomeModule, NgxIconButtonDirective], 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 ngxIconButton=\"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"] }]
1057
761
  }] });
@@ -1060,10 +764,10 @@ class NgxTabContentComponent {
1060
764
  constructor() {
1061
765
  this.isActive = model(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
1062
766
  }
1063
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1064
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: NgxTabContentComponent, isStandalone: true, selector: "ngx-tab-content", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, ngImport: i0, template: "<div class=\"tab-content\" [ngClass]=\"{ active: isActive() }\">\n\t<ng-content />\n</div>\n", styles: [".tab-content{display:none;padding:20px}.tab-content.active{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.3", type: NgxTabContentComponent, isStandalone: true, selector: "ngx-tab-content", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, ngImport: i0, template: "<div class=\"tab-content\" [ngClass]=\"{ active: isActive() }\">\n\t<ng-content />\n</div>\n", styles: [".tab-content{display:none;padding:20px}.tab-content.active{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1065
769
  }
1066
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabContentComponent, decorators: [{
770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabContentComponent, decorators: [{
1067
771
  type: Component,
1068
772
  args: [{ selector: 'ngx-tab-content', imports: [CommonModule], template: "<div class=\"tab-content\" [ngClass]=\"{ active: isActive() }\">\n\t<ng-content />\n</div>\n", styles: [".tab-content{display:none;padding:20px}.tab-content.active{display:block}\n"] }]
1069
773
  }] });
@@ -1077,10 +781,10 @@ class NgxTabComponent {
1077
781
  onClick() {
1078
782
  this.onSelected.emit();
1079
783
  }
1080
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1081
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: NgxTabComponent, isStandalone: true, selector: "ngx-tab", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isActive: "isActiveChange", onSelected: "onSelected" }, host: { listeners: { "click": "onClick($event.target)" } }, ngImport: i0, template: "<div class=\"tab\" [ngClass]=\"{ active: isActive() }\" tabindex=\"0\">\n\t<ng-content />\n</div>\n", styles: [":host{display:flex}.tab{color:var(--font-color);padding:16px 20px;border-bottom:3px solid var(--gray-80);flex-shrink:0}.tab.active{color:var(--primary);background:var(--body-bg-color);border-bottom:3px solid var(--primary)}.tab:focus{outline:0;z-index:1}.tab:hover{cursor:pointer;background-color:var(--tab-highlight)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
784
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
785
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.3", type: NgxTabComponent, isStandalone: true, selector: "ngx-tab", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isActive: "isActiveChange", onSelected: "onSelected" }, host: { listeners: { "click": "onClick($event.target)" } }, ngImport: i0, template: "<div class=\"tab\" [ngClass]=\"{ active: isActive() }\" tabindex=\"0\">\n\t<ng-content />\n</div>\n", styles: [":host{display:flex}.tab{color:var(--font-color);padding:16px 20px;border-bottom:3px solid var(--gray-80);flex-shrink:0}.tab.active{color:var(--primary);background:var(--body-bg-color);border-bottom:3px solid var(--primary)}.tab:focus{outline:0;z-index:1}.tab:hover{cursor:pointer;background-color:var(--tab-highlight)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1082
786
  }
1083
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabComponent, decorators: [{
787
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabComponent, decorators: [{
1084
788
  type: Component,
1085
789
  args: [{ selector: 'ngx-tab', imports: [CommonModule], template: "<div class=\"tab\" [ngClass]=\"{ active: isActive() }\" tabindex=\"0\">\n\t<ng-content />\n</div>\n", styles: [":host{display:flex}.tab{color:var(--font-color);padding:16px 20px;border-bottom:3px solid var(--gray-80);flex-shrink:0}.tab.active{color:var(--primary);background:var(--body-bg-color);border-bottom:3px solid var(--primary)}.tab:focus{outline:0;z-index:1}.tab:hover{cursor:pointer;background-color:var(--tab-highlight)}\n"] }]
1086
790
  }], propDecorators: { onClick: [{
@@ -1109,10 +813,10 @@ class NgxTabsComponent {
1109
813
  this.tabQueryList().forEach(tab => tab.isActive.update(() => tab === tabComponent));
1110
814
  this.tabContentQueryList().forEach(tabContent => tabContent.isActive.update(() => tabContent === tabComponent.target()));
1111
815
  }
1112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: NgxTabsComponent, isStandalone: true, selector: "ngx-tabs", queries: [{ propertyName: "tabQueryList", predicate: NgxTabComponent, isSignal: true }, { propertyName: "tabContentQueryList", predicate: NgxTabContentComponent, isSignal: true }], ngImport: i0, template: "<div class=\"tabs\">\n\t<ng-content select=\"ngx-tab\" />\n</div>\n<div class=\"tab-contents\">\n\t<ng-content select=\"ngx-tab-content\" />\n</div>\n", styles: [".tabs{display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;overflow-x:auto}\n"] }); }
816
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
817
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.3", type: NgxTabsComponent, isStandalone: true, selector: "ngx-tabs", queries: [{ propertyName: "tabQueryList", predicate: NgxTabComponent, isSignal: true }, { propertyName: "tabContentQueryList", predicate: NgxTabContentComponent, isSignal: true }], ngImport: i0, template: "<div class=\"tabs\">\n\t<ng-content select=\"ngx-tab\" />\n</div>\n<div class=\"tab-contents\">\n\t<ng-content select=\"ngx-tab-content\" />\n</div>\n", styles: [".tabs{display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;overflow-x:auto}\n"] }); }
1114
818
  }
1115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxTabsComponent, decorators: [{
819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxTabsComponent, decorators: [{
1116
820
  type: Component,
1117
821
  args: [{ selector: 'ngx-tabs', template: "<div class=\"tabs\">\n\t<ng-content select=\"ngx-tab\" />\n</div>\n<div class=\"tab-contents\">\n\t<ng-content select=\"ngx-tab-content\" />\n</div>\n", styles: [".tabs{display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;overflow-x:auto}\n"] }]
1118
822
  }] });
@@ -1121,8 +825,8 @@ class NgxToastComponent {
1121
825
  constructor() {
1122
826
  this.onClose = output();
1123
827
  }
1124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: NgxToastComponent, isStandalone: true, selector: "ngx-toast", inputs: { message: "message" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
828
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
829
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: NgxToastComponent, isStandalone: true, selector: "ngx-toast", inputs: { message: "message" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
1126
830
  <div class="toast align-items-center text-bg-dark border-0 show">
1127
831
  <div class="d-flex">
1128
832
  <div class="toast-body" [innerHTML]="message"></div>
@@ -1131,7 +835,7 @@ class NgxToastComponent {
1131
835
  </div>
1132
836
  `, isInline: true, styles: [":host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1051}\n"] }); }
1133
837
  }
1134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxToastComponent, decorators: [{
838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxToastComponent, decorators: [{
1135
839
  type: Component,
1136
840
  args: [{ selector: 'ngx-toast', template: `
1137
841
  <div class="toast align-items-center text-bg-dark border-0 show">
@@ -1177,6 +881,301 @@ function NgxLog(methodName, logType = LogType.log, logArgs = false) {
1177
881
  };
1178
882
  }
1179
883
 
884
+ class NgxCardBodyDirective {
885
+ constructor() {
886
+ this.elementRef = inject((ElementRef));
887
+ }
888
+ ngOnInit() {
889
+ this.elementRef.nativeElement.classList.add('card-body');
890
+ }
891
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardBodyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
892
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxCardBodyDirective, isStandalone: true, selector: "[ngxCardBody]", ngImport: i0 }); }
893
+ }
894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardBodyDirective, decorators: [{
895
+ type: Directive,
896
+ args: [{ selector: '[ngxCardBody]' }]
897
+ }] });
898
+
899
+ class NgxCardHeaderDirective {
900
+ constructor() {
901
+ this.elementRef = inject((ElementRef));
902
+ }
903
+ ngOnInit() {
904
+ this.elementRef.nativeElement.classList.add('card-header');
905
+ }
906
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
907
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxCardHeaderDirective, isStandalone: true, selector: "[ngxCardHeader]", ngImport: i0 }); }
908
+ }
909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardHeaderDirective, decorators: [{
910
+ type: Directive,
911
+ args: [{ selector: '[ngxCardHeader]' }]
912
+ }] });
913
+
914
+ class NgxCardDirective {
915
+ constructor() {
916
+ this.elementRef = inject((ElementRef));
917
+ }
918
+ ngOnInit() {
919
+ this.elementRef.nativeElement.classList.add('card');
920
+ }
921
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
922
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxCardDirective, isStandalone: true, selector: "[ngxCard]", ngImport: i0 }); }
923
+ }
924
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxCardDirective, decorators: [{
925
+ type: Directive,
926
+ args: [{ selector: '[ngxCard]' }]
927
+ }] });
928
+
929
+ class NgxColDirective {
930
+ constructor() {
931
+ this.el = inject(ElementRef);
932
+ this.span = 'col';
933
+ }
934
+ set col(val) {
935
+ if (val) {
936
+ this.span = val;
937
+ }
938
+ }
939
+ ngAfterViewInit() {
940
+ this.el.nativeElement.classList.add(this.span);
941
+ }
942
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxColDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
943
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxColDirective, isStandalone: true, selector: "[ngxCol]", inputs: { col: "col" }, ngImport: i0 }); }
944
+ }
945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxColDirective, decorators: [{
946
+ type: Directive,
947
+ args: [{ selector: '[ngxCol]' }]
948
+ }], propDecorators: { col: [{
949
+ type: Input
950
+ }] } });
951
+
952
+ class NgxDropdownDirective {
953
+ constructor() {
954
+ this.elementRef = inject(ElementRef);
955
+ this.renderer = inject(Renderer2);
956
+ this.viewContainerRef = inject(ViewContainerRef);
957
+ this.ngxDropdown = input.required(...(ngDevMode ? [{ debugName: "ngxDropdown" }] : []));
958
+ this.placement = input('bottom-start', ...(ngDevMode ? [{ debugName: "placement" }] : []));
959
+ // adaptivePosition: InputSignal<boolean> = input(true);
960
+ // fallbackPlacements: InputSignal<Placement[]> = input<Placement[]>(['top-end', 'bottom-end', 'right', 'left']);
961
+ this.dropdownElement = null;
962
+ this.dropdownMenuContentElement = null;
963
+ this.isDropdownVisible = false;
964
+ }
965
+ ngOnInit() {
966
+ if (!this.dropdownElement) {
967
+ this.dropdownElement = this.renderer.createElement('div');
968
+ this.renderer.addClass(this.dropdownElement, 'dropdown');
969
+ const parent = this.elementRef.nativeElement.parentNode;
970
+ this.renderer.insertBefore(parent, this.dropdownElement, this.elementRef.nativeElement);
971
+ this.renderer.appendChild(this.dropdownElement, this.elementRef.nativeElement);
972
+ }
973
+ }
974
+ toggleDropdown() {
975
+ if (this.isDropdownVisible) {
976
+ this.hide();
977
+ }
978
+ else {
979
+ this.show();
980
+ }
981
+ }
982
+ onDocumentClick(event) {
983
+ if (this.isDropdownVisible &&
984
+ this.dropdownElement &&
985
+ !this.dropdownElement.contains(event.target) &&
986
+ !this.elementRef.nativeElement.contains(event.target)) {
987
+ this.hide();
988
+ }
989
+ }
990
+ show() {
991
+ if (!this.dropdownMenuContentElement && this.dropdownElement) {
992
+ const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.ngxDropdown());
993
+ embeddedViewRef.detectChanges();
994
+ this.dropdownMenuContentElement = embeddedViewRef.rootNodes[0];
995
+ this.renderer.appendChild(this.dropdownElement, this.dropdownMenuContentElement);
996
+ this.addDropdownLinksListener();
997
+ this.popperInstance = createPopper(this.dropdownElement, this.dropdownMenuContentElement, {
998
+ placement: this.placement(),
999
+ modifiers: [
1000
+ {
1001
+ name: 'offset',
1002
+ options: {
1003
+ offset: ({ placement }) => {
1004
+ if (placement.startsWith('bottom')) {
1005
+ return [1, -(this.dropdownElement?.offsetHeight + 1)];
1006
+ }
1007
+ if (placement.startsWith('top')) {
1008
+ return [1, -(this.dropdownElement?.offsetHeight + 1)];
1009
+ }
1010
+ if (placement.startsWith('left')) {
1011
+ return [
1012
+ this.dropdownElement?.offsetHeight,
1013
+ -this.dropdownElement?.offsetWidth,
1014
+ ];
1015
+ }
1016
+ return [1, 1];
1017
+ },
1018
+ },
1019
+ },
1020
+ // {
1021
+ // name: 'flip',
1022
+ // options: {
1023
+ // fallbackPlacements: this.adaptivePosition() ? this.fallbackPlacements() : [],
1024
+ // boundary: 'viewport',
1025
+ // padding: 0,
1026
+ // },
1027
+ // },
1028
+ {
1029
+ name: 'preventOverflow',
1030
+ options: {
1031
+ boundary: 'viewport',
1032
+ padding: 0,
1033
+ tether: false,
1034
+ },
1035
+ },
1036
+ ],
1037
+ });
1038
+ }
1039
+ this.isDropdownVisible = true;
1040
+ }
1041
+ hide() {
1042
+ if (this.dropdownMenuContentElement) {
1043
+ this.viewContainerRef.clear();
1044
+ this.dropdownMenuContentElement = null;
1045
+ this.popperInstance?.destroy();
1046
+ }
1047
+ this.isDropdownVisible = false;
1048
+ }
1049
+ addDropdownLinksListener() {
1050
+ const links = this.dropdownMenuContentElement?.querySelectorAll('.dropdown-item');
1051
+ links?.forEach(link => {
1052
+ this.renderer.listen(link, 'click', () => {
1053
+ this.hide();
1054
+ });
1055
+ });
1056
+ }
1057
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1058
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: NgxDropdownDirective, isStandalone: true, selector: "[ngxDropdown]", inputs: { ngxDropdown: { classPropertyName: "ngxDropdown", publicName: "ngxDropdown", isSignal: true, isRequired: true, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggleDropdown()", "document:click": "onDocumentClick($event)" } }, exportAs: ["ngxDropdown"], ngImport: i0 }); }
1059
+ }
1060
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxDropdownDirective, decorators: [{
1061
+ type: Directive,
1062
+ args: [{ selector: '[ngxDropdown]', exportAs: 'ngxDropdown' }]
1063
+ }], propDecorators: { toggleDropdown: [{
1064
+ type: HostListener,
1065
+ args: ['click']
1066
+ }], onDocumentClick: [{
1067
+ type: HostListener,
1068
+ args: ['document:click', ['$event']]
1069
+ }] } });
1070
+
1071
+ class NgxFormSelectDirective {
1072
+ constructor() {
1073
+ this.elementRef = inject((ElementRef));
1074
+ }
1075
+ set formInputInvalid(val) {
1076
+ if (val === true) {
1077
+ this.elementRef.nativeElement.classList.add('is-invalid');
1078
+ }
1079
+ else {
1080
+ this.elementRef.nativeElement.classList.remove('is-invalid');
1081
+ }
1082
+ }
1083
+ ngOnInit() {
1084
+ this.elementRef.nativeElement.classList.add('form-select');
1085
+ }
1086
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1087
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxFormSelectDirective, isStandalone: true, selector: "select[ngxFormSelect]", inputs: { formInputInvalid: "formInputInvalid" }, ngImport: i0 }); }
1088
+ }
1089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormSelectDirective, decorators: [{
1090
+ type: Directive,
1091
+ args: [{ selector: 'select[ngxFormSelect]' }]
1092
+ }], propDecorators: { formInputInvalid: [{
1093
+ type: Input
1094
+ }] } });
1095
+
1096
+ class NgxListGroupItemAvatarDirective {
1097
+ constructor() {
1098
+ this.elementRef = inject((ElementRef));
1099
+ }
1100
+ ngOnInit() {
1101
+ this.elementRef.nativeElement.classList.add('list-group-item-avatar');
1102
+ }
1103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1104
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxListGroupItemAvatarDirective, isStandalone: true, selector: "[ngxListGroupItemAvatar]", ngImport: i0 }); }
1105
+ }
1106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupItemAvatarDirective, decorators: [{
1107
+ type: Directive,
1108
+ args: [{ selector: '[ngxListGroupItemAvatar]' }]
1109
+ }] });
1110
+
1111
+ class NgxListGroupItemDirective {
1112
+ constructor() {
1113
+ this.renderer = inject(Renderer2);
1114
+ this.elementRef = inject((ElementRef));
1115
+ this._isActive = false;
1116
+ this.onOutsideClick = new EventEmitter();
1117
+ }
1118
+ set isActive(val) {
1119
+ this._isActive = val;
1120
+ if (val) {
1121
+ this.elementRef.nativeElement.classList.add('focus-active');
1122
+ }
1123
+ else {
1124
+ this.elementRef.nativeElement.classList.remove('focus-active');
1125
+ }
1126
+ }
1127
+ ngOnInit() {
1128
+ this.elementRef.nativeElement.classList.add('list-group-item');
1129
+ this.elementRef.nativeElement.classList.add('list-group-item-action');
1130
+ this.elementRef.nativeElement.classList.add('d-flex', 'flex-row', 'align-items-center');
1131
+ this.renderer.listen('window', 'click', (e) => {
1132
+ if (e.target !== this.elementRef.nativeElement) {
1133
+ this._isActive = false;
1134
+ this.elementRef.nativeElement.classList.remove('focus-active');
1135
+ this.onOutsideClick.next();
1136
+ }
1137
+ });
1138
+ }
1139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1140
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxListGroupItemDirective, isStandalone: true, selector: "li[ngxListGroupItem]", inputs: { isActive: "isActive" }, outputs: { onOutsideClick: "onOutsideClick" }, ngImport: i0 }); }
1141
+ }
1142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupItemDirective, decorators: [{
1143
+ type: Directive,
1144
+ args: [{ selector: 'li[ngxListGroupItem]' }]
1145
+ }], propDecorators: { isActive: [{
1146
+ type: Input
1147
+ }], onOutsideClick: [{
1148
+ type: Output
1149
+ }] } });
1150
+
1151
+ class NgxListGroupDirective {
1152
+ constructor() {
1153
+ this.elementRef = inject((ElementRef));
1154
+ }
1155
+ ngOnInit() {
1156
+ this.elementRef.nativeElement.classList.add('list-group');
1157
+ this.elementRef.nativeElement.classList.add('list-group-flush');
1158
+ }
1159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1160
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: NgxListGroupDirective, isStandalone: true, selector: "ul[ngxListGroup]", ngImport: i0 }); }
1161
+ }
1162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxListGroupDirective, decorators: [{
1163
+ type: Directive,
1164
+ args: [{ selector: 'ul[ngxListGroup]' }]
1165
+ }] });
1166
+
1167
+ class NgxFormControlPipe {
1168
+ transform(value) {
1169
+ return value;
1170
+ }
1171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1172
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: NgxFormControlPipe, isStandalone: true, name: "ngxAsFormControl" }); }
1173
+ }
1174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxFormControlPipe, decorators: [{
1175
+ type: Pipe,
1176
+ args: [{ name: 'ngxAsFormControl' }]
1177
+ }] });
1178
+
1180
1179
  class NgxImageService {
1181
1180
  async compress(imageBase64, quality = 0.8, fileType = 'image/jpeg') {
1182
1181
  const img = await this.load(imageBase64);
@@ -1216,10 +1215,10 @@ class NgxImageService {
1216
1215
  canvas.height = img.height;
1217
1216
  context.drawImage(img, 0, 0, canvas.width, canvas.height);
1218
1217
  }
1219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1220
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxImageService, providedIn: 'root' }); }
1218
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1219
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxImageService, providedIn: 'root' }); }
1221
1220
  }
1222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxImageService, decorators: [{
1221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxImageService, decorators: [{
1223
1222
  type: Injectable,
1224
1223
  args: [{ providedIn: 'root' }]
1225
1224
  }] });
@@ -1247,10 +1246,10 @@ class NgxLoadingIndicatorService {
1247
1246
  this.componentRef.destroy();
1248
1247
  }
1249
1248
  }
1250
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxLoadingIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1251
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxLoadingIndicatorService, providedIn: 'root' }); }
1249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxLoadingIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1250
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxLoadingIndicatorService, providedIn: 'root' }); }
1252
1251
  }
1253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxLoadingIndicatorService, decorators: [{
1252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxLoadingIndicatorService, decorators: [{
1254
1253
  type: Injectable,
1255
1254
  args: [{ providedIn: 'root' }]
1256
1255
  }] });
@@ -1279,10 +1278,10 @@ class NgxModalService {
1279
1278
  this.componentRef.destroy();
1280
1279
  }
1281
1280
  }
1282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1283
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxModalService, providedIn: 'root' }); }
1281
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1282
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxModalService, providedIn: 'root' }); }
1284
1283
  }
1285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxModalService, decorators: [{
1284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxModalService, decorators: [{
1286
1285
  type: Injectable,
1287
1286
  args: [{ providedIn: 'root' }]
1288
1287
  }] });
@@ -1320,10 +1319,10 @@ class NgxToastService {
1320
1319
  clearTimeout(this.interval);
1321
1320
  }
1322
1321
  }
1323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1324
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxToastService, providedIn: 'root' }); }
1322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1323
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxToastService, providedIn: 'root' }); }
1325
1324
  }
1326
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxToastService, decorators: [{
1325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: NgxToastService, decorators: [{
1327
1326
  type: Injectable,
1328
1327
  args: [{ providedIn: 'root' }]
1329
1328
  }] });