@firestitch/form 15.0.0 → 16.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 (128) hide show
  1. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +1 -1
  2. package/app/components/form-template/form-template.component.d.ts +1 -1
  3. package/app/components/form-template-outlet/form-template-outlet.component.d.ts +1 -1
  4. package/app/directives/button.directive.d.ts +1 -1
  5. package/app/directives/form/form.directive.d.ts +1 -1
  6. package/app/directives/form-dialog-close.directive.d.ts +1 -1
  7. package/app/directives/validators/compare.directive.d.ts +1 -1
  8. package/app/directives/validators/control.directive.d.ts +1 -1
  9. package/app/directives/validators/daterange.directive.d.ts +1 -1
  10. package/app/directives/validators/email.directive.d.ts +1 -1
  11. package/app/directives/validators/emails.directive.d.ts +1 -1
  12. package/app/directives/validators/function.directive.d.ts +1 -1
  13. package/app/directives/validators/greater-equal.directive.d.ts +1 -1
  14. package/app/directives/validators/greater.directive.d.ts +1 -1
  15. package/app/directives/validators/integer.directive.d.ts +1 -1
  16. package/app/directives/validators/lesser-equal.directive.d.ts +1 -1
  17. package/app/directives/validators/lesser.directive.d.ts +1 -1
  18. package/app/directives/validators/max.directive.d.ts +1 -1
  19. package/app/directives/validators/maxlength.directive.d.ts +1 -1
  20. package/app/directives/validators/min.directive.d.ts +1 -1
  21. package/app/directives/validators/minlength.directive.d.ts +1 -1
  22. package/app/directives/validators/numeric.directive.d.ts +1 -1
  23. package/app/directives/validators/pattern.directive.d.ts +1 -1
  24. package/app/directives/validators/phone.directive.d.ts +1 -1
  25. package/app/directives/validators/required.directive.d.ts +1 -1
  26. package/app/directives/validators/url.directive.d.ts +1 -1
  27. package/app/directives/validators/validate.directive.d.ts +1 -1
  28. package/app/guards/form-deactivate.guard.d.ts +2 -2
  29. package/esm2022/app/components/confirm-unsaved/confirm-unsaved.component.mjs +51 -0
  30. package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +79 -0
  31. package/esm2022/app/components/form-template/form-template.component.mjs +34 -0
  32. package/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +32 -0
  33. package/esm2022/app/directives/button.directive.mjs +172 -0
  34. package/esm2022/app/directives/form/form.directive.mjs +702 -0
  35. package/esm2022/app/directives/form-dialog-close.directive.mjs +57 -0
  36. package/esm2022/app/directives/form-template.directive.mjs +21 -0
  37. package/{esm2020 → esm2022}/app/directives/submit-button.directive.mjs +4 -4
  38. package/esm2022/app/directives/validators/compare.directive.mjs +48 -0
  39. package/esm2022/app/directives/validators/control.directive.mjs +269 -0
  40. package/esm2022/app/directives/validators/daterange.directive.mjs +42 -0
  41. package/esm2022/app/directives/validators/email.directive.mjs +42 -0
  42. package/esm2022/app/directives/validators/emails.directive.mjs +42 -0
  43. package/esm2022/app/directives/validators/function.directive.mjs +40 -0
  44. package/esm2022/app/directives/validators/greater-equal.directive.mjs +41 -0
  45. package/esm2022/app/directives/validators/greater.directive.mjs +41 -0
  46. package/esm2022/app/directives/validators/integer.directive.mjs +40 -0
  47. package/esm2022/app/directives/validators/lesser-equal.directive.mjs +41 -0
  48. package/esm2022/app/directives/validators/lesser.directive.mjs +41 -0
  49. package/esm2022/app/directives/validators/max.directive.mjs +37 -0
  50. package/esm2022/app/directives/validators/maxlength.directive.mjs +36 -0
  51. package/esm2022/app/directives/validators/min.directive.mjs +37 -0
  52. package/esm2022/app/directives/validators/minlength.directive.mjs +36 -0
  53. package/{esm2020 → esm2022}/app/directives/validators/no-fs-validators.directive.mjs +6 -6
  54. package/esm2022/app/directives/validators/numeric.directive.mjs +42 -0
  55. package/esm2022/app/directives/validators/pattern.directive.mjs +36 -0
  56. package/esm2022/app/directives/validators/phone.directive.mjs +42 -0
  57. package/esm2022/app/directives/validators/required.directive.mjs +66 -0
  58. package/esm2022/app/directives/validators/url.directive.mjs +43 -0
  59. package/esm2022/app/directives/validators/validate.directive.mjs +42 -0
  60. package/esm2022/app/fs-form.module.mjs +209 -0
  61. package/esm2022/app/guards/form-deactivate.guard.mjs +44 -0
  62. package/esm2022/app/services/fsform.service.mjs +94 -0
  63. package/{fesm2020 → fesm2022}/firestitch-form.mjs +354 -291
  64. package/fesm2022/firestitch-form.mjs.map +1 -0
  65. package/package.json +5 -11
  66. package/esm2020/app/components/confirm-unsaved/confirm-unsaved.component.mjs +0 -44
  67. package/esm2020/app/components/form-dialog-actions/form-dialog-actions.component.mjs +0 -75
  68. package/esm2020/app/components/form-template/form-template.component.mjs +0 -31
  69. package/esm2020/app/components/form-template-outlet/form-template-outlet.component.mjs +0 -30
  70. package/esm2020/app/directives/button.directive.mjs +0 -166
  71. package/esm2020/app/directives/form/form.directive.mjs +0 -689
  72. package/esm2020/app/directives/form-dialog-close.directive.mjs +0 -54
  73. package/esm2020/app/directives/form-template.directive.mjs +0 -20
  74. package/esm2020/app/directives/validators/compare.directive.mjs +0 -47
  75. package/esm2020/app/directives/validators/control.directive.mjs +0 -258
  76. package/esm2020/app/directives/validators/daterange.directive.mjs +0 -41
  77. package/esm2020/app/directives/validators/email.directive.mjs +0 -41
  78. package/esm2020/app/directives/validators/emails.directive.mjs +0 -41
  79. package/esm2020/app/directives/validators/function.directive.mjs +0 -41
  80. package/esm2020/app/directives/validators/greater-equal.directive.mjs +0 -40
  81. package/esm2020/app/directives/validators/greater.directive.mjs +0 -40
  82. package/esm2020/app/directives/validators/integer.directive.mjs +0 -39
  83. package/esm2020/app/directives/validators/lesser-equal.directive.mjs +0 -40
  84. package/esm2020/app/directives/validators/lesser.directive.mjs +0 -40
  85. package/esm2020/app/directives/validators/max.directive.mjs +0 -36
  86. package/esm2020/app/directives/validators/maxlength.directive.mjs +0 -35
  87. package/esm2020/app/directives/validators/min.directive.mjs +0 -36
  88. package/esm2020/app/directives/validators/minlength.directive.mjs +0 -35
  89. package/esm2020/app/directives/validators/numeric.directive.mjs +0 -41
  90. package/esm2020/app/directives/validators/pattern.directive.mjs +0 -35
  91. package/esm2020/app/directives/validators/phone.directive.mjs +0 -41
  92. package/esm2020/app/directives/validators/required.directive.mjs +0 -69
  93. package/esm2020/app/directives/validators/url.directive.mjs +0 -45
  94. package/esm2020/app/directives/validators/validate.directive.mjs +0 -43
  95. package/esm2020/app/fs-form.module.mjs +0 -209
  96. package/esm2020/app/guards/form-deactivate.guard.mjs +0 -42
  97. package/esm2020/app/services/fsform.service.mjs +0 -92
  98. package/fesm2015/firestitch-form.mjs +0 -2579
  99. package/fesm2015/firestitch-form.mjs.map +0 -1
  100. package/fesm2020/firestitch-form.mjs.map +0 -1
  101. /package/{esm2020 → esm2022}/app/components/confirm-unsaved/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/app/components/form-dialog-actions/index.mjs +0 -0
  103. /package/{esm2020 → esm2022}/app/components/form-template/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/app/components/form-template-outlet/index.mjs +0 -0
  105. /package/{esm2020 → esm2022}/app/components/index.mjs +0 -0
  106. /package/{esm2020 → esm2022}/app/consts/error-messages.const.mjs +0 -0
  107. /package/{esm2020 → esm2022}/app/directives/form/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/app/directives/validators/index.mjs +0 -0
  110. /package/{esm2020 → esm2022}/app/enums/confirm-result.mjs +0 -0
  111. /package/{esm2020 → esm2022}/app/enums/form-status.mjs +0 -0
  112. /package/{esm2020 → esm2022}/app/enums/index.mjs +0 -0
  113. /package/{esm2020 → esm2022}/app/helpers/confirm-result-continue.mjs +0 -0
  114. /package/{esm2020 → esm2022}/app/helpers/get-active-route.mjs +0 -0
  115. /package/{esm2020 → esm2022}/app/helpers/get-form-errors.mjs +0 -0
  116. /package/{esm2020 → esm2022}/app/helpers/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/app/helpers/is-enabled.mjs +0 -0
  118. /package/{esm2020 → esm2022}/app/interfaces/async-validator.mjs +0 -0
  119. /package/{esm2020 → esm2022}/app/interfaces/confirm-config.mjs +0 -0
  120. /package/{esm2020 → esm2022}/app/interfaces/confirm-tab-group.mjs +0 -0
  121. /package/{esm2020 → esm2022}/app/interfaces/index.mjs +0 -0
  122. /package/{esm2020 → esm2022}/app/interfaces/submit-event.mjs +0 -0
  123. /package/{esm2020 → esm2022}/app/interfaces/submitted-event.mjs +0 -0
  124. /package/{esm2020 → esm2022}/app/interfaces/validator.mjs +0 -0
  125. /package/{esm2020 → esm2022}/app/providers/validate-messages.provider.mjs +0 -0
  126. /package/{esm2020 → esm2022}/app/validators/validators.mjs +0 -0
  127. /package/{esm2020 → esm2022}/firestitch-form.mjs +0 -0
  128. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -18,5 +18,5 @@ export declare class FsFormDialogActionsComponent implements OnInit, OnDestroy {
18
18
  ngOnInit(): void;
19
19
  ngOnDestroy(): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormDialogActionsComponent, [{ optional: true; }, { optional: true; }, null]>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<FsFormDialogActionsComponent, "fs-form-dialog-actions", never, { "save": "save"; "create": "create"; "close": "close"; "done": "done"; "closeData": "closeData"; "name": "name"; }, {}, never, ["*"], false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<FsFormDialogActionsComponent, "fs-form-dialog-actions", never, { "save": { "alias": "save"; "required": false; }; "create": { "alias": "create"; "required": false; }; "close": { "alias": "close"; "required": false; }; "done": { "alias": "done"; "required": false; }; "closeData": { "alias": "closeData"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, {}, never, ["*"], false, never>;
22
22
  }
@@ -9,5 +9,5 @@ export declare class FsFormTemplateComponent implements AfterContentInit {
9
9
  ngOnInit(): void;
10
10
  constructor();
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormTemplateComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<FsFormTemplateComponent, "fs-form-template", never, { "formTemplate": "formTemplate"; }, {}, ["models"], ["*"], false, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<FsFormTemplateComponent, "fs-form-template", never, { "formTemplate": { "alias": "formTemplate"; "required": false; }; }, {}, ["models"], ["*"], false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormTemplateOutletComponent implements AfterContentInit,
9
9
  ngAfterContentInit(): void;
10
10
  constructor();
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormTemplateOutletComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<FsFormTemplateOutletComponent, "fs-form-template-outlet", never, { "formTemplate": "formTemplate"; }, {}, ["models"], never, false, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<FsFormTemplateOutletComponent, "fs-form-template-outlet", never, { "formTemplate": { "alias": "formTemplate"; "required": false; }; }, {}, ["models"], never, false, never>;
13
13
  }
@@ -31,5 +31,5 @@ export declare class FsButtonDirective implements OnInit, OnDestroy {
31
31
  private _resetClass;
32
32
  private _getSvg;
33
33
  static ɵfac: i0.ɵɵFactoryDeclaration<FsButtonDirective, [{ optional: true; host: true; }, { optional: true; }, null, null]>;
34
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsButtonDirective, "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", never, { "name": "name"; "dirtySubmit": "dirtySubmit"; "form": "form"; }, {}, never, never, false, never>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsButtonDirective, "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", never, { "name": { "alias": "name"; "required": false; }; "dirtySubmit": { "alias": "dirtySubmit"; "required": false; }; "form": { "alias": "form"; "required": false; }; }, {}, never, never, false, never>;
35
35
  }
@@ -118,5 +118,5 @@ export declare class FsFormDirective implements OnInit, OnDestroy, AfterContentI
118
118
  private _registerCanDeactivateGuard;
119
119
  private _cleanupCanDeactivate;
120
120
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormDirective, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, null]>;
121
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDirective, "[fsForm]", ["fsForm"], { "wrapperSelector": "wrapperSelector"; "messageSelector": "messageSelector"; "hintSelector": "hintSelector"; "labelSelector": "labelSelector"; "autocomplete": "autocomplete"; "shortcuts": "shortcuts"; "confirm": "confirm"; "confirmDialog": "confirmDialog"; "confirmDrawer": "confirmDrawer"; "confirmBrowser": "confirmBrowser"; "confirmTabs": "confirmTabs"; "dirtySubmitButton": "dirtySubmitButton"; "submit": "submit"; "successDelay": "successDelay"; "errorDelay": "errorDelay"; "tabGroup": "tabGroup"; "deactivationGuard": "deactivationGuard"; }, { "submitEvent": "fsForm"; "invalid": "invalid"; "valid": "valid"; "submitted": "submitted"; "reseted": "reseted"; "cleared": "cleared"; }, ["_tabGroups"], never, false, never>;
121
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDirective, "[fsForm]", ["fsForm"], { "wrapperSelector": { "alias": "wrapperSelector"; "required": false; }; "messageSelector": { "alias": "messageSelector"; "required": false; }; "hintSelector": { "alias": "hintSelector"; "required": false; }; "labelSelector": { "alias": "labelSelector"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "shortcuts": { "alias": "shortcuts"; "required": false; }; "confirm": { "alias": "confirm"; "required": false; }; "confirmDialog": { "alias": "confirmDialog"; "required": false; }; "confirmDrawer": { "alias": "confirmDrawer"; "required": false; }; "confirmBrowser": { "alias": "confirmBrowser"; "required": false; }; "confirmTabs": { "alias": "confirmTabs"; "required": false; }; "dirtySubmitButton": { "alias": "dirtySubmitButton"; "required": false; }; "submit": { "alias": "submit"; "required": false; }; "successDelay": { "alias": "successDelay"; "required": false; }; "errorDelay": { "alias": "errorDelay"; "required": false; }; "tabGroup": { "alias": "tabGroup"; "required": false; }; "deactivationGuard": { "alias": "deactivationGuard"; "required": false; }; }, { "submitEvent": "fsForm"; "invalid": "invalid"; "valid": "valid"; "submitted": "submitted"; "reseted": "reseted"; "cleared": "cleared"; }, ["_tabGroups"], never, false, never>;
122
122
  }
@@ -12,5 +12,5 @@ export declare class FsFormDialogCloseDirective implements OnDestroy {
12
12
  closeClick(): void;
13
13
  ngOnDestroy(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormDialogCloseDirective, [{ optional: true; }, { optional: true; }]>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDialogCloseDirective, "[fsFormDialogClose],[fs-form-dialog-close]", never, { "closeData": "closeData"; }, {}, never, never, false, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDialogCloseDirective, "[fsFormDialogClose],[fs-form-dialog-close]", never, { "closeData": { "alias": "closeData"; "required": false; }; }, {}, never, never, false, never>;
16
16
  }
@@ -11,5 +11,5 @@ export declare class FsFormCompareDirective extends FsControlDirective implement
11
11
  ngAfterViewInit(): void;
12
12
  ngOnDestroy(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormCompareDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormCompareDirective, "[fsFormCompare]", never, { "fsFormCompare": "fsFormCompare"; "validationMessage": "fsFormCompareMessage"; }, {}, never, never, false, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormCompareDirective, "[fsFormCompare]", never, { "fsFormCompare": { "alias": "fsFormCompare"; "required": false; }; "validationMessage": { "alias": "fsFormCompareMessage"; "required": false; }; }, {}, never, never, false, never>;
15
15
  }
@@ -45,5 +45,5 @@ export declare class FsControlDirective implements OnInit, AfterContentInit, OnD
45
45
  };
46
46
  private _setupValidators;
47
47
  static ɵfac: i0.ɵɵFactoryDeclaration<FsControlDirective, [null, null, null, { self: true; }, { optional: true; }, { optional: true; }]>;
48
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsControlDirective, "[fsFormControl]", never, { "wrapperSelector": "wrapperSelector"; "messageSelector": "messageSelector"; "hintSelector": "hintSelector"; "labelSelector": "labelSelector"; "appendMessageClass": "appendMessageClass"; "appendLabelClass": "appendLabelClass"; "appendErrorClass": "appendErrorClass"; "appendHintClass": "appendHintClass"; "validateMessages": "validateMessages"; }, {}, never, never, false, never>;
48
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsControlDirective, "[fsFormControl]", never, { "wrapperSelector": { "alias": "wrapperSelector"; "required": false; }; "messageSelector": { "alias": "messageSelector"; "required": false; }; "hintSelector": { "alias": "hintSelector"; "required": false; }; "labelSelector": { "alias": "labelSelector"; "required": false; }; "appendMessageClass": { "alias": "appendMessageClass"; "required": false; }; "appendLabelClass": { "alias": "appendLabelClass"; "required": false; }; "appendErrorClass": { "alias": "appendErrorClass"; "required": false; }; "appendHintClass": { "alias": "appendHintClass"; "required": false; }; "validateMessages": { "alias": "validateMessages"; "required": false; }; }, {}, never, never, false, never>;
49
49
  }
