@falcon-ng/tailwind 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/esm2020/falcon-ng-tailwind.mjs +5 -0
  2. package/esm2020/lib/base-control.mjs +50 -0
  3. package/esm2020/lib/base-form-component.mjs +234 -0
  4. package/esm2020/lib/component/auto-complete/auto-complete.component.mjs +33 -0
  5. package/esm2020/lib/component/bottom-sheet/bottom-sheet.component.mjs +29 -0
  6. package/esm2020/lib/component/button/button.component.mjs +27 -0
  7. package/esm2020/lib/component/button-toggle/button-toggle.component.mjs +32 -0
  8. package/esm2020/lib/component/checkbox/checkbox.component.mjs +18 -0
  9. package/esm2020/lib/component/chips/chip.component.mjs +109 -0
  10. package/esm2020/lib/component/date-picker/date-picker.component.mjs +17 -0
  11. package/esm2020/lib/component/dialog/dialog.component.mjs +21 -0
  12. package/esm2020/lib/component/pagination/pagination.component.mjs +95 -0
  13. package/esm2020/lib/component/progress-bar/progress-bar.component.mjs +20 -0
  14. package/esm2020/lib/component/progress-spinner/progress-spinner.component.mjs +26 -0
  15. package/esm2020/lib/component/radio/radio.component.mjs +31 -0
  16. package/esm2020/lib/component/rich-text-editor/rich-text-editor.component.mjs +15 -0
  17. package/esm2020/lib/component/select/select.component.mjs +35 -0
  18. package/esm2020/lib/component/slide-toggle/slide-toggle.component.mjs +14 -0
  19. package/esm2020/lib/component/slider/slider.component.mjs +15 -0
  20. package/esm2020/lib/component/snack-bar/snack-bar.component.mjs +11 -0
  21. package/esm2020/lib/component/table/table.component.mjs +74 -0
  22. package/esm2020/lib/component/textarea/textarea.component.mjs +16 -0
  23. package/esm2020/lib/component/textbox/textbox.component.mjs +17 -0
  24. package/esm2020/lib/control-builder/control-builder.component.mjs +18 -0
  25. package/esm2020/lib/control-type/select.mjs +8 -0
  26. package/esm2020/lib/control-type/textarea.mjs +8 -0
  27. package/esm2020/lib/control-type/textbox.mjs +8 -0
  28. package/esm2020/lib/falcon-core.module.mjs +232 -0
  29. package/esm2020/lib/model/constant.mjs +32 -0
  30. package/esm2020/lib/model/enum.mjs +2 -0
  31. package/esm2020/lib/model/environments.mjs +3 -0
  32. package/esm2020/lib/model/interface.mjs +2 -0
  33. package/esm2020/lib/model/ivalidator.mjs +2 -0
  34. package/esm2020/lib/module/angularmaterial.module.mjs +189 -0
  35. package/esm2020/lib/reactive-field.directive.mjs +28 -0
  36. package/esm2020/lib/service/appsetting.service.mjs +55 -0
  37. package/esm2020/lib/service/http/generic-http-client.mjs +197 -0
  38. package/esm2020/lib/service/http/igeneric-http-client.mjs +10 -0
  39. package/esm2020/lib/service/logger.service.mjs +78 -0
  40. package/esm2020/lib/service/open-id/TokenHelperService.mjs +71 -0
  41. package/esm2020/lib/service/open-id/auth-guard.service.mjs +30 -0
  42. package/esm2020/lib/service/open-id/auth.service.mjs +154 -0
  43. package/esm2020/public-api.mjs +50 -0
  44. package/fesm2015/falcon-ng-tailwind.mjs +1906 -0
  45. package/fesm2015/falcon-ng-tailwind.mjs.map +1 -0
  46. package/fesm2020/falcon-ng-tailwind.mjs +1880 -0
  47. package/fesm2020/falcon-ng-tailwind.mjs.map +1 -0
  48. package/index.d.ts +5 -0
  49. package/lib/base-control.d.ts +104 -0
  50. package/lib/base-form-component.d.ts +169 -0
  51. package/lib/component/auto-complete/auto-complete.component.d.ts +17 -0
  52. package/lib/component/bottom-sheet/bottom-sheet.component.d.ts +11 -0
  53. package/lib/component/button/button.component.d.ts +12 -0
  54. package/lib/component/button-toggle/button-toggle.component.d.ts +14 -0
  55. package/lib/component/checkbox/checkbox.component.d.ts +10 -0
  56. package/lib/component/chips/chip.component.d.ts +35 -0
  57. package/lib/component/date-picker/date-picker.component.d.ts +9 -0
  58. package/lib/component/dialog/dialog.component.d.ts +8 -0
  59. package/lib/component/pagination/pagination.component.d.ts +20 -0
  60. package/lib/component/progress-bar/progress-bar.component.d.ts +11 -0
  61. package/lib/component/progress-spinner/progress-spinner.component.d.ts +12 -0
  62. package/lib/component/radio/radio.component.d.ts +14 -0
  63. package/lib/component/rich-text-editor/rich-text-editor.component.d.ts +9 -0
  64. package/lib/component/select/select.component.d.ts +15 -0
  65. package/lib/component/slide-toggle/slide-toggle.component.d.ts +9 -0
  66. package/lib/component/slider/slider.component.d.ts +9 -0
  67. package/lib/component/snack-bar/snack-bar.component.d.ts +5 -0
  68. package/lib/component/table/table.component.d.ts +21 -0
  69. package/lib/component/textarea/textarea.component.d.ts +9 -0
  70. package/lib/component/textbox/textbox.component.d.ts +9 -0
  71. package/lib/control-builder/control-builder.component.d.ts +9 -0
  72. package/{src/lib/control-type/Chip.ts → lib/control-type/select.d.ts} +2 -3
  73. package/{src/lib/control-type/Radio.ts → lib/control-type/textarea.d.ts} +2 -3
  74. package/lib/control-type/textbox.d.ts +5 -0
  75. package/lib/falcon-core.module.d.ts +35 -0
  76. package/lib/model/constant.d.ts +5 -0
  77. package/lib/model/enum.d.ts +144 -0
  78. package/{src/lib/model/environments.ts → lib/model/environments.d.ts} +5 -7
  79. package/{src/lib/model/interface.ts → lib/model/interface.d.ts} +80 -91
  80. package/{src/lib/model/ivalidator.ts → lib/model/ivalidator.d.ts} +3 -3
  81. package/lib/module/angularmaterial.module.d.ts +49 -0
  82. package/lib/reactive-field.directive.d.ts +14 -0
  83. package/lib/service/appsetting.service.d.ts +22 -0
  84. package/lib/service/http/generic-http-client.d.ts +121 -0
  85. package/lib/service/http/igeneric-http-client.d.ts +92 -0
  86. package/lib/service/logger.service.d.ts +18 -0
  87. package/lib/service/open-id/TokenHelperService.d.ts +11 -0
  88. package/lib/service/open-id/auth-guard.service.d.ts +11 -0
  89. package/lib/service/open-id/auth.service.d.ts +36 -0
  90. package/package.json +22 -2
  91. package/{src/public-api.ts → public-api.d.ts} +8 -6
  92. package/ng-package.json +0 -7
  93. package/src/lib/base-control.ts +0 -142
  94. package/src/lib/base-form-component.ts +0 -363
  95. package/src/lib/component/auto-complete/auto-complete.component.html +0 -39
  96. package/src/lib/component/auto-complete/auto-complete.component.scss +0 -0
  97. package/src/lib/component/auto-complete/auto-complete.component.spec.ts +0 -23
  98. package/src/lib/component/auto-complete/auto-complete.component.ts +0 -31
  99. package/src/lib/component/bottom-sheet/bottom-sheet.component.html +0 -9
  100. package/src/lib/component/bottom-sheet/bottom-sheet.component.scss +0 -0
  101. package/src/lib/component/bottom-sheet/bottom-sheet.component.spec.ts +0 -23
  102. package/src/lib/component/bottom-sheet/bottom-sheet.component.ts +0 -19
  103. package/src/lib/component/button/button.component.css +0 -0
  104. package/src/lib/component/button/button.component.html +0 -54
  105. package/src/lib/component/button/button.component.spec.ts +0 -23
  106. package/src/lib/component/button/button.component.ts +0 -17
  107. package/src/lib/component/button-toggle/button-toggle.component.html +0 -21
  108. package/src/lib/component/button-toggle/button-toggle.component.scss +0 -0
  109. package/src/lib/component/button-toggle/button-toggle.component.spec.ts +0 -23
  110. package/src/lib/component/button-toggle/button-toggle.component.ts +0 -26
  111. package/src/lib/component/checkbox/checkbox.component.html +0 -6
  112. package/src/lib/component/checkbox/checkbox.component.scss +0 -0
  113. package/src/lib/component/checkbox/checkbox.component.spec.ts +0 -23
  114. package/src/lib/component/checkbox/checkbox.component.ts +0 -17
  115. package/src/lib/component/chips/chip.component.html +0 -75
  116. package/src/lib/component/chips/chip.component.scss +0 -3
  117. package/src/lib/component/chips/chip.component.spec.ts +0 -23
  118. package/src/lib/component/chips/chip.component.ts +0 -125
  119. package/src/lib/component/date-picker/date-picker.component.html +0 -18
  120. package/src/lib/component/date-picker/date-picker.component.scss +0 -0
  121. package/src/lib/component/date-picker/date-picker.component.spec.ts +0 -23
  122. package/src/lib/component/date-picker/date-picker.component.ts +0 -13
  123. package/src/lib/component/dialog/dialog.component.html +0 -12
  124. package/src/lib/component/dialog/dialog.component.scss +0 -3
  125. package/src/lib/component/dialog/dialog.component.spec.ts +0 -23
  126. package/src/lib/component/dialog/dialog.component.ts +0 -12
  127. package/src/lib/component/pagination/pagination.component.html +0 -10
  128. package/src/lib/component/pagination/pagination.component.scss +0 -0
  129. package/src/lib/component/pagination/pagination.component.spec.ts +0 -23
  130. package/src/lib/component/pagination/pagination.component.ts +0 -86
  131. package/src/lib/component/progress-bar/progress-bar.component.html +0 -1
  132. package/src/lib/component/progress-bar/progress-bar.component.scss +0 -0
  133. package/src/lib/component/progress-bar/progress-bar.component.spec.ts +0 -23
  134. package/src/lib/component/progress-bar/progress-bar.component.ts +0 -15
  135. package/src/lib/component/progress-spinner/progress-spinner.component.html +0 -7
  136. package/src/lib/component/progress-spinner/progress-spinner.component.scss +0 -0
  137. package/src/lib/component/progress-spinner/progress-spinner.component.spec.ts +0 -23
  138. package/src/lib/component/progress-spinner/progress-spinner.component.ts +0 -16
  139. package/src/lib/component/radio/radio.component.html +0 -13
  140. package/src/lib/component/radio/radio.component.scss +0 -14
  141. package/src/lib/component/radio/radio.component.spec.ts +0 -23
  142. package/src/lib/component/radio/radio.component.ts +0 -29
  143. package/src/lib/component/rich-text-editor/rich-text-editor.component.html +0 -10
  144. package/src/lib/component/rich-text-editor/rich-text-editor.component.scss +0 -0
  145. package/src/lib/component/rich-text-editor/rich-text-editor.component.spec.ts +0 -23
  146. package/src/lib/component/rich-text-editor/rich-text-editor.component.ts +0 -13
  147. package/src/lib/component/select/select.component.html +0 -25
  148. package/src/lib/component/select/select.component.scss +0 -0
  149. package/src/lib/component/select/select.component.spec.ts +0 -23
  150. package/src/lib/component/select/select.component.ts +0 -32
  151. package/src/lib/component/slide-toggle/slide-toggle.component.html +0 -7
  152. package/src/lib/component/slide-toggle/slide-toggle.component.scss +0 -0
  153. package/src/lib/component/slide-toggle/slide-toggle.component.spec.ts +0 -23
  154. package/src/lib/component/slide-toggle/slide-toggle.component.ts +0 -13
  155. package/src/lib/component/slider/slider.component.html +0 -11
  156. package/src/lib/component/slider/slider.component.scss +0 -0
  157. package/src/lib/component/slider/slider.component.spec.ts +0 -23
  158. package/src/lib/component/slider/slider.component.ts +0 -13
  159. package/src/lib/component/snack-bar/snack-bar.component.html +0 -1
  160. package/src/lib/component/snack-bar/snack-bar.component.scss +0 -0
  161. package/src/lib/component/snack-bar/snack-bar.component.spec.ts +0 -23
  162. package/src/lib/component/snack-bar/snack-bar.component.ts +0 -10
  163. package/src/lib/component/table/table.component.html +0 -82
  164. package/src/lib/component/table/table.component.scss +0 -17
  165. package/src/lib/component/table/table.component.spec.ts +0 -23
  166. package/src/lib/component/table/table.component.ts +0 -54
  167. package/src/lib/component/textarea/textarea.component.html +0 -22
  168. package/src/lib/component/textarea/textarea.component.scss +0 -3
  169. package/src/lib/component/textarea/textarea.component.spec.ts +0 -23
  170. package/src/lib/component/textarea/textarea.component.ts +0 -13
  171. package/src/lib/component/textbox/textbox.component.html +0 -27
  172. package/src/lib/component/textbox/textbox.component.scss +0 -3
  173. package/src/lib/component/textbox/textbox.component.spec.ts +0 -23
  174. package/src/lib/component/textbox/textbox.component.ts +0 -13
  175. package/src/lib/control-builder/control-builder.component.html +0 -5
  176. package/src/lib/control-builder/control-builder.component.scss +0 -0
  177. package/src/lib/control-builder/control-builder.component.ts +0 -14
  178. package/src/lib/control-type/AutoComplete.ts +0 -6
  179. package/src/lib/control-type/Button.ts +0 -6
  180. package/src/lib/control-type/ButtonToggle.ts +0 -6
  181. package/src/lib/control-type/CheckBox.ts +0 -6
  182. package/src/lib/control-type/DatePicker.ts +0 -6
  183. package/src/lib/control-type/Divider.ts +0 -6
  184. package/src/lib/control-type/Editor.ts +0 -6
  185. package/src/lib/control-type/RichTextEditor.ts +0 -6
  186. package/src/lib/control-type/SlideToggle.ts +0 -6
  187. package/src/lib/control-type/Slider.ts +0 -6
  188. package/src/lib/control-type/select.ts +0 -6
  189. package/src/lib/control-type/textarea.ts +0 -6
  190. package/src/lib/control-type/textbox.ts +0 -6
  191. package/src/lib/falcon-core.module.ts +0 -141
  192. package/src/lib/model/constant.ts +0 -32
  193. package/src/lib/model/enum.ts +0 -151
  194. package/src/lib/module/angularmaterial.module.ts +0 -98
  195. package/src/lib/reactive-field.directive.ts +0 -24
  196. package/src/lib/service/appsetting.service.ts +0 -57
  197. package/src/lib/service/http/generic-http-client.ts +0 -205
  198. package/src/lib/service/http/httpInterceptor.ts +0 -36
  199. package/src/lib/service/http/igeneric-http-client.ts +0 -110
  200. package/src/lib/service/logger.service.ts +0 -75
  201. package/src/lib/service/open-id/TokenHelperService.ts +0 -76
  202. package/src/lib/service/open-id/auth-guard.service.ts +0 -25
  203. package/src/lib/service/open-id/auth.service.ts +0 -179
  204. package/tsconfig.lib.json +0 -15
  205. package/tsconfig.lib.prod.json +0 -10
  206. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,1880 @@
