ng-tailwind 3.30.368 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/README.md +24 -24
  2. package/animations/ngt-angular-animations.d.ts +5 -5
  3. package/base/ngt-base-ng-model.d.ts +32 -32
  4. package/bundles/ng-tailwind.umd.js +7689 -7631
  5. package/bundles/ng-tailwind.umd.js.map +1 -1
  6. package/components/ngt-action/ngt-action.component.d.ts +13 -13
  7. package/components/ngt-action/ngt-action.module.d.ts +2 -2
  8. package/components/ngt-button/ngt-button.component.d.ts +22 -22
  9. package/components/ngt-button/ngt-button.module.d.ts +2 -2
  10. package/components/ngt-checkbox/ngt-checkbox.component.d.ts +41 -41
  11. package/components/ngt-checkbox/ngt-checkbox.module.d.ts +2 -2
  12. package/components/ngt-content/ngt-content.component.d.ts +9 -9
  13. package/components/ngt-content/ngt-content.module.d.ts +2 -2
  14. package/components/ngt-datatable/ngt-datatable.component.d.ts +114 -114
  15. package/components/ngt-datatable/ngt-datatable.module.d.ts +2 -2
  16. package/components/ngt-datatable/ngt-tbody/ngt-tbody.component.d.ts +11 -11
  17. package/components/ngt-datatable/ngt-td/ngt-td.component.d.ts +11 -11
  18. package/components/ngt-datatable/ngt-td-check/ngt-td-check.component.d.ts +26 -26
  19. package/components/ngt-datatable/ngt-th/ngt-th.component.d.ts +48 -48
  20. package/components/ngt-datatable/ngt-th-check/ngt-th-check.component.d.ts +19 -19
  21. package/components/ngt-datatable/ngt-thead/ngt-thead.component.d.ts +10 -10
  22. package/components/ngt-datatable/ngt-tr/ngt-tr.component.d.ts +17 -17
  23. package/components/ngt-date/ngt-date.component.d.ts +75 -75
  24. package/components/ngt-date/ngt-date.module.d.ts +2 -2
  25. package/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.d.ts +5 -5
  26. package/components/ngt-dropdown/ngt-dropdown.component.d.ts +48 -48
  27. package/components/ngt-dropdown/ngt-dropdown.module.d.ts +2 -2
  28. package/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.d.ts +11 -11
  29. package/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.d.ts +22 -22
  30. package/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.d.ts +21 -21
  31. package/components/ngt-dropzone/ngt-dropzone.component.d.ts +108 -108
  32. package/components/ngt-dropzone/ngt-dropzone.module.d.ts +2 -2
  33. package/components/ngt-floating-button/ngt-floating-button.component.d.ts +32 -32
  34. package/components/ngt-floating-button/ngt-floating-button.module.d.ts +2 -2
  35. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.d.ts +7 -7
  36. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.d.ts +2 -2
  37. package/components/ngt-form/ngt-form.component.d.ts +52 -52
  38. package/components/ngt-form/ngt-form.module.d.ts +2 -2
  39. package/components/ngt-header-nav/ngt-header-nav.component.d.ts +11 -11
  40. package/components/ngt-header-nav/ngt-header-nav.module.d.ts +2 -2
  41. package/components/ngt-helper/ngt-helper.component.d.ts +20 -20
  42. package/components/ngt-helper/ngt-helper.module.d.ts +2 -2
  43. package/components/ngt-input/ngt-input.component.d.ts +116 -116
  44. package/components/ngt-input/ngt-input.module.d.ts +2 -2
  45. package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +2 -2
  46. package/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.d.ts +2 -2
  47. package/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.d.ts +12 -12
  48. package/components/ngt-modal/ngt-modal.component.d.ts +19 -19
  49. package/components/ngt-modal/ngt-modal.module.d.ts +2 -2
  50. package/components/ngt-multi-select/ngt-multi-select.component.d.ts +97 -97
  51. package/components/ngt-multi-select/ngt-multi-select.module.d.ts +2 -2
  52. package/components/ngt-pagination/ngt-pagination.component.d.ts +40 -40
  53. package/components/ngt-pagination/ngt-pagination.module.d.ts +2 -2
  54. package/components/ngt-popover/ngt-popover.component.d.ts +28 -28
  55. package/components/ngt-popover/ngt-popover.module.d.ts +2 -2
  56. package/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.d.ts +9 -9
  57. package/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.d.ts +9 -9
  58. package/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.d.ts +14 -14
  59. package/components/ngt-portlet/ngt-portlet.component.d.ts +17 -17
  60. package/components/ngt-portlet/ngt-portlet.module.d.ts +2 -2
  61. package/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.d.ts +6 -6
  62. package/components/ngt-radio-button/ngt-radio-button.component.d.ts +32 -32
  63. package/components/ngt-radio-button/ngt-radio-button.module.d.ts +2 -2
  64. package/components/ngt-section/ngt-section.component.d.ts +26 -26
  65. package/components/ngt-section/ngt-section.module.d.ts +2 -2
  66. package/components/ngt-select/ngt-select.component.d.ts +131 -131
  67. package/components/ngt-select/ngt-select.directive.d.ts +13 -13
  68. package/components/ngt-select/ngt-select.module.d.ts +2 -2
  69. package/components/ngt-shining/ngt-shining.component.d.ts +16 -16
  70. package/components/ngt-shining/ngt-shining.module.d.ts +2 -2
  71. package/components/ngt-sidenav/ngt-sidenav.component.d.ts +29 -29
  72. package/components/ngt-sidenav/ngt-sidenav.module.d.ts +2 -2
  73. package/components/ngt-slider/ngt-slider.component.d.ts +31 -31
  74. package/components/ngt-slider/ngt-slider.module.d.ts +2 -2
  75. package/components/ngt-svg/ngt-svg.component.d.ts +10 -10
  76. package/components/ngt-svg/ngt-svg.module.d.ts +2 -2
  77. package/components/ngt-tag/ngt-tag.component.d.ts +10 -10
  78. package/components/ngt-tag/ngt-tag.module.d.ts +2 -2
  79. package/components/ngt-textarea/ngt-textarea.component.d.ts +46 -46
  80. package/components/ngt-textarea/ngt-textarea.module.d.ts +2 -2
  81. package/components/ngt-validation/ngt-validation.component.d.ts +10 -10
  82. package/components/ngt-validation/ngt-validation.module.d.ts +2 -2
  83. package/directives/ngt-stylizable/ngt-stylizable.directive.d.ts +65 -65
  84. package/directives/ngt-stylizable/ngt-stylizable.module.d.ts +2 -2
  85. package/enums/size.enum.d.ts +8 -8
  86. package/esm2015/animations/ngt-angular-animations.js +34 -34
  87. package/esm2015/base/ngt-base-ng-model.js +90 -90
  88. package/esm2015/components/ngt-action/ngt-action.component.js +49 -49
  89. package/esm2015/components/ngt-action/ngt-action.module.js +19 -19
  90. package/esm2015/components/ngt-button/ngt-button.component.js +106 -106
  91. package/esm2015/components/ngt-button/ngt-button.module.js +19 -19
  92. package/esm2015/components/ngt-checkbox/ngt-checkbox.component.js +139 -139
  93. package/esm2015/components/ngt-checkbox/ngt-checkbox.module.js +19 -19
  94. package/esm2015/components/ngt-content/ngt-content.component.js +33 -33
  95. package/esm2015/components/ngt-content/ngt-content.module.js +15 -15
  96. package/esm2015/components/ngt-datatable/ngt-datatable.component.js +409 -409
  97. package/esm2015/components/ngt-datatable/ngt-datatable.module.js +58 -58
  98. package/esm2015/components/ngt-datatable/ngt-tbody/ngt-tbody.component.js +58 -58
  99. package/esm2015/components/ngt-datatable/ngt-td/ngt-td.component.js +63 -63
  100. package/esm2015/components/ngt-datatable/ngt-td-check/ngt-td-check.component.js +105 -105
  101. package/esm2015/components/ngt-datatable/ngt-th/ngt-th.component.js +195 -195
  102. package/esm2015/components/ngt-datatable/ngt-th-check/ngt-th-check.component.js +87 -87
  103. package/esm2015/components/ngt-datatable/ngt-thead/ngt-thead.component.js +56 -56
  104. package/esm2015/components/ngt-datatable/ngt-tr/ngt-tr.component.js +76 -76
  105. package/esm2015/components/ngt-date/ngt-date.component.js +380 -380
  106. package/esm2015/components/ngt-date/ngt-date.module.js +25 -25
  107. package/esm2015/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.js +20 -20
  108. package/esm2015/components/ngt-dropdown/ngt-dropdown.component.js +185 -185
  109. package/esm2015/components/ngt-dropdown/ngt-dropdown.module.js +16 -16
  110. package/esm2015/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.js +50 -50
  111. package/esm2015/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.js +59 -59
  112. package/esm2015/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.js +67 -67
  113. package/esm2015/components/ngt-dropzone/ngt-dropzone.component.js +434 -434
  114. package/esm2015/components/ngt-dropzone/ngt-dropzone.module.js +37 -37
  115. package/esm2015/components/ngt-floating-button/ngt-floating-button.component.js +94 -94
  116. package/esm2015/components/ngt-floating-button/ngt-floating-button.module.js +19 -19
  117. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.js +23 -23
  118. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.js +15 -15
  119. package/esm2015/components/ngt-form/ngt-form.component.js +181 -181
  120. package/esm2015/components/ngt-form/ngt-form.module.js +17 -17
  121. package/esm2015/components/ngt-header-nav/ngt-header-nav.component.js +38 -38
  122. package/esm2015/components/ngt-header-nav/ngt-header-nav.module.js +15 -15
  123. package/esm2015/components/ngt-helper/ngt-helper.component.js +51 -51
  124. package/esm2015/components/ngt-helper/ngt-helper.module.js +19 -19
  125. package/esm2015/components/ngt-input/ngt-input.component.js +680 -680
  126. package/esm2015/components/ngt-input/ngt-input.module.js +28 -28
  127. package/esm2015/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.js +11 -11
  128. package/esm2015/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.js +11 -11
  129. package/esm2015/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.js +40 -40
  130. package/esm2015/components/ngt-modal/ngt-modal.component.js +79 -79
  131. package/esm2015/components/ngt-modal/ngt-modal.module.js +28 -28
  132. package/esm2015/components/ngt-multi-select/ngt-multi-select.component.js +394 -394
  133. package/esm2015/components/ngt-multi-select/ngt-multi-select.module.js +33 -33
  134. package/esm2015/components/ngt-pagination/ngt-pagination.component.js +172 -172
  135. package/esm2015/components/ngt-pagination/ngt-pagination.module.js +23 -23
  136. package/esm2015/components/ngt-popover/ngt-popover.component.js +73 -73
  137. package/esm2015/components/ngt-popover/ngt-popover.module.js +17 -17
  138. package/esm2015/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.js +34 -34
  139. package/esm2015/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.js +33 -33
  140. package/esm2015/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.js +47 -47
  141. package/esm2015/components/ngt-portlet/ngt-portlet.component.js +58 -58
  142. package/esm2015/components/ngt-portlet/ngt-portlet.module.js +32 -32
  143. package/esm2015/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.js +19 -19
  144. package/esm2015/components/ngt-radio-button/ngt-radio-button.component.js +103 -103
  145. package/esm2015/components/ngt-radio-button/ngt-radio-button.module.js +20 -20
  146. package/esm2015/components/ngt-section/ngt-section.component.js +101 -101
  147. package/esm2015/components/ngt-section/ngt-section.module.js +21 -21
  148. package/esm2015/components/ngt-select/ngt-select.component.js +488 -488
  149. package/esm2015/components/ngt-select/ngt-select.directive.js +35 -35
  150. package/esm2015/components/ngt-select/ngt-select.module.js +40 -40
  151. package/esm2015/components/ngt-shining/ngt-shining.component.js +41 -41
  152. package/esm2015/components/ngt-shining/ngt-shining.module.js +15 -15
  153. package/esm2015/components/ngt-sidenav/ngt-sidenav.component.js +123 -123
  154. package/esm2015/components/ngt-sidenav/ngt-sidenav.module.js +15 -15
  155. package/esm2015/components/ngt-slider/ngt-slider.component.js +82 -82
  156. package/esm2015/components/ngt-slider/ngt-slider.module.js +17 -17
  157. package/esm2015/components/ngt-svg/ngt-svg.component.js +52 -52
  158. package/esm2015/components/ngt-svg/ngt-svg.module.js +19 -19
  159. package/esm2015/components/ngt-tag/ngt-tag.component.js +36 -36
  160. package/esm2015/components/ngt-tag/ngt-tag.module.js +17 -17
  161. package/esm2015/components/ngt-textarea/ngt-textarea.component.js +210 -210
  162. package/esm2015/components/ngt-textarea/ngt-textarea.module.js +26 -26
  163. package/esm2015/components/ngt-validation/ngt-validation.component.js +24 -24
  164. package/esm2015/components/ngt-validation/ngt-validation.module.js +15 -15
  165. package/esm2015/directives/ngt-stylizable/ngt-stylizable.directive.js +227 -227
  166. package/esm2015/directives/ngt-stylizable/ngt-stylizable.module.js +15 -15
  167. package/esm2015/enums/size.enum.js +11 -11
  168. package/esm2015/helpers/enum/enum.js +7 -7
  169. package/esm2015/helpers/form/form.js +14 -14
  170. package/esm2015/helpers/routing/route.js +11 -11
  171. package/esm2015/helpers/uuid.js +10 -10
  172. package/esm2015/ng-tailwind.js +10 -10
  173. package/esm2015/public-api.js +120 -120
  174. package/esm2015/services/http/ngt-attachment-http.service.js +3 -3
  175. package/esm2015/services/http/ngt-http-form.service.js +3 -3
  176. package/esm2015/services/http/ngt-http-resource.service.js +3 -3
  177. package/esm2015/services/http/ngt-http-validation.service.js +3 -3
  178. package/esm2015/services/http/ngt-http.service.js +3 -3
  179. package/esm2015/services/http/ngt-translate.service.js +3 -3
  180. package/esm2015/services/ngt-stylizable/ngt-stylizable.service.js +273 -273
  181. package/fesm2015/ng-tailwind.js +6690 -6690
  182. package/fesm2015/ng-tailwind.js.map +1 -1
  183. package/helpers/enum/enum.d.ts +1 -1
  184. package/helpers/form/form.d.ts +4 -4
  185. package/helpers/routing/route.d.ts +2 -2
  186. package/helpers/uuid.d.ts +1 -1
  187. package/ng-tailwind.d.ts +10 -10
  188. package/ng-tailwind.metadata.json +1 -1
  189. package/package.json +2 -2
  190. package/public-api.d.ts +82 -82
  191. package/services/http/ngt-attachment-http.service.d.ts +10 -10
  192. package/services/http/ngt-http-form.service.d.ts +5 -5
  193. package/services/http/ngt-http-resource.service.d.ts +12 -12
  194. package/services/http/ngt-http-validation.service.d.ts +11 -11
  195. package/services/http/ngt-http.service.d.ts +27 -27
  196. package/services/http/ngt-translate.service.d.ts +29 -29
  197. package/services/ngt-stylizable/ngt-stylizable.service.d.ts +96 -96