@@ -9,5 +9,5 @@ export declare class FsFormDateRangeDirective extends FsControlDirective impleme
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormDateRangeDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDateRangeDirective, "[fsFormDateRange]", never, { "fsFormDateRange": "fsFormDateRange"; "validationMessage": "fsFormDateRangeMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormDateRangeDirective, "[fsFormDateRange]", never, { "fsFormDateRange": { "alias": "fsFormDateRange"; "required": false; }; "validationMessage": { "alias": "fsFormDateRangeMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormEmailDirective extends FsControlDirective implements
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormEmailDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormEmailDirective, "[fsFormEmail]", never, { "fsFormEmail": "fsFormEmail"; "validationMessage": "fsFormEmailMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormEmailDirective, "[fsFormEmail]", never, { "fsFormEmail": { "alias": "fsFormEmail"; "required": false; }; "validationMessage": { "alias": "fsFormEmailMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormEmailsDirective extends FsControlDirective implements
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormEmailsDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormEmailsDirective, "[fsFormEmails]", never, { "fsFormEmails": "fsFormEmails"; "validationMessage": "fsFormEmailsMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormEmailsDirective, "[fsFormEmails]", never, { "fsFormEmails": { "alias": "fsFormEmails"; "required": false; }; "validationMessage": { "alias": "fsFormEmailsMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -11,5 +11,5 @@ export declare class FsFormFunctionDirective extends FsControlDirective implemen
11
11
  ngOnChanges(): void;
12
12
  validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormFunctionDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormFunctionDirective, "[fsFormFunction]", never, { "fsFormFunction": "fsFormFunction"; "fsFormFunctionData": "fsFormFunctionData"; "validateOnSubmit": "validateOnSubmit"; }, {}, never, never, false, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormFunctionDirective, "[fsFormFunction]", never, { "fsFormFunction": { "alias": "fsFormFunction"; "required": false; }; "fsFormFunctionData": { "alias": "fsFormFunctionData"; "required": false; }; "validateOnSubmit": { "alias": "validateOnSubmit"; "required": false; }; }, {}, never, never, false, never>;
15
15
  }
@@ -9,5 +9,5 @@ export declare class FsFormGreaterEqualDirective extends FsControlDirective impl
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormGreaterEqualDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormGreaterEqualDirective, "[fsFormGreaterEqual]", never, { "fsFormGreaterEqual": "fsFormGreaterEqual"; "validationMessage": "fsFormGreaterEqualMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormGreaterEqualDirective, "[fsFormGreaterEqual]", never, { "fsFormGreaterEqual": { "alias": "fsFormGreaterEqual"; "required": false; }; "validationMessage": { "alias": "fsFormGreaterEqualMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormGreaterDirective extends FsControlDirective implement
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormGreaterDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormGreaterDirective, "[fsFormGreater]", never, { "fsFormGreater": "fsFormGreater"; "validationMessage": "fsFormGreaterMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormGreaterDirective, "[fsFormGreater]", never, { "fsFormGreater": { "alias": "fsFormGreater"; "required": false; }; "validationMessage": { "alias": "fsFormGreaterMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormIntegerDirective extends FsControlDirective implement
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormIntegerDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormIntegerDirective, "[fsFormInteger]", never, { "fsFormInteger": "fsFormInteger"; "validationMessage": "fsFormIntegerMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormIntegerDirective, "[fsFormInteger]", never, { "fsFormInteger": { "alias": "fsFormInteger"; "required": false; }; "validationMessage": { "alias": "fsFormIntegerMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormLesserEqualDirective extends FsControlDirective imple
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormLesserEqualDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormLesserEqualDirective, "[fsFormLesserEqual]", never, { "fsFormLesserEqual": "fsFormLesserEqual"; "validationMessage": "fsFormLesserEqualMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormLesserEqualDirective, "[fsFormLesserEqual]", never, { "fsFormLesserEqual": { "alias": "fsFormLesserEqual"; "required": false; }; "validationMessage": { "alias": "fsFormLesserEqualMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormLesserDirective extends FsControlDirective implements
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormLesserDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormLesserDirective, "[fsFormLesser]", never, { "fsFormLesser": "fsFormLesser"; "validationMessage": "fsFormLesserMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormLesserDirective, "[fsFormLesser]", never, { "fsFormLesser": { "alias": "fsFormLesser"; "required": false; }; "validationMessage": { "alias": "fsFormLesserMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormMaxDirective extends FsControlDirective implements On
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormMaxDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMaxDirective, "[fsFormMax]", never, { "fsFormMax": "fsFormMax"; "validationMessage": "fsFormMaxMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMaxDirective, "[fsFormMax]", never, { "fsFormMax": { "alias": "fsFormMax"; "required": false; }; "validationMessage": { "alias": "fsFormMaxMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormMaxLengthDirective extends FsControlDirective impleme
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormMaxLengthDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMaxLengthDirective, "[fsFormMaxLength]", never, { "fsFormMaxLength": "fsFormMaxLength"; "validationMessage": "fsFormMaxLengthMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMaxLengthDirective, "[fsFormMaxLength]", never, { "fsFormMaxLength": { "alias": "fsFormMaxLength"; "required": false; }; "validationMessage": { "alias": "fsFormMaxLengthMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormMinDirective extends FsControlDirective implements On
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormMinDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMinDirective, "[fsFormMin]", never, { "fsFormMin": "fsFormMin"; "validationMessage": "fsFormMinMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMinDirective, "[fsFormMin]", never, { "fsFormMin": { "alias": "fsFormMin"; "required": false; }; "validationMessage": { "alias": "fsFormMinMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormMinLengthDirective extends FsControlDirective impleme
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormMinLengthDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMinLengthDirective, "[fsFormMinLength]", never, { "fsFormMinLength": "fsFormMinLength"; "validationMessage": "fsFormMinLengthMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormMinLengthDirective, "[fsFormMinLength]", never, { "fsFormMinLength": { "alias": "fsFormMinLength"; "required": false; }; "validationMessage": { "alias": "fsFormMinLengthMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormNumericDirective extends FsControlDirective implement
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormNumericDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormNumericDirective, "[fsFormNumeric]", never, { "fsFormNumeric": "fsFormNumeric"; "validationMessage": "fsFormNumericMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormNumericDirective, "[fsFormNumeric]", never, { "fsFormNumeric": { "alias": "fsFormNumeric"; "required": false; }; "validationMessage": { "alias": "fsFormNumericMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormPatternDirective extends FsControlDirective implement
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormPatternDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormPatternDirective, "[fsFormPattern]", never, { "fsFormPattern": "fsFormPattern"; "validationMessage": "fsFormPatternMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormPatternDirective, "[fsFormPattern]", never, { "fsFormPattern": { "alias": "fsFormPattern"; "required": false; }; "validationMessage": { "alias": "fsFormPatternMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -9,5 +9,5 @@ export declare class FsFormPhoneDirective extends FsControlDirective implements
9
9
  ngOnChanges(): void;
10
10
  validate(control: AbstractControl): ValidationErrors | null;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormPhoneDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormPhoneDirective, "[fsFormPhone]", never, { "fsFormPhone": "fsFormPhone"; "validationMessage": "fsFormPhoneMessage"; }, {}, never, never, false, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormPhoneDirective, "[fsFormPhone]", never, { "fsFormPhone": { "alias": "fsFormPhone"; "required": false; }; "validationMessage": { "alias": "fsFormPhoneMessage"; "required": false; }; }, {}, never, never, false, never>;
13
13
  }
@@ -12,5 +12,5 @@ export declare class FsFormRequiredDirective extends FsControlDirective implemen
12
12
  validate(control: AbstractControl): ValidationErrors | null;
13
13
  protected render(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormRequiredDirective, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormRequiredDirective, "[fsFormRequired],[ngModel][required]", never, { "setFsFormRequired": "fsFormRequired"; "setRequired": "required"; "validationMessage": "fsFormRequiredMessage"; }, {}, never, never, false, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormRequiredDirective, "[fsFormRequired],[ngModel][required]", never, { "setFsFormRequired": { "alias": "fsFormRequired"; "required": false; }; "setRequired": { "alias": "required"; "required": false; }; "validationMessage": { "alias": "fsFormRequiredMessage"; "required": false; }; }, {}, never, never, false, never>;
16
16
  }
@@ -10,5 +10,5 @@ export declare class FsFormUrlDirective extends FsControlDirective implements On
10
10
  ngOnChanges(): void;
11
11
  validate(control: AbstractControl): ValidationErrors | null;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormUrlDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormUrlDirective, "[fsFormUrl]", never, { "fsFormUrl": "fsFormUrl"; "fsFormUrlProtocol": "fsFormUrlProtocol"; "validationMessage": "fsFormUrlMessage"; }, {}, never, never, false, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormUrlDirective, "[fsFormUrl]", never, { "fsFormUrl": { "alias": "fsFormUrl"; "required": false; }; "fsFormUrlProtocol": { "alias": "fsFormUrlProtocol"; "required": false; }; "validationMessage": { "alias": "fsFormUrlMessage"; "required": false; }; }, {}, never, never, false, never>;
14
14
  }
@@ -11,5 +11,5 @@ export declare class FsFormValidateDirective extends FsControlDirective implemen
11
11
  ngOnChanges(): void;
12
12
  validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFormValidateDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormValidateDirective, "[validate]", never, { "validateFn": "validate"; "validateFnData": "validateData"; "validateOnSubmit": "validateOnSubmit"; }, {}, never, never, false, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FsFormValidateDirective, "[validate]", never, { "validateFn": { "alias": "validate"; "required": false; }; "validateFnData": { "alias": "validateData"; "required": false; }; "validateOnSubmit": { "alias": "validateOnSubmit"; "required": false; }; }, {}, never, never, false, never>;
15
15
  }
@@ -1,8 +1,8 @@
1
- import { ActivatedRoute, CanDeactivate } from '@angular/router';
1
+ import { ActivatedRoute } from '@angular/router';
2
2
  import { Observable } from 'rxjs';
3
3
  import { FsForm } from '../services/fsform.service';
4
4
  import * as i0 from "@angular/core";
5
- export declare class FormDeactivateGuard implements CanDeactivate<any> {
5
+ export declare class FormDeactivateGuard {
6
6
  private _form;
7
7
  private _route;
8
8
  constructor(_form: FsForm, _route: ActivatedRoute);
@@ -0,0 +1,51 @@
1
+ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import { Subject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "@angular/material/button";
7
+ import * as i3 from "@firestitch/dialog";
8
+ export class ConfirmUnsavedComponent {
9
+ _data;
10
+ _dialogRef;
11
+ saveLabel;
12
+ discardLabel;
13
+ cancelLabel;
14
+ message;
15
+ title;
16
+ _destroy$ = new Subject();
17
+ constructor(_data, _dialogRef) {
18
+ this._data = _data;
19
+ this._dialogRef = _dialogRef;
20
+ }
21
+ ngOnInit() {
22
+ this.saveLabel = this._data.saveLabel;
23
+ this.discardLabel = this._data.discardLabel;
24
+ this.cancelLabel = this._data.cancelLabel;
25
+ this.message = this._data.message;
26
+ this.title = this._data.title;
27
+ }
28
+ save() {
29
+ this._dialogRef.close('save');
30
+ }
31
+ discard() {
32
+ this._dialogRef.close('discard');
33
+ }
34
+ cancel() {
35
+ this._dialogRef.close(null);
36
+ }
37
+ ngOnDestroy() {
38
+ this._destroy$.next();
39
+ this._destroy$.complete();
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmUnsavedComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmUnsavedComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>{{title}}</h1>\n <mat-dialog-content>\n {{message}}\n </mat-dialog-content> \n <mat-dialog-actions>\n <button\n type=\"button\"\n color=\"primary\"\n (click)=\"save()\"\n fsFormButtonStandalone\n mat-button>\n {{saveLabel}}\n </button>\n <button\n type=\"button\"\n (click)=\"discard()\"\n fsFormButtonStandalone\n mat-button>\n {{discardLabel}}\n </button> \n <button\n type=\"button\"\n (click)=\"cancel()\"\n fsFormButtonStandalone\n mat-button>\n {{cancelLabel}}\n </button> \n </mat-dialog-actions>\n</fs-dialog>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button:not(.cancel-button){float:right}\n"], dependencies: [{ kind: "component", type: i2.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: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmUnsavedComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog>\n <h1 mat-dialog-title>{{title}}</h1>\n <mat-dialog-content>\n {{message}}\n </mat-dialog-content> \n <mat-dialog-actions>\n <button\n type=\"button\"\n color=\"primary\"\n (click)=\"save()\"\n fsFormButtonStandalone\n mat-button>\n {{saveLabel}}\n </button>\n <button\n type=\"button\"\n (click)=\"discard()\"\n fsFormButtonStandalone\n mat-button>\n {{discardLabel}}\n </button> \n <button\n type=\"button\"\n (click)=\"cancel()\"\n fsFormButtonStandalone\n mat-button>\n {{cancelLabel}}\n </button> \n </mat-dialog-actions>\n</fs-dialog>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button:not(.cancel-button){float:right}\n"] }]
47
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
48
+ type: Inject,
49
+ args: [MAT_DIALOG_DATA]
50
+ }] }, { type: i1.MatDialogRef }]; } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS11bnNhdmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb25maXJtLXVuc2F2ZWQvY29uZmlybS11bnNhdmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb25maXJtLXVuc2F2ZWQvY29uZmlybS11bnNhdmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUS9CLE1BQU0sT0FBTyx1QkFBdUI7SUFXQztJQUN6QjtJQVZILFNBQVMsQ0FBQztJQUNWLFlBQVksQ0FBQztJQUNiLFdBQVcsQ0FBQztJQUNaLE9BQU8sQ0FBQztJQUNSLEtBQUssQ0FBQztJQUVMLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLFlBQ21DLEtBQVUsRUFDbkMsVUFBaUQ7UUFEeEIsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUF1QztJQUN4RCxDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0F0Q1UsdUJBQXVCLGtCQVd4QixlQUFlOzRGQVhkLHVCQUF1QixvRENacEMscXJCQThCQTs7NEZEbEJhLHVCQUF1QjtrQkFMbkMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFhNUMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tdW5zYXZlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpcm0tdW5zYXZlZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybVVuc2F2ZWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHNhdmVMYWJlbDtcbiAgcHVibGljIGRpc2NhcmRMYWJlbDtcbiAgcHVibGljIGNhbmNlbExhYmVsO1xuICBwdWJsaWMgbWVzc2FnZTtcbiAgcHVibGljIHRpdGxlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29uZmlybVVuc2F2ZWRDb21wb25lbnQ+LFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZUxhYmVsID0gdGhpcy5fZGF0YS5zYXZlTGFiZWw7XG4gICAgdGhpcy5kaXNjYXJkTGFiZWwgPSB0aGlzLl9kYXRhLmRpc2NhcmRMYWJlbDtcbiAgICB0aGlzLmNhbmNlbExhYmVsID0gdGhpcy5fZGF0YS5jYW5jZWxMYWJlbDtcbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLl9kYXRhLm1lc3NhZ2U7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuX2RhdGEudGl0bGU7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UoJ3NhdmUnKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjYXJkKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSgnZGlzY2FyZCcpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7dGl0bGV9fTwvaDE+XG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAge3ttZXNzYWdlfX1cbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+ICBcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgICAgZnNGb3JtQnV0dG9uU3RhbmRhbG9uZVxuICAgICAgICBtYXQtYnV0dG9uPlxuICAgICAge3tzYXZlTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJkaXNjYXJkKClcIlxuICAgICAgICBmc0Zvcm1CdXR0b25TdGFuZGFsb25lXG4gICAgICAgIG1hdC1idXR0b24+XG4gICAgICB7e2Rpc2NhcmRMYWJlbH19XG4gICAgPC9idXR0b24+ICBcbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICBmc0Zvcm1CdXR0b25TdGFuZGFsb25lXG4gICAgICAgIG1hdC1idXR0b24+XG4gICAgICB7e2NhbmNlbExhYmVsfX1cbiAgICA8L2J1dHRvbj4gICAgXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, Optional } from '@angular/core';
2
+ import { MatDialogRef } from '@angular/material/dialog';
3
+ import { Subject } from 'rxjs';
4
+ import { delay, filter, takeUntil } from 'rxjs/operators';
5
+ import { FsFormDirective } from '../../directives/form/form.directive';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../directives/form/form.directive";
8
+ import * as i2 from "@angular/material/dialog";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/material/button";
11
+ import * as i5 from "../../directives/form-dialog-close.directive";
12
+ import * as i6 from "../../directives/button.directive";
13
+ export class FsFormDialogActionsComponent {
14
+ _form;
15
+ _dialogRef;
16
+ _cdRef;
17
+ save = true;
18
+ create = false;
19
+ close = false;
20
+ done = false;
21
+ closeData = null;
22
+ name;
23
+ dirty = false;
24
+ _destroy$ = new Subject();
25
+ constructor(_form, _dialogRef, _cdRef) {
26
+ this._form = _form;
27
+ this._dialogRef = _dialogRef;
28
+ this._cdRef = _cdRef;
29
+ }
30
+ ngOnInit() {
31
+ if (this._form) {
32
+ this._form.ngForm.valueChanges
33
+ .pipe(filter(() => (!this.dirty)), takeUntil(this._destroy$))
34
+ .subscribe(() => {
35
+ this.dirty = this._form.ngForm.dirty;
36
+ this._cdRef.markForCheck();
37
+ });
38
+ this._form.submitted
39
+ .pipe(delay(50), takeUntil(this._destroy$))
40
+ .subscribe(() => {
41
+ this.dirty = false;
42
+ this._cdRef.markForCheck();
43
+ });
44
+ this._form.reseted
45
+ .pipe(takeUntil(this._destroy$))
46
+ .subscribe(() => {
47
+ this.dirty = false;
48
+ this._cdRef.markForCheck();
49
+ });
50
+ }
51
+ }
52
+ ngOnDestroy() {
53
+ this._destroy$.next();
54
+ this._destroy$.complete();
55
+ }
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormDialogActionsComponent, deps: [{ token: i1.FsFormDirective, optional: true }, { token: i2.MatDialogRef, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, ngImport: i0, template: "<div class=\"form-buttons\" [ngClass]=\"{ 'save-create': save || create }\">\n <ng-container *ngIf=\"save || create\">\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{create ? 'Create' : 'Save'}}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"close-button cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"done\">\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"save || create\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"close\">\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"!(save || create)\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-container>\n</div>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button:not(.cancel-button){float:right}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.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.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }, { kind: "directive", type: i6.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormDialogActionsComponent, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'fs-form-dialog-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-buttons\" [ngClass]=\"{ 'save-create': save || create }\">\n <ng-container *ngIf=\"save || create\">\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{create ? 'Create' : 'Save'}}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"close-button cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"done\">\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"save || create\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"close\">\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"!(save || create)\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </ng-container>\n</div>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button:not(.cancel-button){float:right}\n"] }]
62
+ }], ctorParameters: function () { return [{ type: i1.FsFormDirective, decorators: [{
63
+ type: Optional
64
+ }] }, { type: i2.MatDialogRef, decorators: [{
65
+ type: Optional
66
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { save: [{
67
+ type: Input
68
+ }], create: [{
69
+ type: Input
70
+ }], close: [{
71
+ type: Input
72
+ }], done: [{
73
+ type: Input
74
+ }], closeData: [{
75
+ type: Input
76
+ }], name: [{
77
+ type: Input
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyw0QkFBNEI7SUFjakI7SUFDQTtJQUNaO0lBZE0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUNaLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsSUFBSSxDQUFTO0lBRXRCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFYixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV4QyxZQUNzQixLQUFzQixFQUN0QixVQUE2QixFQUN6QyxNQUF5QjtRQUZiLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQ3pDLFdBQU0sR0FBTixNQUFNLENBQW1CO0lBQ2hDLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWTtpQkFDM0IsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2lCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7aUJBQ2pCLElBQUksQ0FDSCxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztpQkFDZixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBdkRVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDhLQ2hCekMsMjBDQXFEQTs7NEZEckNhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OzBCQWdCNUMsUUFBUTs7MEJBQ1IsUUFBUTs0RUFiSyxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtZm9ybS1kaWFsb2ctYWN0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY3JlYXRlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNsb3NlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRvbmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VEYXRhID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZGlydHkgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybTogRnNGb3JtRGlyZWN0aXZlLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PixcclxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgICBcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcclxuICAgICAgdGhpcy5fZm9ybS5uZ0Zvcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoICBcclxuICAgICAgICAgIGZpbHRlcigoKSA9PiAoIXRoaXMuZGlydHkpKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRoaXMuX2Zvcm0ubmdGb3JtLmRpcnR5O1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLl9mb3JtLnN1Ym1pdHRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZGVsYXkoNTApLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2Zvcm0ucmVzZXRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIiBbbmdDbGFzc109XCJ7ICdzYXZlLWNyZWF0ZSc6IHNhdmUgfHwgY3JlYXRlIH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNhdmUgfHwgY3JlYXRlXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbbmFtZV09XCJuYW1lXCI+XG4gICAgICB7e2NyZWF0ZSA/ICdDcmVhdGUnIDogJ1NhdmUnfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2UtYnV0dG9uIGNhbmNlbC1idXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2UgJiYgIWRpcnR5ICYmICFjcmVhdGVcIlxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvbmVcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICAgIERvbmVcbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNhdmUgfHwgY3JlYXRlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xvc2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgZnNGb3JtRGlhbG9nQ2xvc2VcbiAgICAgICAgW2Nsb3NlRGF0YV09XCJjbG9zZURhdGFcIlxuICAgICAgICBbY29sb3JdPVwiZGlydHkgPyAnYmFzaWMnIDogJ3ByaW1hcnknXCI+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShzYXZlIHx8IGNyZWF0ZSlcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Component, ChangeDetectionStrategy, Input, ContentChildren, QueryList, TemplateRef, ViewChild } from '@angular/core';
2
+ import { NgModel } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export class FsFormTemplateComponent {
5
+ templateRef;
6
+ formTemplate;
7
+ models;
8
+ ngAfterContentInit() {
9
+ debugger;
10
+ const x = this.models;
11
+ this.models.changes.subscribe((x) => {
12
+ debugger;
13
+ });
14
+ }
15
+ ngOnInit() {
16
+ debugger;
17
+ }
18
+ constructor() { }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FsFormTemplateComponent, selector: "fs-form-template", inputs: { formTemplate: "formTemplate" }, queries: [{ propertyName: "models", predicate: NgModel, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef1"], descendants: true }], ngImport: i0, template: "<ng-template #templateRef1>\n <ng-content></ng-content>\n</ng-template>", changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormTemplateComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'fs-form-template', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #templateRef1>\n <ng-content></ng-content>\n</ng-template>" }]
25
+ }], ctorParameters: function () { return []; }, propDecorators: { templateRef: [{
26
+ type: ViewChild,
27
+ args: ['templateRef1']
28
+ }], formTemplate: [{
29
+ type: Input
30
+ }], models: [{
31
+ type: ContentChildren,
32
+ args: [NgModel, { descendants: true }]
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS10ZW1wbGF0ZS9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLXRlbXBsYXRlL2Zvcm0tdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBb0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXpDLE1BQU0sT0FBTyx1QkFBdUI7SUFHM0IsV0FBVyxDQUFtQjtJQUVyQixZQUFZLENBQU07SUFHM0IsTUFBTSxDQUFxQjtJQUUzQixrQkFBa0I7UUFDdkIsUUFBUSxDQUFDO1FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxRQUFRLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sUUFBUSxDQUFDO0lBQ1gsQ0FBQztJQUVELGdCQUVHLENBQUM7d0dBeEJPLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLHlIQU9qQixPQUFPLDZKQ2hCMUIsMEVBRWM7OzRGRE9ELHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTTswRUFLeEMsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxjQUFjO2dCQUdULFlBQVk7c0JBQTNCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixlQUFlO3VCQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEFmdGVyQ29udGVudEluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZm9ybS10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWYxJykgXG4gIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybVRlbXBsYXRlOiBhbnk7XG4gIFxuICBAQ29udGVudENoaWxkcmVuKE5nTW9kZWwsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgXG4gIHB1YmxpYyBtb2RlbHM6IFF1ZXJ5TGlzdDxOZ01vZGVsPjtcblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGRlYnVnZ2VyO1xuICAgIGNvbnN0IHggPSB0aGlzLm1vZGVscztcbiAgICB0aGlzLm1vZGVscy5jaGFuZ2VzLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgZGVidWdnZXI7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBkZWJ1Z2dlcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgXG4gICkge31cblxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVJlZjE+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+Il19
@@ -0,0 +1,32 @@
1
+ import { Component, ChangeDetectionStrategy, Input, ContentChildren, QueryList } from '@angular/core';
2
+ import { NgModel } from '@angular/forms';
3
+ import { FsFormTemplateComponent } from '../../components';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class FsFormTemplateOutletComponent {
7
+ formTemplate;
8
+ models;
9
+ ngOnChanges(changes) {
10
+ if (changes.formTemplate?.currentValue) {
11
+ }
12
+ }
13
+ ngAfterContentInit() {
14
+ // const x = this.models;
15
+ // this.models.changes.subscribe((x) => {
16
+ // debugger;
17
+ // });
18
+ }
19
+ constructor() { }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormTemplateOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FsFormTemplateOutletComponent, selector: "fs-form-template-outlet", inputs: { formTemplate: "formTemplate" }, queries: [{ propertyName: "models", predicate: NgModel, descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n{{formTemplate.templateRef|json}}\n\n<ng-container *ngIf=\"formTemplate\">\n <ng-container [ngTemplateOutlet]=\"formTemplate.templateRef\"></ng-container> \n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFormTemplateOutletComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'fs-form-template-outlet', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n{{formTemplate.templateRef|json}}\n\n<ng-container *ngIf=\"formTemplate\">\n <ng-container [ngTemplateOutlet]=\"formTemplate.templateRef\"></ng-container> \n</ng-container>" }]
26
+ }], ctorParameters: function () { return []; }, propDecorators: { formTemplate: [{
27
+ type: Input
28
+ }], models: [{
29
+ type: ContentChildren,
30
+ args: [NgModel, { descendants: true }]
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZW1wbGF0ZS1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Zvcm0tdGVtcGxhdGUtb3V0bGV0L2Zvcm0tdGVtcGxhdGUtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLXRlbXBsYXRlLW91dGxldC9mb3JtLXRlbXBsYXRlLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUEyRCxNQUFNLGVBQWUsQ0FBQztBQUMvSixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVEzRCxNQUFNLE9BQU8sNkJBQTZCO0lBRXhCLFlBQVksQ0FBMEI7SUFHL0MsTUFBTSxDQUFxQjtJQUVsQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBRyxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRTtTQUN0QztJQUNILENBQUM7SUFFTSxrQkFBa0I7UUFDdkIseUJBQXlCO1FBQ3pCLHlDQUF5QztRQUN6QyxjQUFjO1FBQ2QsTUFBTTtJQUNSLENBQUM7SUFFRCxnQkFFRyxDQUFDO3dHQXJCTyw2QkFBNkI7NEZBQTdCLDZCQUE2QixnSUFJdkIsT0FBTyxxRUNkMUIsaUxBS2U7OzRGREtGLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU07MEVBSS9CLFlBQVk7c0JBQTNCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixlQUFlO3VCQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEFmdGVyQ29udGVudEluaXQsIFRlbXBsYXRlUmVmLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGc0Zvcm1UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZvcm0tdGVtcGxhdGUtb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tdGVtcGxhdGUtb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVRlbXBsYXRlT3V0bGV0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybVRlbXBsYXRlOiBGc0Zvcm1UZW1wbGF0ZUNvbXBvbmVudDtcbiAgXG4gIEBDb250ZW50Q2hpbGRyZW4oTmdNb2RlbCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBcbiAgcHVibGljIG1vZGVsczogUXVlcnlMaXN0PE5nTW9kZWw+O1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZihjaGFuZ2VzLmZvcm1UZW1wbGF0ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBjb25zdCB4ID0gdGhpcy5tb2RlbHM7XG4gICAgLy8gdGhpcy5tb2RlbHMuY2hhbmdlcy5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAvLyAgIGRlYnVnZ2VyO1xuICAgIC8vIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICBcbiAgKSB7fVxuXG59XG4iLCJcbnt7Zm9ybVRlbXBsYXRlLnRlbXBsYXRlUmVmfGpzb259fVxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVRlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9ybVRlbXBsYXRlLnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+IFxuPC9uZy1jb250YWluZXI+Il19