1
+ import * as i0 from '@angular/core';
2
+ import { NgModule, Component, EventEmitter, Output, Input, ViewChild, Directive, Injectable, Inject, inject, APP_INITIALIZER } from '@angular/core';
3
+ import { ScrollingModule } from '@angular/cdk/scrolling';
4
+ import { PortalModule } from '@angular/cdk/portal';
5
+ import { OverlayModule } from '@angular/cdk/overlay';
6
+ import { MatTreeModule } from '@angular/material/tree';
7
+ import * as i3$1 from '@angular/material/tooltip';
8
+ import { MatTooltipModule } from '@angular/material/tooltip';
9
+ import { MatToolbarModule } from '@angular/material/toolbar';
10
+ import { MatTabsModule } from '@angular/material/tabs';
11
+ import * as i8 from '@angular/material/table';
12
+ import { MatTableModule, MatTableDataSource } from '@angular/material/table';
13
+ import * as i7 from '@angular/material/sort';
14
+ import { MatSortModule, MatSort } from '@angular/material/sort';
15
+ import * as i3$4 from '@angular/material/snack-bar';
16
+ import { MatSnackBarModule, MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';
17
+ import * as i1$3 from '@angular/material/slide-toggle';
18
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
19
+ import * as i2$3 from '@angular/material/slider';
20
+ import { MatSliderModule } from '@angular/material/slider';
21
+ import { MatSidenavModule } from '@angular/material/sidenav';
22
+ import * as i3$3 from '@angular/material/select';
23
+ import { MatSelectModule } from '@angular/material/select';
24
+ import * as i2$1 from '@angular/material/core';
25
+ import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
26
+ import * as i1$1 from '@angular/material/radio';
27
+ import { MatRadioModule } from '@angular/material/radio';
28
+ import * as i1$a from '@angular/material/progress-spinner';
29
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
30
+ import * as i1$9 from '@angular/material/progress-bar';
31
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
32
+ import * as i6$1 from '@angular/material/paginator';
33
+ import { MatPaginatorModule, MatPaginator } from '@angular/material/paginator';
34
+ import * as i5$2 from '@angular/material/menu';
35
+ import { MatMenuModule } from '@angular/material/menu';
36
+ import * as i3$6 from '@angular/material/list';
37
+ import { MatListModule } from '@angular/material/list';
38
+ import * as i3 from '@angular/material/input';
39
+ import { MatInputModule } from '@angular/material/input';
40
+ import * as i2$2 from '@angular/material/icon';
41
+ import { MatIconModule } from '@angular/material/icon';
42
+ import { MatGridListModule } from '@angular/material/grid-list';
43
+ import { MatExpansionModule } from '@angular/material/expansion';
44
+ import * as i3$5 from '@angular/material/divider';
45
+ import { MatDividerModule } from '@angular/material/divider';
46
+ import * as i2$5 from '@angular/material/dialog';
47
+ import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
48
+ import * as i1 from '@angular/material/datepicker';
49
+ import { MatDatepickerModule } from '@angular/material/datepicker';
50
+ import { MatStepperModule } from '@angular/material/stepper';
51
+ import * as i5$1 from '@angular/material/chips';
52
+ import { MatChipsModule } from '@angular/material/chips';
53
+ import * as i1$2 from '@angular/material/checkbox';
54
+ import { MatCheckboxModule } from '@angular/material/checkbox';
55
+ import { MatCardModule } from '@angular/material/card';
56
+ import * as i1$4 from '@angular/material/button-toggle';
57
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
58
+ import * as i1$6 from '@angular/material/button';
59
+ import { MatButtonModule } from '@angular/material/button';
60
+ import * as i1$8 from '@angular/material/bottom-sheet';
61
+ import { MatBottomSheetModule, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';
62
+ import { MatBadgeModule } from '@angular/material/badge';
63
+ import * as i1$5 from '@angular/material/autocomplete';
64
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
65
+ import * as i2$4 from '@angular/cdk/drag-drop';
66
+ import { DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';
67
+ import { CdkTreeModule } from '@angular/cdk/tree';
68
+ import { CdkTableModule } from '@angular/cdk/table';
69
+ import { CdkStepperModule } from '@angular/cdk/stepper';
70
+ import { ClipboardModule } from '@angular/cdk/clipboard';
71
+ import { A11yModule } from '@angular/cdk/a11y';
72
+ import * as i2 from '@angular/material/form-field';
73
+ import * as i4 from '@angular/common';
74
+ import { CommonModule } from '@angular/common';
75
+ import * as i5 from '@angular/forms';
76
+ import { FormGroup, FormControl, FormsModule, ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';
77
+ import * as i6 from '@angular/router';
78
+ import { RouterModule } from '@angular/router';
79
+ import * as i3$2 from '@angular/cdk/text-field';
80
+ import { startWith, map } from 'rxjs/operators';
81
+ import { ENTER, COMMA } from '@angular/cdk/keycodes';
82
+ import * as i4$1 from '@kolkov/angular-editor';
83
+ import { AngularEditorModule } from '@kolkov/angular-editor';
84
+ import * as i1$7 from '@angular/common/http';
85
+ import { HttpRequest, HttpEventType, provideHttpClient, withInterceptors } from '@angular/common/http';
86
+ import { Observable, Subject, from } from 'rxjs';
87
+ import { UserManager } from 'oidc-client';
88
+
89
+ class AngularmaterialModule {
90
+ }
91
+ AngularmaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AngularmaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
92
+ AngularmaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: AngularmaterialModule, exports: [A11yModule,
93
+ ClipboardModule,
94
+ CdkStepperModule,
95
+ CdkTableModule,
96
+ CdkTreeModule,
97
+ DragDropModule,
98
+ MatAutocompleteModule,
99
+ MatBadgeModule,
100
+ MatBottomSheetModule,
101
+ MatButtonModule,
102
+ MatButtonToggleModule,
103
+ MatCardModule,
104
+ MatCheckboxModule,
105
+ MatChipsModule,
106
+ MatStepperModule,
107
+ MatDatepickerModule,
108
+ MatDialogModule,
109
+ MatDividerModule,
110
+ MatExpansionModule,
111
+ MatGridListModule,
112
+ MatIconModule,
113
+ MatInputModule,
114
+ MatListModule,
115
+ MatMenuModule,
116
+ MatNativeDateModule,
117
+ MatPaginatorModule,
118
+ MatProgressBarModule,
119
+ MatProgressSpinnerModule,
120
+ MatRadioModule,
121
+ MatRippleModule,
122
+ MatSelectModule,
123
+ MatSidenavModule,
124
+ MatSliderModule,
125
+ MatSlideToggleModule,
126
+ MatSnackBarModule,
127
+ MatSortModule,
128
+ MatTableModule,
129
+ MatTabsModule,
130
+ MatToolbarModule,
131
+ MatTooltipModule,
132
+ MatTreeModule,
133
+ OverlayModule,
134
+ PortalModule,
135
+ ScrollingModule] });
136
+ AngularmaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AngularmaterialModule, imports: [A11yModule,
137
+ ClipboardModule,
138
+ CdkStepperModule,
139
+ CdkTableModule,
140
+ CdkTreeModule,
141
+ DragDropModule,
142
+ MatAutocompleteModule,
143
+ MatBadgeModule,
144
+ MatBottomSheetModule,
145
+ MatButtonModule,
146
+ MatButtonToggleModule,
147
+ MatCardModule,
148
+ MatCheckboxModule,
149
+ MatChipsModule,
150
+ MatStepperModule,
151
+ MatDatepickerModule,
152
+ MatDialogModule,
153
+ MatDividerModule,
154
+ MatExpansionModule,
155
+ MatGridListModule,
156
+ MatIconModule,
157
+ MatInputModule,
158
+ MatListModule,
159
+ MatMenuModule,
160
+ MatNativeDateModule,
161
+ MatPaginatorModule,
162
+ MatProgressBarModule,
163
+ MatProgressSpinnerModule,
164
+ MatRadioModule,
165
+ MatRippleModule,
166
+ MatSelectModule,
167
+ MatSidenavModule,
168
+ MatSliderModule,
169
+ MatSlideToggleModule,
170
+ MatSnackBarModule,
171
+ MatSortModule,
172
+ MatTableModule,
173
+ MatTabsModule,
174
+ MatToolbarModule,
175
+ MatTooltipModule,
176
+ MatTreeModule,
177
+ OverlayModule,
178
+ PortalModule,
179
+ ScrollingModule] });
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AngularmaterialModule, decorators: [{
181
+ type: NgModule,
182
+ args: [{
183
+ declarations: [],
184
+ exports: [
185
+ A11yModule,
186
+ ClipboardModule,
187
+ CdkStepperModule,
188
+ CdkTableModule,
189
+ CdkTreeModule,
190
+ DragDropModule,
191
+ MatAutocompleteModule,
192
+ MatBadgeModule,
193
+ MatBottomSheetModule,
194
+ MatButtonModule,
195
+ MatButtonToggleModule,
196
+ MatCardModule,
197
+ MatCheckboxModule,
198
+ MatChipsModule,
199
+ MatStepperModule,
200
+ MatDatepickerModule,
201
+ MatDialogModule,
202
+ MatDividerModule,
203
+ MatExpansionModule,
204
+ MatGridListModule,
205
+ MatIconModule,
206
+ MatInputModule,
207
+ MatListModule,
208
+ MatMenuModule,
209
+ MatNativeDateModule,
210
+ MatPaginatorModule,
211
+ MatProgressBarModule,
212
+ MatProgressSpinnerModule,
213
+ MatRadioModule,
214
+ MatRippleModule,
215
+ MatSelectModule,
216
+ MatSidenavModule,
217
+ MatSliderModule,
218
+ MatSlideToggleModule,
219
+ MatSnackBarModule,
220
+ MatSortModule,
221
+ MatTableModule,
222
+ MatTabsModule,
223
+ MatToolbarModule,
224
+ MatTooltipModule,
225
+ MatTreeModule,
226
+ OverlayModule,
227
+ PortalModule,
228
+ ScrollingModule
229
+ ]
230
+ }]
231
+ }] });
232
+
233
+ class TextboxComponent {
234
+ }
235
+ TextboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TextboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
236
+ TextboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: TextboxComponent, selector: "falcon-textbox", ngImport: i0, template: "<mat-form-field [formGroup]=\"formGroup\" [appearance]=\"control.appearance\" class=\"textbox-form\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [type]=\"control.type\" [formControlName]=\"control.formControlName\" [class]=\"control.class\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n\n <span matPrefix [matTooltip]=\"control.prefix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}}&nbsp;&nbsp;</span>\n <span matSuffix [matTooltip]=\"control.suffix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}}&nbsp;&nbsp;</span>\n <mat-hint *ngIf=\"control.hint.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </mat-hint>\n <ng-template #elseBlock>\n <mat-hint>{{control.hint.text}}</mat-hint>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\" routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>", styles: [".textbox-form{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TextboxComponent, decorators: [{
238
+ type: Component,
239
+ args: [{ selector: 'falcon-textbox', template: "<mat-form-field [formGroup]=\"formGroup\" [appearance]=\"control.appearance\" class=\"textbox-form\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [type]=\"control.type\" [formControlName]=\"control.formControlName\" [class]=\"control.class\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n\n <span matPrefix [matTooltip]=\"control.prefix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}}&nbsp;&nbsp;</span>\n <span matSuffix [matTooltip]=\"control.suffix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}}&nbsp;&nbsp;</span>\n <mat-hint *ngIf=\"control.hint.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </mat-hint>\n <ng-template #elseBlock>\n <mat-hint>{{control.hint.text}}</mat-hint>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\" routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>", styles: [".textbox-form{width:100%}\n"] }]
240
+ }] });
241
+
242
+ class TextareaComponent {
243
+ }
244
+ TextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
245
+ TextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: TextareaComponent, selector: "falcon-textarea", ngImport: i0, template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\" [floatLabel]=\"control.floatLabel\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\" class=\"textarea-form\">\n <mat-label>{{control.label}}</mat-label>\n\n <textarea matInput [formControlName]=\"control.formControlName\" [placeholder]=\"control.placeHolder\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [cdkTextareaAutosize]=\"control.textAreaProperty.cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"control.textAreaProperty.cdkAutosizeMinRows\"\n [cdkAutosizeMaxRows]=\"control.textAreaProperty.cdkAutosizeMaxRows\" [rows]=\"control.textAreaProperty.rows\"\n [cols]=\"control.textAreaProperty.cols\"></textarea>\n\n <span matPrefix [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}}</span>\n <span matSuffix [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}}</span>\n\n\n <mat-hint>{{control.hint.text}}</mat-hint>\n\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>", styles: [".textarea-form{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "directive", type: i3$2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TextareaComponent, decorators: [{
247
+ type: Component,
248
+ args: [{ selector: 'falcon-textarea', template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\" [floatLabel]=\"control.floatLabel\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\" class=\"textarea-form\">\n <mat-label>{{control.label}}</mat-label>\n\n <textarea matInput [formControlName]=\"control.formControlName\" [placeholder]=\"control.placeHolder\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [cdkTextareaAutosize]=\"control.textAreaProperty.cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"control.textAreaProperty.cdkAutosizeMinRows\"\n [cdkAutosizeMaxRows]=\"control.textAreaProperty.cdkAutosizeMaxRows\" [rows]=\"control.textAreaProperty.rows\"\n [cols]=\"control.textAreaProperty.cols\"></textarea>\n\n <span matPrefix [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}}</span>\n <span matSuffix [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}}</span>\n\n\n <mat-hint>{{control.hint.text}}</mat-hint>\n\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>", styles: [".textarea-form{width:100%}\n"] }]
249
+ }] });
250
+
251
+ class SelectComponent {
252
+ constructor() {
253
+ this.selectionChange = new EventEmitter();
254
+ }
255
+ ngOnInit() {
256
+ if (this.formGroup === undefined) {
257
+ this.formGroup = new FormGroup({
258
+ default: new FormControl(),
259
+ });
260
+ }
261
+ }
262
+ selectChange($event) {
263
+ this.selectionChange.emit($event.value);
264
+ if (this.control.event !== undefined)
265
+ this.control.event.change?.emit($event);
266
+ }
267
+ }
268
+ SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SelectComponent, selector: "falcon-select", outputs: { selectionChange: "selectionChange" }, ngImport: i0, template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\" [floatLabel]=\"control.floatLabel\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-select [multiple]=\"control.selectProperty.multiple\" (selectionChange)=\"selectChange($event)\"\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [placeholder]=\"control.placeHolder\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\" [(value)]=\"control.value\">\n <mat-option *ngFor=\"let item of control.options\" [value]=\"item.key\" [disabled]=\"item.disabled\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"control.hint?.show\">\n <ng-container *ngIf=\"control.hint?.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint?.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </ng-container>\n <ng-template #elseBlock>\n <span>{{control.hint.text}}</span>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\" routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n </mat-hint>\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: i2$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SelectComponent, decorators: [{
271
+ type: Component,
272
+ args: [{ selector: 'falcon-select', template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\" [floatLabel]=\"control.floatLabel\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-select [multiple]=\"control.selectProperty.multiple\" (selectionChange)=\"selectChange($event)\"\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [placeholder]=\"control.placeHolder\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\" [(value)]=\"control.value\">\n <mat-option *ngFor=\"let item of control.options\" [value]=\"item.key\" [disabled]=\"item.disabled\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"control.hint?.show\">\n <ng-container *ngIf=\"control.hint?.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint?.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </ng-container>\n <ng-template #elseBlock>\n <span>{{control.hint.text}}</span>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\" routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n </mat-hint>\n</mat-form-field>" }]
273
+ }], ctorParameters: function () { return []; }, propDecorators: { selectionChange: [{
274
+ type: Output
275
+ }] } });
276
+
277
+ class DatePickerComponent {
278
+ }
279
+ DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
280
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: DatePickerComponent, selector: "falcon-date-picker", ngImport: i0, template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [floatLabel]=\"control.floatLabel\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon *ngIf=\"control.suffix.isIcon\">keyboard_arrow_down</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: i1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DatePickerComponent, decorators: [{
282
+ type: Component,
283
+ args: [{ selector: 'falcon-date-picker', template: "<mat-form-field [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [floatLabel]=\"control.floatLabel\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon *ngIf=\"control.suffix.isIcon\">keyboard_arrow_down</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>" }]
284
+ }] });
285
+
286
+ class RadioComponent {
287
+ constructor() {
288
+ this.radioGroupChange = new EventEmitter();
289
+ }
290
+ ngOnInit() {
291
+ console.log(this.control.options);
292
+ if (this.formGroup === undefined) {
293
+ this.formGroup = new FormGroup({
294
+ default: new FormControl(),
295
+ });
296
+ }
297
+ }
298
+ radioGroupChangeEvent($event) {
299
+ this.radioGroupChange.emit($event.value);
300
+ }
301
+ }
302
+ RadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
303
+ RadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: RadioComponent, selector: "falcon-radio", outputs: { radioGroupChange: "radioGroupChange" }, ngImport: i0, template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formGroup]=\"formGroup\">\n <label class=\"radio-label-padding\">{{control.label | titlecase}}</label>\n <mat-radio-group [attr.aria-label]=\"control.label\"\n [labelPosition]=\"control.appearance\"\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n (change)=\"radioGroupChangeEvent($event)\">\n <mat-radio-button [ngClass]=\"control.class\"\n *ngFor=\"let item of control.options\" [value]=\"item.value\">{{item.viewValue | titlecase}}\n </mat-radio-button>\n </mat-radio-group>\n</div>", styles: [".radio-group-column{display:flex;flex-direction:column;margin:15px 0}.radio-group-row{display:flex;flex-direction:row;margin:15px 0}.radio-button{margin:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i1$1.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }] });
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: RadioComponent, decorators: [{
305
+ type: Component,
306
+ args: [{ selector: 'falcon-radio', template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formGroup]=\"formGroup\">\n <label class=\"radio-label-padding\">{{control.label | titlecase}}</label>\n <mat-radio-group [attr.aria-label]=\"control.label\"\n [labelPosition]=\"control.appearance\"\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n (change)=\"radioGroupChangeEvent($event)\">\n <mat-radio-button [ngClass]=\"control.class\"\n *ngFor=\"let item of control.options\" [value]=\"item.value\">{{item.viewValue | titlecase}}\n </mat-radio-button>\n </mat-radio-group>\n</div>", styles: [".radio-group-column{display:flex;flex-direction:column;margin:15px 0}.radio-group-row{display:flex;flex-direction:row;margin:15px 0}.radio-button{margin:5px}\n"] }]
307
+ }], propDecorators: { radioGroupChange: [{
308
+ type: Output
309
+ }] } });
310
+
311
+ class CheckboxComponent {
312
+ change($event) {
313
+ if (this.control.event !== undefined)
314
+ this.control?.event?.change?.emit($event);
315
+ }
316
+ }
317
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
318
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: CheckboxComponent, selector: "falcon-checkbox", ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <mat-checkbox [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [color]=\"control.color != null ? control.color : 'accent'\" [labelPosition]=\"control.labelPosition\"\n [formControlName]=\"control.formControlName\" (change)=\"change($event)\">\n {{control.label}}</mat-checkbox>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: CheckboxComponent, decorators: [{
320
+ type: Component,
321
+ args: [{ selector: 'falcon-checkbox', template: "<div [formGroup]=\"formGroup\">\n <mat-checkbox [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [color]=\"control.color != null ? control.color : 'accent'\" [labelPosition]=\"control.labelPosition\"\n [formControlName]=\"control.formControlName\" (change)=\"change($event)\">\n {{control.label}}</mat-checkbox>\n</div>" }]
322
+ }] });
323
+
324
+ class SlideToggleComponent {
325
+ }
326
+ SlideToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SlideToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
327
+ SlideToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SlideToggleComponent, selector: "falcon-slide-toggle", ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <mat-slide-toggle [labelPosition]=\"control.appearance\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formControlName]=\"control.formControlName\" [color]=\"control.color\">\n {{control.label}}\n </mat-slide-toggle>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SlideToggleComponent, decorators: [{
329
+ type: Component,
330
+ args: [{ selector: 'falcon-slide-toggle', template: "<div [formGroup]=\"formGroup\">\n <mat-slide-toggle [labelPosition]=\"control.appearance\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formControlName]=\"control.formControlName\" [color]=\"control.color\">\n {{control.label}}\n </mat-slide-toggle>\n</div>" }]
331
+ }] });
332
+
333
+ class SliderComponent {
334
+ }
335
+ SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
+ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SliderComponent, selector: "falcon-slider", ngImport: i0, template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\" [formGroup]=\"formGroup\">\n<mat-label>{{control.label}}</mat-label>&nbsp;&nbsp;&nbsp;\n <mat-slider\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [color]=\"control.color\"\n [max]=\"control.sliderProperty.max\"\n [min]=\"control.sliderProperty.min\"\n [step]=\"control.sliderProperty.step\">\n <input matSliderThumb [formControlName]=\"control.formControlName\">\n </mat-slider>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i2$3.MatSlider, selector: "mat-slider", inputs: ["color", "disableRipple", "disabled", "discrete", "showTickMarks", "min", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i2$3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SliderComponent, decorators: [{
338
+ type: Component,
339
+ args: [{ selector: 'falcon-slider', template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\" [formGroup]=\"formGroup\">\n<mat-label>{{control.label}}</mat-label>&nbsp;&nbsp;&nbsp;\n <mat-slider\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [color]=\"control.color\"\n [max]=\"control.sliderProperty.max\"\n [min]=\"control.sliderProperty.min\"\n [step]=\"control.sliderProperty.step\">\n <input matSliderThumb [formControlName]=\"control.formControlName\">\n </mat-slider>\n</div>" }]
340
+ }] });
341
+
342
+ class ButtonToggleComponent {
343
+ constructor() {
344
+ this.toggleGroupChange = new EventEmitter();
345
+ }
346
+ ngOnInit() {
347
+ if (this.formGroup === undefined) {
348
+ this.formGroup = new FormGroup({
349
+ default: new FormControl()
350
+ });
351
+ }
352
+ }
353
+ toggleChange($event) {
354
+ this.toggleGroupChange.emit($event.value);
355
+ }
356
+ }
357
+ ButtonToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ButtonToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
358
+ ButtonToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ButtonToggleComponent, selector: "falcon-button-toggle", outputs: { toggleGroupChange: "toggleGroupChange" }, ngImport: i0, template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formGroup]=\"formGroup\">\n <mat-label [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n *ngIf=\"control.label != undefined\">\n {{control.label | titlecase}}\n </mat-label>\n <mat-button-toggle-group\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [appearance]=\"control.appearance\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\" [attr.aria-label]=\"control.label\"\n class=\"botton-toggle\" (change)=\"toggleChange($event)\">\n <mat-button-toggle *ngFor=\"let item of control.options\" [value]=\"item?.value\"\n [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\">\n <mat-icon [ngClass]=\"item?.class\" aria-hidden=\"false\" aria-label=\"item icon\" *ngIf=\"item?.icon != undefined\">\n {{item?.icon}}\n </mat-icon>\n {{item.viewValue | titlecase}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }] });
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ButtonToggleComponent, decorators: [{
360
+ type: Component,
361
+ args: [{ selector: 'falcon-button-toggle', template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [formGroup]=\"formGroup\">\n <mat-label [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n *ngIf=\"control.label != undefined\">\n {{control.label | titlecase}}\n </mat-label>\n <mat-button-toggle-group\n [formControlName]=\"control.formControlName != undefined ? control.formControlName : 'default'\"\n [appearance]=\"control.appearance\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\" [attr.aria-label]=\"control.label\"\n class=\"botton-toggle\" (change)=\"toggleChange($event)\">\n <mat-button-toggle *ngFor=\"let item of control.options\" [value]=\"item?.value\"\n [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\">\n <mat-icon [ngClass]=\"item?.class\" aria-hidden=\"false\" aria-label=\"item icon\" *ngIf=\"item?.icon != undefined\">\n {{item?.icon}}\n </mat-icon>\n {{item.viewValue | titlecase}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>" }]
362
+ }], propDecorators: { toggleGroupChange: [{
363
+ type: Output
364
+ }] } });
365
+
366
+ class AutoCompleteComponent {
367
+ constructor() {
368
+ this.autoCompleteControl = new FormControl();
369
+ }
370
+ ngOnInit() {
371
+ this.filteredOptions = this.autoCompleteControl.valueChanges.pipe(startWith(''), map(value => this._filter(value)));
372
+ }
373
+ _filter(value) {
374
+ const filterValue = value.toLowerCase();
375
+ return this.control.options.filter((option) => option?.key?.toLowerCase().includes(filterValue));
376
+ }
377
+ optionSelected(value) {
378
+ this.formGroup?.get(this.control?.formControlName)?.setValue(value);
379
+ }
380
+ }
381
+ AutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AutoCompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
382
+ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: AutoCompleteComponent, selector: "falcon-auto-complete", ngImport: i0, template: "<mat-form-field *ngIf=\"control.appearance != 'plain'; else plainInput\" [appearance]=\"control.appearance\"\n [formGroup]=\"formGroup\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [formControl]=\"autoCompleteControl\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matAutocomplete]=\"auto\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='optionSelected($event.option.viewValue)'>\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n\n <span matPrefix [matTooltip]=\"control.prefix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}} &nbsp;&nbsp;</span>\n <span matSuffix [matTooltip]=\"control.suffix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}} &nbsp;&nbsp;</span>\n\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>\n\n<ng-template #plainInput>\n <div [formGroup]=\"formGroup\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <input type=\"text\" [formControl]=\"autoCompleteControl\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matAutocomplete]=\"auto\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n class=\"bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500\">\n </div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='optionSelected($event.option.viewValue)'>\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AutoCompleteComponent, decorators: [{
384
+ type: Component,
385
+ args: [{ selector: 'falcon-auto-complete', template: "<mat-form-field *ngIf=\"control.appearance != 'plain'; else plainInput\" [appearance]=\"control.appearance\"\n [formGroup]=\"formGroup\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <input matInput [formControl]=\"autoCompleteControl\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matAutocomplete]=\"auto\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='optionSelected($event.option.viewValue)'>\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n\n <span matPrefix [matTooltip]=\"control.prefix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.prefix.isIcon}\">{{control.prefix.text}} &nbsp;&nbsp;</span>\n <span matSuffix [matTooltip]=\"control.suffix.toolTipText!\"\n [ngClass]=\"{'material-icons': control.suffix.isIcon}\">{{control.suffix.text}} &nbsp;&nbsp;</span>\n\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</mat-form-field>\n\n<ng-template #plainInput>\n <div [formGroup]=\"formGroup\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <input type=\"text\" [formControl]=\"autoCompleteControl\" [formControlName]=\"control.formControlName\"\n [placeholder]=\"control.placeHolder\" [type]=\"control.type\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matAutocomplete]=\"auto\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n class=\"bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500\">\n </div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='optionSelected($event.option.viewValue)'>\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n</ng-template>" }]
386
+ }], ctorParameters: function () { return []; } });
387
+
388
+ class ChipComponent {
389
+ constructor(fb) {
390
+ this.fb = fb;
391
+ this.separatorKeysCodes = [ENTER, COMMA];
392
+ this.selectable = true;
393
+ this.removable = true;
394
+ this.addOnBlur = true;
395
+ this.autoCompleteControl = new FormControl('');
396
+ this.filteredOptions = this.autoCompleteControl.valueChanges.pipe(startWith(null), map((value) => value ? this._filter(value) : this.control?.options.slice()));
397
+ }
398
+ ngOnInit() {
399
+ setTimeout(() => {
400
+ if (this.control.chipSelectedOptions.length > 0) {
401
+ this.items = this.formGroup.controls[this.control.formControlName];
402
+ this.control.chipSelectedOptions.forEach((value) => {
403
+ this.items.controls.push(this.createItem(value.value));
404
+ });
405
+ }
406
+ });
407
+ }
408
+ add(event) {
409
+ const input = event.input;
410
+ const value = event.value;
411
+ if ((value || '').trim()) {
412
+ this.control.chipSelectedOptions.push({
413
+ key: value.trim(),
414
+ value: value.trim(),
415
+ });
416
+ this.items = this.formGroup.get(this.control.formControlName);
417
+ this.items.push(this.createItem(value));
418
+ }
419
+ if (input) {
420
+ input.value = '';
421
+ }
422
+ }
423
+ createItem(value) {
424
+ return this.fb.group({
425
+ key: value,
426
+ value: value,
427
+ });
428
+ }
429
+ remove(option) {
430
+ const index = this.control.chipSelectedOptions.indexOf(option);
431
+ if (index >= 0) {
432
+ this.control.chipSelectedOptions.splice(index, 1);
433
+ this.items.removeAt(index);
434
+ }
435
+ }
436
+ optionSelected(event) {
437
+ this.control.chipSelectedOptions.push({
438
+ key: event.option.value,
439
+ value: event.option.value,
440
+ });
441
+ this.items = this.formGroup.get(this.control.formControlName);
442
+ this.items.push(this.createItem(event.option.value));
443
+ this.chipAutoCompleteInput.nativeElement.value = '';
444
+ this.formGroup.get(this.control.formControlName)?.setValue(null);
445
+ }
446
+ _filter(value) {
447
+ if (value !== null) {
448
+ const filterValue = value.toLowerCase();
449
+ return this.control?.options?.filter((option) => option.value.toLowerCase().includes(filterValue));
450
+ }
451
+ }
452
+ drop(event) {
453
+ moveItemInArray(this.control.options, event.previousIndex, event.currentIndex);
454
+ }
455
+ keyboardEnterEvent(event) {
456
+ if (this.control.event !== undefined)
457
+ this.control.event.keyboardEnter?.emit(event);
458
+ this.chipTextInput.nativeElement.value = '';
459
+ }
460
+ }
461
+ ChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ChipComponent, deps: [{ token: i5.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
462
+ ChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ChipComponent, selector: "falcon-chip", inputs: { control: "control", formGroup: "formGroup" }, viewQueries: [{ propertyName: "chipAutoCompleteInput", first: true, predicate: ["chipAutoCompleteInput"], descendants: true }, { propertyName: "chipTextInput", first: true, predicate: ["chipTextInput"], descendants: true }, { propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"control.type\">\n <mat-form-field class=\"chip-list\" *ngSwitchCase=\"'search'\" [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-chip-grid #chipGrid aria-label=\"item selection\">\n <mat-chip-row *ngFor=\"let option of control.chipSelectedOptions\" [removable]=\"removable\"\n (removed)=\"remove(option)\">\n {{option.value}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput #chipAutoCompleteInput [formControl]=\"autoCompleteControl\"\n [formArrayName]=\"control.formControlName\" [placeholder]=\"control.placeHolder\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\" [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"add($event)\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n (keyup.enter)=\"keyboardEnterEvent($event)\">\n\n </mat-chip-grid>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n <mat-hint>\n <ng-container *ngIf=\"control.hint.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </ng-container>\n <ng-template #elseBlock>\n <span>{{control.hint.text}}</span>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field class=\"chip-list\" *ngSwitchCase=\"'text'\" [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-chip-grid #chipGrid aria-label=\"item selection\">\n <mat-chip-row *ngFor=\"let option of control.chipSelectedOptions\" [value]=\"selectable\" [removable]=\"removable\"\n (removed)=\"remove(option)\">\n {{option?.value}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput #chipTextInput [formArrayName]=\"control.formControlName\" multiple\n [placeholder]=\"control.placeHolder\"\n [matChipInputFor]=\"chipGrid\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"add($event)\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n (keyup.enter)=\"keyboardEnterEvent($event)\">\n\n </mat-chip-grid>\n </mat-form-field>\n\n <mat-chip-listbox aria-label=\"Chips selection\" *ngSwitchDefault>\n <mat-chip color=\"{{control.color}}\" selected>{{control.label}}</mat-chip>\n </mat-chip-listbox>\n\n\n <mat-chip-set class=\"chip-list\" cdkDropList cdkDropListOrientation=\"horizontal\" (cdkDropListDropped)=\"drop($event)\"\n *ngSwitchCase=\"'dragDrop'\" class=\"example-chip\">\n <mat-chip class=\"example-box\" cdkDrag *ngFor=\"let option of control?.options\">\n {{option?.value}}\n </mat-chip>\n </mat-chip-set>\n\n</ng-container>", styles: [".chip-list{width:100%}\n"], dependencies: [{ kind: "directive", type: i2$4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i5$1.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i5$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "component", type: i5$1.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "value"], outputs: ["change"] }, { kind: "directive", type: i5$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i5$1.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i5$1.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ChipComponent, decorators: [{
464
+ type: Component,
465
+ args: [{ selector: 'falcon-chip', template: "<ng-container [ngSwitch]=\"control.type\">\n <mat-form-field class=\"chip-list\" *ngSwitchCase=\"'search'\" [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-chip-grid #chipGrid aria-label=\"item selection\">\n <mat-chip-row *ngFor=\"let option of control.chipSelectedOptions\" [removable]=\"removable\"\n (removed)=\"remove(option)\">\n {{option.value}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput #chipAutoCompleteInput [formControl]=\"autoCompleteControl\"\n [formArrayName]=\"control.formControlName\" [placeholder]=\"control.placeHolder\" [ngStyle]=\"control.style\"\n [ngClass]=\"control.class\" [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"add($event)\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n (keyup.enter)=\"keyboardEnterEvent($event)\">\n\n </mat-chip-grid>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\n <mat-option *ngFor=\"let item of filteredOptions | async\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n <mat-hint>\n <ng-container *ngIf=\"control.hint.link?.isLink; else elseBlock\">\n <ng-container *ngIf=\"control.hint.link?.queryParams !== undefined; else withoutQueryBlock\">\n <a [routerLink]=\"[control.hint.link?.routerLink]\" [queryParams]=\"{ query: control.hint.link?.queryParams }\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-container>\n </ng-container>\n <ng-template #elseBlock>\n <span>{{control.hint.text}}</span>\n </ng-template>\n <ng-template #withoutQueryBlock>\n <a [routerLink]=\"[control.hint.link?.routerLink]\"\n routerLinkActive=\"router-link-active\">{{control.hint.text}}</a>\n </ng-template>\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field class=\"chip-list\" *ngSwitchCase=\"'text'\" [appearance]=\"control.appearance\" [formGroup]=\"formGroup\"\n [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <mat-label>{{control.label}}</mat-label>\n <mat-chip-grid #chipGrid aria-label=\"item selection\">\n <mat-chip-row *ngFor=\"let option of control.chipSelectedOptions\" [value]=\"selectable\" [removable]=\"removable\"\n (removed)=\"remove(option)\">\n {{option?.value}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput #chipTextInput [formArrayName]=\"control.formControlName\" multiple\n [placeholder]=\"control.placeHolder\"\n [matChipInputFor]=\"chipGrid\" [ngStyle]=\"control.style\" [ngClass]=\"control.class\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"add($event)\"\n [required]=\"formGroup.get(control.formControlName)?.errors !== null && formGroup.get(control.formControlName)?.errors?.['required']\"\n (keyup.enter)=\"keyboardEnterEvent($event)\">\n\n </mat-chip-grid>\n </mat-form-field>\n\n <mat-chip-listbox aria-label=\"Chips selection\" *ngSwitchDefault>\n <mat-chip color=\"{{control.color}}\" selected>{{control.label}}</mat-chip>\n </mat-chip-listbox>\n\n\n <mat-chip-set class=\"chip-list\" cdkDropList cdkDropListOrientation=\"horizontal\" (cdkDropListDropped)=\"drop($event)\"\n *ngSwitchCase=\"'dragDrop'\" class=\"example-chip\">\n <mat-chip class=\"example-box\" cdkDrag *ngFor=\"let option of control?.options\">\n {{option?.value}}\n </mat-chip>\n </mat-chip-set>\n\n</ng-container>", styles: [".chip-list{width:100%}\n"] }]
466
+ }], ctorParameters: function () { return [{ type: i5.FormBuilder }]; }, propDecorators: { control: [{
467
+ type: Input
468
+ }], formGroup: [{
469
+ type: Input
470
+ }], chipAutoCompleteInput: [{
471
+ type: ViewChild,
472
+ args: ['chipAutoCompleteInput']
473
+ }], chipTextInput: [{
474
+ type: ViewChild,
475
+ args: ['chipTextInput']
476
+ }], matAutocomplete: [{
477
+ type: ViewChild,
478
+ args: ['auto']
479
+ }] } });
480
+
481
+ class ButtonComponent {
482
+ constructor() {
483
+ this.btnClick = new EventEmitter();
484
+ }
485
+ childBtnClick() {
486
+ this.btnClick.emit("Button Click Event");
487
+ }
488
+ }
489
+ ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
490
+ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ButtonComponent, selector: "falcon-button", inputs: { control: "control", formGroup: "formGroup" }, outputs: { btnClick: "btnClick" }, ngImport: i0, template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <ng-container [ngSwitch]=\"control.appearance\">\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [color]=\"control.color\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\" mat-button *ngSwitchCase=\"0\">\n <mat-icon *ngIf=\"control?.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-raised-button *ngSwitchCase=\"1\">\n <mat-icon *ngIf=\"control.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-stroked-button *ngSwitchCase=\"2\">\n <mat-icon *ngIf=\"control.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-flat-button *ngSwitchCase=\"3\">\n <mat-icon *ngIf=\"control.suffix.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-icon-button [attr.aria-label]=\"control.label\" *ngSwitchCase=\"4\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\" mat-fab\n [attr.aria-label]=\"control.label\" *ngSwitchCase=\"5\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\" mat-mini-fab\n [attr.aria-label]=\"control.label\" *ngSwitchCase=\"6\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <a mat-stroked-button *ngSwitchCase=\"7\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\" routerLink=\"[]\">{{control.label}}</a>\n <a mat-stroked-button *ngSwitchCase=\"8\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\"\n href=\"{{control.value}}\">{{control.label}}</a>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1$6.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i1$6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i1$6.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i1$6.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ButtonComponent, decorators: [{
492
+ type: Component,
493
+ args: [{ selector: 'falcon-button', template: "<div [ngStyle]=\"control.style\" [ngClass]=\"control.class\">\n <ng-container [ngSwitch]=\"control.appearance\">\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [color]=\"control.color\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\" mat-button *ngSwitchCase=\"0\">\n <mat-icon *ngIf=\"control?.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-raised-button *ngSwitchCase=\"1\">\n <mat-icon *ngIf=\"control.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-stroked-button *ngSwitchCase=\"2\">\n <mat-icon *ngIf=\"control.suffix?.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-flat-button *ngSwitchCase=\"3\">\n <mat-icon *ngIf=\"control.suffix.isIcon\" style=\"margin-bottom: 1px;\">\n {{control.suffix.text}}</mat-icon>&nbsp;{{control.label}}\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\"\n mat-icon-button [attr.aria-label]=\"control.label\" *ngSwitchCase=\"4\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\" mat-fab\n [attr.aria-label]=\"control.label\" *ngSwitchCase=\"5\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <button [disabled]=\"control.disabled\" (click)=\"childBtnClick()\"\n [type]=\"control.type\" [ngClass]=\"control.class\"\n [color]=\"control.color\" [ngStyle]=\"control.style\" mat-mini-fab\n [attr.aria-label]=\"control.label\" *ngSwitchCase=\"6\">\n <mat-icon>{{control.label}}</mat-icon>\n </button>\n <a mat-stroked-button *ngSwitchCase=\"7\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\" routerLink=\"[]\">{{control.label}}</a>\n <a mat-stroked-button *ngSwitchCase=\"8\" [ngClass]=\"control.class\"\n [ngStyle]=\"control.style\"\n href=\"{{control.value}}\">{{control.label}}</a>\n </ng-container>\n</div>" }]
494
+ }], propDecorators: { control: [{
495
+ type: Input
496
+ }], formGroup: [{
497
+ type: Input
498
+ }], btnClick: [{
499
+ type: Output
500
+ }] } });
501
+
502
+ class RichTextEditorComponent {
503
+ }
504
+ RichTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: RichTextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
505
+ RichTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: RichTextEditorComponent, selector: "lib-rich-text-editor", ngImport: i0, template: "<ng-container [formGroup]=\"formGroup\">\n <mat-label>{{control.label}}</mat-label>\n <angular-editor [formControlName]=\"control.formControlName\" [config]=\"control.editorProperty\">\n </angular-editor>\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$1.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }] });
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: RichTextEditorComponent, decorators: [{
507
+ type: Component,
508
+ args: [{ selector: 'lib-rich-text-editor', template: "<ng-container [formGroup]=\"formGroup\">\n <mat-label>{{control.label}}</mat-label>\n <angular-editor [formControlName]=\"control.formControlName\" [config]=\"control.editorProperty\">\n </angular-editor>\n <mat-hint>{{control.hint.text}}</mat-hint>\n <ng-container *ngFor=\"let validation of control.validations;\" ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"formGroup.get(control.formControlName)?.hasError(validation.name)\">{{validation.message}}\n </mat-error>\n </ng-container>\n</ng-container>" }]
509
+ }] });
510
+
511
+ class Constant {
512
+ }
513
+ Constant.ComponentMapper = [
514
+ TextboxComponent,
515
+ TextareaComponent,
516
+ SelectComponent,
517
+ DatePickerComponent,
518
+ RadioComponent,
519
+ CheckboxComponent,
520
+ ButtonComponent,
521
+ SlideToggleComponent,
522
+ SliderComponent,
523
+ ButtonToggleComponent,
524
+ AutoCompleteComponent,
525
+ ChipComponent,
526
+ RichTextEditorComponent,
527
+ //DividerComponent,
528
+ ];
529
+
530
+ class ReactiveFieldDirective {
531
+ constructor(viewContainerRef) {
532
+ this.viewContainerRef = viewContainerRef;
533
+ }
534
+ ngOnInit() {
535
+ if (this.control !== undefined) {
536
+ this.componentRef = this.viewContainerRef.createComponent(Constant.ComponentMapper[this.control.controlType]);
537
+ this.componentRef.instance.control = this.control;
538
+ this.componentRef.instance.formGroup = this.formGroup;
539
+ }
540
+ }
541
+ }
542
+ ReactiveFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ReactiveFieldDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
543
+ ReactiveFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: ReactiveFieldDirective, selector: "[reactiveField]", inputs: { control: "control", formGroup: "formGroup" }, ngImport: i0 });
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ReactiveFieldDirective, decorators: [{
545
+ type: Directive,
546
+ args: [{
547
+ selector: '[reactiveField]'
548
+ }]
549
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { control: [{
550
+ type: Input
551
+ }], formGroup: [{
552
+ type: Input
553
+ }] } });
554
+
555
+ class ControlBuilderComponent {
556
+ }
557
+ ControlBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ControlBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
558
+ ControlBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ControlBuilderComponent, selector: "control-builder", inputs: { layout: "layout", formGroup: "formGroup" }, ngImport: i0, template: "<div [class]=\"layout.class\">\n <ng-container *ngFor=\"let control of layout.baseControls\">\n <ng-container reactiveField [control]=\"control\" [formGroup]=\"formGroup\"></ng-container>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: ReactiveFieldDirective, selector: "[reactiveField]", inputs: ["control", "formGroup"] }] });
559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ControlBuilderComponent, decorators: [{
560
+ type: Component,
561
+ args: [{ selector: 'control-builder', template: "<div [class]=\"layout.class\">\n <ng-container *ngFor=\"let control of layout.baseControls\">\n <ng-container reactiveField [control]=\"control\" [formGroup]=\"formGroup\"></ng-container>\n </ng-container>\n</div>" }]
562
+ }], propDecorators: { layout: [{
563
+ type: Input
564
+ }], formGroup: [{
565
+ type: Input
566
+ }] } });
567
+
568
+ class EnvironmentViewModel {
569
+ }
570
+
571
+ class IGenericHttpClient {
572
+ }
573
+ IGenericHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
574
+ IGenericHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient });
575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient, decorators: [{
576
+ type: Injectable
577
+ }] });
578
+
579
+ class LoggerService {
580
+ constructor() {
581
+ this.initialized = false;
582
+ this._level = "Warnings" /* LoggingLevel.Warnings */;
583
+ }
584
+ async initialize(appSettings) {
585
+ if (this.initialized)
586
+ return;
587
+ this._level = appSettings.loggingLevel;
588
+ this.initialized = true;
589
+ }
590
+ log(message, level = "Warnings" /* LoggingLevel.Warnings */, ...optionalParams) {
591
+ if (this.shouldLog(level)) {
592
+ switch (level) {
593
+ case "Errors" /* LoggingLevel.Errors */:
594
+ console.error(message, optionalParams);
595
+ break;
596
+ case "Warnings" /* LoggingLevel.Warnings */:
597
+ console.warn(message, optionalParams);
598
+ break;
599
+ case "Info" /* LoggingLevel.Info */:
600
+ console.info(message, optionalParams);
601
+ break;
602
+ default:
603
+ console.debug(message, optionalParams);
604
+ }
605
+ }
606
+ }
607
+ shouldLog(level) {
608
+ if (this._level === "None" /* LoggingLevel.None */) {
609
+ return false;
610
+ }
611
+ else if (this._level === "Errors" /* LoggingLevel.Errors */) {
612
+ return level === "Errors" /* LoggingLevel.Errors */;
613
+ }
614
+ else if (this._level === "Warnings" /* LoggingLevel.Warnings */) {
615
+ return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */;
616
+ }
617
+ else if (this._level === "Info" /* LoggingLevel.Info */) {
618
+ return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */ || level === "Info" /* LoggingLevel.Info */;
619
+ }
620
+ else {
621
+ return true;
622
+ }
623
+ }
624
+ error(message, ...optionalParams) {
625
+ this.log(message, "Errors" /* LoggingLevel.Errors */, optionalParams);
626
+ }
627
+ warning(message, ...optionalParams) {
628
+ this.log(message, "Warnings" /* LoggingLevel.Warnings */, optionalParams);
629
+ }
630
+ info(message, ...optionalParams) {
631
+ this.log(message, "Info" /* LoggingLevel.Info */, optionalParams);
632
+ }
633
+ verbose(message, ...optionalParams) {
634
+ this.log(message, "Verbose" /* LoggingLevel.Verbose */, optionalParams);
635
+ }
636
+ }
637
+ LoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
638
+ LoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, providedIn: 'root' });
639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, decorators: [{
640
+ type: Injectable,
641
+ args: [{
642
+ providedIn: 'root'
643
+ }]
644
+ }], ctorParameters: function () { return []; } });
645
+ function loggerServiceFactory(loggerService, appSettings) {
646
+ return async () => {
647
+ appSettings.isServiceReady.subscribe(item => {
648
+ if (item)
649
+ loggerService.initialize(appSettings.getAppsettingValue());
650
+ });
651
+ };
652
+ }
653
+ ;
654
+
655
+ class GenericHttpClient {
656
+ constructor(httpClient, environment, _snackBar, logger) {
657
+ this.httpClient = httpClient;
658
+ this.environment = environment;
659
+ this._snackBar = _snackBar;
660
+ this.logger = logger;
661
+ this.snackBarViewModel = {};
662
+ this.isHttpError = false;
663
+ }
664
+ /**
665
+ * @description
666
+ * Generic Http GET method to Get the response and bind to the view model
667
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
668
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
669
+ * @returns {Observable<T>}
670
+ * @usageNotes
671
+ * The following snippet shows how to use this method
672
+ * ```ts
673
+ * this.genericHttpService.Get("get_url").subscribe(data => {
674
+ * console.log('success');
675
+ * }, error => {
676
+ * console.log(error);
677
+ * });
678
+ * ```
679
+ */
680
+ get(destinationUrl, options) {
681
+ return this.request("GET" /* HttpMethod.Get */, destinationUrl, options);
682
+ }
683
+ /**
684
+ * @description
685
+ * Generic Http post method to post the view model and bind the return view model
686
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
687
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
688
+ * @returns {Observable<T>}
689
+ * @usageNotes
690
+ * The following snippet shows how to use this method
691
+ * ```ts
692
+ * this.genericHttpClientService.Post(post-url,post-view-model).subscribe(item => {
693
+ * console.log(item);
694
+ * },
695
+ * err => {
696
+ * console.log(err);
697
+ * });
698
+ * ```
699
+ */
700
+ post(destinationUrl, options) {
701
+ return this.request("POST" /* HttpMethod.Post */, destinationUrl, options);
702
+ }
703
+ /**
704
+ * @description
705
+ * Generic Http Put method to post the view model and bind the return view model
706
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
707
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
708
+ * @returns {Observable<T>}
709
+ * @usageNotes
710
+ * The following snippet shows how to use this method
711
+ * ```ts
712
+ * this.genericHttpClientService.Put(post-url, post-view-model).subscribe(item => {
713
+ * console.log(item);
714
+ * },
715
+ * err => {
716
+ * console.log(err);
717
+ * });
718
+ * ```
719
+ */
720
+ put(destinationUrl, options) {
721
+ return this.request("PUT" /* HttpMethod.Put */, destinationUrl, options);
722
+ }
723
+ /**
724
+ * @description
725
+ * Generic Http post method to post the view model and bind the return view model
726
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
727
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
728
+ * @returns {Observable<T>}
729
+ * @usageNotes
730
+ * The following snippet shows how to use this method
731
+ * ```ts
732
+ * this.genericHttpClientService.Post(post-url,post-view-model).subscribe(item => {
733
+ * console.log(item);
734
+ * },
735
+ * err => {
736
+ * console.log(err);
737
+ * });
738
+ * ```
739
+ */
740
+ patch(destinationUrl, options) {
741
+ return this.request("PATCH" /* HttpMethod.Patch */, destinationUrl, options);
742
+ }
743
+ /**
744
+ * @description
745
+ * Generic Http Delete method to Delete the item and bind the return view model
746
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
747
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
748
+ * @returns {Observable<T>}
749
+ * @usageNotes
750
+ * The following snippet shows how to use this method
751
+ * ```ts
752
+ * this.genericHttpClientService.Delete(this.deleteUserUrl).subscribe(item => {
753
+ * console.log('success');
754
+ * }, error => {
755
+ * console.log(error);
756
+ * });
757
+ * ```
758
+ */
759
+ delete(destinationUrl, options) {
760
+ return this.request("DELETE" /* HttpMethod.Delete */, destinationUrl, options);
761
+ }
762
+ /**
763
+ * @description
764
+ * Http request method to accept different method type and params
765
+ * @param {string} method Http methods - GET, POST, PUT, DELETE.
766
+ * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
767
+ * @param {IRequestOptions} options options of the request like headers, body, etc.
768
+ * @returns {Observable<T>}
769
+ * @usageNotes
770
+ * The following snippet shows how to use this method
771
+ * ```ts
772
+ * this.request<T>(HttpMethod.Delete, destinationUrl, options);
773
+ * ```
774
+ */
775
+ request(method, url, options) {
776
+ return Observable.create((observer) => {
777
+ let destinationUrl = '';
778
+ if (this.environment.baseUrl != undefined)
779
+ destinationUrl = (this.environment.baseUrl) + url;
780
+ else
781
+ destinationUrl = url;
782
+ this.httpClient.request(new HttpRequest(method, destinationUrl, options)).subscribe((response) => {
783
+ const responsTye = response;
784
+ switch (responsTye.type) {
785
+ case HttpEventType.Sent:
786
+ this.logger.info('Http Client : Sent ->', 'Request sent!');
787
+ break;
788
+ case HttpEventType.ResponseHeader:
789
+ this.logger.info('Http Client : ResponseHeader ->', 'Response header received!');
790
+ break;
791
+ case HttpEventType.DownloadProgress:
792
+ const kbLoaded = Math.round(responsTye.loaded / 1024);
793
+ this.logger.info('Http Client : DownloadProgress ->', `Download in progress! ${kbLoaded}Kb loaded`);
794
+ break;
795
+ case HttpEventType.Response:
796
+ observer.next(response.body);
797
+ this.logger.info('Http Client : Response -> 😺 Done!', responsTye.body);
798
+ }
799
+ }, (error) => {
800
+ switch (error.status) {
801
+ case 403 /* HttpStatusCode.Forbidden */:
802
+ // observer.complete();
803
+ this.snackBarViewModel.messageText = 'Access to the requested resource is forbidden.';
804
+ this.snackBarViewModel.actionText = 'Forbidden';
805
+ this.isHttpError = true;
806
+ break;
807
+ case 400 /* HttpStatusCode.BadRequest */:
808
+ this.snackBarViewModel.messageText = 'Server cannot or will not process the request.';
809
+ this.snackBarViewModel.actionText = 'Bad Request';
810
+ this.isHttpError = true;
811
+ break;
812
+ case 401 /* HttpStatusCode.Unauthorized */:
813
+ this.snackBarViewModel.messageText = 'Request has not been applied because it lacks valid authentication credentials.';
814
+ this.snackBarViewModel.actionText = 'Unauthorized';
815
+ this.isHttpError = true;
816
+ break;
817
+ case 500 /* HttpStatusCode.InternalServerError */:
818
+ this.snackBarViewModel.messageText = 'Server encountered an unexpected condition.';
819
+ this.snackBarViewModel.actionText = 'Internal server error';
820
+ this.isHttpError = true;
821
+ break;
822
+ case 0:
823
+ this.snackBarViewModel.messageText = 'Not connected to the service.';
824
+ this.snackBarViewModel.actionText = 'Service not available';
825
+ this.isHttpError = true;
826
+ break;
827
+ }
828
+ observer.error(error);
829
+ if ((this.environment.snackBarEnable != undefined && this.environment.snackBarEnable) && this.isHttpError)
830
+ this._snackBar.open(this.snackBarViewModel.messageText, this.snackBarViewModel.actionText);
831
+ });
832
+ });
833
+ }
834
+ }
835
+ GenericHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, deps: [{ token: i1$7.HttpClient }, { token: EnvironmentViewModel }, { token: i3$4.MatSnackBar }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
836
+ GenericHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, providedIn: 'root' });
837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, decorators: [{
838
+ type: Injectable,
839
+ args: [{
840
+ providedIn: 'root'
841
+ }]
842
+ }], ctorParameters: function () { return [{ type: i1$7.HttpClient }, { type: EnvironmentViewModel }, { type: i3$4.MatSnackBar }, { type: LoggerService }]; } });
843
+
844
+ class AppSettingService {
845
+ constructor(http, logger) {
846
+ this.http = http;
847
+ this.logger = logger;
848
+ this.initialized = false;
849
+ this.isServiceReady = new Subject();
850
+ this.listeners = {};
851
+ this.eventsSubject = new Subject();
852
+ this.events = from(this.eventsSubject);
853
+ this.events.subscribe(({ name, args }) => {
854
+ if (this.listeners[name]) {
855
+ for (let listener of this.listeners[name]) {
856
+ listener(...args);
857
+ }
858
+ }
859
+ });
860
+ }
861
+ async load() {
862
+ if (this.initialized)
863
+ return;
864
+ let data = await this.http.get('assets/appsetting.json').toPromise();
865
+ this.appSettings = data;
866
+ this.initialized = true;
867
+ this.isServiceReady.next(this.initialized);
868
+ this.logger.info("[AppSettingService] load --> isServiceReady", this.initialized);
869
+ }
870
+ on(name, listener) {
871
+ if (!this.listeners[name]) {
872
+ this.listeners[name] = [];
873
+ }
874
+ this.listeners[name].push(listener);
875
+ }
876
+ getAppsettingValue() {
877
+ return this.appSettings ? this.appSettings : null;
878
+ }
879
+ }
880
+ AppSettingService.APP_SETTINGS_LOADED = "APP_SETTINGS_LOADED";
881
+ AppSettingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSettingService, deps: [{ token: i1$7.HttpClient }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
882
+ AppSettingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSettingService, providedIn: 'root' });
883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSettingService, decorators: [{
884
+ type: Injectable,
885
+ args: [{
886
+ providedIn: 'root'
887
+ }]
888
+ }], ctorParameters: function () { return [{ type: i1$7.HttpClient }, { type: LoggerService }]; } });
889
+ function appSettingsFactory(appSettings) {
890
+ return async () => await appSettings.load();
891
+ }
892
+ ;
893
+
894
+ class TokenHelperService {
895
+ constructor() { }
896
+ getTokenExpirationDate(dataIdToken) {
897
+ if (!dataIdToken.hasOwnProperty('exp')) {
898
+ return new Date();
899
+ }
900
+ const date = new Date(0); // The 0 here is the key, which sets the date to the epoch
901
+ date.setUTCSeconds(dataIdToken.exp);
902
+ return date;
903
+ }
904
+ getPayloadFromToken(token, encode) {
905
+ let data = {};
906
+ if (typeof token !== 'undefined') {
907
+ const encoded = token.split('.')[1];
908
+ if (encode) {
909
+ return encoded;
910
+ }
911
+ data = JSON.parse(this.urlBase64Decode(encoded));
912
+ }
913
+ return data;
914
+ }
915
+ getHeaderFromToken(token, encode) {
916
+ let data = {};
917
+ if (typeof token !== 'undefined') {
918
+ const encoded = token.split('.')[0];
919
+ if (encode) {
920
+ return encoded;
921
+ }
922
+ data = JSON.parse(this.urlBase64Decode(encoded));
923
+ }
924
+ return data;
925
+ }
926
+ getSignatureFromToken(token, encode) {
927
+ let data = {};
928
+ if (typeof token !== 'undefined') {
929
+ const encoded = token.split('.')[2];
930
+ if (encode) {
931
+ return encoded;
932
+ }
933
+ data = JSON.parse(this.urlBase64Decode(encoded));
934
+ }
935
+ return data;
936
+ }
937
+ urlBase64Decode(str) {
938
+ let output = str.replace('-', '+').replace('_', '/');
939
+ switch (output.length % 4) {
940
+ case 0:
941
+ break;
942
+ case 2:
943
+ output += '==';
944
+ break;
945
+ case 3:
946
+ output += '=';
947
+ break;
948
+ default:
949
+ throw Error('Illegal base64url string!');
950
+ }
951
+ return window.atob(output);
952
+ }
953
+ }
954
+ TokenHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
955
+ TokenHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, providedIn: 'root' });
956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, decorators: [{
957
+ type: Injectable,
958
+ args: [{
959
+ providedIn: 'root'
960
+ }]
961
+ }], ctorParameters: function () { return []; } });
962
+
963
+ class AuthService {
964
+ constructor(logger, tokenHelperService) {
965
+ this.logger = logger;
966
+ this.tokenHelperService = tokenHelperService;
967
+ this.initialized = false;
968
+ this.signingOut = false;
969
+ }
970
+ async initialize(environment) {
971
+ if (this.initialized)
972
+ return;
973
+ this.settings = this.getClientSettings(environment);
974
+ this.userManager = new UserManager(this.settings);
975
+ this.userManager.events.addUserLoaded(user => {
976
+ this.user = user;
977
+ });
978
+ this.userManager.events.addAccessTokenExpiring(() => {
979
+ this.logger.info("IdSvr token expiring " + new Date().toLocaleString());
980
+ });
981
+ this.userManager.events.addAccessTokenExpired(() => {
982
+ this.logger.info("IdSvr token expired " + new Date().toLocaleString());
983
+ this.logout(false);
984
+ });
985
+ this.userManager.events.addSilentRenewError(e => {
986
+ this.logger.error("IdSvr silent renew error " + e.message + new Date().toLocaleString());
987
+ this.logout(false);
988
+ });
989
+ this.userManager.events.addUserLoaded(user => {
990
+ this.logger.info("IdSvr user session is ready " + new Date().toLocaleString());
991
+ this.accessToken = this.tokenHelperService.getPayloadFromToken(user.access_token, false);
992
+ this.user = user;
993
+ });
994
+ this.userManager.events.addUserUnloaded(() => {
995
+ this.logger.info("IdSvr user session has ended " + new Date().toLocaleString());
996
+ if (!this.signingOut) {
997
+ this.startAuthentication(window.location.pathname + window.location.search);
998
+ }
999
+ });
1000
+ this.userManager.events.addUserSignedOut(() => {
1001
+ this.logger.info("IdSvr user signed out " + new Date().toLocaleString());
1002
+ this.logout(false);
1003
+ });
1004
+ this.user = await this.userManager.getUser();
1005
+ this.initialized = true;
1006
+ }
1007
+ isLoggedIn() {
1008
+ return this.user != null && !this.user.expired;
1009
+ }
1010
+ getUser() {
1011
+ return this.userManager.getUser();
1012
+ }
1013
+ getProfile() {
1014
+ return this.user.profile;
1015
+ }
1016
+ getClaims() {
1017
+ return this.user.profile;
1018
+ }
1019
+ getAuthorizationHeaderValue() {
1020
+ if (this.user != null)
1021
+ return `${this.user.token_type} ${this.user.access_token}`;
1022
+ return '';
1023
+ }
1024
+ getAccessToken() {
1025
+ return this.accessToken || this.tokenHelperService.getPayloadFromToken(this.user.access_token, false);
1026
+ ;
1027
+ }
1028
+ async startAuthentication(returnUrl) {
1029
+ this.logger.info("[AuthService] startAuthentication", returnUrl);
1030
+ await this.userManager.clearStaleState();
1031
+ await this.userManager.signinRedirect({ data: { returnUrl: returnUrl } }).catch(err => {
1032
+ //this.$log.debug("IdSvr sign in failed", err);
1033
+ return err;
1034
+ });
1035
+ }
1036
+ async completeAuthentication() {
1037
+ this.logger.info("[AuthService] completeAuthentication");
1038
+ let user = await new Promise((resolve, reject) => {
1039
+ this.userManager.signinRedirectCallback().then(user => {
1040
+ resolve(user);
1041
+ }).catch(error => {
1042
+ reject(error);
1043
+ });
1044
+ });
1045
+ this.user = user;
1046
+ return this.user;
1047
+ }
1048
+ login() {
1049
+ return this.userManager.signinRedirect();
1050
+ }
1051
+ renewToken() {
1052
+ return this.userManager.signinSilent();
1053
+ }
1054
+ logout(signoutRedirect) {
1055
+ if (signoutRedirect === undefined || signoutRedirect !== false) {
1056
+ this.signingOut = true;
1057
+ signoutRedirect = true;
1058
+ }
1059
+ return this.userManager.signoutRedirect();
1060
+ }
1061
+ getClientSettings(environment) {
1062
+ return {
1063
+ authority: environment?.openID?.authority,
1064
+ client_id: environment?.openID?.client_id,
1065
+ redirect_uri: environment?.openID?.redirect_uri,
1066
+ post_logout_redirect_uri: environment?.openID?.post_logout_redirect_uri,
1067
+ response_type: environment?.openID?.response_type,
1068
+ scope: environment?.openID?.scope,
1069
+ filterProtocolClaims: environment?.openID?.filterProtocolClaims,
1070
+ loadUserInfo: true,
1071
+ monitorSession: true,
1072
+ silent_redirect_uri: environment?.openID?.silent_redirect_uri,
1073
+ automaticSilentRenew: environment?.openID?.automaticSilentRenew,
1074
+ accessTokenExpiringNotificationTime: 20,
1075
+ checkSessionInterval: 2000,
1076
+ silentRequestTimeout: 20000,
1077
+ };
1078
+ }
1079
+ async isServiceReady() {
1080
+ return new Promise(async (resolve, reject) => {
1081
+ if (this.initialized) {
1082
+ this.logger.info("[AuthService] isServiceReady", true);
1083
+ resolve(true);
1084
+ }
1085
+ else {
1086
+ this.logger.info("[AuthService] isServiceReady", false);
1087
+ reject(false);
1088
+ }
1089
+ });
1090
+ }
1091
+ }
1092
+ AuthService.USER_LOADED_EVENT = "USER_LOADED";
1093
+ AuthService.USER_UNLOADED_EVENT = "USER_UNLOADED";
1094
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, deps: [{ token: LoggerService }, { token: TokenHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
1095
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, providedIn: 'root' });
1096
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, decorators: [{
1097
+ type: Injectable,
1098
+ args: [{
1099
+ providedIn: 'root'
1100
+ }]
1101
+ }], ctorParameters: function () { return [{ type: LoggerService }, { type: TokenHelperService }]; } });
1102
+ function authServiceFactory(authService, appSettings, environment) {
1103
+ return async () => {
1104
+ appSettings.isServiceReady.subscribe(item => {
1105
+ if (item)
1106
+ authService.initialize(environment);
1107
+ });
1108
+ };
1109
+ }
1110
+ ;
1111
+
1112
+ class DialogComponent {
1113
+ constructor(data) {
1114
+ this.data = data;
1115
+ }
1116
+ }
1117
+ DialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
1118
+ DialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: DialogComponent, selector: "lib-dialog", ngImport: i0, template: "<span mat-dialog-title>{{data.title}}</span>\n<mat-divider></mat-divider>\n<div mat-dialog-content>\n <span class=\"mat-h3\">{{data.bodyMessage}}</span>\n</div>\n<mat-divider></mat-divider>\n<div mat-dialog-actions>\n <button mat-raised-button [mat-dialog-close]=\"\" cdkFocusInitial>{{data.cancelBtnText}}</button>\n <button mat-raised-button [color]=\"'warn'\" [mat-dialog-close]=\"data\">\n {{data.mainbtnText}}\n </button>\n </div>\n", styles: [".mat-mdc-dialog-actions{justify-content:end!important}\n"], dependencies: [{ kind: "component", type: i1$6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2$5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2$5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2$5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i3$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
1119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DialogComponent, decorators: [{
1120
+ type: Component,
1121
+ args: [{ selector: 'lib-dialog', template: "<span mat-dialog-title>{{data.title}}</span>\n<mat-divider></mat-divider>\n<div mat-dialog-content>\n <span class=\"mat-h3\">{{data.bodyMessage}}</span>\n</div>\n<mat-divider></mat-divider>\n<div mat-dialog-actions>\n <button mat-raised-button [mat-dialog-close]=\"\" cdkFocusInitial>{{data.cancelBtnText}}</button>\n <button mat-raised-button [color]=\"'warn'\" [mat-dialog-close]=\"data\">\n {{data.mainbtnText}}\n </button>\n </div>\n", styles: [".mat-mdc-dialog-actions{justify-content:end!important}\n"] }]
1122
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1123
+ type: Inject,
1124
+ args: [MAT_DIALOG_DATA]
1125
+ }] }]; } });
1126
+
1127
+ class SnackBarComponent {
1128
+ }
1129
+ SnackBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SnackBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1130
+ SnackBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SnackBarComponent, selector: "lib-snack-bar", ngImport: i0, template: "<span>Pizza party!!! \uD83C\uDF55</span>", styles: [""] });
1131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SnackBarComponent, decorators: [{
1132
+ type: Component,
1133
+ args: [{ selector: 'lib-snack-bar', template: "<span>Pizza party!!! \uD83C\uDF55</span>" }]
1134
+ }] });
1135
+
1136
+ class BottomSheetComponent {
1137
+ constructor(_bottomSheetRef, data) {
1138
+ this._bottomSheetRef = _bottomSheetRef;
1139
+ this.data = data;
1140
+ }
1141
+ ngOnInit() {
1142
+ }
1143
+ click(event, item) {
1144
+ this._bottomSheetRef.dismiss(item);
1145
+ event.preventDefault();
1146
+ }
1147
+ }
1148
+ BottomSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: BottomSheetComponent, deps: [{ token: i1$8.MatBottomSheetRef }, { token: MAT_BOTTOM_SHEET_DATA }], target: i0.ɵɵFactoryTarget.Component });
1149
+ BottomSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: BottomSheetComponent, selector: "lib-bottom-sheet", ngImport: i0, template: "<mat-nav-list>\n <ng-container *ngFor=\"let item of data\">\n <a [href]=\"item.link\" mat-list-item (click)=\"click($event,item)\">\n <span matListItemTitle>{{item.levelOneText}}</span>\n <span matLine>{{item.levelTwoText}}</span>\n </a>\n </ng-container>\n\n</mat-nav-list>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i3$6.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$6.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: BottomSheetComponent, decorators: [{
1151
+ type: Component,
1152
+ args: [{ selector: 'lib-bottom-sheet', template: "<mat-nav-list>\n <ng-container *ngFor=\"let item of data\">\n <a [href]=\"item.link\" mat-list-item (click)=\"click($event,item)\">\n <span matListItemTitle>{{item.levelOneText}}</span>\n <span matLine>{{item.levelTwoText}}</span>\n </a>\n </ng-container>\n\n</mat-nav-list>\n" }]
1153
+ }], ctorParameters: function () { return [{ type: i1$8.MatBottomSheetRef }, { type: undefined, decorators: [{
1154
+ type: Inject,
1155
+ args: [MAT_BOTTOM_SHEET_DATA]
1156
+ }] }]; } });
1157
+
1158
+ class ProgressBarComponent {
1159
+ }
1160
+ ProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1161
+ ProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ProgressBarComponent, selector: "falcon-progress-bar", inputs: { bufferValue: "bufferValue", color: "color", mode: "mode", value: "value" }, ngImport: i0, template: "<mat-progress-bar [mode]=\"mode\" [bufferValue]=\"bufferValue\" [color]=\"color\" [value]=\"value\"></mat-progress-bar>", styles: [""], dependencies: [{ kind: "component", type: i1$9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
1162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ProgressBarComponent, decorators: [{
1163
+ type: Component,
1164
+ args: [{ selector: 'falcon-progress-bar', template: "<mat-progress-bar [mode]=\"mode\" [bufferValue]=\"bufferValue\" [color]=\"color\" [value]=\"value\"></mat-progress-bar>" }]
1165
+ }], propDecorators: { bufferValue: [{
1166
+ type: Input
1167
+ }], color: [{
1168
+ type: Input
1169
+ }], mode: [{
1170
+ type: Input
1171
+ }], value: [{
1172
+ type: Input
1173
+ }] } });
1174
+
1175
+ class ProgressSpinnerComponent {
1176
+ constructor() {
1177
+ this.diameter = 100;
1178
+ this.strokeWidth = 5;
1179
+ }
1180
+ }
1181
+ ProgressSpinnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ProgressSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1182
+ ProgressSpinnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ProgressSpinnerComponent, selector: "falcon-progress-spinner", inputs: { diameter: "diameter", color: "color", mode: "mode", value: "value", strokeWidth: "strokeWidth" }, ngImport: i0, template: "<mat-progress-spinner\n [color]=\"color\"\n [mode]=\"mode\"\n [diameter]=\"diameter\"\n[strokeWidth]=\"strokeWidth\"\n [value]=\"value\">\n</mat-progress-spinner>", styles: [""], dependencies: [{ kind: "component", type: i1$a.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
1183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ProgressSpinnerComponent, decorators: [{
1184
+ type: Component,
1185
+ args: [{ selector: 'falcon-progress-spinner', template: "<mat-progress-spinner\n [color]=\"color\"\n [mode]=\"mode\"\n [diameter]=\"diameter\"\n[strokeWidth]=\"strokeWidth\"\n [value]=\"value\">\n</mat-progress-spinner>" }]
1186
+ }], propDecorators: { diameter: [{
1187
+ type: Input
1188
+ }], color: [{
1189
+ type: Input
1190
+ }], mode: [{
1191
+ type: Input
1192
+ }], value: [{
1193
+ type: Input
1194
+ }], strokeWidth: [{
1195
+ type: Input
1196
+ }] } });
1197
+
1198
+ class TableComponent {
1199
+ constructor() {
1200
+ this.pageEvent = new EventEmitter();
1201
+ this.tableActionRowEvent = new EventEmitter();
1202
+ }
1203
+ ngOnInit() {
1204
+ const cols = this.matTableConfig.columns?.map((c) => c.columnDef);
1205
+ if (this.displayedColumns !== undefined)
1206
+ this.displayedColumns.unshift(...cols);
1207
+ else
1208
+ this.displayedColumns = cols;
1209
+ }
1210
+ ngAfterViewInit() {
1211
+ setTimeout(() => {
1212
+ this.matTableConfig.dataSource = new MatTableDataSource(this.matTableConfig.dataSource);
1213
+ this.matTableConfig.dataSource.paginator = this.paginator;
1214
+ this.matTableConfig.dataSource.sort = this.sort;
1215
+ });
1216
+ }
1217
+ applyFilter(event) {
1218
+ const filterValue = event.target.value;
1219
+ this.matTableConfig.dataSource.filter = filterValue
1220
+ .trim()
1221
+ .toLowerCase();
1222
+ if (this.matTableConfig.dataSource.paginator) {
1223
+ this.matTableConfig.dataSource.paginator.firstPage();
1224
+ }
1225
+ }
1226
+ page(e) {
1227
+ this.pageEvent.emit(e);
1228
+ }
1229
+ tableAction($item, action) {
1230
+ const item = Object.assign($item, { action: action });
1231
+ this.tableActionRowEvent.next(item);
1232
+ }
1233
+ }
1234
+ TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1235
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: TableComponent, selector: "falcon-table", inputs: { matTableConfig: "matTableConfig", displayedColumns: "displayedColumns" }, outputs: { pageEvent: "pageEvent", tableActionRowEvent: "tableActionRowEvent" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<div class=\"flex justify-end\">\n <mat-form-field *ngIf=\"matTableConfig?.filter\">\n <mat-label>Filter</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\" #input>\n </mat-form-field>\n</div>\n<falcon-progress-bar *ngIf=\"matTableConfig?.progressBar\" [mode]=\"'indeterminate'\"></falcon-progress-bar>\n<div class=\"mat-elevation-z8\">\n <table mat-table [dataSource]=\"matTableConfig.dataSource\" matSort>\n <ng-container *ngFor=\"let column of matTableConfig?.columns\" matColumnDef={{column.columnDef}}>\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ column.header }}</th>\n <ng-container *ngIf=\"column?.link?.isLink; else elseBlock\">\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"column?.link?.routerLink(element)\">\n {{column?.cell(element) !== undefined ? column?.cell(element) : '' }}\n </a>\n </td>\n </ng-container>\n <ng-template #elseBlock>\n <td mat-cell *matCellDef=\"let element\">\n {{ column.cell(element) !== undefined ? column.cell(element) : ''}}\n </td>\n </ng-template>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-row-element example-expanded-row\"></tr>\n\n &lt;!&ndash; Row shown when there is no matching data. &ndash;&gt;\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" colspan=\"columns.length\">No data matching the filter</td>\n </tr>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"></th>\n <td mat-cell *matCellDef=\"let element\">\n\n <div *ngIf=\"matTableConfig?.action?.isMenu; else nonMenuBlock\">\n\n <button mat-icon-button matTooltip=\"Action\" [matMenuTriggerFor]=\"tableActionMenu\"\n aria-label=\"Table action menu\">\n <mat-icon color=\"primary\">more_horiz</mat-icon>\n </button>\n <mat-menu #tableActionMenu=\"matMenu\">\n <a [routerLink]=\"item?.link?.routerLink\" mat-menu-item\n *ngFor=\"let item of matTableConfig?.action?.menu\" [disabled]=\"item.disabled\">\n <mat-icon [color]=\"item?.icon?.iconColor\">{{item?.icon?.iconText}}</mat-icon>\n <span>{{item.text}}</span>\n </a>\n </mat-menu>\n </div>\n <ng-template #nonMenuBlock>\n <div class=\"flex justify-between\">\n <div>\n <button *ngIf=\"matTableConfig?.action?.view\" mat-icon-button aria-label=\"view button\"\n color=\"primary\" matTooltip=\"View\" (click)=\"tableAction(element, 0)\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button *ngIf=\"matTableConfig?.action?.edit\" mat-icon-button aria-label=\"edit button\"\n color=\"primary\" matTooltip=\"Edit\" (click)=\"tableAction(element, 1)\">\n <mat-icon>create</mat-icon>\n </button>\n <button *ngIf=\"matTableConfig?.action?.delete\" mat-icon-button aria-label=\"Delete button\"\n color=\"warn\" matTooltip=\"Delete\" (click)=\"tableAction(element, 2)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <button *ngIf=\"matTableConfig?.action?.arrowRight\" mat-icon-button aria-label=\"Arrow button\"\n color=\"primary\" matTooltip=\"Expand\" (click)=\"tableAction(element, 3)\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </ng-template>\n </td>\n </ng-container>\n\n </table>\n <mat-paginator *ngIf=\"matTableConfig?.paginationConfig?.pagination\" (page)=\"page($event)\"\n [pageSizeOptions]=\"matTableConfig.paginationConfig?.pageSizeOptions!\" showFirstLastButtons>\n </mat-paginator>\n</div>", styles: ["table{text-align:center!important;width:100%}.mat-form-field{font-size:14px}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center}:host ::ng-deep .mat-row:hover{background-color:#f5f5f5}\n"], dependencies: [{ kind: "component", type: i1$6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6$1.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ProgressBarComponent, selector: "falcon-progress-bar", inputs: ["bufferValue", "color", "mode", "value"] }] });
1236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TableComponent, decorators: [{
1237
+ type: Component,
1238
+ args: [{ selector: 'falcon-table', template: "<div class=\"flex justify-end\">\n <mat-form-field *ngIf=\"matTableConfig?.filter\">\n <mat-label>Filter</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\" #input>\n </mat-form-field>\n</div>\n<falcon-progress-bar *ngIf=\"matTableConfig?.progressBar\" [mode]=\"'indeterminate'\"></falcon-progress-bar>\n<div class=\"mat-elevation-z8\">\n <table mat-table [dataSource]=\"matTableConfig.dataSource\" matSort>\n <ng-container *ngFor=\"let column of matTableConfig?.columns\" matColumnDef={{column.columnDef}}>\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ column.header }}</th>\n <ng-container *ngIf=\"column?.link?.isLink; else elseBlock\">\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"column?.link?.routerLink(element)\">\n {{column?.cell(element) !== undefined ? column?.cell(element) : '' }}\n </a>\n </td>\n </ng-container>\n <ng-template #elseBlock>\n <td mat-cell *matCellDef=\"let element\">\n {{ column.cell(element) !== undefined ? column.cell(element) : ''}}\n </td>\n </ng-template>\n\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-row-element example-expanded-row\"></tr>\n\n &lt;!&ndash; Row shown when there is no matching data. &ndash;&gt;\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" colspan=\"columns.length\">No data matching the filter</td>\n </tr>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"></th>\n <td mat-cell *matCellDef=\"let element\">\n\n <div *ngIf=\"matTableConfig?.action?.isMenu; else nonMenuBlock\">\n\n <button mat-icon-button matTooltip=\"Action\" [matMenuTriggerFor]=\"tableActionMenu\"\n aria-label=\"Table action menu\">\n <mat-icon color=\"primary\">more_horiz</mat-icon>\n </button>\n <mat-menu #tableActionMenu=\"matMenu\">\n <a [routerLink]=\"item?.link?.routerLink\" mat-menu-item\n *ngFor=\"let item of matTableConfig?.action?.menu\" [disabled]=\"item.disabled\">\n <mat-icon [color]=\"item?.icon?.iconColor\">{{item?.icon?.iconText}}</mat-icon>\n <span>{{item.text}}</span>\n </a>\n </mat-menu>\n </div>\n <ng-template #nonMenuBlock>\n <div class=\"flex justify-between\">\n <div>\n <button *ngIf=\"matTableConfig?.action?.view\" mat-icon-button aria-label=\"view button\"\n color=\"primary\" matTooltip=\"View\" (click)=\"tableAction(element, 0)\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button *ngIf=\"matTableConfig?.action?.edit\" mat-icon-button aria-label=\"edit button\"\n color=\"primary\" matTooltip=\"Edit\" (click)=\"tableAction(element, 1)\">\n <mat-icon>create</mat-icon>\n </button>\n <button *ngIf=\"matTableConfig?.action?.delete\" mat-icon-button aria-label=\"Delete button\"\n color=\"warn\" matTooltip=\"Delete\" (click)=\"tableAction(element, 2)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <button *ngIf=\"matTableConfig?.action?.arrowRight\" mat-icon-button aria-label=\"Arrow button\"\n color=\"primary\" matTooltip=\"Expand\" (click)=\"tableAction(element, 3)\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </ng-template>\n </td>\n </ng-container>\n\n </table>\n <mat-paginator *ngIf=\"matTableConfig?.paginationConfig?.pagination\" (page)=\"page($event)\"\n [pageSizeOptions]=\"matTableConfig.paginationConfig?.pageSizeOptions!\" showFirstLastButtons>\n </mat-paginator>\n</div>", styles: ["table{text-align:center!important;width:100%}.mat-form-field{font-size:14px}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center}:host ::ng-deep .mat-row:hover{background-color:#f5f5f5}\n"] }]
1239
+ }], propDecorators: { matTableConfig: [{
1240
+ type: Input
1241
+ }], paginator: [{
1242
+ type: ViewChild,
1243
+ args: [MatPaginator, { static: false }]
1244
+ }], sort: [{
1245
+ type: ViewChild,
1246
+ args: [MatSort, { static: false }]
1247
+ }], pageEvent: [{
1248
+ type: Output
1249
+ }], displayedColumns: [{
1250
+ type: Input
1251
+ }], tableActionRowEvent: [{
1252
+ type: Output
1253
+ }] } });
1254
+
1255
+ class PaginationComponent {
1256
+ constructor() {
1257
+ this.totalPage = 10;
1258
+ this.pageSize = 10;
1259
+ this.paginationEvent = new EventEmitter();
1260
+ this.paginationSize = new Array(10);
1261
+ this.preDisable = true;
1262
+ this.nextDisable = false;
1263
+ this.currentPage = 1;
1264
+ this.firstLoad = false;
1265
+ }
1266
+ ngOnInit() {
1267
+ this.firstLoad = true;
1268
+ this.paginationSize = [
1269
+ ...Array.from({
1270
+ length: this.totalPage < this.pageSize
1271
+ ? this.totalPage
1272
+ : this.pageSize,
1273
+ }, (_, i) => i + 1),
1274
+ ];
1275
+ if (this.paginationSize.length == this.totalPage)
1276
+ this.nextDisable = true;
1277
+ }
1278
+ receiveBtnChange($event) {
1279
+ this.firstLoad = false;
1280
+ this.currentPage = $event;
1281
+ if ($event == this.totalPage)
1282
+ this.nextDisable = true;
1283
+ else if ($event == 1) {
1284
+ this.nextDisable = false;
1285
+ this.preDisable = true;
1286
+ }
1287
+ else {
1288
+ this.nextDisable = false;
1289
+ this.preDisable = false;
1290
+ }
1291
+ if ($event === 'previous') {
1292
+ this.preDisable = true;
1293
+ }
1294
+ else if ($event === 'next') {
1295
+ }
1296
+ else {
1297
+ if (this.totalPage <= this.pageSize) {
1298
+ this.paginationSize = [
1299
+ ...Array.from({ length: this.totalPage }, (_, i) => i + 1),
1300
+ ];
1301
+ }
1302
+ else {
1303
+ // start
1304
+ if ($event < 6) {
1305
+ this.start = 1;
1306
+ }
1307
+ else {
1308
+ if ($event + 5 < this.totalPage) {
1309
+ this.start = $event - 5;
1310
+ }
1311
+ else {
1312
+ this.start = this.totalPage - this.pageSize;
1313
+ }
1314
+ }
1315
+ //End
1316
+ if ($event + 5 < this.totalPage) {
1317
+ this.end = this.start + 9;
1318
+ }
1319
+ else {
1320
+ this.end = this.totalPage;
1321
+ }
1322
+ this.paginationSize = this.range(this.start, this.end);
1323
+ }
1324
+ }
1325
+ this.paginationEvent.emit($event);
1326
+ }
1327
+ range(start, end) {
1328
+ return Array(Math.abs(start - end) + 1)
1329
+ .fill(start)
1330
+ .map((v, i) => v + i * (start > end ? -1 : 1));
1331
+ }
1332
+ }
1333
+ PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1334
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: PaginationComponent, selector: "falcon-pagination", inputs: { totalPage: "totalPage", pageSize: "pageSize" }, outputs: { paginationEvent: "paginationEvent" }, ngImport: i0, template: "<div class=\"flex justify-between\">\n <span class=\"mat-h3\">Page {{currentPage}} of {{totalPage}}</span>\n <mat-button-toggle-group name=\"fontStyle\" aria-label=\"Font Style\">\n <mat-button-toggle value=\"bold\" *ngFor=\"let item of paginationSize; index as i;\"\n (change)=\"receiveBtnChange(item)\" [checked]=\"firstLoad && i ==0\">\n &nbsp;&nbsp; <span class=\"mat-h3\">{{item}}</span>&nbsp;&nbsp;\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: PaginationComponent, decorators: [{
1336
+ type: Component,
1337
+ args: [{ selector: 'falcon-pagination', template: "<div class=\"flex justify-between\">\n <span class=\"mat-h3\">Page {{currentPage}} of {{totalPage}}</span>\n <mat-button-toggle-group name=\"fontStyle\" aria-label=\"Font Style\">\n <mat-button-toggle value=\"bold\" *ngFor=\"let item of paginationSize; index as i;\"\n (change)=\"receiveBtnChange(item)\" [checked]=\"firstLoad && i ==0\">\n &nbsp;&nbsp; <span class=\"mat-h3\">{{item}}</span>&nbsp;&nbsp;\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n</div>" }]
1338
+ }], ctorParameters: function () { return []; }, propDecorators: { totalPage: [{
1339
+ type: Input
1340
+ }], pageSize: [{
1341
+ type: Input
1342
+ }], paginationEvent: [{
1343
+ type: Output
1344
+ }] } });
1345
+
1346
+ class FalconCoreModule {
1347
+ static forRoot(environment) {
1348
+ return {
1349
+ ngModule: FalconCoreModule,
1350
+ providers: [
1351
+ { provide: EnvironmentViewModel, useValue: environment },
1352
+ ],
1353
+ };
1354
+ }
1355
+ }
1356
+ FalconCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FalconCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1357
+ FalconCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: FalconCoreModule, declarations: [TextboxComponent,
1358
+ TextareaComponent,
1359
+ SelectComponent,
1360
+ ReactiveFieldDirective,
1361
+ ControlBuilderComponent,
1362
+ DatePickerComponent,
1363
+ CheckboxComponent,
1364
+ RadioComponent,
1365
+ AutoCompleteComponent,
1366
+ ButtonToggleComponent,
1367
+ ChipComponent,
1368
+ SliderComponent,
1369
+ SlideToggleComponent,
1370
+ ButtonComponent,
1371
+ DialogComponent,
1372
+ SnackBarComponent,
1373
+ BottomSheetComponent,
1374
+ ProgressBarComponent,
1375
+ ProgressSpinnerComponent,
1376
+ TableComponent,
1377
+ PaginationComponent,
1378
+ RichTextEditorComponent], imports: [AngularmaterialModule,
1379
+ CommonModule,
1380
+ FormsModule,
1381
+ ReactiveFormsModule,
1382
+ RouterModule,
1383
+ AngularEditorModule], exports: [AngularmaterialModule,
1384
+ CommonModule,
1385
+ FormsModule,
1386
+ ReactiveFormsModule,
1387
+ ControlBuilderComponent,
1388
+ RouterModule,
1389
+ ProgressBarComponent,
1390
+ ProgressSpinnerComponent,
1391
+ ChipComponent,
1392
+ PaginationComponent,
1393
+ TableComponent,
1394
+ AngularEditorModule,
1395
+ ButtonComponent] });
1396
+ FalconCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FalconCoreModule, providers: [
1397
+ provideHttpClient(withInterceptors([
1398
+ (req, next) => {
1399
+ // Get the auth token from the service.
1400
+ const authToken = inject(AuthService).getAuthorizationHeaderValue();
1401
+ inject(LoggerService).info("Auth bearer token ", authToken);
1402
+ if (authToken) {
1403
+ req = req.clone({
1404
+ setHeaders: {
1405
+ 'Content-Type': 'application/json',
1406
+ Authorization: authToken
1407
+ }
1408
+ });
1409
+ }
1410
+ return next(req);
1411
+ },
1412
+ ])),
1413
+ { provide: IGenericHttpClient, useClass: GenericHttpClient },
1414
+ {
1415
+ provide: APP_INITIALIZER,
1416
+ useFactory: appSettingsFactory,
1417
+ deps: [AppSettingService],
1418
+ multi: true,
1419
+ },
1420
+ {
1421
+ provide: APP_INITIALIZER,
1422
+ useFactory: authServiceFactory,
1423
+ deps: [AuthService, AppSettingService, EnvironmentViewModel],
1424
+ multi: true,
1425
+ },
1426
+ {
1427
+ provide: APP_INITIALIZER,
1428
+ useFactory: loggerServiceFactory,
1429
+ deps: [LoggerService, AppSettingService],
1430
+ multi: true,
1431
+ },
1432
+ {
1433
+ provide: MAT_SNACK_BAR_DEFAULT_OPTIONS,
1434
+ useValue: { duration: 5000 },
1435
+ },
1436
+ ], imports: [AngularmaterialModule,
1437
+ CommonModule,
1438
+ FormsModule,
1439
+ ReactiveFormsModule,
1440
+ RouterModule,
1441
+ AngularEditorModule, AngularmaterialModule,
1442
+ CommonModule,
1443
+ FormsModule,
1444
+ ReactiveFormsModule,
1445
+ RouterModule,
1446
+ AngularEditorModule] });
1447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FalconCoreModule, decorators: [{
1448
+ type: NgModule,
1449
+ args: [{
1450
+ declarations: [
1451
+ TextboxComponent,
1452
+ TextareaComponent,
1453
+ SelectComponent,
1454
+ ReactiveFieldDirective,
1455
+ ControlBuilderComponent,
1456
+ DatePickerComponent,
1457
+ CheckboxComponent,
1458
+ RadioComponent,
1459
+ AutoCompleteComponent,
1460
+ ButtonToggleComponent,
1461
+ ChipComponent,
1462
+ SliderComponent,
1463
+ SlideToggleComponent,
1464
+ ButtonComponent,
1465
+ DialogComponent,
1466
+ SnackBarComponent,
1467
+ BottomSheetComponent,
1468
+ ProgressBarComponent,
1469
+ ProgressSpinnerComponent,
1470
+ TableComponent,
1471
+ PaginationComponent,
1472
+ RichTextEditorComponent
1473
+ ],
1474
+ imports: [
1475
+ AngularmaterialModule,
1476
+ CommonModule,
1477
+ FormsModule,
1478
+ ReactiveFormsModule,
1479
+ RouterModule,
1480
+ AngularEditorModule,
1481
+ ],
1482
+ exports: [
1483
+ AngularmaterialModule,
1484
+ CommonModule,
1485
+ FormsModule,
1486
+ ReactiveFormsModule,
1487
+ ControlBuilderComponent,
1488
+ RouterModule,
1489
+ ProgressBarComponent,
1490
+ ProgressSpinnerComponent,
1491
+ ChipComponent,
1492
+ PaginationComponent,
1493
+ TableComponent,
1494
+ AngularEditorModule,
1495
+ ButtonComponent,
1496
+ ],
1497
+ providers: [
1498
+ provideHttpClient(withInterceptors([
1499
+ (req, next) => {
1500
+ // Get the auth token from the service.
1501
+ const authToken = inject(AuthService).getAuthorizationHeaderValue();
1502
+ inject(LoggerService).info("Auth bearer token ", authToken);
1503
+ if (authToken) {
1504
+ req = req.clone({
1505
+ setHeaders: {
1506
+ 'Content-Type': 'application/json',
1507
+ Authorization: authToken
1508
+ }
1509
+ });
1510
+ }
1511
+ return next(req);
1512
+ },
1513
+ ])),
1514
+ { provide: IGenericHttpClient, useClass: GenericHttpClient },
1515
+ {
1516
+ provide: APP_INITIALIZER,
1517
+ useFactory: appSettingsFactory,
1518
+ deps: [AppSettingService],
1519
+ multi: true,
1520
+ },
1521
+ {
1522
+ provide: APP_INITIALIZER,
1523
+ useFactory: authServiceFactory,
1524
+ deps: [AuthService, AppSettingService, EnvironmentViewModel],
1525
+ multi: true,
1526
+ },
1527
+ {
1528
+ provide: APP_INITIALIZER,
1529
+ useFactory: loggerServiceFactory,
1530
+ deps: [LoggerService, AppSettingService],
1531
+ multi: true,
1532
+ },
1533
+ {
1534
+ provide: MAT_SNACK_BAR_DEFAULT_OPTIONS,
1535
+ useValue: { duration: 5000 },
1536
+ },
1537
+ ],
1538
+ }]
1539
+ }] });
1540
+
1541
+ class AuthGuardService {
1542
+ constructor(authService) {
1543
+ this.authService = authService;
1544
+ }
1545
+ canActivate(route, state) {
1546
+ return new Promise(resolve => {
1547
+ this.authService.isServiceReady().then(() => {
1548
+ if (this.authService.isLoggedIn()) {
1549
+ resolve(true);
1550
+ }
1551
+ else {
1552
+ this.authService.startAuthentication(state.url);
1553
+ resolve(false);
1554
+ }
1555
+ });
1556
+ });
1557
+ }
1558
+ }
1559
+ AuthGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
1560
+ AuthGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
1561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, decorators: [{
1562
+ type: Injectable,
1563
+ args: [{
1564
+ providedIn: 'root'
1565
+ }]
1566
+ }], ctorParameters: function () { return [{ type: AuthService }]; } });
1567
+
1568
+ /**
1569
+ * @description
1570
+ * Class use for setting the control properties.
1571
+ * @usageNotes
1572
+ * ```ts
1573
+ * new Dropdown({
1574
+ * formControlName: 'brave',
1575
+ * label: 'Bravery Rating',
1576
+ * options: [
1577
+ * {key: 'solid', value: 'Solid'},
1578
+ * {key: 'great', value: 'Great'},
1579
+ * {key: 'good', value: 'Good'},
1580
+ * {key: 'unproven', value: 'Unproven'}
1581
+ * ],
1582
+ * order: 3
1583
+ * }),
1584
+ ** ```
1585
+ */
1586
+ class BaseControl {
1587
+ constructor(options = {}) {
1588
+ this.value = options.value;
1589
+ this.formControlName = options.formControlName || '';
1590
+ this.label = options.label || '';
1591
+ this.labelPosition = options.labelPosition || 'before' || 'after';
1592
+ this.order = options.order === undefined ? 1 : options.order;
1593
+ this.controlType = options.controlType || 6 /* ControlType.Button */;
1594
+ this.type = options.type || '';
1595
+ this.disabled = options.disabled || false;
1596
+ this.options = options.options || [];
1597
+ this.validations = options.validations || [];
1598
+ this.appearance = options.appearance || 'outline';
1599
+ this.class = options.class || '';
1600
+ this.style = options.style || {};
1601
+ this.placeHolder = options.placeHolder || '';
1602
+ this.floatLabel = options.floatLabel || 'auto';
1603
+ this.hint = options.hint || {};
1604
+ this.prefix = options.prefix || {};
1605
+ this.suffix = options.suffix || {};
1606
+ this.textAreaProperty =
1607
+ options.textAreaProperty || {};
1608
+ this.event = options.event || {};
1609
+ this.selectProperty = options.selectProperty || {};
1610
+ this.color = options.color || '';
1611
+ this.sliderProperty = options.sliderProperty || {};
1612
+ this.chipSelectedOptions = options.chipSelectedOptions || {};
1613
+ this.editorProperty = options.editorProperty || {};
1614
+ this.formArray = options.formArray || undefined;
1615
+ }
1616
+ }
1617
+
1618
+ class Select extends BaseControl {
1619
+ constructor() {
1620
+ super(...arguments);
1621
+ this.controlType = 2 /* ControlType.Select */;
1622
+ }
1623
+ }
1624
+
1625
+ class Textarea extends BaseControl {
1626
+ constructor() {
1627
+ super(...arguments);
1628
+ this.controlType = 1 /* ControlType.TextArea */;
1629
+ }
1630
+ }
1631
+
1632
+ class Textbox extends BaseControl {
1633
+ constructor() {
1634
+ super(...arguments);
1635
+ this.controlType = 0 /* ControlType.TextBox */;
1636
+ }
1637
+ }
1638
+
1639
+ /**
1640
+ * @description
1641
+ * Base form component initialized to create form controls, set validation, submit.
1642
+ *
1643
+ * @usageNotes
1644
+ * The following snippet shows how a component can implement this abstract class to
1645
+ * define its own initialization method.
1646
+ * ```ts
1647
+ * export class InputComponent extends BaseFormComponent<any> implements OnInit {
1648
+ * constructor(fb : FormBuilder) {
1649
+ * super(fb);
1650
+ * this.defineForm();
1651
+ * }
1652
+ * protected defineForm(): void {
1653
+ * }
1654
+ * ngOnInit(): void {
1655
+ * this.formGroup = this.createControls();
1656
+ * }
1657
+ * protected submitDatasource(model: any): Observable<any> {
1658
+ * return of(model);
1659
+ * }
1660
+ * ```
1661
+ */
1662
+ class BaseFormComponent {
1663
+ constructor() {
1664
+ this.dataSource = undefined;
1665
+ this.showLoading = false;
1666
+ this.fb = inject(FormBuilder);
1667
+ }
1668
+ /**
1669
+ * @description
1670
+ * Method evoke on when the form is submitted.
1671
+ * @returns submitDatasource() method with form data if valid otherwise form invalid.
1672
+ */
1673
+ onSubmit() {
1674
+ if (this.formGroup !== undefined && this.formGroup.valid) {
1675
+ this.submitDataSource(this.formGroup.value);
1676
+ }
1677
+ else {
1678
+ this.validateAllFormFields(this.formGroup);
1679
+ }
1680
+ }
1681
+ /**
1682
+ * @description
1683
+ * Private method to validate all form controls before is form submited.
1684
+ * @param formGroup Validate form group.
1685
+ * @returns Groups of controls added to the form builder.
1686
+ */
1687
+ validateAllFormFields(formGroup) {
1688
+ if (this.formGroup !== undefined)
1689
+ this.formGroup.markAllAsTouched();
1690
+ }
1691
+ /**
1692
+ * @description
1693
+ * Create the reactive form controls
1694
+ * @returns Groups of controls added to the form builder.
1695
+ */
1696
+ createControls() {
1697
+ const group = this.fb.group({});
1698
+ this.controlsConfig.baseControls.forEach((controls, index) => {
1699
+ this.bindControl(controls, group, index);
1700
+ });
1701
+ return group;
1702
+ }
1703
+ /**
1704
+ * @description
1705
+ * Private method to bind the form control.
1706
+ * @param controlConfig field to bind.
1707
+ * @param group group to add.
1708
+ * @param index index of the layout
1709
+ */
1710
+ bindControl(controlConfig, group, index) {
1711
+ if (controlConfig.controlType === 6 /* ControlType.Button */)
1712
+ return;
1713
+ let control = null;
1714
+ if (controlConfig.formArray !== undefined) {
1715
+ control =
1716
+ controlConfig.formArray.length > 0
1717
+ ? this.fb.array([
1718
+ this.createFormArrayGroup(controlConfig.formArray[controlConfig.formArray.length - 1].formArray),
1719
+ ])
1720
+ : this.fb.array([], this.bindValidations(controlConfig.validations || []));
1721
+ }
1722
+ else {
1723
+ control = this.fb.control({
1724
+ value: controlConfig.value,
1725
+ disabled: controlConfig.disabled,
1726
+ }, this.bindValidations(controlConfig.validations || []));
1727
+ }
1728
+ group.addControl(controlConfig.formControlName, control);
1729
+ }
1730
+ /**
1731
+ * @description
1732
+ * Private method to bind the validation to the form controls on form submit.
1733
+ * @param validations Push the validation to the controls.
1734
+ * @returns Validation.
1735
+ */
1736
+ bindValidations(validations) {
1737
+ if (validations.length > 0) {
1738
+ const validList = [];
1739
+ validations.forEach((valid) => {
1740
+ validList.push(valid.validator);
1741
+ });
1742
+ return Validators.compose(validList);
1743
+ }
1744
+ return null;
1745
+ }
1746
+ /**
1747
+ * Create an form array element
1748
+ * @param layoutConfig layout of form array
1749
+ * @returns Form array group
1750
+ */
1751
+ createFormArrayGroup(componentConfig) {
1752
+ var formGroup = this.fb.group({});
1753
+ componentConfig?.forEach((item, index) => {
1754
+ var control = null;
1755
+ if (item.formArray !== undefined) {
1756
+ control =
1757
+ item.formArray.length > 0
1758
+ ? this.fb.array([
1759
+ this.createFormArrayGroup(item.formArray[item.formArray.length - 1].formArray),
1760
+ ], this.bindValidations(item.validations || []))
1761
+ : this.fb.array([], this.bindValidations(item.validations || []));
1762
+ }
1763
+ else {
1764
+ control = this.fb.control({
1765
+ value: item.value,
1766
+ disabled: item.disabled,
1767
+ }, this.bindValidations(item.validations || []));
1768
+ }
1769
+ formGroup.addControl(item.formControlName, control);
1770
+ });
1771
+ return formGroup;
1772
+ }
1773
+ /**
1774
+ * @description
1775
+ * Reset fild values to default or specify some value.
1776
+ * @param defaultValues Specify the specific value to set to the controls.
1777
+ * @returns void.
1778
+ */
1779
+ reset(defaultValues) {
1780
+ this.formGroup.reset(defaultValues);
1781
+ }
1782
+ /**
1783
+ * @description
1784
+ * Reset specific fild Errors.
1785
+ * @param name Name of the field to reset the error.
1786
+ * @returns void.
1787
+ */
1788
+ resetFieldErrors(name) {
1789
+ this.formGroup?.get(name)?.setErrors(null);
1790
+ }
1791
+ /**
1792
+ * @description
1793
+ * Get the controls value from the form.
1794
+ * @returns Form controls values.
1795
+ */
1796
+ get value() {
1797
+ return this.formGroup.value;
1798
+ }
1799
+ /**
1800
+ * @description
1801
+ * Updating parts of the data model.
1802
+ * Use the patchValue() method to replace any properties defined in the object that have changed in the form model.
1803
+ * @returns Form controls values.
1804
+ * @param value The object that matches the structure of the group.
1805
+ * @param options Configuration options that determine how the control propagates changes and
1806
+ * emits events after the value is patched.
1807
+ * `onlySelf`: When true, each change only affects this control and not its parent. Default is
1808
+ * true.
1809
+ * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
1810
+ * `valueChanges`
1811
+ * @usageNotes
1812
+ * The following snippet shows how a component can implement this abstract class to
1813
+ * define its own initialization method.
1814
+ * ```ts
1815
+ * this.formGroup.patchValue({
1816
+ * name: 'Todd Motto',
1817
+ * event: {
1818
+ * title: 'AngularCamp 2016',
1819
+ * location: 'Barcelona, Spain'
1820
+ * }
1821
+ * });
1822
+ * ```
1823
+ */
1824
+ patchValue(value, options) {
1825
+ return this.formGroup.patchValue(value, options);
1826
+ }
1827
+ /**
1828
+ * @description
1829
+ * Updating parts of the data model.
1830
+ * Use the setValue() method to set a new value for an individual control. The setValue() method strictly adheres to the structure of the form group and replaces the entire value for the control.
1831
+ * @returns Form controls values.
1832
+ * @param value The object that matches the structure of the group.
1833
+ * @param options Configuration options that determine how the control propagates changes and
1834
+ * emits events after the value is patched.
1835
+ * `onlySelf`: When true, each change only affects this control and not its parent. Default is
1836
+ * true.
1837
+ * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
1838
+ * `valueChanges`
1839
+ * @usageNotes
1840
+ * The following snippet shows how a component can implement this abstract class to
1841
+ * define its own initialization method.
1842
+ * ```ts
1843
+ * this.formGroup.setValue({
1844
+ * name: 'Todd Motto',
1845
+ * event: {
1846
+ * title: 'AngularCamp 2016',
1847
+ * location: 'Barcelona, Spain'
1848
+ * }
1849
+ * });
1850
+ * ```
1851
+ */
1852
+ setValue(value, options) {
1853
+ return this.formGroup.setValue(value, options);
1854
+ }
1855
+ /**
1856
+ * @description
1857
+ * Dynamically remove the form control.
1858
+ * @param index Index of item.
1859
+ * @usageNotes
1860
+ * The following snippet shows how to remove the form control from Froup Group
1861
+ * ```ts
1862
+ * removeControl(1);
1863
+ * ```
1864
+ */
1865
+ removeControl(layoutIndex, index) {
1866
+ this.formGroup.removeControl(this.controlsConfig.baseControls[layoutIndex].formControlName);
1867
+ this.controlsConfig.baseControls.splice(index, 1);
1868
+ }
1869
+ }
1870
+
1871
+ /*
1872
+ * Public API Surface of falcon-core-module
1873
+ */
1874
+
1875
+ /**
1876
+ * Generated bundle index. Do not edit.
1877
+ */
1878
+
1879
+ export { AngularmaterialModule, AppSettingService, AuthGuardService, AuthService, AutoCompleteComponent, BaseFormComponent, BottomSheetComponent, ButtonComponent, ButtonToggleComponent, CheckboxComponent, ChipComponent, Constant, ControlBuilderComponent, DatePickerComponent, DialogComponent, EnvironmentViewModel, FalconCoreModule, IGenericHttpClient, LoggerService, PaginationComponent, ProgressBarComponent, ProgressSpinnerComponent, RadioComponent, ReactiveFieldDirective, RichTextEditorComponent, Select, SelectComponent, SlideToggleComponent, SliderComponent, SnackBarComponent, TableComponent, Textarea, TextareaComponent, Textbox, TextboxComponent, appSettingsFactory, authServiceFactory, loggerServiceFactory };
1880
+ //# sourceMappingURL=falcon-ng-tailwind.mjs.map