@@ -1,181 +1,181 @@
1
- import { Component, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
2
- import { ControlContainer, NgForm } from '@angular/forms';
3
- import { ActivatedRoute, Router } from '@angular/router';
4
- import { Observable } from 'rxjs';
5
- import { isValidNgForm } from '../../helpers/form/form';
6
- import { getIdFromUri } from '../../helpers/routing/route';
7
- import { NgtHttpFormService } from '../../services/http/ngt-http-form.service';
8
- export class NgtFormComponent {
9
- constructor(formContainer, ngForm, router, route, ngtHttpFormService) {
10
- this.formContainer = formContainer;
11
- this.ngForm = ngForm;
12
- this.router = router;
13
- this.route = route;
14
- this.ngtHttpFormService = ngtHttpFormService;
15
- this.guessFormState = true;
16
- this.message = '';
17
- this.routeIdentifier = 'id';
18
- this.onCreating = new EventEmitter;
19
- this.onEditing = new EventEmitter;
20
- this.onLoadingChange = new EventEmitter;
21
- this.onShiningChange = new EventEmitter;
22
- this.setupComponent = new EventEmitter;
23
- this.onResourceLoadingError = new EventEmitter;
24
- this.subscriptions = [];
25
- }
26
- ngOnInit() {
27
- if (this.guessFormState) {
28
- this.subscriptions.push(this.determineFormState().subscribe(() => {
29
- this.setupComponent.emit();
30
- }));
31
- }
32
- else {
33
- this.setupComponent.emit();
34
- }
35
- this.subscriptions.push(this.ngForm.ngSubmit.subscribe(() => {
36
- if (!this.ngForm.valid) {
37
- NgtFormComponent.onSubmitInvalidForm.emit(this.ngForm);
38
- }
39
- }));
40
- }
41
- ngOnDestroy() {
42
- this.destroySubscriptions();
43
- }
44
- isCreating() {
45
- return this.formState === NgtFormState.CREATING;
46
- }
47
- isEditing() {
48
- return this.formState === NgtFormState.EDITING;
49
- }
50
- isLoading() {
51
- return this.loading;
52
- }
53
- isShining() {
54
- return this.shining;
55
- }
56
- canShowValidationMessage() {
57
- return this.formContainer &&
58
- this.formContainer['submitted'] &&
59
- this.formContainer.status != 'VALID' &&
60
- this.formContainer.status != 'DISABLED';
61
- }
62
- setShining(shining) {
63
- this.shining = shining;
64
- this.onShiningChange.emit(this.shining);
65
- }
66
- setLoading(loading) {
67
- this.loading = loading;
68
- this.onLoadingChange.emit(this.loading);
69
- }
70
- setFormState(state, triggerChange = true) {
71
- this.formState = state;
72
- if (triggerChange) {
73
- this.triggerFormStateChange();
74
- }
75
- }
76
- getFormState() {
77
- return this.formState;
78
- }
79
- triggerFormStateChange() {
80
- if (this.isEditing()) {
81
- this.triggerFormEditing();
82
- }
83
- else if (this.isCreating()) {
84
- this.triggerFormCreating();
85
- }
86
- }
87
- formHasChanges() {
88
- return this.ngForm.dirty;
89
- }
90
- saveResource() {
91
- return new Observable((observer) => {
92
- if (isValidNgForm(this.ngForm)) {
93
- this.setLoading(true);
94
- this.subscriptions.push(this.ngtHttpFormService.saveResource(this.resource)
95
- .subscribe((response) => {
96
- this.setLoading(false);
97
- observer.next(response);
98
- observer.complete();
99
- }));
100
- }
101
- else {
102
- observer.error();
103
- }
104
- });
105
- }
106
- triggerFormCreating() {
107
- this.onCreating.emit();
108
- }
109
- triggerFormEditing() {
110
- if (this.uriId && this.resource) {
111
- this.setLoading(true);
112
- this.setShining(true);
113
- this.subscriptions.push(this.ngtHttpFormService.loadResourceById(this.resource, this.uriId)
114
- .subscribe((resource) => {
115
- this.setLoading(false);
116
- this.setShining(false);
117
- this.onEditing.emit(resource);
118
- setTimeout(() => this.ngForm.form.markAsPristine(), 1500);
119
- }, (error) => {
120
- this.setLoading(false);
121
- this.setShining(false);
122
- this.onResourceLoadingError.emit(error);
123
- }));
124
- return;
125
- }
126
- this.onEditing.emit(null);
127
- }
128
- determineFormState() {
129
- return new Observable((observer) => {
130
- this.subscriptions.push(getIdFromUri(this.route, this.routeIdentifier).subscribe((id) => {
131
- this.uriId = id;
132
- if (this.uriId) {
133
- this.setFormState(NgtFormState.EDITING);
134
- }
135
- else {
136
- this.setFormState(NgtFormState.CREATING);
137
- }
138
- observer.next();
139
- }));
140
- });
141
- }
142
- destroySubscriptions() {
143
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
144
- this.subscriptions = [];
145
- }
146
- }
147
- NgtFormComponent.onSubmitInvalidForm = new EventEmitter;
148
- NgtFormComponent.decorators = [
149
- { type: Component, args: [{
150
- selector: 'ngt-form',
151
- template: "<ngt-form-validation-message *ngIf='!customLayout'></ngt-form-validation-message>\r\n<ng-content></ng-content>"
152
- },] }
153
- ];
154
- NgtFormComponent.ctorParameters = () => [
155
- { type: ControlContainer, decorators: [{ type: Optional }, { type: Host }] },
156
- { type: NgForm, decorators: [{ type: Optional }, { type: Host }] },
157
- { type: Router },
158
- { type: ActivatedRoute },
159
- { type: NgtHttpFormService }
160
- ];
161
- NgtFormComponent.propDecorators = {
162
- guessFormState: [{ type: Input }],
163
- message: [{ type: Input }],
164
- routeIdentifier: [{ type: Input }],
165
- resource: [{ type: Input }],
166
- customLayout: [{ type: Input }],
167
- onSubmitInvalidForm: [{ type: Output }],
168
- onCreating: [{ type: Output }],
169
- onEditing: [{ type: Output }],
170
- onLoadingChange: [{ type: Output }],
171
- onShiningChange: [{ type: Output }],
172
- setupComponent: [{ type: Output }],
173
- onResourceLoadingError: [{ type: Output }]
174
- };
175
- export var NgtFormState;
176
- (function (NgtFormState) {
177
- NgtFormState["CREATING"] = "CREATING";
178
- NgtFormState["EDITING"] = "EDITING";
179
- })(NgtFormState || (NgtFormState = {}));
180
- ;
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWZvcm0vbmd0LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBTTdFLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QnpCLFlBRVcsYUFBK0IsRUFFL0IsTUFBYyxFQUNkLE1BQWMsRUFDZCxLQUFxQixFQUNwQixrQkFBc0M7UUFMdkMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRS9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTdCbEMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixvQkFBZSxHQUFXLElBQUksQ0FBQztRQU05QixlQUFVLEdBQXNCLElBQUksWUFBWSxDQUFDO1FBQ2pELGNBQVMsR0FB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QUNMLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDOztBQXZMdUIsb0NBQW1CLEdBQXlCLElBQUksWUFBWSxDQUFDOztZQVh4RixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLDBIQUF3QzthQUMzQzs7O1lBWE8sZ0JBQWdCLHVCQW9DZixRQUFRLFlBQUksSUFBSTtZQXBDQyxNQUFNLHVCQXNDdkIsUUFBUSxZQUFJLElBQUk7WUFyQ0QsTUFBTTtZQUF0QixjQUFjO1lBS2Qsa0JBQWtCOzs7NkJBT3JCLEtBQUs7c0JBQ0wsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztrQ0FFTCxNQUFNO3lCQUVOLE1BQU07d0JBQ04sTUFBTTs4QkFDTixNQUFNOzhCQUNOLE1BQU07NkJBQ04sTUFBTTtxQ0FDTixNQUFNOztBQW1MWCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3BCLHFDQUFxQixDQUFBO0lBQ3JCLG1DQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QjtBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xDb250YWluZXIsIE5nRm9ybX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7aXNWYWxpZE5nRm9ybX0gZnJvbSAnLi4vLi4vaGVscGVycy9mb3JtL2Zvcm0nO1xyXG5pbXBvcnQge2dldElkRnJvbVVyaX0gZnJvbSAnLi4vLi4vaGVscGVycy9yb3V0aW5nL3JvdXRlJztcclxuaW1wb3J0IHtOZ3RIdHRwRm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LWh0dHAtZm9ybS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICduZ3QtZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBndWVzc0Zvcm1TdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcm91dGVJZGVudGlmaWVyOiBzdHJpbmcgPSAnaWQnO1xyXG4gICAgQElucHV0KCkgcHVibGljIHJlc291cmNlOiBhbnk7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tTGF5b3V0OiBib29sZWFuO1xyXG5cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgc3RhdGljIG9uU3VibWl0SW52YWxpZEZvcm06IEV2ZW50RW1pdHRlcjxOZ0Zvcm0+ID0gbmV3IEV2ZW50RW1pdHRlcjtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQ3JlYXRpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25FZGl0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uTG9hZGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25TaGluaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZXR1cENvbXBvbmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblJlc291cmNlTG9hZGluZ0Vycm9yOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI7XHJcblxyXG4gICAgcHVibGljIGZvcm1TdGF0ZTogTmd0Rm9ybVN0YXRlO1xyXG4gICAgcHVibGljIHVyaUlkOiBhbnk7XHJcblxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBzaGluaW5nOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KClcclxuICAgICAgICBwdWJsaWMgZm9ybUNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXHJcbiAgICAgICAgcHVibGljIG5nRm9ybTogTmdGb3JtLFxyXG4gICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgbmd0SHR0cEZvcm1TZXJ2aWNlOiBOZ3RIdHRwRm9ybVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWVzc0Zvcm1TdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lRm9ybVN0YXRlKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50LmVtaXQoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5uZ0Zvcm0ubmdTdWJtaXQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0Zvcm0udmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBOZ3RGb3JtQ29tcG9uZW50Lm9uU3VibWl0SW52YWxpZEZvcm0uZW1pdCh0aGlzLm5nRm9ybSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0NyZWF0aW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1TdGF0ZSA9PT0gTmd0Rm9ybVN0YXRlLkNSRUFUSU5HO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0VkaXRpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVN0YXRlID09PSBOZ3RGb3JtU3RhdGUuRURJVElORztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzU2hpbmluZygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGluaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5TaG93VmFsaWRhdGlvbk1lc3NhZ2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRhaW5lciAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250YWluZXJbJ3N1Ym1pdHRlZCddICYmXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRhaW5lci5zdGF0dXMgIT0gJ1ZBTElEJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250YWluZXIuc3RhdHVzICE9ICdESVNBQkxFRCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNoaW5pbmcoc2hpbmluZzogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuc2hpbmluZyA9IHNoaW5pbmc7XHJcbiAgICAgICAgdGhpcy5vblNoaW5pbmdDaGFuZ2UuZW1pdCh0aGlzLnNoaW5pbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBsb2FkaW5nO1xyXG4gICAgICAgIHRoaXMub25Mb2FkaW5nQ2hhbmdlLmVtaXQodGhpcy5sb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Rm9ybVN0YXRlKHN0YXRlOiBOZ3RGb3JtU3RhdGUsIHRyaWdnZXJDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtU3RhdGUgPSBzdGF0ZTtcclxuXHJcbiAgICAgICAgaWYgKHRyaWdnZXJDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRm9ybVN0YXRlQ2hhbmdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRGb3JtU3RhdGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmlnZ2VyRm9ybVN0YXRlQ2hhbmdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckZvcm1FZGl0aW5nKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQ3JlYXRpbmcoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJGb3JtQ3JlYXRpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZvcm1IYXNDaGFuZ2VzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5nRm9ybS5kaXJ0eTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2F2ZVJlc291cmNlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzVmFsaWROZ0Zvcm0odGhpcy5uZ0Zvcm0pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwRm9ybVNlcnZpY2Uuc2F2ZVJlc291cmNlKHRoaXMucmVzb3VyY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cmlnZ2VyRm9ybUNyZWF0aW5nKCkge1xyXG4gICAgICAgIHRoaXMub25DcmVhdGluZy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRyaWdnZXJGb3JtRWRpdGluZygpIHtcclxuICAgICAgICBpZiAodGhpcy51cmlJZCAmJiB0aGlzLnJlc291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTaGluaW5nKHRydWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ndEh0dHBGb3JtU2VydmljZS5sb2FkUmVzb3VyY2VCeUlkKHRoaXMucmVzb3VyY2UsIHRoaXMudXJpSWQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc291cmNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNoaW5pbmcoZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25FZGl0aW5nLmVtaXQocmVzb3VyY2UpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uZ0Zvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpLCAxNTAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTaGluaW5nKGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVzb3VyY2VMb2FkaW5nRXJyb3IuZW1pdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9uRWRpdGluZy5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGV0ZXJtaW5lRm9ybVN0YXRlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBnZXRJZEZyb21VcmkodGhpcy5yb3V0ZSwgdGhpcy5yb3V0ZUlkZW50aWZpZXIpLnN1YnNjcmliZSgoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXJpSWQgPSBpZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXJpSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtU3RhdGUoTmd0Rm9ybVN0YXRlLkVESVRJTkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybVN0YXRlKE5ndEZvcm1TdGF0ZS5DUkVBVElORyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTmd0Rm9ybVN0YXRlIHtcclxuICAgIENSRUFUSU5HID0gJ0NSRUFUSU5HJyxcclxuICAgIEVESVRJTkcgPSAnRURJVElORydcclxufTtcclxuIl19
1
+ import { Component, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
2
+ import { ControlContainer, NgForm } from '@angular/forms';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { Observable } from 'rxjs';
5
+ import { isValidNgForm } from '../../helpers/form/form';
6
+ import { getIdFromUri } from '../../helpers/routing/route';
7
+ import { NgtHttpFormService } from '../../services/http/ngt-http-form.service';
8
+ export class NgtFormComponent {
9
+ constructor(formContainer, ngForm, router, route, ngtHttpFormService) {
10
+ this.formContainer = formContainer;
11
+ this.ngForm = ngForm;
12
+ this.router = router;
13
+ this.route = route;
14
+ this.ngtHttpFormService = ngtHttpFormService;
15
+ this.guessFormState = true;
16
+ this.message = '';
17
+ this.routeIdentifier = 'id';
18
+ this.onCreating = new EventEmitter;
19
+ this.onEditing = new EventEmitter;
20
+ this.onLoadingChange = new EventEmitter;
21
+ this.onShiningChange = new EventEmitter;
22
+ this.setupComponent = new EventEmitter;
23
+ this.onResourceLoadingError = new EventEmitter;
24
+ this.subscriptions = [];
25
+ }
26
+ ngOnInit() {
27
+ if (this.guessFormState) {
28
+ this.subscriptions.push(this.determineFormState().subscribe(() => {
29
+ this.setupComponent.emit();
30
+ }));
31
+ }
32
+ else {
33
+ this.setupComponent.emit();
34
+ }
35
+ this.subscriptions.push(this.ngForm.ngSubmit.subscribe(() => {
36
+ if (!this.ngForm.valid) {
37
+ NgtFormComponent.onSubmitInvalidForm.emit(this.ngForm);
38
+ }
39
+ }));
40
+ }
41
+ ngOnDestroy() {
42
+ this.destroySubscriptions();
43
+ }
44
+ isCreating() {
45
+ return this.formState === NgtFormState.CREATING;
46
+ }
47
+ isEditing() {
48
+ return this.formState === NgtFormState.EDITING;
49
+ }
50
+ isLoading() {
51
+ return this.loading;
52
+ }
53
+ isShining() {
54
+ return this.shining;
55
+ }
56
+ canShowValidationMessage() {
57
+ return this.formContainer &&
58
+ this.formContainer['submitted'] &&
59
+ this.formContainer.status != 'VALID' &&
60
+ this.formContainer.status != 'DISABLED';
61
+ }
62
+ setShining(shining) {
63
+ this.shining = shining;
64
+ this.onShiningChange.emit(this.shining);
65
+ }
66
+ setLoading(loading) {
67
+ this.loading = loading;
68
+ this.onLoadingChange.emit(this.loading);
69
+ }
70
+ setFormState(state, triggerChange = true) {
71
+ this.formState = state;
72
+ if (triggerChange) {
73
+ this.triggerFormStateChange();
74
+ }
75
+ }
76
+ getFormState() {
77
+ return this.formState;
78
+ }
79
+ triggerFormStateChange() {
80
+ if (this.isEditing()) {
81
+ this.triggerFormEditing();
82
+ }
83
+ else if (this.isCreating()) {
84
+ this.triggerFormCreating();
85
+ }
86
+ }
87
+ formHasChanges() {
88
+ return this.ngForm.dirty;
89
+ }
90
+ saveResource() {
91
+ return new Observable((observer) => {
92
+ if (isValidNgForm(this.ngForm)) {
93
+ this.setLoading(true);
94
+ this.subscriptions.push(this.ngtHttpFormService.saveResource(this.resource)
95
+ .subscribe((response) => {
96
+ this.setLoading(false);
97
+ observer.next(response);
98
+ observer.complete();
99
+ }));
100
+ }
101
+ else {
102
+ observer.error();
103
+ }
104
+ });
105
+ }
106
+ triggerFormCreating() {
107
+ this.onCreating.emit();
108
+ }
109
+ triggerFormEditing() {
110
+ if (this.uriId && this.resource) {
111
+ this.setLoading(true);
112
+ this.setShining(true);
113
+ this.subscriptions.push(this.ngtHttpFormService.loadResourceById(this.resource, this.uriId)
114
+ .subscribe((resource) => {
115
+ this.setLoading(false);
116
+ this.setShining(false);
117
+ this.onEditing.emit(resource);
118
+ setTimeout(() => this.ngForm.form.markAsPristine(), 1500);
119
+ }, (error) => {
120
+ this.setLoading(false);
121
+ this.setShining(false);
122
+ this.onResourceLoadingError.emit(error);
123
+ }));
124
+ return;
125
+ }
126
+ this.onEditing.emit(null);
127
+ }
128
+ determineFormState() {
129
+ return new Observable((observer) => {
130
+ this.subscriptions.push(getIdFromUri(this.route, this.routeIdentifier).subscribe((id) => {
131
+ this.uriId = id;
132
+ if (this.uriId) {
133
+ this.setFormState(NgtFormState.EDITING);
134
+ }
135
+ else {
136
+ this.setFormState(NgtFormState.CREATING);
137
+ }
138
+ observer.next();
139
+ }));
140
+ });
141
+ }
142
+ destroySubscriptions() {
143
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
144
+ this.subscriptions = [];
145
+ }
146
+ }
147
+ NgtFormComponent.onSubmitInvalidForm = new EventEmitter;
148
+ NgtFormComponent.decorators = [
149
+ { type: Component, args: [{
150
+ selector: 'ngt-form',
151
+ template: "<ngt-form-validation-message *ngIf='!customLayout'></ngt-form-validation-message>\n<ng-content></ng-content>"
152
+ },] }
153
+ ];
154
+ NgtFormComponent.ctorParameters = () => [
155
+ { type: ControlContainer, decorators: [{ type: Optional }, { type: Host }] },
156
+ { type: NgForm, decorators: [{ type: Optional }, { type: Host }] },
157
+ { type: Router },
158
+ { type: ActivatedRoute },
159
+ { type: NgtHttpFormService }
160
+ ];
161
+ NgtFormComponent.propDecorators = {
162
+ guessFormState: [{ type: Input }],
163
+ message: [{ type: Input }],
164
+ routeIdentifier: [{ type: Input }],
165
+ resource: [{ type: Input }],
166
+ customLayout: [{ type: Input }],
167
+ onSubmitInvalidForm: [{ type: Output }],
168
+ onCreating: [{ type: Output }],
169
+ onEditing: [{ type: Output }],
170
+ onLoadingChange: [{ type: Output }],
171
+ onShiningChange: [{ type: Output }],
172
+ setupComponent: [{ type: Output }],
173
+ onResourceLoadingError: [{ type: Output }]
174
+ };
175
+ export var NgtFormState;
176
+ (function (NgtFormState) {
177
+ NgtFormState["CREATING"] = "CREATING";
178
+ NgtFormState["EDITING"] = "EDITING";
179
+ })(NgtFormState || (NgtFormState = {}));
180
+ ;
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWZvcm0vbmd0LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBTTdFLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QnpCLFlBRVcsYUFBK0IsRUFFL0IsTUFBYyxFQUNkLE1BQWMsRUFDZCxLQUFxQixFQUNwQixrQkFBc0M7UUFMdkMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRS9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTdCbEMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixvQkFBZSxHQUFXLElBQUksQ0FBQztRQU05QixlQUFVLEdBQXNCLElBQUksWUFBWSxDQUFDO1FBQ2pELGNBQVMsR0FB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QUNMLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDOztBQXZMdUIsb0NBQW1CLEdBQXlCLElBQUksWUFBWSxDQUFDOztZQVh4RixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLHdIQUF3QzthQUMzQzs7O1lBWE8sZ0JBQWdCLHVCQW9DZixRQUFRLFlBQUksSUFBSTtZQXBDQyxNQUFNLHVCQXNDdkIsUUFBUSxZQUFJLElBQUk7WUFyQ0QsTUFBTTtZQUF0QixjQUFjO1lBS2Qsa0JBQWtCOzs7NkJBT3JCLEtBQUs7c0JBQ0wsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztrQ0FFTCxNQUFNO3lCQUVOLE1BQU07d0JBQ04sTUFBTTs4QkFDTixNQUFNOzhCQUNOLE1BQU07NkJBQ04sTUFBTTtxQ0FDTixNQUFNOztBQW1MWCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3BCLHFDQUFxQixDQUFBO0lBQ3JCLG1DQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QjtBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm19IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtpc1ZhbGlkTmdGb3JtfSBmcm9tICcuLi8uLi9oZWxwZXJzL2Zvcm0vZm9ybSc7XG5pbXBvcnQge2dldElkRnJvbVVyaX0gZnJvbSAnLi4vLi4vaGVscGVycy9yb3V0aW5nL3JvdXRlJztcbmltcG9ydCB7Tmd0SHR0cEZvcm1TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL25ndC1odHRwLWZvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE5ndEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgcHVibGljIGd1ZXNzRm9ybVN0YXRlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIHJvdXRlSWRlbnRpZmllcjogc3RyaW5nID0gJ2lkJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVzb3VyY2U6IGFueTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tTGF5b3V0OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzdGF0aWMgb25TdWJtaXRJbnZhbGlkRm9ybTogRXZlbnRFbWl0dGVyPE5nRm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNyZWF0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkVkaXRpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uTG9hZGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uU2hpbmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjtcbiAgICBAT3V0cHV0KCkgcHVibGljIHNldHVwQ29tcG9uZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblJlc291cmNlTG9hZGluZ0Vycm9yOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI7XG5cbiAgICBwdWJsaWMgZm9ybVN0YXRlOiBOZ3RGb3JtU3RhdGU7XG4gICAgcHVibGljIHVyaUlkOiBhbnk7XG5cbiAgICBwcml2YXRlIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBzaGluaW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIG5ndEh0dHBGb3JtU2VydmljZTogTmd0SHR0cEZvcm1TZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5ndWVzc0Zvcm1TdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5kZXRlcm1pbmVGb3JtU3RhdGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQuZW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLm5nRm9ybS5uZ1N1Ym1pdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uZ0Zvcm0udmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgTmd0Rm9ybUNvbXBvbmVudC5vblN1Ym1pdEludmFsaWRGb3JtLmVtaXQodGhpcy5uZ0Zvcm0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ3JlYXRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1TdGF0ZSA9PT0gTmd0Rm9ybVN0YXRlLkNSRUFUSU5HO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VkaXRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1TdGF0ZSA9PT0gTmd0Rm9ybVN0YXRlLkVESVRJTkc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzTG9hZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTaGluaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGluaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5TaG93VmFsaWRhdGlvbk1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Db250YWluZXIgJiZcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRhaW5lclsnc3VibWl0dGVkJ10gJiZcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRhaW5lci5zdGF0dXMgIT0gJ1ZBTElEJyAmJlxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udGFpbmVyLnN0YXR1cyAhPSAnRElTQUJMRUQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTaGluaW5nKHNoaW5pbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zaGluaW5nID0gc2hpbmluZztcbiAgICAgICAgdGhpcy5vblNoaW5pbmdDaGFuZ2UuZW1pdCh0aGlzLnNoaW5pbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcbiAgICAgICAgdGhpcy5vbkxvYWRpbmdDaGFuZ2UuZW1pdCh0aGlzLmxvYWRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGb3JtU3RhdGUoc3RhdGU6IE5ndEZvcm1TdGF0ZSwgdHJpZ2dlckNoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5mb3JtU3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRm9ybVN0YXRlQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybVN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtU3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHRyaWdnZXJGb3JtU3RhdGVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJGb3JtRWRpdGluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNDcmVhdGluZygpKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJGb3JtQ3JlYXRpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtSGFzQ2hhbmdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdGb3JtLmRpcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlUmVzb3VyY2UoKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkTmdGb3JtKHRoaXMubmdGb3JtKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ndEh0dHBGb3JtU2VydmljZS5zYXZlUmVzb3VyY2UodGhpcy5yZXNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmlnZ2VyRm9ybUNyZWF0aW5nKCkge1xuICAgICAgICB0aGlzLm9uQ3JlYXRpbmcuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmlnZ2VyRm9ybUVkaXRpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLnVyaUlkICYmIHRoaXMucmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hpbmluZyh0cnVlKTtcblxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwRm9ybVNlcnZpY2UubG9hZFJlc291cmNlQnlJZCh0aGlzLnJlc291cmNlLCB0aGlzLnVyaUlkKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc291cmNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2hpbmluZyhmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRWRpdGluZy5lbWl0KHJlc291cmNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uZ0Zvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpLCAxNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2hpbmluZyhmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVzb3VyY2VMb2FkaW5nRXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25FZGl0aW5nLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlcm1pbmVGb3JtU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIGdldElkRnJvbVVyaSh0aGlzLnJvdXRlLCB0aGlzLnJvdXRlSWRlbnRpZmllcikuc3Vic2NyaWJlKChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXJpSWQgPSBpZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51cmlJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtU3RhdGUoTmd0Rm9ybVN0YXRlLkVESVRJTkcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtU3RhdGUoTmd0Rm9ybVN0YXRlLkNSRUFUSU5HKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95U3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOZ3RGb3JtU3RhdGUge1xuICAgIENSRUFUSU5HID0gJ0NSRUFUSU5HJyxcbiAgICBFRElUSU5HID0gJ0VESVRJTkcnXG59O1xuIl19
@@ -1,17 +1,17 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { NgtFormValidationMessageModule } from './ngt-form-validation-message/ngt-form-validation-message.module';
4
- import { NgtFormComponent } from './ngt-form.component';
5
- export class NgtFormModule {
6
- }
7
- NgtFormModule.decorators = [
8
- { type: NgModule, args: [{
9
- declarations: [NgtFormComponent],
10
- exports: [NgtFormComponent],
11
- imports: [
12
- CommonModule,
13
- NgtFormValidationMessageModule
14
- ]
15
- },] }
16
- ];
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWZvcm0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWZvcm0vbmd0LWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBVXhELE1BQU0sT0FBTyxhQUFhOzs7WUFSekIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osOEJBQThCO2lCQUNqQzthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE5ndEZvcm1WYWxpZGF0aW9uTWVzc2FnZU1vZHVsZSB9IGZyb20gJy4vbmd0LWZvcm0tdmFsaWRhdGlvbi1tZXNzYWdlL25ndC1mb3JtLXZhbGlkYXRpb24tbWVzc2FnZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBOZ3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW05ndEZvcm1Db21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW05ndEZvcm1Db21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBOZ3RGb3JtVmFsaWRhdGlvbk1lc3NhZ2VNb2R1bGVcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5ndEZvcm1Nb2R1bGUgeyB9XHJcbiJdfQ==
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NgtFormValidationMessageModule } from './ngt-form-validation-message/ngt-form-validation-message.module';
4
+ import { NgtFormComponent } from './ngt-form.component';
5
+ export class NgtFormModule {
6
+ }
7
+ NgtFormModule.decorators = [
8
+ { type: NgModule, args: [{
9
+ declarations: [NgtFormComponent],
10
+ exports: [NgtFormComponent],
11
+ imports: [
12
+ CommonModule,
13
+ NgtFormValidationMessageModule
14
+ ]
15
+ },] }
16
+ ];
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWZvcm0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWZvcm0vbmd0LWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBVXhELE1BQU0sT0FBTyxhQUFhOzs7WUFSekIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osOEJBQThCO2lCQUNqQzthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5ndEZvcm1WYWxpZGF0aW9uTWVzc2FnZU1vZHVsZSB9IGZyb20gJy4vbmd0LWZvcm0tdmFsaWRhdGlvbi1tZXNzYWdlL25ndC1mb3JtLXZhbGlkYXRpb24tbWVzc2FnZS5tb2R1bGUnO1xuaW1wb3J0IHsgTmd0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWZvcm0uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3RGb3JtQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbTmd0Rm9ybUNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE5ndEZvcm1WYWxpZGF0aW9uTWVzc2FnZU1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0Rm9ybU1vZHVsZSB7IH1cbiJdfQ==
@@ -1,38 +1,38 @@
1
- import { Component, Injector, Input, Optional, Self, ViewChild } from '@angular/core';
2
- import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
3
- import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
4
- export class NgtHeaderNavComponent {
5
- constructor(injector, ngtStylizableDirective) {
6
- this.injector = injector;
7
- this.ngtStylizableDirective = ngtStylizableDirective;
8
- if (this.ngtStylizableDirective) {
9
- this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();
10
- }
11
- else {
12
- this.ngtStyle = new NgtStylizableService();
13
- }
14
- this.ngtStyle.load(this.injector, 'HeaderNav', {
15
- h: 'h-auto',
16
- color: {}
17
- });
18
- }
19
- ngAfterViewInit() {
20
- this.element.nativeElement.classList.add('tail-animate-fade-up');
21
- }
22
- }
23
- NgtHeaderNavComponent.decorators = [
24
- { type: Component, args: [{
25
- selector: 'ngt-header-nav',
26
- template: "<section class=\"flex\">\r\n <nav class=\"w-full relative {{ ngtStyle.compile(['color.bg']) }}\" #element>\r\n <div class=\"h-full\">\r\n <!-- Float Left -->\r\n <div class=\"float-left flex\">\r\n <ng-content select=\"[left-header]\"></ng-content>\r\n </div>\r\n \r\n <!-- Float Right -->\r\n <div class=\"float-right flex h-full\">\r\n <ng-content select=\"[right-header]\"></ng-content>\r\n </div>\r\n \r\n <!-- Fallback -->\r\n <ng-content></ng-content>\r\n </div>\r\n </nav>\r\n</section>",
27
- styles: [""]
28
- },] }
29
- ];
30
- NgtHeaderNavComponent.ctorParameters = () => [
31
- { type: Injector },
32
- { type: NgtStylizableDirective, decorators: [{ type: Self }, { type: Optional }] }
33
- ];
34
- NgtHeaderNavComponent.propDecorators = {
35
- element: [{ type: ViewChild, args: ['element', { static: true },] }],
36
- ngtStyle: [{ type: Input }]
37
- };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWhlYWRlci1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWhlYWRlci1uYXYvbmd0LWhlYWRlci1uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU81RixNQUFNLE9BQU8scUJBQXFCO0lBSzlCLFlBQ1ksUUFBa0IsRUFDRSxzQkFBOEM7UUFEbEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNFLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFFMUUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUN6RTthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7U0FDOUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtZQUMzQyxDQUFDLEVBQUUsUUFBUTtZQUNYLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7OztZQTVCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIscWxCQUE4Qzs7YUFFakQ7OztZQVQrQixRQUFRO1lBRS9CLHNCQUFzQix1QkFldEIsSUFBSSxZQUFJLFFBQVE7OztzQkFOcEIsU0FBUyxTQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBRXJDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbmd0LXN0eWxpemFibGUvbmd0LXN0eWxpemFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICduZ3QtaGVhZGVyLW5hdicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWhlYWRlci1uYXYuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LWhlYWRlci1uYXYuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3RIZWFkZXJOYXZDb21wb25lbnQge1xyXG4gICAgQFZpZXdDaGlsZCgnZWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBuZ3RTdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ3RTdHlsaXphYmxlRGlyZWN0aXZlOiBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlXHJcbiAgICApIHtcclxuICAgICAgICBpZiAodGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmd0U3R5bGUgPSB0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUuZ2V0Tmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5ndFN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ0hlYWRlck5hdicsIHtcclxuICAgICAgICAgICAgaDogJ2gtYXV0bycsXHJcbiAgICAgICAgICAgIGNvbG9yOiB7fVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGFpbC1hbmltYXRlLWZhZGUtdXAnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
1
+ import { Component, Injector, Input, Optional, Self, ViewChild } from '@angular/core';
2
+ import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
3
+ import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
4
+ export class NgtHeaderNavComponent {
5
+ constructor(injector, ngtStylizableDirective) {
6
+ this.injector = injector;
7
+ this.ngtStylizableDirective = ngtStylizableDirective;
8
+ if (this.ngtStylizableDirective) {
9
+ this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();
10
+ }
11
+ else {
12
+ this.ngtStyle = new NgtStylizableService();
13
+ }
14
+ this.ngtStyle.load(this.injector, 'HeaderNav', {
15
+ h: 'h-auto',
16
+ color: {}
17
+ });
18
+ }
19
+ ngAfterViewInit() {
20
+ this.element.nativeElement.classList.add('tail-animate-fade-up');
21
+ }
22
+ }
23
+ NgtHeaderNavComponent.decorators = [
24
+ { type: Component, args: [{
25
+ selector: 'ngt-header-nav',
26
+ template: "<section class=\"flex\">\n <nav class=\"w-full relative {{ ngtStyle.compile(['color.bg']) }}\" #element>\n <div class=\"h-full\">\n <!-- Float Left -->\n <div class=\"float-left flex\">\n <ng-content select=\"[left-header]\"></ng-content>\n </div>\n \n <!-- Float Right -->\n <div class=\"float-right flex h-full\">\n <ng-content select=\"[right-header]\"></ng-content>\n </div>\n \n <!-- Fallback -->\n <ng-content></ng-content>\n </div>\n </nav>\n</section>",
27
+ styles: [""]
28
+ },] }
29
+ ];
30
+ NgtHeaderNavComponent.ctorParameters = () => [
31
+ { type: Injector },
32
+ { type: NgtStylizableDirective, decorators: [{ type: Self }, { type: Optional }] }
33
+ ];
34
+ NgtHeaderNavComponent.propDecorators = {
35
+ element: [{ type: ViewChild, args: ['element', { static: true },] }],
36
+ ngtStyle: [{ type: Input }]
37
+ };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWhlYWRlci1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWhlYWRlci1uYXYvbmd0LWhlYWRlci1uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU81RixNQUFNLE9BQU8scUJBQXFCO0lBSzlCLFlBQ1ksUUFBa0IsRUFDRSxzQkFBOEM7UUFEbEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNFLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFFMUUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUN6RTthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7U0FDOUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtZQUMzQyxDQUFDLEVBQUUsUUFBUTtZQUNYLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7OztZQTVCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsbWpCQUE4Qzs7YUFFakQ7OztZQVQrQixRQUFRO1lBRS9CLHNCQUFzQix1QkFldEIsSUFBSSxZQUFJLFFBQVE7OztzQkFOcEIsU0FBUyxTQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBRXJDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtaGVhZGVyLW5hdicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1oZWFkZXItbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtaGVhZGVyLW5hdi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd0SGVhZGVyTmF2Q29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkKCdlbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgbmd0U3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIG5ndFN0eWxpemFibGVEaXJlY3RpdmU6IE5ndFN0eWxpemFibGVEaXJlY3RpdmVcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZS5nZXROZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdIZWFkZXJOYXYnLCB7XG4gICAgICAgICAgICBoOiAnaC1hdXRvJyxcbiAgICAgICAgICAgIGNvbG9yOiB7fVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0YWlsLWFuaW1hdGUtZmFkZS11cCcpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,15 +1,15 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NgtHeaderNavComponent } from './ngt-header-nav.component';
4
- export class NgtHeaderNavModule {
5
- }
6
- NgtHeaderNavModule.decorators = [
7
- { type: NgModule, args: [{
8
- declarations: [NgtHeaderNavComponent],
9
- exports: [NgtHeaderNavComponent],
10
- imports: [
11
- CommonModule
12
- ]
13
- },] }
14
- ];
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWhlYWRlci1uYXYubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWhlYWRlci1uYXYvbmd0LWhlYWRlci1uYXYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBU25FLE1BQU0sT0FBTyxrQkFBa0I7OztZQVA5QixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNoQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmd0SGVhZGVyTmF2Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtaGVhZGVyLW5hdi5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW05ndEhlYWRlck5hdkNvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbTmd0SGVhZGVyTmF2Q29tcG9uZW50XSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGVcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5ndEhlYWRlck5hdk1vZHVsZSB7IH1cclxuIl19
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgtHeaderNavComponent } from './ngt-header-nav.component';
4
+ export class NgtHeaderNavModule {
5
+ }
6
+ NgtHeaderNavModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ declarations: [NgtHeaderNavComponent],
9
+ exports: [NgtHeaderNavComponent],
10
+ imports: [
11
+ CommonModule
12
+ ]
13
+ },] }
14
+ ];
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWhlYWRlci1uYXYubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWhlYWRlci1uYXYvbmd0LWhlYWRlci1uYXYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBU25FLE1BQU0sT0FBTyxrQkFBa0I7OztZQVA5QixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNoQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3RIZWFkZXJOYXZDb21wb25lbnQgfSBmcm9tICcuL25ndC1oZWFkZXItbmF2LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbTmd0SGVhZGVyTmF2Q29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbTmd0SGVhZGVyTmF2Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0SGVhZGVyTmF2TW9kdWxlIHsgfVxuIl19