@firestitch/form 18.0.24 → 18.0.25

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.
@@ -26,7 +26,8 @@ export class FsButtonDirective {
26
26
  if (this.submit) {
27
27
  fromEvent(this.element, 'click')
28
28
  .pipe(takeUntil(this._destroy$))
29
- .subscribe(() => {
29
+ .subscribe((event) => {
30
+ event.preventDefault();
30
31
  this._formBase.activeSubmitButton = this;
31
32
  this._formBase.triggerSubmit();
32
33
  });
@@ -143,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
143
144
  type: HostBinding,
144
145
  args: ['style.transition']
145
146
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixJQUFJLENBQUM7SUFHTCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBR25CLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVkLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUMxQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUxQixVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0QsV0FBVyxHQUFHLE1BQU0sQ0FB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SyxTQUFTLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDOzs7Ozs7OzthQVFoQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQzs7Ozs7O2FBTWhDLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLDhaQUE4WixFQUFFLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNoZSxDQUFDO0lBQ0gsQ0FBQzt1R0ExSlUsaUJBQWlCOzJGQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlFQUF5RTtvQkFDbkYsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUlRLElBQUk7c0JBRFYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybSc7XG5pbXBvcnQgeyBGc0Zvcm1CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWJhc2UnO1xuaW1wb3J0IHsgRnNGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tZ3JvdXAnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21hdC1yYWlzZWQtYnV0dG9uXSxbbWF0LWJ1dHRvbl0sW21hdC1mbGF0LWJ1dHRvbl0sW21hdC1zdHJva2VkLWJ1dHRvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZzQnV0dG9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuYW1lO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXJ0eVN1Ym1pdCA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50cmFuc2l0aW9uJylcbiAgcHVibGljIHRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG5cbiAgcHVibGljIHN1Ym1pdCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2Zvcm1Hcm91cCA9IGluamVjdChGc0Zvcm1Hcm91cERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZm9ybSA9IGluamVjdChGc0Zvcm1EaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX21hdEJ1dHRvbiA9IGluamVjdChNYXRCdXR0b24sIHsgb3B0aW9uYWw6IHRydWUsIGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZm9ybUJhc2U6IEZzRm9ybUJhc2VEaXJlY3RpdmU7XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3VibWl0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnc3VibWl0JztcbiAgICB0aGlzLl9mb3JtQmFzZSA9IHRoaXMuX2Zvcm0gfHwgdGhpcy5fZm9ybUdyb3VwO1xuXG4gICAgaWYgKHRoaXMuX2Zvcm1CYXNlKSB7XG4gICAgICB0aGlzLl9mb3JtQmFzZS5hZGRCdXR0b24odGhpcyk7XG5cbiAgICAgIGlmKHRoaXMuc3VibWl0KSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1CYXNlLmFjdGl2ZVN1Ym1pdEJ1dHRvbiA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS50cmlnZ2VyU3VibWl0KCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50cmFuc2l0aW9uU3R5bGUgPSAnbm9uZSc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gbnVsbDtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpIHsgICAgXG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbiAmJiAhdGhpcy5fZm9ybUJhc2UuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c0Rpc2FibGVkID0gdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVkO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpOyBcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygncHJvY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VjY2VzcygpIHtcbiAgICB0aGlzLnNldENsYXNzKCdzdWNjZXNzJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZXJyb3IoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnZXJyb3InKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDbGFzcyhjbHMpIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLl9nZXRTdmcoY2xzKTtcbiAgICB0aGlzLl9yZXNldENsYXNzKCk7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYGZzLWZvcm0tc3VibWl0LWJ1dHRvbi0ke2Nsc31gKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN2Zyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICBpZighdGhpcy5fcHJldmlvdXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN2Zy1pY29uJylcbiAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5fcmVzZXRDbGFzcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQmFzZT8ucmVtb3ZlQnV0dG9uKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRDbGFzcygpIHtcbiAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0XG4gICAgICAucmVtb3ZlKFxuICAgICAgICAnZnMtZm9ybS1zdWJtaXQtYnV0dG9uLXN1Y2Nlc3MnLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1lcnJvcicsIFxuICAgICAgICAnZnMtZm9ybS1zdWJtaXQtYnV0dG9uLXByb2Nlc3MnLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFN2Zyh0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgcmV0dXJuIG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYDxzdmcgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1zdWNjZXNzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZlcnNpb249XCIxLjFcIiB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgMzggMzhcIiBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzggMzg7XCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIiB3aWR0aD1cIjM4cHhcIiBoZWlnaHQ9XCIzOHB4XCI+XG4gICAgICA8Zz5cbiAgICAgICAgPGcgY2xhc3M9XCJjaGVja1wiPlxuICAgICAgICAgIDxnPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0yOS42LDExLjljLTAuNS0wLjUtMS4zLTAuNS0xLjgsMEwxNi4zLDIzLjRsLTYuMS02LjFjLTAuNS0wLjUtMS4zLTAuNS0xLjgsMHMtMC41LDEuMywwLDEuOGw3LDdjMC4zLDAuMywwLjYsMC40LDAuOSwwLjRzMC43LTAuMSwwLjktMC40bDEyLjQtMTIuNEMzMC4xLDEzLjIsMzAuMSwxMi40LDI5LjYsMTEuOXpcIi8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAncHJvY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJvY2Vzc1wiIHdpZHRoPVwiMzhcIiBoZWlnaHQ9XCIzOFwiIHZpZXdCb3g9XCIwIDAgMzggMzhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICA8ZyBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cbiAgICAgICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEgMSlcIiBzdHJva2Utd2lkdGg9XCIyXCI+PGNpcmNsZSBzdHJva2Utb3BhY2l0eT1cIi41XCIgY3g9XCIxOFwiIGN5PVwiMThcIiByPVwiMThcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOFwiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIiB0eXBlPVwicm90YXRlXCIgZnJvbT1cIjAgMTggMThcIiB0bz1cIjM2MCAxOCAxOFwiIGR1cj1cIi43c1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDwvc3ZnPmAsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKCc8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tZXJyb3JcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj48Zz48cGF0aCBkPVwiTTggMWMzLjkgMCA3IDMuMSA3IDdzLTMuMSA3LTcgNy03LTMuMS03LTcgMy4xLTcgNy03ek04IDBjLTQuNCAwLTggMy42LTggOHMzLjYgOCA4IDggOC0zLjYgOC04LTMuNi04LTgtOHYwelwiIGRhdGEtb3JpZ2luYWw9XCIjNDQ0NDQ0XCIgZGF0YS1vbGRfY29sb3I9XCIjNDQ0NDQ0XCIvPjxwYXRoIGQ9XCJNMTIuMiAxMC44bC0yLjgtMi44IDIuOC0yLjgtMS40LTEuNC0yLjggMi44LTIuOC0yLjgtMS40IDEuNCAyLjggMi44LTIuOCAyLjggMS40IDEuNCAyLjgtMi44IDIuOCAyLjh6XCIvPjwvZz4gPC9zdmc+JywgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixJQUFJLENBQUM7SUFHTCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBR25CLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVkLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUMxQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUxQixVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0QsV0FBVyxHQUFHLE1BQU0sQ0FB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Q0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7Ozs7Ozs7O2FBUWhDLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDOzs7Ozs7YUFNaEMsRUFBRSxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsOFpBQThaLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2hlLENBQUM7SUFDSCxDQUFDO3VHQTNKVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUVBQXlFO29CQUNuRixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSVEsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZzRm9ybUJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1ncm91cCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hdC1yYWlzZWQtYnV0dG9uXSxbbWF0LWJ1dHRvbl0sW21hdC1mbGF0LWJ1dHRvbl0sW21hdC1zdHJva2VkLWJ1dHRvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGc0J1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlydHlTdWJtaXQgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpXG4gIHB1YmxpYyB0cmFuc2l0aW9uU3R5bGUgPSBudWxsO1xuXG4gIHB1YmxpYyBzdWJtaXQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9wcmV2aW91c0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9mb3JtR3JvdXAgPSBpbmplY3QoRnNGb3JtR3JvdXBEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9tYXRCdXR0b24gPSBpbmplY3QoTWF0QnV0dG9uLCB7IG9wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlIH0pO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX2Zvcm1CYXNlOiBGc0Zvcm1CYXNlRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCc7XG4gICAgdGhpcy5fZm9ybUJhc2UgPSB0aGlzLl9mb3JtIHx8IHRoaXMuX2Zvcm1Hcm91cDtcblxuICAgIGlmICh0aGlzLl9mb3JtQmFzZSkge1xuICAgICAgdGhpcy5fZm9ybUJhc2UuYWRkQnV0dG9uKHRoaXMpO1xuXG4gICAgICBpZih0aGlzLnN1Ym1pdCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS5hY3RpdmVTdWJtaXRCdXR0b24gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5fZm9ybUJhc2UudHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gJ25vbmUnO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7ICAgIFxuICAgIGlmICh0aGlzLl9tYXRCdXR0b24gJiYgIXRoaXMuX2Zvcm1CYXNlLmFjdGl2ZVN1Ym1pdEJ1dHRvbikge1xuICAgICAgdGhpcy5fcHJldmlvdXNEaXNhYmxlZCA9IHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZDtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTsgXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVuYWJsZSgpIHtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ3Byb2Nlc3MnKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Y2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnc3VjY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVycm9yKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ2Vycm9yJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xhc3MoY2xzKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5fZ2V0U3ZnKGNscyk7XG4gICAgdGhpcy5fcmVzZXRDbGFzcygpO1xuICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBmcy1mb3JtLXN1Ym1pdC1idXR0b24tJHtjbHN9YCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZChzdmcpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgaWYoIXRoaXMuX3ByZXZpb3VzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdmctaWNvbicpXG4gICAgICAuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgZWwucmVtb3ZlKCk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX3Jlc2V0Q2xhc3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUJhc2U/LnJlbW92ZUJ1dHRvbih0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q2xhc3MoKSB7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdFxuICAgICAgLnJlbW92ZShcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1zdWNjZXNzJywgXG4gICAgICAgICdmcy1mb3JtLXN1Ym1pdC1idXR0b24tZXJyb3InLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1wcm9jZXNzJyxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdmcodHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tc3VjY2Vzc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiPlxuICAgICAgPGc+XG4gICAgICAgIDxnIGNsYXNzPVwiY2hlY2tcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjkuNiwxMS45Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBMMTYuMywyMy40bC02LjEtNi4xYy0wLjUtMC41LTEuMy0wLjUtMS44LDBzLTAuNSwxLjMsMCwxLjhsNyw3YzAuMywwLjMsMC42LDAuNCwwLjksMC40czAuNy0wLjEsMC45LTAuNGwxMi40LTEyLjRDMzAuMSwxMy4yLDMwLjEsMTIuNCwyOS42LDExLjl6XCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPC9zdmc+YCwgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByb2Nlc3NcIiB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPGcgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9XCIuNVwiIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjE4XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDE4IDE4XCIgdG89XCIzNjAgMTggMThcIiBkdXI9XCIuN3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzhweFwiIGhlaWdodD1cIjM4cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PGc+PHBhdGggZD1cIk04IDFjMy45IDAgNyAzLjEgNyA3cy0zLjEgNy03IDctNy0zLjEtNy03IDMuMS03IDctN3pNOCAwYy00LjQgMC04IDMuNi04IDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh2MHpcIiBkYXRhLW9yaWdpbmFsPVwiIzQ0NDQ0NFwiIGRhdGEtb2xkX2NvbG9yPVwiIzQ0NDQ0NFwiLz48cGF0aCBkPVwiTTEyLjIgMTAuOGwtMi44LTIuOCAyLjgtMi44LTEuNC0xLjQtMi44IDIuOC0yLjgtMi44LTEuNCAxLjQgMi44IDIuOC0yLjggMi44IDEuNCAxLjQgMi44LTIuOCAyLjggMi44elwiLz48L2c+IDwvc3ZnPicsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -975,7 +975,8 @@ class FsButtonDirective {
975
975
  if (this.submit) {
976
976
  fromEvent(this.element, 'click')
977
977
  .pipe(takeUntil(this._destroy$))
978
- .subscribe(() => {
978
+ .subscribe((event) => {
979
+ event.preventDefault();
979
980
  this._formBase.activeSubmitButton = this;
980
981
  this._formBase.triggerSubmit();
981
982
  });
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-form.mjs","sources":["../../src/app/components/confirm-unsaved/confirm-unsaved.component.ts","../../src/app/components/confirm-unsaved/confirm-unsaved.component.html","../../src/app/enums/confirm-result.ts","../../src/app/helpers/confirm-result-continue.ts","../../src/app/helpers/get-active-route.ts","../../src/app/enums/form-status.ts","../../src/app/services/fsform.service.ts","../../src/app/guards/form-deactivate.guard.ts","../../src/app/helpers/get-form-errors.ts","../../src/app/directives/form-base/form-base.directive.ts","../../src/app/directives/form-group/form-group.directive.ts","../../src/app/directives/form/form.directive.ts","../../src/app/directives/button.directive.ts","../../src/app/directives/form-dialog-close.directive.ts","../../src/app/components/form-dialog-actions/form-dialog-actions.component.ts","../../src/app/components/form-dialog-actions/form-dialog-actions.component.html","../../src/app/consts/error-messages.const.ts","../../src/app/providers/validate-messages.provider.ts","../../src/app/directives/validators/control.directive.ts","../../src/app/directives/validators/compare.directive.ts","../../src/app/validators/validators.ts","../../src/app/helpers/is-enabled.ts","../../src/app/directives/validators/daterange.directive.ts","../../src/app/directives/validators/email.directive.ts","../../src/app/directives/validators/emails.directive.ts","../../src/app/directives/validators/function.directive.ts","../../src/app/directives/validators/greater-equal.directive.ts","../../src/app/directives/validators/greater.directive.ts","../../src/app/directives/validators/integer.directive.ts","../../src/app/directives/validators/lesser-equal.directive.ts","../../src/app/directives/validators/lesser.directive.ts","../../src/app/directives/validators/max.directive.ts","../../src/app/directives/validators/maxlength.directive.ts","../../src/app/directives/validators/min.directive.ts","../../src/app/directives/validators/minlength.directive.ts","../../src/app/directives/validators/no-fs-validators.directive.ts","../../src/app/directives/validators/numeric.directive.ts","../../src/app/directives/validators/pattern.directive.ts","../../src/app/directives/validators/phone.directive.ts","../../src/app/directives/validators/required.directive.ts","../../src/app/directives/validators/url.directive.ts","../../src/app/directives/validators/validate.directive.ts","../../src/app/directives/form-template.directive.ts","../../src/app/directives/submit-button.directive.ts","../../src/app/directives/form-template-outlet.directive.ts","../../src/app/fs-form.module.ts","../../src/public_api.ts","../../src/firestitch-form.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n templateUrl: './confirm-unsaved.component.html',\n styleUrls: ['./confirm-unsaved.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n\n FsDialogModule,\n ],\n})\nexport class ConfirmUnsavedComponent implements OnInit, OnDestroy {\n private _data = inject(MAT_DIALOG_DATA);\n private _dialogRef = inject<MatDialogRef<ConfirmUnsavedComponent>>(MatDialogRef);\n\n\n public saveLabel;\n public discardLabel;\n public cancelLabel;\n public message;\n public title;\n\n private _destroy$ = new Subject<void>();\n\n public ngOnInit(): void {\n this.saveLabel = this._data.saveLabel;\n this.discardLabel = this._data.discardLabel;\n this.cancelLabel = this._data.cancelLabel;\n this.message = this._data.message;\n this.title = this._data.title;\n }\n\n public save(): void {\n this._dialogRef.close('save');\n }\n\n public discard(): void {\n this._dialogRef.close('discard');\n }\n\n public cancel(): void {\n this._dialogRef.close(null);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n {{ title }}\n </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 mat-button>\n {{ saveLabel }}\n </button>\n <button\n type=\"button\"\n (click)=\"discard()\"\n mat-button>\n {{ discardLabel }}\n </button>\n <button\n type=\"button\"\n (click)=\"cancel()\"\n mat-button>\n {{ cancelLabel }}\n </button>\n </mat-dialog-actions>\n</fs-dialog>","export enum ConfirmResult {\n Save = 'save',\n Discard = 'discard',\n Review = 'review',\n Invalid = 'invalid',\n NoChanges = 'noChanges',\n}\n","import { ConfirmResult } from '../enums/confirm-result';\n\nexport function confirmResultContinue(result): boolean {\n return (\n result === ConfirmResult.Discard || \n result === ConfirmResult.Save || \n result === ConfirmResult.NoChanges\n );\n}\n","import { ActivatedRoute } from '@angular/router';\n\n\nexport function getActiveRoute(route: ActivatedRoute): ActivatedRoute {\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n return route;\n}\n","export enum FormStatus {\n Valid = 'valid',\n Invalid = 'invalid',\n Validating = 'validating',\n Submitting = 'submitting',\n Submitted = 'submitted',\n Error = 'error',\n Success = 'success',\n Completing = 'completing',\n}\n","import { inject, Injectable, Type } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { ConfirmUnsavedComponent } from '../components/confirm-unsaved';\nimport type { FsFormDirective } from '../directives/form/form.directive';\nimport { ConfirmResult } from '../enums';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsForm {\n\n // value is array for future possibilities of extension\n private _formDirectiveStore = new WeakMap<Type<any>, FsFormDirective[]>();\n private _dialog = inject(MatDialog);\n\n public registerFormDirective(routeComponent: Type<any>, directive: FsFormDirective) {\n const directives = this.getFormDirectives(routeComponent) || [];\n directives.push(directive);\n\n this._formDirectiveStore.set(routeComponent, directives);\n }\n\n public getFormDirectives(routeComponent): FsFormDirective[] {\n return this._formDirectiveStore.get(routeComponent);\n }\n\n public removeFormDirective(routeComponent) {\n this._formDirectiveStore.delete(routeComponent);\n }\n\n public hasChanges(form: FsFormDirective): boolean {\n return Object.keys(form.ngForm.control.controls)\n .some((key) => {\n const control = form.ngForm.control.controls[key];\n\n return control.dirty;\n });\n }\n\n public confirmUnsaved(\n form: FsFormDirective, \n ): Observable<ConfirmResult> {\n if (!form.confirm || !this.hasChanges(form)) {\n return of(ConfirmResult.NoChanges);\n }\n\n let title = 'You have unsaved changes';\n let message = 'What would you like to do with your changes?';\n let saveLabel = 'Save and continue';\n let discardLabel = 'Discard changes and continue';\n let cancelLabel = 'Review changes';\n\n if (typeof form.confirm === 'object') {\n title = form.confirm.title || title;\n message = form.confirm.message || message;\n saveLabel = form.confirm.saveLabel || saveLabel;\n discardLabel = form.confirm.discardLabel || discardLabel;\n cancelLabel = form.confirm.cancelLabel || cancelLabel;\n }\n\n return this._dialog\n .open(ConfirmUnsavedComponent, {\n data: {\n title,\n message,\n saveLabel,\n discardLabel,\n cancelLabel,\n },\n width: 'auto', \n })\n .afterClosed()\n .pipe(\n switchMap((result) => {\n if(!result) {\n return of(ConfirmResult.Review);\n }\n \n if (result === 'discard') {\n form.reset();\n\n return of(ConfirmResult.Discard); \n }\n\n if (result === 'save') {\n form.ngForm.control.markAsPristine();\n\n return form.submit$({ confirmed: true })\n .pipe(\n map((submitEvent) => {\n if(submitEvent.error) {\n return ConfirmResult.Invalid;\n }\n\n return ConfirmResult.Save;\n }),\n catchError(() => {\n return of(ConfirmResult.Invalid);\n }),\n );\n }\n }),\n );\n }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FsFormDirective } from '../directives/form/form.directive';\nimport { confirmResultContinue } from '../helpers';\nimport { getActiveRoute } from '../helpers/get-active-route';\nimport { FsForm } from '../services/fsform.service';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormDeactivateGuard {\n private _form = inject(FsForm);\n private _route = inject(ActivatedRoute);\n\n\n public canDeactivate(): Observable<boolean> {\n const route = getActiveRoute(this._route);\n\n if (!route) {\n console.error('Can not find route for FormDeactivateGuard checks');\n\n return of(true);\n }\n\n const directives: FsFormDirective[] = this._form\n .getFormDirectives(route.routeConfig.component);\n\n if (!Array.isArray(directives) || directives.length === 0) {\n console.error('Can not find a valid FsFormDirective');\n\n return of(true);\n }\n\n return this._form.confirmUnsaved(directives[0])\n .pipe(\n map((result) => {\n return confirmResultContinue(result);\n }),\n );\n }\n\n}\n","import { AbstractControl, UntypedFormGroup, ValidationErrors } from '@angular/forms';\n\n\nexport function getFormErrors(control: AbstractControl, key: string): ValidationErrors | null {\n let errors: ValidationErrors | null = null;\n\n if (control.invalid && control.errors) {\n errors = {\n [key]: { ...control.errors },\n };\n }\n\n if (control instanceof UntypedFormGroup) {\n Object.entries(control.controls)\n .forEach(([name, childControl]) => {\n const childErrors = getFormErrors(childControl, name);\n\n if (childErrors) {\n if (!errors) {\n errors = { ...childErrors };\n } else {\n Object.assign(errors, childErrors);\n }\n }\n });\n }\n\n return errors;\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n inject,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n} from '@angular/core';\n\nimport { MatTab, MatTabGroup, MatTabHeader } from '@angular/material/tabs';\n\nimport { Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { ConfirmResult } from '../../enums';\nimport { confirmResultContinue } from '../../helpers';\nimport { ConfirmConfig, ConfirmTabGroup } from '../../interfaces';\nimport { FsButtonDirective } from '../button.directive';\n\n\n@Directive()\nexport abstract class FsFormBaseDirective implements AfterContentInit, OnDestroy {\n\n @Input()\n public confirmTabs = true;\n \n @Input()\n public tabGroup: MatTabGroup;\n\n protected _ngZone = inject(NgZone);\n protected _cdRef = inject(ChangeDetectorRef);\n\n @ContentChildren(MatTabGroup, { descendants: true })\n private _tabGroups: QueryList<MatTabGroup> = new QueryList();\n\n private _buttons = new QueryList<FsButtonDirective>();\n private _activeSubmitButton: FsButtonDirective;\n private _destroy$ = new Subject<void>();\n \n public abstract submitting: boolean;\n public abstract confirm: ConfirmConfig | boolean; \n\n public ngAfterContentInit(): void {\n this._registerConfirmTabs();\n }\n\n public get destroy$(): Observable<void> {\n return this._destroy$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n \n public get buttons(): QueryList<FsButtonDirective> {\n return this._buttons;\n }\n\n public get activeSubmitButton(): FsButtonDirective {\n return this._activeSubmitButton;\n }\n\n public set activeSubmitButton(button: FsButtonDirective) {\n this._activeSubmitButton = button;\n }\n\n public addButton(button: FsButtonDirective): void {\n this._buttons\n .reset(\n [\n ...this._buttons.toArray(),\n button,\n ]);\n }\n\n public removeButton(button: FsButtonDirective): void {\n if(this._activeSubmitButton === button) {\n this._activeSubmitButton = null;\n }\n\n this._buttons.reset(\n [\n ...this._buttons.toArray()\n .filter((item) => (button !== item)),\n ]);\n }\n \n\n private _registerConfirmTabs(): void {\n this._registerConfirmTabGroups(this._tabGroups.toArray());\n this._tabGroups.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._registerConfirmTabGroups(this._tabGroups.toArray());\n });\n }\n\n private _registerConfirmTabGroups(tabGroups: MatTabGroup[]): void {\n tabGroups.forEach((tabGroup: MatTabGroup) => {\n this._registerConfirmTabGroup(tabGroup);\n });\n }\n\n private _registerConfirmTabGroup(tabGroup: MatTabGroup): void {\n const confirmTabGroup = tabGroup as ConfirmTabGroup;\n if (!confirmTabGroup._originalHandleClick) {\n confirmTabGroup._originalHandleClick = tabGroup._handleClick;\n confirmTabGroup._handlClick$ = new Subject<{\n tab: MatTab; \n tabHeader: MatTabHeader; \n idx: number \n }>();\n\n confirmTabGroup._handleClick = (tab: MatTab, tabHeader: MatTabHeader, idx: number) => {\n if (confirmTabGroup._handlClick$.observers.length) {\n confirmTabGroup._handlClick$.next({ tab, tabHeader, idx });\n } else {\n confirmTabGroup._originalHandleClick(tab, tabHeader, idx);\n }\n };\n }\n\n confirmTabGroup._handlClick$\n .pipe(\n filter(() => !this.submitting),\n switchMap((event) => {\n if(this.confirm && this.confirmTabs) {\n return this.triggerConfirm()\n .pipe(\n tap((result) => {\n if (confirmResultContinue(result)) {\n confirmTabGroup.selectedIndex = event.idx;\n }\n }),\n );\n }\n\n confirmTabGroup._originalHandleClick(event.tab, event.tabHeader, event.idx);\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n \n \n public abstract triggerSubmit(): void;\n public abstract triggerConfirm(): Observable<ConfirmResult>;\n}\n","import {\n Directive,\n} from '@angular/core';\n\n\nimport { ConfirmConfig } from '../../interfaces';\nimport { FsFormDirective } from '../form';\nimport { FsFormBaseDirective } from '../form-base';\n\n\n@Directive({\n selector: '[fsFormGroup]',\n exportAs: 'fsFormGroup',\n standalone: true,\n})\nexport class FsFormGroupDirective extends FsFormBaseDirective {\n\n private _formDirective: FsFormDirective;\n\n public triggerSubmit() {\n return this._formDirective?.triggerSubmit();\n }\n\n public triggerConfirm() {\n return this._formDirective?.triggerConfirm();\n }\n\n public get submitting(): boolean {\n return this._formDirective?.submitting;\n }\n\n public get confirm(): ConfirmConfig | boolean {\n return this._formDirective?.confirm;\n }\n\n public registerForm(formDirective: FsFormDirective) {\n this._formDirective = formDirective;\n }\n\n public deregisterForm() {\n this._formDirective = null;\n }\n}\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { ActivatedRoute, Route } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { guid } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsMessage, MessageMode } from '@firestitch/message';\n\nimport {\n BehaviorSubject,\n defer,\n fromEvent,\n iif,\n Observable,\n of,\n throwError,\n} from 'rxjs';\nimport {\n catchError,\n delay,\n filter,\n first,\n map,\n mergeMap,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { FormDeactivateGuard } from '../../guards/form-deactivate.guard';\nimport { confirmResultContinue } from '../../helpers/confirm-result-continue';\nimport { getActiveRoute } from '../../helpers/get-active-route';\nimport { getFormErrors } from '../../helpers/get-form-errors';\nimport { FsForm } from '../../services/fsform.service';\nimport { FsButtonDirective } from '../button.directive';\nimport { FsFormBaseDirective } from '../form-base';\nimport { FsFormGroupDirective } from '../form-group';\n\nimport { ConfirmResult } from './../../enums/confirm-result';\nimport { FormStatus } from './../../enums/form-status';\nimport { ConfirmConfig, SubmittedEvent } from './../../interfaces';\nimport { SubmitEvent } from './../../interfaces/submit-event';\n\n\n@Directive({\n selector: '[fsForm]',\n exportAs: 'fsForm',\n standalone: true,\n})\nexport class FsFormDirective \n extends FsFormBaseDirective \n implements OnInit, OnDestroy, AfterContentInit, OnChanges {\n ngForm = inject<NgForm>(NgForm);\n private _form = inject(FsForm);\n private _element = inject(ElementRef);\n private _message = inject(FsMessage);\n private _formGroup = inject(FsFormGroupDirective, { optional: true });\n private _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, { optional: true });\n private _drawerRef = inject<DrawerRef<any>>(DrawerRef, { optional: true });\n private _route = inject(ActivatedRoute);\n\n\n @Input()\n public wrapperSelector = '.fs-form-wrapper,.mat-mdc-form-field';\n\n @Input()\n public messageSelector = '.fs-form-message,.mat-mdc-form-field-subscript-wrapper';\n\n @Input()\n public hintSelector = '.fs-form-hint,.mat-mdc-form-field-hint-wrapper';\n\n @Input()\n public labelSelector = '.fs-form-label,.mdc-floating-label>mat-label';\n\n @Input()\n public autocomplete = false;\n\n @Input()\n public shortcuts = true; // Ctrl + s\n\n @Input()\n public confirm: ConfirmConfig | boolean = true;\n\n @Input()\n public confirmDialog = true;\n\n @Input()\n public confirmDrawer = true;\n\n @Input()\n public confirmBrowser = true;\n\n @Input()\n public dirtySubmitButton = true;\n\n @Input()\n public set submit(submit$: (event: SubmitEvent) => Observable<any>) {\n this._submit$ = submit$;\n }\n\n public get submit(): (event: SubmitEvent) => Observable<any> {\n return this._submit$;\n }\n\n @Input()\n public successDelay = 0;\n\n @Input()\n public errorDelay = 1000;\n\n @Input()\n public deactivationGuard = true;\n \n @Output('fsForm')\n public submitEvent: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public invalid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public valid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public submitted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public reseted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public cleared: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @HostBinding('class.fs-form')\n public fsFormClass = true;\n\n private _registerControl;\n private _dialogBackdropEscape = false;\n private _snapshot: { [key: string]: any } = {};\n private _activatedRouteConfig: Route | null;\n private _status$ = new BehaviorSubject(FormStatus.Valid);\n private _submit$: (event?: SubmitEvent) => Observable<any> = null;\n\n public get submitting(): boolean {\n return this._status$.getValue() === FormStatus.Submitting;\n }\n\n public get validating(): boolean {\n return this._status$.getValue() === FormStatus.Validating;\n }\n\n public get completing(): boolean {\n return this._status$.getValue() === FormStatus.Completing;\n }\n\n private get _submitEvent(): SubmitEvent {\n return {\n ngForm: this.ngForm,\n submitter: this._submitter,\n };\n }\n\n private get _formValidState$(): Observable<SubmittedEvent> {\n this.submitEvent.emit(this._submitEvent);\n this.valid.emit(this._submitEvent);\n\n const submittedEvent: SubmittedEvent = {\n ngForm: this.ngForm,\n submitter: this._submitter,\n response: null,\n };\n\n const submit$: Observable<any> = this._submit$ ?\n this._submit$(this._submitEvent) : of(submittedEvent);\n\n return submit$\n .pipe(\n map((response) => {\n submittedEvent.response = response;\n\n return submittedEvent;\n }),\n takeUntil(this.destroy$),\n );\n }\n\n private get _formInvalidState$(): Observable<never> {\n if (this.invalid) {\n this.invalid.emit(this._submitEvent);\n }\n\n const message = 'Please review errors highlighted in red';\n this._message.error(message, { mode: MessageMode.Toast });\n\n const el = this._element.nativeElement.querySelector('.ng-invalid');\n\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n return throwError(() => new Error('Form validation error'));\n }\n\n private get _submitter(): string {\n return this._getFormGroup().activeSubmitButton?.name;\n }\n\n public ngOnInit() {\n this._formGroup?.registerForm(this);\n\n if (this.deactivationGuard) {\n this._registerCanDeactivateGuard();\n }\n\n this._registerConfirmDialogBackdropEscape();\n this._listenHotKeys();\n this._listenWindowClose();\n this._listenSubmit();\n this._listenFormStatus();\n\n if (!this.autocomplete) {\n this._registerAutocomplete();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.confirm) {\n this._updateDirtySubmitButtons();\n }\n }\n\n public clearSubmit(submit: (event: SubmitEvent) => Observable<any> = null): void {\n if(!submit || submit === this._submit$) {\n this._submit$ = null;\n }\n\n setTimeout(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public registerSubmit(submit$: () => Observable<any>): void {\n this._submit$ = submit$;\n\n setTimeout(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n super.ngAfterContentInit(); \n this._registerConfirm();\n this._registerConfirmDrawerClose();\n this._registerDrawerClose();\n this._registerDirtySubmitButton();\n }\n\n public ngOnDestroy(): void {\n this._formGroup?.deregisterForm();\n\n super.ngOnDestroy();\n this._cleanupCanDeactivate();\n }\n\n public createSnapshot(): void {\n this._snapshot = this.ngForm.value;\n }\n\n public getSnapshot(): { [key: string]: any } {\n return this._snapshot || {};\n }\n\n public reset(): void {\n this.ngForm.resetForm();\n\n Object.keys(this.ngForm.controls)\n .forEach((name: string) => {\n const control = this.ngForm.controls[name];\n control.reset(this._snapshot[name]);\n });\n\n this.reseted.emit();\n }\n\n public clear(): void {\n this.ngForm.resetForm();\n this.cleared.emit();\n }\n\n public dirty(): void {\n this.ngForm.form.markAsDirty();\n this._updateDirtySubmitButtons();\n }\n\n public pristine(): void {\n this.ngForm.form.markAsPristine();\n this._updateDirtySubmitButtons();\n }\n\n public triggerSubmit(options?: { confirmed: boolean }): void {\n this.ngForm.ngSubmit.emit();\n }\n\n public triggerConfirm(): Observable<ConfirmResult> {\n const submitted = this.submitting ? this.submitted.asObservable() : of({});\n\n return submitted\n .pipe(\n take(1),\n mergeMap(() => this._form.confirmUnsaved(this)),\n );\n }\n\n public enable(): void {\n this.ngForm.control.enable();\n\n this._updateDirtySubmitButtons();\n }\n\n public disable(): void {\n this.ngForm.control.disable();\n\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.disable();\n });\n }\n\n public validate(): void {\n Object.values(this.ngForm.controls)\n .forEach((control) => {\n control.markAsDirty();\n control.markAsTouched();\n control.updateValueAndValidity();\n });\n }\n\n public submit$(submitEvent: SubmitEvent): Observable<SubmittedEvent> {\n return of(submitEvent)\n .pipe(\n tap(() => this._statusValidating()),\n tap(() => this.validate()),\n tap(() => this._statusSubmitting()),\n tap(() => this._setupActiveSubmitButton()),\n tap(() => this._disableButtons()),\n switchMap((data) => this._waitUntilStatusPending()\n .pipe(\n map(() => data),\n )), \n mergeMap(() => {\n if (this.ngForm.status === 'INVALID') {\n return this._formInvalidState$;\n }\n\n return this._formValidState$;\n }),\n catchError((e) => {\n this._handleError(e);\n\n return of({\n ...this._submitEvent,\n error: e?.message,\n });\n }),\n tap((submittedEvent: SubmittedEvent) => {\n if(!submittedEvent.error) {\n this._completeSubmit(true, submittedEvent);\n }\n }),\n );\n }\n\n private _listenSubmit(): void {\n this\n .ngForm\n .ngSubmit\n .pipe(\n tap((event) => {\n event?.preventDefault();\n }),\n filter(() => {\n return [FormStatus.Valid, FormStatus.Invalid]\n .includes(this._status$.getValue());\n }),\n switchMap(() => this.submit$(this._submitEvent)),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private _listenFormStatus(): void {\n this._status$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((formStatus: FormStatus) => {\n const cls = [FormStatus.Submitting, FormStatus.Validating];\n const classList = this._element.nativeElement.classList;\n classList.remove(...cls);\n if (cls.indexOf(formStatus) !== -1) {\n classList.add(formStatus);\n }\n });\n\n }\n\n private _listenWindowClose(): void {\n fromEvent(window, 'beforeunload')\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((event: Event) => {\n if (this.confirm && this.confirmBrowser && this.ngForm.dirty) {\n event.returnValue = false;\n }\n });\n }\n\n private _activeDialog(el, dialog: HTMLElement): boolean {\n if (el.isSameNode(dialog)) {\n return true;\n } else if (el.parentElement) {\n return this._activeDialog(el.parentElement, dialog);\n }\n\n return false;\n }\n\n private _listenHotKeys(): void {\n this._ngZone.runOutsideAngular(() => {\n fromEvent(document, 'keydown')\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((event: KeyboardEvent) => {\n if (this._dialogBackdropEscape && event.code === 'Escape') {\n const cdkOverlayPane = Array\n .from(document.querySelectorAll<HTMLElement>('.cdk-overlay-pane')).pop();\n \n const activeDialog = this\n ._activeDialog(document.getElementById(this._dialogRef.id), cdkOverlayPane);\n\n if (activeDialog) {\n this._ngZone.run(() => {\n this._formClose();\n });\n }\n }\n\n if ((event.ctrlKey || event.metaKey) && event.code === 'KeyS') {\n event.preventDefault();\n\n if (this.shortcuts) {\n if (this._elementInForm(document.activeElement)) {\n this.ngForm.ngSubmit.next(null);\n }\n }\n }\n });\n });\n }\n\n private _formClose(): void {\n if (this.confirm && this.confirmDialog) {\n this.triggerConfirm()\n .pipe(\n filter((result) => confirmResultContinue(result)),\n switchMap((result) => {\n return result === ConfirmResult.NoChanges || result === ConfirmResult.Discard\n ? of(null)\n : this.submitted.asObservable();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((result: SubmittedEvent) => {\n this._dialogRef.close(result?.response);\n });\n } else {\n this._dialogRef.close(null);\n }\n }\n\n private _getActiveSubmitButton(): FsButtonDirective {\n if(this._getFormGroup().activeSubmitButton) {\n return this._getFormGroup().activeSubmitButton;\n }\n\n return this._getFormGroup()\n .buttons\n .filter((button) => button.submit)[0];\n }\n\n private _elementInForm(el: Element): boolean {\n if (el.isSameNode(this._element.nativeElement)) {\n return true;\n } else if (el.parentElement) {\n return this._elementInForm(el.parentElement);\n }\n\n return false;\n }\n\n private _completeSubmit(success, submitEvent: SubmittedEvent): void {\n if (success) {\n this.ngForm.control.markAsPristine();\n this.createSnapshot();\n this.submitted.emit(submitEvent);\n } else {\n this._resetButtons();\n }\n\n if (this._getFormGroup().activeSubmitButton) {\n if (success) {\n this._getFormGroup().activeSubmitButton.success();\n } else {\n this._getFormGroup().activeSubmitButton.error();\n }\n }\n\n this._status$.next(FormStatus.Submitted);\n\n if (success) {\n this._status$.next(FormStatus.Success);\n } else {\n this._status$.next(FormStatus.Error);\n }\n\n this._status$.next(FormStatus.Completing);\n\n const resetDelay = success ? this.successDelay : this.errorDelay;\n\n of(true)\n .pipe(\n delay(resetDelay),\n first(),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n if (this.ngForm.form.status === 'VALID') {\n this._status$.next(FormStatus.Valid);\n } else {\n this._status$.next(FormStatus.Invalid);\n }\n\n this._resetButtons();\n this._getFormGroup().activeSubmitButton = null;\n this._updateDirtySubmitButtons();\n });\n }\n\n private _getFormGroup(): FsFormBaseDirective {\n return this._formGroup || this;\n }\n\n private _resetButtons(): void {\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.reset();\n });\n }\n\n private _registerConfirm(): void {\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((changes) => {\n if(this._dialogBackdropEscape && this._dialogRef) {\n this._dialogRef.disableClose = true;\n }\n\n if (this.confirm) {\n const existing = Object.keys(this._snapshot);\n\n Object.keys(changes)\n .forEach((name: string) => {\n if (existing.indexOf(name) === -1) {\n this._snapshot[name] = changes[name];\n }\n });\n }\n });\n }\n\n private _registerDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((subscriber) => {\n if (this.submitting) {\n this._status$\n .pipe(\n filter((status) => status === FormStatus.Success || status === FormStatus.Error),\n takeUntil(this.destroy$),\n )\n .subscribe((status) => {\n if (status === FormStatus.Success) {\n subscriber.next(null);\n subscriber.complete();\n } else {\n subscriber.error();\n }\n });\n } else {\n subscriber.next(null);\n subscriber.complete();\n }\n });\n }\n }\n\n private _registerConfirmDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n switchMap((subscriber) => {\n return iif(\n () => this.confirm && this.confirmDrawer,\n this.triggerConfirm()\n .pipe(\n map((result) => confirmResultContinue(result)),\n tap((result) => {\n if (result) {\n subscriber.next(null);\n subscriber.complete();\n }\n }),\n ),\n defer(() => {\n subscriber.next(null);\n subscriber.complete();\n\n return of(null);\n }),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n }\n \n private _registerConfirmDialogBackdropEscape(): void {\n if(this._dialogRef) {\n this._dialogBackdropEscape = !this._dialogRef?.disableClose;\n\n if (this._dialogBackdropEscape) {\n this._dialogRef.backdropClick()\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._formClose();\n });\n\n this.destroy$\n .subscribe(() => {\n this._dialogRef.disableClose = false;\n });\n }\n }\n }\n\n private _registerAutocomplete(): void {\n this._registerControl = this.ngForm.form.registerControl.bind(this.ngForm.form);\n\n this.ngForm.form.registerControl = (name: string, control: AbstractControl) => {\n\n const el: Element = this._element.nativeElement.querySelector(`input[name='${name}']`);\n\n if (el) {\n if (!el.getAttribute('autocomplete')) {\n el.setAttribute('autocomplete', 'none');\n el.setAttribute('name', `${name}-${guid()}`);\n }\n }\n\n return this._registerControl(name, control);\n };\n }\n\n private _registerDirtySubmitButton(): void {\n if (!this.ngForm) {\n return;\n }\n\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n\n this._getFormGroup()\n .buttons.changes\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n }\n\n private _updateDirtySubmitButtons(): void {\n this._getFormGroup()\n .buttons\n .filter((button) => button.submit)\n .forEach((submitButton: FsButtonDirective) => {\n if (\n !this.confirm || !this.dirtySubmitButton || this.ngForm.dirty || !submitButton.dirtySubmit\n ) {\n submitButton.enable();\n } else {\n submitButton.disable();\n }\n });\n }\n\n private _statusSubmitting(): void {\n this._status$.next(FormStatus.Submitting);\n }\n\n private _statusValidating(): void {\n this._status$.next(FormStatus.Validating);\n }\n\n private _setupActiveSubmitButton(): void {\n this._getFormGroup()\n .activeSubmitButton = this._getActiveSubmitButton();\n this._resetButtons();\n\n if (this._getFormGroup().activeSubmitButton) {\n this._getFormGroup().activeSubmitButton.process();\n }\n }\n\n private _disableButtons(): void {\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.disable();\n });\n }\n\n private _waitUntilStatusPending(): Observable<string> {\n return this.ngForm.statusChanges\n .pipe(\n startWith(this.ngForm.status),\n first((state) => state !== 'PENDING'),\n );\n }\n\n private _handleError(e: SubmittedEvent) {\n console.log('%c Form Submit ', 'color: white; background-color: #D33F49', 'Error occured');\n console.group('Error Details:');\n console.log('Message: ', e);\n console.log('FormRef: ', this);\n\n if (this.ngForm.invalid) {\n const errors = getFormErrors(this.ngForm.control, null);\n console.log('Validation Errors: ', errors);\n }\n\n console.groupEnd();\n this._completeSubmit(false, null);\n }\n\n private _registerCanDeactivateGuard(): void {\n this._activatedRouteConfig = getActiveRoute(this._route).routeConfig;\n\n if (!this._activatedRouteConfig) {\n return;\n }\n\n this._form.registerFormDirective(this._activatedRouteConfig.component, this);\n\n if (!Array.isArray(this._activatedRouteConfig.canDeactivate)) {\n this._activatedRouteConfig.canDeactivate = [];\n }\n\n if (this._activatedRouteConfig.canDeactivate.indexOf(FormDeactivateGuard) === -1) {\n this._activatedRouteConfig.canDeactivate.push(FormDeactivateGuard);\n }\n }\n\n private _cleanupCanDeactivate(): void {\n if (!this._activatedRouteConfig) {\n return;\n }\n\n const guardIndex = this._activatedRouteConfig.canDeactivate.indexOf(FormDeactivateGuard);\n this._activatedRouteConfig.canDeactivate.splice(guardIndex, 1);\n\n this._form.removeFormDirective(this._activatedRouteConfig.component);\n }\n\n}\n","import {\n ChangeDetectorRef, Directive, ElementRef,\n HostBinding, inject, Input, OnDestroy, OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsFormDirective } from './form';\nimport { FsFormBaseDirective } from './form-base';\nimport { FsFormGroupDirective } from './form-group';\n\n\n@Directive({\n selector: '[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]',\n standalone: true,\n})\nexport class FsButtonDirective implements OnInit, OnDestroy {\n\n @Input()\n public name;\n\n @Input()\n public dirtySubmit = true;\n\n @HostBinding('style.transition')\n public transitionStyle = null;\n\n public submit = false;\n\n private _previousDisabled = false;\n private _destroy$ = new Subject();\n\n private _formGroup = inject(FsFormGroupDirective, { optional: true });\n private _form = inject(FsFormDirective, { optional: true });\n private _matButton = inject(MatButton, { optional: true, host: true });\n private _elementRef = inject(ElementRef);\n private _cdRef = inject(ChangeDetectorRef);\n private _formBase: FsFormBaseDirective;\n\n public ngOnInit() {\n this.submit = this._elementRef.nativeElement.getAttribute('type') === 'submit';\n this._formBase = this._form || this._formGroup;\n\n if (this._formBase) {\n this._formBase.addButton(this);\n\n if(this.submit) {\n fromEvent(this.element, 'click')\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._formBase.activeSubmitButton = this;\n this._formBase.triggerSubmit();\n });\n\n this.transitionStyle = 'none';\n setTimeout(() => {\n this.transitionStyle = null;\n }, 500);\n }\n }\n }\n\n public disable() { \n if (this._matButton && !this._formBase.activeSubmitButton) {\n this._previousDisabled = this._matButton.disabled;\n this._matButton.disabled = true;\n this._matButton.disableRipple = true;\n this._cdRef.markForCheck(); \n }\n }\n\n public enable() {\n if (this._matButton) {\n this._matButton.disabled = false;\n this._matButton.disableRipple = true;\n this._cdRef.markForCheck();\n }\n }\n\n public process() {\n this.setClass('process');\n if (this._matButton) {\n this._matButton.disableRipple = true;\n }\n }\n\n public success() {\n this.setClass('success');\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n }\n\n public error() {\n this.setClass('error');\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n }\n\n public setClass(cls) {\n const svg = this._getSvg(cls);\n this._resetClass();\n this.element.classList.add(`fs-form-submit-button-${cls}`);\n this.element.append(svg);\n }\n\n public get element() {\n return this._elementRef.nativeElement;\n }\n\n public reset() {\n if(!this._previousDisabled) {\n this.enable();\n }\n\n this.element.querySelectorAll('.svg-icon')\n .forEach((el) => {\n el.remove();\n });\n\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n this._resetClass();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n this._formBase?.removeButton(this);\n }\n\n private _resetClass() {\n this.element.classList\n .remove(\n 'fs-form-submit-button-success', \n 'fs-form-submit-button-error', \n 'fs-form-submit-button-process',\n );\n }\n\n private _getSvg(type) {\n if (type === 'success') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-success\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 38 38\" style=\"enable-background:new 0 0 38 38;\" xml:space=\"preserve\" width=\"38px\" height=\"38px\">\n <g>\n <g class=\"check\">\n <g>\n <path d=\"M29.6,11.9c-0.5-0.5-1.3-0.5-1.8,0L16.3,23.4l-6.1-6.1c-0.5-0.5-1.3-0.5-1.8,0s-0.5,1.3,0,1.8l7,7c0.3,0.3,0.6,0.4,0.9,0.4s0.7-0.1,0.9-0.4l12.4-12.4C30.1,13.2,30.1,12.4,29.6,11.9z\"/>\n </g>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'process') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-process\" width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\"><circle stroke-opacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\"/>\n <path d=\"M36 18c0-9.94-8.06-18-18-18\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\".7s\" repeatCount=\"indefinite\"/></path>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'error') {\n return new DOMParser().parseFromString('<svg class=\"svg-icon svg-icon-error\" xmlns=\"http://www.w3.org/2000/svg\" width=\"38px\" height=\"38px\" viewBox=\"0 0 16 16\"><g><path d=\"M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z\" data-original=\"#444444\" data-old_color=\"#444444\"/><path d=\"M12.2 10.8l-2.8-2.8 2.8-2.8-1.4-1.4-2.8 2.8-2.8-2.8-1.4 1.4 2.8 2.8-2.8 2.8 1.4 1.4 2.8-2.8 2.8 2.8z\"/></g> </svg>', 'text/xml').firstChild;\n }\n }\n}\n","import { Directive, HostBinding, HostListener, Input, OnDestroy, inject } from '@angular/core';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ConfirmResult } from '../enums/confirm-result';\n\nimport { FsFormDirective } from './form';\n\n\n@Directive({\n selector: '[fsFormDialogClose],[fs-form-dialog-close]',\n standalone: true,\n})\nexport class FsFormDialogCloseDirective implements OnDestroy {\n private _form = inject(FsFormDirective, { optional: true });\n private _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, { optional: true });\n\n\n @Input() public closeData;\n\n @HostBinding('attr.type') public type = 'button';\n\n private _destroy$ = new Subject();\n\n @HostListener('click', ['$event.target'])\n public closeClick(): void {\n if(this._form) {\n this._form.triggerConfirm()\n .pipe(\n filter((confirmResult: ConfirmResult) => (confirmResult !== ConfirmResult.Review)),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._dialogRef.close(this.closeData);\n });\n } else {\n this._dialogRef.close(this.closeData);\n }\n }\n \n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\n\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { delay, filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FsFormDirective } from '../../directives/form/form.directive';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { FsButtonDirective } from '../../directives/button.directive';\nimport { MatDialogClose } from '@angular/material/dialog';\nimport { FsFormDialogCloseDirective } from '../../directives/form-dialog-close.directive';\r\n\r\n\r\n@Component({\n selector: 'fs-form-dialog-actions',\n templateUrl: './form-dialog-actions.component.html',\n styleUrls: ['./form-dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatButton,\n FsButtonDirective,\n MatDialogClose,\n NgTemplateOutlet,\n FsFormDialogCloseDirective,\n ],\n})\r\nexport class FsFormDialogActionsComponent implements OnInit, OnDestroy {\n private _form = inject(FsFormDirective, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n\r\n\r\n @Input() public save = true;\r\n @Input() public create = false;\r\n @Input() public close = false;\r\n @Input() public done = false;\r\n @Input() public closeData = null;\r\n @Input() public name: string;\r\n\r\n public dirty = false;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n public ngOnInit(): void {\r\n if(this._form) {\r\n this._form.ngForm.valueChanges\r\n .pipe( \r\n filter(() => (!this.dirty)),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = this._form.ngForm.dirty;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.submitted\r\n .pipe(\r\n delay(50),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.reseted\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next(null);\r\n this._destroy$.complete();\r\n }\r\n}\r\n","<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': save || create }\">\n @if (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=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (done) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (save || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (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 }\n @if (!(save || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","export const ERROR_MESSAGES = {\n required: 'This field is required',\n email: 'This is not a valid email address',\n emails: 'Input valid email addresses, comma separated',\n phone: 'Invalid phone number',\n numeric: 'Value should be numeric',\n integer: 'Value should be an integer',\n min: 'Value should not be less than $(1)',\n max: 'Value should not be greater than $(1)',\n minlength: 'Should not be shorter than $(1) characters',\n maxlength: 'Should not be longer than $(1) characters',\n compare: 'Inputs do not match',\n pattern: 'Value should match pattern $(1)',\n dateRange: 'Invalid date range',\n url: 'This is not a valid url',\n urlProtocol: 'Invalid URL. Proper http protocol is required. eg. https://google.com',\n greater: 'Value must be greater than $(1)',\n lesser: 'Value must be less than $(1)',\n greaterEqual: 'Value must be greater than or equal $(1)',\n lesserEqual: 'Value must be less than or equal $(1)',\n};\n","import { InjectionToken } from '@angular/core';\nimport { ERROR_MESSAGES } from '../consts/error-messages.const';\n\nexport const VALIDATE_MESSAGES = new InjectionToken<Record<string, string>>(\n 'fs.form.validate-messages',\n);\n\nexport const VALIDATE_MESSAGE_PROVIDER = {\n provide: VALIDATE_MESSAGES,\n useFactory: messageProviderFactory,\n};\n\nexport function messageProviderFactory() {\n return { ...ERROR_MESSAGES };\n}\n\n","import { AfterContentInit, Directive, ElementRef, Injector, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\nimport { AbstractControl, NgControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { keys, values } from 'lodash-es';\n\nimport {\n VALIDATE_MESSAGES,\n VALIDATE_MESSAGE_PROVIDER,\n} from '../../providers/validate-messages.provider';\nimport { FsFormDirective } from '../form/form.directive';\n\n\nexport interface FsControlDirective {\n validate?(control: AbstractControl): ValidationErrors | null;\n validateAsync?(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;\n}\n\n\n@Directive({\n selector: '[fsFormControl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsControlDirective implements OnInit, AfterContentInit, OnDestroy {\n\n @Input() public wrapperSelector: string | false;\n @Input() public messageSelector: string | false;\n @Input() public hintSelector: string | false;\n @Input() public labelSelector: string | false;\n @Input() public appendMessageClass: string;\n @Input() public appendErrorClass: string;\n @Input() public appendHintClass: string;\n\n @Input()\n public set validateMessages(messages: Record<string, string>) {\n this._validateMessages = {\n ...this._validateMessages,\n ...messages,\n };\n }\n\n public errors = [];\n\n protected _control: AbstractControl;\n protected _elementRef = inject(ElementRef);\n protected _renderer2 = inject(Renderer2);\n protected _injector = inject(Injector);\n protected _validateMessages = inject(VALIDATE_MESSAGES, { self: true });\n protected _ngControl = inject(NgControl, { optional: true });\n protected _formDirective = inject<FsFormDirective>(FsFormDirective, { optional: true });\n\n private _destroy$ = new Subject();\n\n constructor() {\n const _ngControl = this._ngControl;\n\n\n if (_ngControl) {\n this._control = _ngControl.control;\n } else {\n console.error('The element does not have a valid ngModel', this._elementRef.nativeElement);\n }\n }\n\n public ngOnInit() {\n this._setupValidators();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public ngAfterContentInit() {\n this._subscribeToStatusChagnes();\n }\n\n public getMessageSelector(): string {\n if (this.messageSelector === false) {\n return '';\n }\n\n if (this.messageSelector) {\n return this.messageSelector;\n\n } else if (this._formDirective?.messageSelector) {\n return this._formDirective.messageSelector;\n }\n }\n\n public getHintWrapper(): HTMLElement | null {\n return this._elementRef.nativeElement.querySelector(this.getHintWrapperSelector());\n }\n\n public getHintWrapperSelector(): string | null {\n if (this.hintSelector === false) {\n return '';\n }\n\n if (this.hintSelector) {\n return this.hintSelector;\n\n } else if (this._formDirective?.hintSelector) {\n return this._formDirective.hintSelector;\n }\n }\n\n public getWrapperSelector(): string {\n if (this.wrapperSelector === false) {\n return '';\n }\n\n if (this.wrapperSelector) {\n return this.wrapperSelector;\n\n } else if (this._formDirective?.wrapperSelector) {\n return this._formDirective.wrapperSelector;\n }\n }\n\n public getlabelSelector(): string {\n\n if (this.labelSelector === false) {\n return '';\n }\n\n if (this.labelSelector) {\n return this.labelSelector;\n\n } else if (this._formDirective?.labelSelector) {\n return this._formDirective.labelSelector;\n }\n }\n\n public getWrapperElement() {\n const wrapper = this._getWrapper(this._elementRef.nativeElement);\n\n if (wrapper) {\n return wrapper;\n }\n\n return this._elementRef.nativeElement;\n }\n\n /*\n <mat-form-field class=\"mat-form-field\"> <-- Field Wrapper Class. Look for parents from the native element with the matching wrapperSelector. If not found defaults to native element.\n <input>\n <div class=\"fs-form-message\"> <-- Message Selector. Look for the element with class .fs-form-message or messageSelector\n <div class=\"fs-form-message\"></div>\n <div class=\"fs-form-hint\"></div> <-- Hint Selector. Look for the element with class .fs-form-hint or hintSelector\n </div>\n </mat-form-field>\n */\n\n private get _shouldErrorBeRendered() {\n return this._ngControl.invalid\n && (this._ngControl.dirty || this._formDirective?.ngForm?.submitted);\n }\n\n public render() {\n if (this._ngControl) {\n const renderer = this._renderer2;\n const wrapper = this.getWrapperElement();\n const error = this._ngControl.dirty ? this._getError(this._ngControl) : null;\n\n if (this._shouldErrorBeRendered && error) {\n wrapper.classList.add('ng-invalid', 'ng-dirty');\n } else {\n wrapper.classList.remove('ng-invalid');\n }\n\n if (!this.getMessageSelector()) {\n return;\n }\n\n const messageWrapper = wrapper.querySelector(this.getMessageSelector());\n \n if (!messageWrapper) {\n return console\n .warn(`Failed to locate ${ this.getMessageSelector()}`, this._elementRef.nativeElement);\n }\n\n renderer.addClass(messageWrapper, 'fs-form-message');\n\n if (this.appendMessageClass) {\n renderer.addClass(messageWrapper, this.appendMessageClass);\n }\n\n this._renderHint(error, messageWrapper);\n this._renderError(wrapper, messageWrapper, error);\n }\n }\n\n protected _renderHint(error, messageWrapper) {\n const hints = [\n ...messageWrapper.querySelectorAll('.mat-mdc-form-field-hint'),\n ];\n\n const hintWrapper: HTMLElement = this.getHintWrapper();\n if (hintWrapper) {\n hintWrapper.classList.add('fs-form-hint-wrapper');\n }\n\n hints.forEach((hint) => {\n this._renderer2.setStyle(hint, 'display', error ? 'none' : 'block');\n\n if (this.appendHintClass) {\n this._renderer2.addClass(hint, 'fs-form-hint');\n if(this.appendHintClass) {\n this._renderer2.addClass(hint, this.appendHintClass);\n }\n }\n });\n }\n\n protected _renderError(wrapper, messageWrapper, error) {\n let errorWrapper = wrapper.querySelector('.fs-form-error');\n if (errorWrapper) {\n errorWrapper.remove();\n }\n\n if (!this._shouldErrorBeRendered || !error) {\n return;\n }\n\n errorWrapper = this._renderer2.createElement('div');\n this._renderer2.addClass(errorWrapper, 'fs-form-error');\n this._renderer2.addClass(errorWrapper, `fs-form-error-${error.name}`);\n\n if(this.appendErrorClass) {\n this._renderer2.addClass(errorWrapper, this.appendErrorClass);\n this._renderer2.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);\n }\n \n const errorText = this._renderer2.createText(error.message);\n\n this._renderer2.appendChild(errorWrapper, errorText);\n\n const hintWrapper: HTMLElement = messageWrapper.querySelector(this.getHintWrapperSelector());\n if (hintWrapper) {\n hintWrapper.prepend(errorWrapper);\n }\n }\n\n protected _subscribeToStatusChagnes():void {\n if (this._control) {\n this._control.statusChanges\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(this.render.bind(this));\n }\n }\n\n protected _getWrapper(node, count = 0) {\n if (!node || count > 10) {\n return null;\n }\n\n if (node.parentNode && node.parentNode.querySelector(this.getWrapperSelector())) {\n return node;\n }\n\n return this._getWrapper(node.parentNode, ++count);\n }\n\n protected _parseErrorMessage(message, args): string {\n values(args)\n .forEach((name) => {\n message = message.replace(/\\$\\(\\d\\)/, name);\n });\n\n return message;\n }\n\n protected _getError(controlRef): { name: string, message: string } {\n\n const name = keys(controlRef.control.errors)[0];\n\n if (!name) {\n return null;\n }\n\n let message = controlRef.control.errors[name];\n\n if (this._validateMessages[name]) {\n message = this._parseErrorMessage(this._validateMessages[name], message);\n }\n\n return { name: name, message: message };\n }\n\n private _setupValidators(): void {\n const control = this._control;\n\n if (this.validate) {\n const validators = control.validator\n ? [control.validator, this.validate.bind(this)]\n : this.validate.bind(this);\n\n control.setValidators(validators);\n }\n\n if (this.validateAsync) {\n const asyncValidators = control.asyncValidator\n ? [control.asyncValidator, this.validateAsync.bind(this)]\n : this.validateAsync.bind(this);\n\n control.setAsyncValidators(asyncValidators);\n }\n\n control.updateValueAndValidity();\n }\n\n}\n","import { AfterViewInit, Directive, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormCompare]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormCompareDirective extends FsControlDirective\n implements OnChanges, AfterViewInit, OnDestroy, FsValidator {\n\n @Input()\n public fsFormCompare;\n\n @Input('fsFormCompareMessage')\n public set validationMessage(value: string) {\n this._validateMessages.compare = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.fsFormCompare.value === this._elementRef.nativeElement.value) {\n return null;\n }\n \n return { compare: true };\n \n }\n\n public ngAfterViewInit() {\n this.fsFormCompare.addEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n\n public ngOnDestroy() {\n this.fsFormCompare.removeEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';\n\nimport { Observable, from, isObservable, of, throwError } from 'rxjs';\nimport { catchError, mapTo, take } from 'rxjs/operators';\n\nimport { isValid } from 'date-fns';\nimport { isObject } from 'lodash-es';\n\n\nexport class FsValidators {\n\n public static email(control: AbstractControl): ValidationErrors | null {\n if (!control.value || email(control.value)) {\n return null;\n }\n\n return { email: true };\n }\n\n public static emails(control: AbstractControl): ValidationErrors | null {\n const model = control.value || '';\n\n const hasInvalidEmails = model\n .split(',')\n .some((part) => !email(part));\n\n return hasInvalidEmails ? { email: true } : null;\n }\n\n public static numeric(control: AbstractControl): ValidationErrors | null {\n if (isEmpty(control.value) || isNumeric(control.value)) {\n return null;\n }\n \n return { numeric: true };\n \n }\n\n public static integer(control: AbstractControl): ValidationErrors | null {\n if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {\n return null;\n }\n \n return { integer: true };\n \n }\n\n public static phone(control: AbstractControl): ValidationErrors | null {\n if (!control.value || phone(control.value)) {\n return null;\n }\n\n return { phone: true };\n }\n\n public static url(control: AbstractControl, protocolRequired = false): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (!url(control.value)) {\n return { url: true };\n }\n\n if (protocolRequired) {\n const pattern = new RegExp(/^http(s)?:\\/\\//gm);\n\n if (!String(control.value).match(pattern)) {\n return { urlProtocol: true };\n }\n }\n\n return null;\n }\n\n public static dateRange(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (isObject(control.value)) {\n\n const start = control.value.start;\n const end = control.value.end;\n\n if ((!start && !end) || (isValid(start) && isValid(end))) {\n return null;\n }\n }\n\n return { dateRange: true };\n }\n\n public static func(\n control: AbstractControl, \n formFunction: (control: AbstractControl, data: any) => Observable<unknown> | Promise<unknown> | void, data: any,\n ): Observable<unknown> {\n let result: unknown;\n let stream$: Observable<unknown>;\n\n try {\n result = formFunction(control, data);\n } catch (err) {\n const error = err instanceof Error ? err.message : err;\n\n stream$ = throwError(() => error);\n }\n\n if (!stream$) {\n if (result instanceof Promise) {\n stream$ = from(result);\n } else if (isObservable(result)) {\n stream$ = result;\n } else {\n stream$ = of(null);\n }\n }\n\n return stream$\n .pipe(\n mapTo(null),\n catchError((err) => {\n return of({ validationError: err });\n }),\n take(1),\n );\n }\n}\n","export function isEnabled(value: any): boolean {\n return value !== 'false' && (value || value === '');\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormDateRange]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormDateRangeDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormDateRange;\n\n @Input('fsFormDateRangeMessage')\n public set validationMessage(value: string) {\n this._validateMessages.dateRange = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormDateRange)) {\n return FsValidators.dateRange(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmail]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormEmailDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmail;\n\n @Input('fsFormEmailMessage')\n public set validationMessage(value: string) {\n this._validateMessages.email = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmail)) {\n return FsValidators.email(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmails]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormEmailsDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmails;\n\n @Input('fsFormEmailsMessage')\n public set validationMessage(value: string) {\n this._validateMessages.emails = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmails)) {\n return FsValidators.emails(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, of } from 'rxjs';\n\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormFunction]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormFunctionDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n\n @Input()\n public fsFormFunction;\n\n @Input()\n public fsFormFunctionData;\n\n @Input()\n public validateOnSubmit = false;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n if(this.validateOnSubmit && !this._formDirective.validating) {\n return of(null);\n }\n \n return FsValidators.func(this._control, this.fsFormFunction, this.fsFormFunctionData);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormGreaterEqual]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormGreaterEqualDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormGreaterEqual;\n\n @Input('fsFormGreaterEqualMessage')\n public set validationMessage(value: string) {\n this._validateMessages.greater = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const greater = parseFloat(this.fsFormGreaterEqual);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(greater) && !isNaN(value) && value < greater) {\n return { greaterEqual: { greater, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormGreater]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormGreaterDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormGreater;\n\n @Input('fsFormGreaterMessage')\n public set validationMessage(value: string) {\n this._validateMessages.greater = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const greater = parseFloat(this.fsFormGreater);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(greater) && !isNaN(value) && value <= greater) {\n return { greater: { greater, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormInteger]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormIntegerDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormInteger;\n\n @Input('fsFormIntegerMessage')\n public set validationMessage(value: string) {\n this._validateMessages.integer = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormInteger)) {\n return FsValidators.integer(this._control);\n }\n \n return null;\n \n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormLesserEqual]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormLesserEqualDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormLesserEqual;\n\n @Input('fsFormLesserEqualMessage')\n public set validationMessage(value: string) {\n this._validateMessages.lesser = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const lesser = parseFloat(this.fsFormLesserEqual);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(lesser) && !isNaN(value) && value > lesser) {\n return { lesserEqual: { lesser, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormLesser]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormLesserDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormLesser;\n\n @Input('fsFormLesserMessage')\n public set validationMessage(value: string) {\n this._validateMessages.lesser = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const lesser = parseFloat(this.fsFormLesser);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(lesser) && !isNaN(value) && value >= lesser) {\n return { lesser: { lesser, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMax]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMaxDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMax: number;\n\n @Input('fsFormMaxMessage')\n public set validationMessage(value: string) {\n this._validateMessages.max = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.max(this.fsFormMax)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMaxLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMaxLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMaxLength: number;\n\n @Input('fsFormMaxLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.maxlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.maxLength(this.fsFormMaxLength)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMin]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMinDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMin;\n\n @Input('fsFormMinMessage')\n public set validationMessage(value: string) {\n this._validateMessages.min = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.min(parseFloat(this.fsFormMin))(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMinLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMinLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMinLength: number;\n\n @Input('fsFormMinLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.minlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.minLength(this.fsFormMinLength)(this._control);\n }\n}\n","import { Directive, OnChanges } from '@angular/core';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\n\n/**\n * This directive required for cases when we have custom Control like <fs-phone-field> but without any of our validators applied\n *\n * This directive required for automatic validation messages\n */\n@Directive({\n selector: '[ngModel]' +\n ':not([required])' +\n ':not([fsFormRequired])' +\n ':not([fsFormCompare])' +\n ':not([fsFormDateRange])' +\n ':not([fsFormEmail])' +\n ':not([fsFormEmails])' +\n ':not([fsFormFunction])' +\n ':not([fsFormGreater])' +\n ':not([fsFormGreaterEqual])' +\n ':not([fsFormInteger])' +\n ':not([fsFormLesser])' +\n ':not([fsFormMax])' +\n ':not([fsFormMaxLength])' +\n ':not([fsFormMin])' +\n ':not([fsFormMinLength])' +\n ':not([fsFormNumeric])' +\n ':not([fsFormPattern])' +\n ':not([fsFormPhone])' +\n ':not([fsFormUrl])' +\n ':not([validate])',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormNoFsValidatorsDirective extends FsControlDirective implements OnChanges {\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n protected _subscribeToStatusChagnes(): void {\n if (!!this._control.validator || !!this._control.asyncValidator) {\n super._subscribeToStatusChagnes();\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormNumeric]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormNumericDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormNumeric;\n\n @Input('fsFormNumericMessage')\n public set validationMessage(value: string) {\n this._validateMessages.numeric = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormNumeric)) {\n return FsValidators.numeric(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormPattern]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormPatternDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPattern: RegExp | string;\n\n @Input('fsFormPatternMessage')\n public set validationMessage(value: string) {\n this._validateMessages.pattern = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.pattern(this.fsFormPattern)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormPhone]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormPhoneDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPhone;\n\n @Input('fsFormPhoneMessage')\n public set validationMessage(value: string) {\n this._validateMessages.phone = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormPhone)) {\n return FsValidators.phone(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormRequired],[ngModel][required]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormRequiredDirective extends FsControlDirective implements OnChanges, FsValidator {\n public required = false;\n\n @Input('fsFormRequired')\n public set setFsFormRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('required')\n public set setRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('fsFormRequiredMessage')\n public set validationMessage(value: string) {\n this._validateMessages.required = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.required) {\n return Validators.required(this._control);\n }\n \n return null;\n \n }\n\n public render() {\n const wrapper = this.getWrapperElement();\n\n if (wrapper && this.getlabelSelector()) {\n const labelWrapper = wrapper.querySelector(this.getlabelSelector());\n\n // Adding class fs-form-label-requried adds the * to the label\n if (labelWrapper) {\n if (this.required) {\n this._renderer2.addClass(labelWrapper, 'fs-form-label-required');\n } else {\n this._renderer2.removeClass(labelWrapper, 'fs-form-label-required');\n }\n }\n }\n\n super.render();\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormUrl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormUrlDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormUrl;\n\n @Input()\n public fsFormUrlProtocol = true;\n\n @Input('fsFormUrlMessage')\n public set validationMessage(value: string) {\n this._validateMessages.url = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormUrl)) {\n return FsValidators.url(this._control, this.fsFormUrlProtocol);\n }\n \n return null;\n \n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, of } from 'rxjs';\n\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[validate]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormValidateDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n\n @Input('validate')\n public validateFn: (control: AbstractControl, data: any) => Observable<unknown> | Promise<unknown> | void;\n\n @Input('validateData')\n public validateFnData;\n\n @Input()\n public validateOnSubmit = false;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n if(this.validateOnSubmit && !this._formDirective.validating) {\n return of(null);\n }\n\n return FsValidators.func(this._control, this.validateFn, this.validateFnData);\n }\n\n}\n","import { AfterContentInit, ContentChildren, Directive, inject } from '@angular/core';\nimport { NgForm, NgModel } from '@angular/forms';\n\n\n@Directive({\n selector: '[fsFormTemplate],fs-form-template',\n standalone: true,\n})\nexport class FsFormTemplateDirective implements AfterContentInit {\n\n @ContentChildren(NgModel)\n protected _projectedControls: NgModel[];\n\n protected _ngForm: NgForm = inject(NgForm);\n\n public ngAfterContentInit(): void {\n this._projectedControls.forEach((control: NgModel) => {\n this._ngForm.addControl(control);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { FsButtonDirective } from './button.directive';\n\n\n@Directive({\n selector: 'dummy-selector',\n standalone: true,\n})\nexport class FsSubmitButtonDirective extends FsButtonDirective {\n}\n","import {\n TemplateRef,\n Directive,\n Input,\n ViewContainerRef,\n Injector,\n inject,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[fsFormTemplateOutlet]',\n standalone: true,\n})\nexport class FsFormTemplateOutletDirective implements OnInit {\n\n @Input()\n public template: TemplateRef<any>;\n\n @Input()\n public context: Record<string, unknown> = {};\n\n protected _viewContainerRef: ViewContainerRef = inject(ViewContainerRef)\n protected _injector: Injector = inject(Injector);\n\n public ngOnInit() {\n this._viewContainerRef.createEmbeddedView(\n this.template,\n this.context,\n {\n injector: this._injector,\n },\n )\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormGroupDirective, FormsModule, NgForm, UntypedFormControl } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport {\n FsFormDialogActionsComponent,\n} from './components';\nimport {\n FsFormGreaterEqualDirective, FsFormLesserEqualDirective,\n FsFormTemplateDirective, FsSubmitButtonDirective,\n} from './directives';\nimport { FsButtonDirective } from './directives/button.directive';\nimport { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';\nimport { FsFormGroupDirective } from './directives/form-group/form-group.directive';\nimport { FsFormDirective } from './directives/form/form.directive';\nimport { FsFormCompareDirective } from './directives/validators/compare.directive';\nimport { FsControlDirective } from './directives/validators/control.directive';\nimport { FsFormDateRangeDirective } from './directives/validators/daterange.directive';\nimport { FsFormEmailDirective } from './directives/validators/email.directive';\nimport { FsFormEmailsDirective } from './directives/validators/emails.directive';\nimport { FsFormFunctionDirective } from './directives/validators/function.directive';\nimport { FsFormGreaterDirective } from './directives/validators/greater.directive';\nimport { FsFormIntegerDirective } from './directives/validators/integer.directive';\nimport { FsFormLesserDirective } from './directives/validators/lesser.directive';\nimport { FsFormMaxDirective } from './directives/validators/max.directive';\nimport { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';\nimport { FsFormMinDirective } from './directives/validators/min.directive';\nimport { FsFormMinLengthDirective } from './directives/validators/minlength.directive';\nimport { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';\nimport { FsFormNumericDirective } from './directives/validators/numeric.directive';\nimport { FsFormPatternDirective } from './directives/validators/pattern.directive';\nimport { FsFormPhoneDirective } from './directives/validators/phone.directive';\nimport { FsFormRequiredDirective } from './directives/validators/required.directive';\nimport { FsFormUrlDirective } from './directives/validators/url.directive';\nimport { FsFormValidateDirective } from './directives/validators/validate.directive';\nimport { FsFormTemplateOutletDirective } from './directives/form-template-outlet.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatDialogModule,\n FsDialogModule,\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormGreaterEqualDirective,\n FsFormLesserDirective,\n FsFormLesserEqualDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n FsFormNoFsValidatorsDirective,\n FsButtonDirective,\n FsSubmitButtonDirective,\n FsFormTemplateDirective,\n FsFormTemplateDirective,\n FsFormTemplateOutletDirective,\n FsFormGroupDirective,\n ],\n exports: [\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormGreaterEqualDirective,\n FsFormLesserDirective,\n FsFormLesserEqualDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n FsFormNoFsValidatorsDirective,\n FsButtonDirective,\n FsSubmitButtonDirective,\n FsFormTemplateDirective,\n FsFormTemplateDirective,\n FsFormTemplateOutletDirective,\n FsFormGroupDirective,\n ],\n providers: [\n {\n provide: ErrorStateMatcher,\n useClass: ShowOnDirtyErrorStateMatcher,\n },\n ],\n})\nexport class FsFormModule {\n public static forRoot(): ModuleWithProviders<FsFormModule> {\n\n /**\n * Hack: https://github.com/angular/components/issues/20097\n */\n ErrorStateMatcher.prototype\n .isErrorState = (\n control: UntypedFormControl | null,\n form: FormGroupDirective | NgForm | null,\n ): boolean => {\n return control?.invalid && control?.touched && control?.dirty;\n };\n\n return {\n ngModule: FsFormModule,\n };\n }\n}\n","// Modules\nexport { FsFormModule } from './app/fs-form.module';\n\n// Services\nexport { FsForm } from './app/services/fsform.service';\n\n// Directives\nexport { FsFormGreaterDirective, FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormTemplateDirective } from './app/directives';\nexport { FsButtonDirective } from './app/directives/button.directive';\nexport { FsFormDialogCloseDirective } from './app/directives/form-dialog-close.directive';\nexport { FsFormGroupDirective } from './app/directives/form-group/form-group.directive';\nexport { FsFormDirective } from './app/directives/form/form.directive';\nexport { FsSubmitButtonDirective } from './app/directives/submit-button.directive';\nexport { FsFormCompareDirective } from './app/directives/validators/compare.directive';\nexport { FsControlDirective } from './app/directives/validators/control.directive';\nexport { FsFormDateRangeDirective } from './app/directives/validators/daterange.directive';\nexport { FsFormEmailDirective } from './app/directives/validators/email.directive';\nexport { FsFormEmailsDirective } from './app/directives/validators/emails.directive';\nexport { FsFormFunctionDirective } from './app/directives/validators/function.directive';\nexport { FsFormIntegerDirective } from './app/directives/validators/integer.directive';\nexport { FsFormLesserDirective } from './app/directives/validators/lesser.directive';\nexport { FsFormMaxDirective } from './app/directives/validators/max.directive';\nexport { FsFormMaxLengthDirective } from './app/directives/validators/maxlength.directive';\nexport { FsFormMinDirective } from './app/directives/validators/min.directive';\nexport { FsFormMinLengthDirective } from './app/directives/validators/minlength.directive';\nexport { FsFormNoFsValidatorsDirective } from './app/directives/validators/no-fs-validators.directive';\nexport { FsFormNumericDirective } from './app/directives/validators/numeric.directive';\nexport { FsFormPatternDirective } from './app/directives/validators/pattern.directive';\nexport { FsFormPhoneDirective } from './app/directives/validators/phone.directive';\nexport { FsFormRequiredDirective } from './app/directives/validators/required.directive';\nexport { FsFormUrlDirective } from './app/directives/validators/url.directive';\nexport { FsFormValidateDirective } from './app/directives/validators/validate.directive';\nexport { FsFormTemplateOutletDirective } from './app/directives/form-template-outlet.directive';\n\n// Components\nexport { FsFormDialogActionsComponent } from './app/components';\n\nexport { FsValidators } from './app/validators/validators';\n\nexport { FormDeactivateGuard } from './app/guards/form-deactivate.guard';\n\n// Interfaces\nexport { ConfirmConfig } from './app/interfaces/confirm-config';\nexport { SubmitEvent } from './app/interfaces/submit-event';\nexport { SubmittedEvent } from './app/interfaces/submitted-event';\n\n// Enums\nexport { ConfirmResult } from './app/enums/confirm-result';\nexport { FormStatus } from './app/enums/form-status';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestitch-form.mjs","sources":["../../src/app/components/confirm-unsaved/confirm-unsaved.component.ts","../../src/app/components/confirm-unsaved/confirm-unsaved.component.html","../../src/app/enums/confirm-result.ts","../../src/app/helpers/confirm-result-continue.ts","../../src/app/helpers/get-active-route.ts","../../src/app/enums/form-status.ts","../../src/app/services/fsform.service.ts","../../src/app/guards/form-deactivate.guard.ts","../../src/app/helpers/get-form-errors.ts","../../src/app/directives/form-base/form-base.directive.ts","../../src/app/directives/form-group/form-group.directive.ts","../../src/app/directives/form/form.directive.ts","../../src/app/directives/button.directive.ts","../../src/app/directives/form-dialog-close.directive.ts","../../src/app/components/form-dialog-actions/form-dialog-actions.component.ts","../../src/app/components/form-dialog-actions/form-dialog-actions.component.html","../../src/app/consts/error-messages.const.ts","../../src/app/providers/validate-messages.provider.ts","../../src/app/directives/validators/control.directive.ts","../../src/app/directives/validators/compare.directive.ts","../../src/app/validators/validators.ts","../../src/app/helpers/is-enabled.ts","../../src/app/directives/validators/daterange.directive.ts","../../src/app/directives/validators/email.directive.ts","../../src/app/directives/validators/emails.directive.ts","../../src/app/directives/validators/function.directive.ts","../../src/app/directives/validators/greater-equal.directive.ts","../../src/app/directives/validators/greater.directive.ts","../../src/app/directives/validators/integer.directive.ts","../../src/app/directives/validators/lesser-equal.directive.ts","../../src/app/directives/validators/lesser.directive.ts","../../src/app/directives/validators/max.directive.ts","../../src/app/directives/validators/maxlength.directive.ts","../../src/app/directives/validators/min.directive.ts","../../src/app/directives/validators/minlength.directive.ts","../../src/app/directives/validators/no-fs-validators.directive.ts","../../src/app/directives/validators/numeric.directive.ts","../../src/app/directives/validators/pattern.directive.ts","../../src/app/directives/validators/phone.directive.ts","../../src/app/directives/validators/required.directive.ts","../../src/app/directives/validators/url.directive.ts","../../src/app/directives/validators/validate.directive.ts","../../src/app/directives/form-template.directive.ts","../../src/app/directives/submit-button.directive.ts","../../src/app/directives/form-template-outlet.directive.ts","../../src/app/fs-form.module.ts","../../src/public_api.ts","../../src/firestitch-form.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n templateUrl: './confirm-unsaved.component.html',\n styleUrls: ['./confirm-unsaved.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n\n FsDialogModule,\n ],\n})\nexport class ConfirmUnsavedComponent implements OnInit, OnDestroy {\n private _data = inject(MAT_DIALOG_DATA);\n private _dialogRef = inject<MatDialogRef<ConfirmUnsavedComponent>>(MatDialogRef);\n\n\n public saveLabel;\n public discardLabel;\n public cancelLabel;\n public message;\n public title;\n\n private _destroy$ = new Subject<void>();\n\n public ngOnInit(): void {\n this.saveLabel = this._data.saveLabel;\n this.discardLabel = this._data.discardLabel;\n this.cancelLabel = this._data.cancelLabel;\n this.message = this._data.message;\n this.title = this._data.title;\n }\n\n public save(): void {\n this._dialogRef.close('save');\n }\n\n public discard(): void {\n this._dialogRef.close('discard');\n }\n\n public cancel(): void {\n this._dialogRef.close(null);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n {{ title }}\n </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 mat-button>\n {{ saveLabel }}\n </button>\n <button\n type=\"button\"\n (click)=\"discard()\"\n mat-button>\n {{ discardLabel }}\n </button>\n <button\n type=\"button\"\n (click)=\"cancel()\"\n mat-button>\n {{ cancelLabel }}\n </button>\n </mat-dialog-actions>\n</fs-dialog>","export enum ConfirmResult {\n Save = 'save',\n Discard = 'discard',\n Review = 'review',\n Invalid = 'invalid',\n NoChanges = 'noChanges',\n}\n","import { ConfirmResult } from '../enums/confirm-result';\n\nexport function confirmResultContinue(result): boolean {\n return (\n result === ConfirmResult.Discard || \n result === ConfirmResult.Save || \n result === ConfirmResult.NoChanges\n );\n}\n","import { ActivatedRoute } from '@angular/router';\n\n\nexport function getActiveRoute(route: ActivatedRoute): ActivatedRoute {\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n return route;\n}\n","export enum FormStatus {\n Valid = 'valid',\n Invalid = 'invalid',\n Validating = 'validating',\n Submitting = 'submitting',\n Submitted = 'submitted',\n Error = 'error',\n Success = 'success',\n Completing = 'completing',\n}\n","import { inject, Injectable, Type } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { ConfirmUnsavedComponent } from '../components/confirm-unsaved';\nimport type { FsFormDirective } from '../directives/form/form.directive';\nimport { ConfirmResult } from '../enums';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsForm {\n\n // value is array for future possibilities of extension\n private _formDirectiveStore = new WeakMap<Type<any>, FsFormDirective[]>();\n private _dialog = inject(MatDialog);\n\n public registerFormDirective(routeComponent: Type<any>, directive: FsFormDirective) {\n const directives = this.getFormDirectives(routeComponent) || [];\n directives.push(directive);\n\n this._formDirectiveStore.set(routeComponent, directives);\n }\n\n public getFormDirectives(routeComponent): FsFormDirective[] {\n return this._formDirectiveStore.get(routeComponent);\n }\n\n public removeFormDirective(routeComponent) {\n this._formDirectiveStore.delete(routeComponent);\n }\n\n public hasChanges(form: FsFormDirective): boolean {\n return Object.keys(form.ngForm.control.controls)\n .some((key) => {\n const control = form.ngForm.control.controls[key];\n\n return control.dirty;\n });\n }\n\n public confirmUnsaved(\n form: FsFormDirective, \n ): Observable<ConfirmResult> {\n if (!form.confirm || !this.hasChanges(form)) {\n return of(ConfirmResult.NoChanges);\n }\n\n let title = 'You have unsaved changes';\n let message = 'What would you like to do with your changes?';\n let saveLabel = 'Save and continue';\n let discardLabel = 'Discard changes and continue';\n let cancelLabel = 'Review changes';\n\n if (typeof form.confirm === 'object') {\n title = form.confirm.title || title;\n message = form.confirm.message || message;\n saveLabel = form.confirm.saveLabel || saveLabel;\n discardLabel = form.confirm.discardLabel || discardLabel;\n cancelLabel = form.confirm.cancelLabel || cancelLabel;\n }\n\n return this._dialog\n .open(ConfirmUnsavedComponent, {\n data: {\n title,\n message,\n saveLabel,\n discardLabel,\n cancelLabel,\n },\n width: 'auto', \n })\n .afterClosed()\n .pipe(\n switchMap((result) => {\n if(!result) {\n return of(ConfirmResult.Review);\n }\n \n if (result === 'discard') {\n form.reset();\n\n return of(ConfirmResult.Discard); \n }\n\n if (result === 'save') {\n form.ngForm.control.markAsPristine();\n\n return form.submit$({ confirmed: true })\n .pipe(\n map((submitEvent) => {\n if(submitEvent.error) {\n return ConfirmResult.Invalid;\n }\n\n return ConfirmResult.Save;\n }),\n catchError(() => {\n return of(ConfirmResult.Invalid);\n }),\n );\n }\n }),\n );\n }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FsFormDirective } from '../directives/form/form.directive';\nimport { confirmResultContinue } from '../helpers';\nimport { getActiveRoute } from '../helpers/get-active-route';\nimport { FsForm } from '../services/fsform.service';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormDeactivateGuard {\n private _form = inject(FsForm);\n private _route = inject(ActivatedRoute);\n\n\n public canDeactivate(): Observable<boolean> {\n const route = getActiveRoute(this._route);\n\n if (!route) {\n console.error('Can not find route for FormDeactivateGuard checks');\n\n return of(true);\n }\n\n const directives: FsFormDirective[] = this._form\n .getFormDirectives(route.routeConfig.component);\n\n if (!Array.isArray(directives) || directives.length === 0) {\n console.error('Can not find a valid FsFormDirective');\n\n return of(true);\n }\n\n return this._form.confirmUnsaved(directives[0])\n .pipe(\n map((result) => {\n return confirmResultContinue(result);\n }),\n );\n }\n\n}\n","import { AbstractControl, UntypedFormGroup, ValidationErrors } from '@angular/forms';\n\n\nexport function getFormErrors(control: AbstractControl, key: string): ValidationErrors | null {\n let errors: ValidationErrors | null = null;\n\n if (control.invalid && control.errors) {\n errors = {\n [key]: { ...control.errors },\n };\n }\n\n if (control instanceof UntypedFormGroup) {\n Object.entries(control.controls)\n .forEach(([name, childControl]) => {\n const childErrors = getFormErrors(childControl, name);\n\n if (childErrors) {\n if (!errors) {\n errors = { ...childErrors };\n } else {\n Object.assign(errors, childErrors);\n }\n }\n });\n }\n\n return errors;\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n inject,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n} from '@angular/core';\n\nimport { MatTab, MatTabGroup, MatTabHeader } from '@angular/material/tabs';\n\nimport { Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { ConfirmResult } from '../../enums';\nimport { confirmResultContinue } from '../../helpers';\nimport { ConfirmConfig, ConfirmTabGroup } from '../../interfaces';\nimport { FsButtonDirective } from '../button.directive';\n\n\n@Directive()\nexport abstract class FsFormBaseDirective implements AfterContentInit, OnDestroy {\n\n @Input()\n public confirmTabs = true;\n \n @Input()\n public tabGroup: MatTabGroup;\n\n protected _ngZone = inject(NgZone);\n protected _cdRef = inject(ChangeDetectorRef);\n\n @ContentChildren(MatTabGroup, { descendants: true })\n private _tabGroups: QueryList<MatTabGroup> = new QueryList();\n\n private _buttons = new QueryList<FsButtonDirective>();\n private _activeSubmitButton: FsButtonDirective;\n private _destroy$ = new Subject<void>();\n \n public abstract submitting: boolean;\n public abstract confirm: ConfirmConfig | boolean; \n\n public ngAfterContentInit(): void {\n this._registerConfirmTabs();\n }\n\n public get destroy$(): Observable<void> {\n return this._destroy$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n \n public get buttons(): QueryList<FsButtonDirective> {\n return this._buttons;\n }\n\n public get activeSubmitButton(): FsButtonDirective {\n return this._activeSubmitButton;\n }\n\n public set activeSubmitButton(button: FsButtonDirective) {\n this._activeSubmitButton = button;\n }\n\n public addButton(button: FsButtonDirective): void {\n this._buttons\n .reset(\n [\n ...this._buttons.toArray(),\n button,\n ]);\n }\n\n public removeButton(button: FsButtonDirective): void {\n if(this._activeSubmitButton === button) {\n this._activeSubmitButton = null;\n }\n\n this._buttons.reset(\n [\n ...this._buttons.toArray()\n .filter((item) => (button !== item)),\n ]);\n }\n \n\n private _registerConfirmTabs(): void {\n this._registerConfirmTabGroups(this._tabGroups.toArray());\n this._tabGroups.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._registerConfirmTabGroups(this._tabGroups.toArray());\n });\n }\n\n private _registerConfirmTabGroups(tabGroups: MatTabGroup[]): void {\n tabGroups.forEach((tabGroup: MatTabGroup) => {\n this._registerConfirmTabGroup(tabGroup);\n });\n }\n\n private _registerConfirmTabGroup(tabGroup: MatTabGroup): void {\n const confirmTabGroup = tabGroup as ConfirmTabGroup;\n if (!confirmTabGroup._originalHandleClick) {\n confirmTabGroup._originalHandleClick = tabGroup._handleClick;\n confirmTabGroup._handlClick$ = new Subject<{\n tab: MatTab; \n tabHeader: MatTabHeader; \n idx: number \n }>();\n\n confirmTabGroup._handleClick = (tab: MatTab, tabHeader: MatTabHeader, idx: number) => {\n if (confirmTabGroup._handlClick$.observers.length) {\n confirmTabGroup._handlClick$.next({ tab, tabHeader, idx });\n } else {\n confirmTabGroup._originalHandleClick(tab, tabHeader, idx);\n }\n };\n }\n\n confirmTabGroup._handlClick$\n .pipe(\n filter(() => !this.submitting),\n switchMap((event) => {\n if(this.confirm && this.confirmTabs) {\n return this.triggerConfirm()\n .pipe(\n tap((result) => {\n if (confirmResultContinue(result)) {\n confirmTabGroup.selectedIndex = event.idx;\n }\n }),\n );\n }\n\n confirmTabGroup._originalHandleClick(event.tab, event.tabHeader, event.idx);\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n \n \n public abstract triggerSubmit(): void;\n public abstract triggerConfirm(): Observable<ConfirmResult>;\n}\n","import {\n Directive,\n} from '@angular/core';\n\n\nimport { ConfirmConfig } from '../../interfaces';\nimport { FsFormDirective } from '../form';\nimport { FsFormBaseDirective } from '../form-base';\n\n\n@Directive({\n selector: '[fsFormGroup]',\n exportAs: 'fsFormGroup',\n standalone: true,\n})\nexport class FsFormGroupDirective extends FsFormBaseDirective {\n\n private _formDirective: FsFormDirective;\n\n public triggerSubmit() {\n return this._formDirective?.triggerSubmit();\n }\n\n public triggerConfirm() {\n return this._formDirective?.triggerConfirm();\n }\n\n public get submitting(): boolean {\n return this._formDirective?.submitting;\n }\n\n public get confirm(): ConfirmConfig | boolean {\n return this._formDirective?.confirm;\n }\n\n public registerForm(formDirective: FsFormDirective) {\n this._formDirective = formDirective;\n }\n\n public deregisterForm() {\n this._formDirective = null;\n }\n}\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { ActivatedRoute, Route } from '@angular/router';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { guid } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsMessage, MessageMode } from '@firestitch/message';\n\nimport {\n BehaviorSubject,\n defer,\n fromEvent,\n iif,\n Observable,\n of,\n throwError,\n} from 'rxjs';\nimport {\n catchError,\n delay,\n filter,\n first,\n map,\n mergeMap,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { FormDeactivateGuard } from '../../guards/form-deactivate.guard';\nimport { confirmResultContinue } from '../../helpers/confirm-result-continue';\nimport { getActiveRoute } from '../../helpers/get-active-route';\nimport { getFormErrors } from '../../helpers/get-form-errors';\nimport { FsForm } from '../../services/fsform.service';\nimport { FsButtonDirective } from '../button.directive';\nimport { FsFormBaseDirective } from '../form-base';\nimport { FsFormGroupDirective } from '../form-group';\n\nimport { ConfirmResult } from './../../enums/confirm-result';\nimport { FormStatus } from './../../enums/form-status';\nimport { ConfirmConfig, SubmittedEvent } from './../../interfaces';\nimport { SubmitEvent } from './../../interfaces/submit-event';\n\n\n@Directive({\n selector: '[fsForm]',\n exportAs: 'fsForm',\n standalone: true,\n})\nexport class FsFormDirective \n extends FsFormBaseDirective \n implements OnInit, OnDestroy, AfterContentInit, OnChanges {\n ngForm = inject<NgForm>(NgForm);\n private _form = inject(FsForm);\n private _element = inject(ElementRef);\n private _message = inject(FsMessage);\n private _formGroup = inject(FsFormGroupDirective, { optional: true });\n private _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, { optional: true });\n private _drawerRef = inject<DrawerRef<any>>(DrawerRef, { optional: true });\n private _route = inject(ActivatedRoute);\n\n\n @Input()\n public wrapperSelector = '.fs-form-wrapper,.mat-mdc-form-field';\n\n @Input()\n public messageSelector = '.fs-form-message,.mat-mdc-form-field-subscript-wrapper';\n\n @Input()\n public hintSelector = '.fs-form-hint,.mat-mdc-form-field-hint-wrapper';\n\n @Input()\n public labelSelector = '.fs-form-label,.mdc-floating-label>mat-label';\n\n @Input()\n public autocomplete = false;\n\n @Input()\n public shortcuts = true; // Ctrl + s\n\n @Input()\n public confirm: ConfirmConfig | boolean = true;\n\n @Input()\n public confirmDialog = true;\n\n @Input()\n public confirmDrawer = true;\n\n @Input()\n public confirmBrowser = true;\n\n @Input()\n public dirtySubmitButton = true;\n\n @Input()\n public set submit(submit$: (event: SubmitEvent) => Observable<any>) {\n this._submit$ = submit$;\n }\n\n public get submit(): (event: SubmitEvent) => Observable<any> {\n return this._submit$;\n }\n\n @Input()\n public successDelay = 0;\n\n @Input()\n public errorDelay = 1000;\n\n @Input()\n public deactivationGuard = true;\n \n @Output('fsForm')\n public submitEvent: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public invalid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public valid: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public submitted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public reseted: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @Output()\n public cleared: EventEmitter<SubmitEvent> = new EventEmitter();\n\n @HostBinding('class.fs-form')\n public fsFormClass = true;\n\n private _registerControl;\n private _dialogBackdropEscape = false;\n private _snapshot: { [key: string]: any } = {};\n private _activatedRouteConfig: Route | null;\n private _status$ = new BehaviorSubject(FormStatus.Valid);\n private _submit$: (event?: SubmitEvent) => Observable<any> = null;\n\n public get submitting(): boolean {\n return this._status$.getValue() === FormStatus.Submitting;\n }\n\n public get validating(): boolean {\n return this._status$.getValue() === FormStatus.Validating;\n }\n\n public get completing(): boolean {\n return this._status$.getValue() === FormStatus.Completing;\n }\n\n private get _submitEvent(): SubmitEvent {\n return {\n ngForm: this.ngForm,\n submitter: this._submitter,\n };\n }\n\n private get _formValidState$(): Observable<SubmittedEvent> {\n this.submitEvent.emit(this._submitEvent);\n this.valid.emit(this._submitEvent);\n\n const submittedEvent: SubmittedEvent = {\n ngForm: this.ngForm,\n submitter: this._submitter,\n response: null,\n };\n\n const submit$: Observable<any> = this._submit$ ?\n this._submit$(this._submitEvent) : of(submittedEvent);\n\n return submit$\n .pipe(\n map((response) => {\n submittedEvent.response = response;\n\n return submittedEvent;\n }),\n takeUntil(this.destroy$),\n );\n }\n\n private get _formInvalidState$(): Observable<never> {\n if (this.invalid) {\n this.invalid.emit(this._submitEvent);\n }\n\n const message = 'Please review errors highlighted in red';\n this._message.error(message, { mode: MessageMode.Toast });\n\n const el = this._element.nativeElement.querySelector('.ng-invalid');\n\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n return throwError(() => new Error('Form validation error'));\n }\n\n private get _submitter(): string {\n return this._getFormGroup().activeSubmitButton?.name;\n }\n\n public ngOnInit() {\n this._formGroup?.registerForm(this);\n\n if (this.deactivationGuard) {\n this._registerCanDeactivateGuard();\n }\n\n this._registerConfirmDialogBackdropEscape();\n this._listenHotKeys();\n this._listenWindowClose();\n this._listenSubmit();\n this._listenFormStatus();\n\n if (!this.autocomplete) {\n this._registerAutocomplete();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.confirm) {\n this._updateDirtySubmitButtons();\n }\n }\n\n public clearSubmit(submit: (event: SubmitEvent) => Observable<any> = null): void {\n if(!submit || submit === this._submit$) {\n this._submit$ = null;\n }\n\n setTimeout(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public registerSubmit(submit$: () => Observable<any>): void {\n this._submit$ = submit$;\n\n setTimeout(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n super.ngAfterContentInit(); \n this._registerConfirm();\n this._registerConfirmDrawerClose();\n this._registerDrawerClose();\n this._registerDirtySubmitButton();\n }\n\n public ngOnDestroy(): void {\n this._formGroup?.deregisterForm();\n\n super.ngOnDestroy();\n this._cleanupCanDeactivate();\n }\n\n public createSnapshot(): void {\n this._snapshot = this.ngForm.value;\n }\n\n public getSnapshot(): { [key: string]: any } {\n return this._snapshot || {};\n }\n\n public reset(): void {\n this.ngForm.resetForm();\n\n Object.keys(this.ngForm.controls)\n .forEach((name: string) => {\n const control = this.ngForm.controls[name];\n control.reset(this._snapshot[name]);\n });\n\n this.reseted.emit();\n }\n\n public clear(): void {\n this.ngForm.resetForm();\n this.cleared.emit();\n }\n\n public dirty(): void {\n this.ngForm.form.markAsDirty();\n this._updateDirtySubmitButtons();\n }\n\n public pristine(): void {\n this.ngForm.form.markAsPristine();\n this._updateDirtySubmitButtons();\n }\n\n public triggerSubmit(options?: { confirmed: boolean }): void {\n this.ngForm.ngSubmit.emit();\n }\n\n public triggerConfirm(): Observable<ConfirmResult> {\n const submitted = this.submitting ? this.submitted.asObservable() : of({});\n\n return submitted\n .pipe(\n take(1),\n mergeMap(() => this._form.confirmUnsaved(this)),\n );\n }\n\n public enable(): void {\n this.ngForm.control.enable();\n\n this._updateDirtySubmitButtons();\n }\n\n public disable(): void {\n this.ngForm.control.disable();\n\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.disable();\n });\n }\n\n public validate(): void {\n Object.values(this.ngForm.controls)\n .forEach((control) => {\n control.markAsDirty();\n control.markAsTouched();\n control.updateValueAndValidity();\n });\n }\n\n public submit$(submitEvent: SubmitEvent): Observable<SubmittedEvent> {\n return of(submitEvent)\n .pipe(\n tap(() => this._statusValidating()),\n tap(() => this.validate()),\n tap(() => this._statusSubmitting()),\n tap(() => this._setupActiveSubmitButton()),\n tap(() => this._disableButtons()),\n switchMap((data) => this._waitUntilStatusPending()\n .pipe(\n map(() => data),\n )), \n mergeMap(() => {\n if (this.ngForm.status === 'INVALID') {\n return this._formInvalidState$;\n }\n\n return this._formValidState$;\n }),\n catchError((e) => {\n this._handleError(e);\n\n return of({\n ...this._submitEvent,\n error: e?.message,\n });\n }),\n tap((submittedEvent: SubmittedEvent) => {\n if(!submittedEvent.error) {\n this._completeSubmit(true, submittedEvent);\n }\n }),\n );\n }\n\n private _listenSubmit(): void {\n this\n .ngForm\n .ngSubmit\n .pipe(\n tap((event) => {\n event?.preventDefault();\n }),\n filter(() => {\n return [FormStatus.Valid, FormStatus.Invalid]\n .includes(this._status$.getValue());\n }),\n switchMap(() => this.submit$(this._submitEvent)),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private _listenFormStatus(): void {\n this._status$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((formStatus: FormStatus) => {\n const cls = [FormStatus.Submitting, FormStatus.Validating];\n const classList = this._element.nativeElement.classList;\n classList.remove(...cls);\n if (cls.indexOf(formStatus) !== -1) {\n classList.add(formStatus);\n }\n });\n\n }\n\n private _listenWindowClose(): void {\n fromEvent(window, 'beforeunload')\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((event: Event) => {\n if (this.confirm && this.confirmBrowser && this.ngForm.dirty) {\n event.returnValue = false;\n }\n });\n }\n\n private _activeDialog(el, dialog: HTMLElement): boolean {\n if (el.isSameNode(dialog)) {\n return true;\n } else if (el.parentElement) {\n return this._activeDialog(el.parentElement, dialog);\n }\n\n return false;\n }\n\n private _listenHotKeys(): void {\n this._ngZone.runOutsideAngular(() => {\n fromEvent(document, 'keydown')\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((event: KeyboardEvent) => {\n if (this._dialogBackdropEscape && event.code === 'Escape') {\n const cdkOverlayPane = Array\n .from(document.querySelectorAll<HTMLElement>('.cdk-overlay-pane')).pop();\n \n const activeDialog = this\n ._activeDialog(document.getElementById(this._dialogRef.id), cdkOverlayPane);\n\n if (activeDialog) {\n this._ngZone.run(() => {\n this._formClose();\n });\n }\n }\n\n if ((event.ctrlKey || event.metaKey) && event.code === 'KeyS') {\n event.preventDefault();\n\n if (this.shortcuts) {\n if (this._elementInForm(document.activeElement)) {\n this.ngForm.ngSubmit.next(null);\n }\n }\n }\n });\n });\n }\n\n private _formClose(): void {\n if (this.confirm && this.confirmDialog) {\n this.triggerConfirm()\n .pipe(\n filter((result) => confirmResultContinue(result)),\n switchMap((result) => {\n return result === ConfirmResult.NoChanges || result === ConfirmResult.Discard\n ? of(null)\n : this.submitted.asObservable();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((result: SubmittedEvent) => {\n this._dialogRef.close(result?.response);\n });\n } else {\n this._dialogRef.close(null);\n }\n }\n\n private _getActiveSubmitButton(): FsButtonDirective {\n if(this._getFormGroup().activeSubmitButton) {\n return this._getFormGroup().activeSubmitButton;\n }\n\n return this._getFormGroup()\n .buttons\n .filter((button) => button.submit)[0];\n }\n\n private _elementInForm(el: Element): boolean {\n if (el.isSameNode(this._element.nativeElement)) {\n return true;\n } else if (el.parentElement) {\n return this._elementInForm(el.parentElement);\n }\n\n return false;\n }\n\n private _completeSubmit(success, submitEvent: SubmittedEvent): void {\n if (success) {\n this.ngForm.control.markAsPristine();\n this.createSnapshot();\n this.submitted.emit(submitEvent);\n } else {\n this._resetButtons();\n }\n\n if (this._getFormGroup().activeSubmitButton) {\n if (success) {\n this._getFormGroup().activeSubmitButton.success();\n } else {\n this._getFormGroup().activeSubmitButton.error();\n }\n }\n\n this._status$.next(FormStatus.Submitted);\n\n if (success) {\n this._status$.next(FormStatus.Success);\n } else {\n this._status$.next(FormStatus.Error);\n }\n\n this._status$.next(FormStatus.Completing);\n\n const resetDelay = success ? this.successDelay : this.errorDelay;\n\n of(true)\n .pipe(\n delay(resetDelay),\n first(),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n if (this.ngForm.form.status === 'VALID') {\n this._status$.next(FormStatus.Valid);\n } else {\n this._status$.next(FormStatus.Invalid);\n }\n\n this._resetButtons();\n this._getFormGroup().activeSubmitButton = null;\n this._updateDirtySubmitButtons();\n });\n }\n\n private _getFormGroup(): FsFormBaseDirective {\n return this._formGroup || this;\n }\n\n private _resetButtons(): void {\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.reset();\n });\n }\n\n private _registerConfirm(): void {\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((changes) => {\n if(this._dialogBackdropEscape && this._dialogRef) {\n this._dialogRef.disableClose = true;\n }\n\n if (this.confirm) {\n const existing = Object.keys(this._snapshot);\n\n Object.keys(changes)\n .forEach((name: string) => {\n if (existing.indexOf(name) === -1) {\n this._snapshot[name] = changes[name];\n }\n });\n }\n });\n }\n\n private _registerDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((subscriber) => {\n if (this.submitting) {\n this._status$\n .pipe(\n filter((status) => status === FormStatus.Success || status === FormStatus.Error),\n takeUntil(this.destroy$),\n )\n .subscribe((status) => {\n if (status === FormStatus.Success) {\n subscriber.next(null);\n subscriber.complete();\n } else {\n subscriber.error();\n }\n });\n } else {\n subscriber.next(null);\n subscriber.complete();\n }\n });\n }\n }\n\n private _registerConfirmDrawerClose(): void {\n if (this._drawerRef) {\n this._drawerRef.closeStart$\n .pipe(\n switchMap((subscriber) => {\n return iif(\n () => this.confirm && this.confirmDrawer,\n this.triggerConfirm()\n .pipe(\n map((result) => confirmResultContinue(result)),\n tap((result) => {\n if (result) {\n subscriber.next(null);\n subscriber.complete();\n }\n }),\n ),\n defer(() => {\n subscriber.next(null);\n subscriber.complete();\n\n return of(null);\n }),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n }\n \n private _registerConfirmDialogBackdropEscape(): void {\n if(this._dialogRef) {\n this._dialogBackdropEscape = !this._dialogRef?.disableClose;\n\n if (this._dialogBackdropEscape) {\n this._dialogRef.backdropClick()\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._formClose();\n });\n\n this.destroy$\n .subscribe(() => {\n this._dialogRef.disableClose = false;\n });\n }\n }\n }\n\n private _registerAutocomplete(): void {\n this._registerControl = this.ngForm.form.registerControl.bind(this.ngForm.form);\n\n this.ngForm.form.registerControl = (name: string, control: AbstractControl) => {\n\n const el: Element = this._element.nativeElement.querySelector(`input[name='${name}']`);\n\n if (el) {\n if (!el.getAttribute('autocomplete')) {\n el.setAttribute('autocomplete', 'none');\n el.setAttribute('name', `${name}-${guid()}`);\n }\n }\n\n return this._registerControl(name, control);\n };\n }\n\n private _registerDirtySubmitButton(): void {\n if (!this.ngForm) {\n return;\n }\n\n this.ngForm.form.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n\n this._getFormGroup()\n .buttons.changes\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this._updateDirtySubmitButtons();\n });\n }\n\n private _updateDirtySubmitButtons(): void {\n this._getFormGroup()\n .buttons\n .filter((button) => button.submit)\n .forEach((submitButton: FsButtonDirective) => {\n if (\n !this.confirm || !this.dirtySubmitButton || this.ngForm.dirty || !submitButton.dirtySubmit\n ) {\n submitButton.enable();\n } else {\n submitButton.disable();\n }\n });\n }\n\n private _statusSubmitting(): void {\n this._status$.next(FormStatus.Submitting);\n }\n\n private _statusValidating(): void {\n this._status$.next(FormStatus.Validating);\n }\n\n private _setupActiveSubmitButton(): void {\n this._getFormGroup()\n .activeSubmitButton = this._getActiveSubmitButton();\n this._resetButtons();\n\n if (this._getFormGroup().activeSubmitButton) {\n this._getFormGroup().activeSubmitButton.process();\n }\n }\n\n private _disableButtons(): void {\n this._getFormGroup()\n .buttons.forEach((button) => {\n button.disable();\n });\n }\n\n private _waitUntilStatusPending(): Observable<string> {\n return this.ngForm.statusChanges\n .pipe(\n startWith(this.ngForm.status),\n first((state) => state !== 'PENDING'),\n );\n }\n\n private _handleError(e: SubmittedEvent) {\n console.log('%c Form Submit ', 'color: white; background-color: #D33F49', 'Error occured');\n console.group('Error Details:');\n console.log('Message: ', e);\n console.log('FormRef: ', this);\n\n if (this.ngForm.invalid) {\n const errors = getFormErrors(this.ngForm.control, null);\n console.log('Validation Errors: ', errors);\n }\n\n console.groupEnd();\n this._completeSubmit(false, null);\n }\n\n private _registerCanDeactivateGuard(): void {\n this._activatedRouteConfig = getActiveRoute(this._route).routeConfig;\n\n if (!this._activatedRouteConfig) {\n return;\n }\n\n this._form.registerFormDirective(this._activatedRouteConfig.component, this);\n\n if (!Array.isArray(this._activatedRouteConfig.canDeactivate)) {\n this._activatedRouteConfig.canDeactivate = [];\n }\n\n if (this._activatedRouteConfig.canDeactivate.indexOf(FormDeactivateGuard) === -1) {\n this._activatedRouteConfig.canDeactivate.push(FormDeactivateGuard);\n }\n }\n\n private _cleanupCanDeactivate(): void {\n if (!this._activatedRouteConfig) {\n return;\n }\n\n const guardIndex = this._activatedRouteConfig.canDeactivate.indexOf(FormDeactivateGuard);\n this._activatedRouteConfig.canDeactivate.splice(guardIndex, 1);\n\n this._form.removeFormDirective(this._activatedRouteConfig.component);\n }\n\n}\n","import {\n ChangeDetectorRef, Directive, ElementRef,\n HostBinding, inject, Input, OnDestroy, OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsFormDirective } from './form';\nimport { FsFormBaseDirective } from './form-base';\nimport { FsFormGroupDirective } from './form-group';\n\n\n@Directive({\n selector: '[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]',\n standalone: true,\n})\nexport class FsButtonDirective implements OnInit, OnDestroy {\n\n @Input()\n public name;\n\n @Input()\n public dirtySubmit = true;\n\n @HostBinding('style.transition')\n public transitionStyle = null;\n\n public submit = false;\n\n private _previousDisabled = false;\n private _destroy$ = new Subject();\n\n private _formGroup = inject(FsFormGroupDirective, { optional: true });\n private _form = inject(FsFormDirective, { optional: true });\n private _matButton = inject(MatButton, { optional: true, host: true });\n private _elementRef = inject(ElementRef);\n private _cdRef = inject(ChangeDetectorRef);\n private _formBase: FsFormBaseDirective;\n\n public ngOnInit() {\n this.submit = this._elementRef.nativeElement.getAttribute('type') === 'submit';\n this._formBase = this._form || this._formGroup;\n\n if (this._formBase) {\n this._formBase.addButton(this);\n\n if(this.submit) {\n fromEvent(this.element, 'click')\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((event: MouseEvent) => {\n event.preventDefault();\n this._formBase.activeSubmitButton = this;\n this._formBase.triggerSubmit();\n });\n\n this.transitionStyle = 'none';\n setTimeout(() => {\n this.transitionStyle = null;\n }, 500);\n }\n }\n }\n\n public disable() { \n if (this._matButton && !this._formBase.activeSubmitButton) {\n this._previousDisabled = this._matButton.disabled;\n this._matButton.disabled = true;\n this._matButton.disableRipple = true;\n this._cdRef.markForCheck(); \n }\n }\n\n public enable() {\n if (this._matButton) {\n this._matButton.disabled = false;\n this._matButton.disableRipple = true;\n this._cdRef.markForCheck();\n }\n }\n\n public process() {\n this.setClass('process');\n if (this._matButton) {\n this._matButton.disableRipple = true;\n }\n }\n\n public success() {\n this.setClass('success');\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n }\n\n public error() {\n this.setClass('error');\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n }\n\n public setClass(cls) {\n const svg = this._getSvg(cls);\n this._resetClass();\n this.element.classList.add(`fs-form-submit-button-${cls}`);\n this.element.append(svg);\n }\n\n public get element() {\n return this._elementRef.nativeElement;\n }\n\n public reset() {\n if(!this._previousDisabled) {\n this.enable();\n }\n\n this.element.querySelectorAll('.svg-icon')\n .forEach((el) => {\n el.remove();\n });\n\n if (this._matButton) {\n this._matButton.disableRipple = false;\n }\n this._resetClass();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n this._formBase?.removeButton(this);\n }\n\n private _resetClass() {\n this.element.classList\n .remove(\n 'fs-form-submit-button-success', \n 'fs-form-submit-button-error', \n 'fs-form-submit-button-process',\n );\n }\n\n private _getSvg(type) {\n if (type === 'success') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-success\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 38 38\" style=\"enable-background:new 0 0 38 38;\" xml:space=\"preserve\" width=\"38px\" height=\"38px\">\n <g>\n <g class=\"check\">\n <g>\n <path d=\"M29.6,11.9c-0.5-0.5-1.3-0.5-1.8,0L16.3,23.4l-6.1-6.1c-0.5-0.5-1.3-0.5-1.8,0s-0.5,1.3,0,1.8l7,7c0.3,0.3,0.6,0.4,0.9,0.4s0.7-0.1,0.9-0.4l12.4-12.4C30.1,13.2,30.1,12.4,29.6,11.9z\"/>\n </g>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'process') {\n return new DOMParser().parseFromString(`<svg class=\"svg-icon svg-icon-process\" width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\"><circle stroke-opacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\"/>\n <path d=\"M36 18c0-9.94-8.06-18-18-18\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\".7s\" repeatCount=\"indefinite\"/></path>\n </g>\n </g>\n </svg>`, 'text/xml').firstChild;\n }\n\n if (type === 'error') {\n return new DOMParser().parseFromString('<svg class=\"svg-icon svg-icon-error\" xmlns=\"http://www.w3.org/2000/svg\" width=\"38px\" height=\"38px\" viewBox=\"0 0 16 16\"><g><path d=\"M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z\" data-original=\"#444444\" data-old_color=\"#444444\"/><path d=\"M12.2 10.8l-2.8-2.8 2.8-2.8-1.4-1.4-2.8 2.8-2.8-2.8-1.4 1.4 2.8 2.8-2.8 2.8 1.4 1.4 2.8-2.8 2.8 2.8z\"/></g> </svg>', 'text/xml').firstChild;\n }\n }\n}\n","import { Directive, HostBinding, HostListener, Input, OnDestroy, inject } from '@angular/core';\n\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ConfirmResult } from '../enums/confirm-result';\n\nimport { FsFormDirective } from './form';\n\n\n@Directive({\n selector: '[fsFormDialogClose],[fs-form-dialog-close]',\n standalone: true,\n})\nexport class FsFormDialogCloseDirective implements OnDestroy {\n private _form = inject(FsFormDirective, { optional: true });\n private _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, { optional: true });\n\n\n @Input() public closeData;\n\n @HostBinding('attr.type') public type = 'button';\n\n private _destroy$ = new Subject();\n\n @HostListener('click', ['$event.target'])\n public closeClick(): void {\n if(this._form) {\n this._form.triggerConfirm()\n .pipe(\n filter((confirmResult: ConfirmResult) => (confirmResult !== ConfirmResult.Review)),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._dialogRef.close(this.closeData);\n });\n } else {\n this._dialogRef.close(this.closeData);\n }\n }\n \n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\n\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { delay, filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FsFormDirective } from '../../directives/form/form.directive';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { FsButtonDirective } from '../../directives/button.directive';\nimport { MatDialogClose } from '@angular/material/dialog';\nimport { FsFormDialogCloseDirective } from '../../directives/form-dialog-close.directive';\r\n\r\n\r\n@Component({\n selector: 'fs-form-dialog-actions',\n templateUrl: './form-dialog-actions.component.html',\n styleUrls: ['./form-dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatButton,\n FsButtonDirective,\n MatDialogClose,\n NgTemplateOutlet,\n FsFormDialogCloseDirective,\n ],\n})\r\nexport class FsFormDialogActionsComponent implements OnInit, OnDestroy {\n private _form = inject(FsFormDirective, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n\r\n\r\n @Input() public save = true;\r\n @Input() public create = false;\r\n @Input() public close = false;\r\n @Input() public done = false;\r\n @Input() public closeData = null;\r\n @Input() public name: string;\r\n\r\n public dirty = false;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n public ngOnInit(): void {\r\n if(this._form) {\r\n this._form.ngForm.valueChanges\r\n .pipe( \r\n filter(() => (!this.dirty)),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = this._form.ngForm.dirty;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.submitted\r\n .pipe(\r\n delay(50),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n\r\n this._form.reseted\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this.dirty = false;\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next(null);\r\n this._destroy$.complete();\r\n }\r\n}\r\n","<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': save || create }\">\n @if (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=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (done) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (save || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (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 }\n @if (!(save || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","export const ERROR_MESSAGES = {\n required: 'This field is required',\n email: 'This is not a valid email address',\n emails: 'Input valid email addresses, comma separated',\n phone: 'Invalid phone number',\n numeric: 'Value should be numeric',\n integer: 'Value should be an integer',\n min: 'Value should not be less than $(1)',\n max: 'Value should not be greater than $(1)',\n minlength: 'Should not be shorter than $(1) characters',\n maxlength: 'Should not be longer than $(1) characters',\n compare: 'Inputs do not match',\n pattern: 'Value should match pattern $(1)',\n dateRange: 'Invalid date range',\n url: 'This is not a valid url',\n urlProtocol: 'Invalid URL. Proper http protocol is required. eg. https://google.com',\n greater: 'Value must be greater than $(1)',\n lesser: 'Value must be less than $(1)',\n greaterEqual: 'Value must be greater than or equal $(1)',\n lesserEqual: 'Value must be less than or equal $(1)',\n};\n","import { InjectionToken } from '@angular/core';\nimport { ERROR_MESSAGES } from '../consts/error-messages.const';\n\nexport const VALIDATE_MESSAGES = new InjectionToken<Record<string, string>>(\n 'fs.form.validate-messages',\n);\n\nexport const VALIDATE_MESSAGE_PROVIDER = {\n provide: VALIDATE_MESSAGES,\n useFactory: messageProviderFactory,\n};\n\nexport function messageProviderFactory() {\n return { ...ERROR_MESSAGES };\n}\n\n","import { AfterContentInit, Directive, ElementRef, Injector, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\nimport { AbstractControl, NgControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { keys, values } from 'lodash-es';\n\nimport {\n VALIDATE_MESSAGES,\n VALIDATE_MESSAGE_PROVIDER,\n} from '../../providers/validate-messages.provider';\nimport { FsFormDirective } from '../form/form.directive';\n\n\nexport interface FsControlDirective {\n validate?(control: AbstractControl): ValidationErrors | null;\n validateAsync?(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;\n}\n\n\n@Directive({\n selector: '[fsFormControl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsControlDirective implements OnInit, AfterContentInit, OnDestroy {\n\n @Input() public wrapperSelector: string | false;\n @Input() public messageSelector: string | false;\n @Input() public hintSelector: string | false;\n @Input() public labelSelector: string | false;\n @Input() public appendMessageClass: string;\n @Input() public appendErrorClass: string;\n @Input() public appendHintClass: string;\n\n @Input()\n public set validateMessages(messages: Record<string, string>) {\n this._validateMessages = {\n ...this._validateMessages,\n ...messages,\n };\n }\n\n public errors = [];\n\n protected _control: AbstractControl;\n protected _elementRef = inject(ElementRef);\n protected _renderer2 = inject(Renderer2);\n protected _injector = inject(Injector);\n protected _validateMessages = inject(VALIDATE_MESSAGES, { self: true });\n protected _ngControl = inject(NgControl, { optional: true });\n protected _formDirective = inject<FsFormDirective>(FsFormDirective, { optional: true });\n\n private _destroy$ = new Subject();\n\n constructor() {\n const _ngControl = this._ngControl;\n\n\n if (_ngControl) {\n this._control = _ngControl.control;\n } else {\n console.error('The element does not have a valid ngModel', this._elementRef.nativeElement);\n }\n }\n\n public ngOnInit() {\n this._setupValidators();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public ngAfterContentInit() {\n this._subscribeToStatusChagnes();\n }\n\n public getMessageSelector(): string {\n if (this.messageSelector === false) {\n return '';\n }\n\n if (this.messageSelector) {\n return this.messageSelector;\n\n } else if (this._formDirective?.messageSelector) {\n return this._formDirective.messageSelector;\n }\n }\n\n public getHintWrapper(): HTMLElement | null {\n return this._elementRef.nativeElement.querySelector(this.getHintWrapperSelector());\n }\n\n public getHintWrapperSelector(): string | null {\n if (this.hintSelector === false) {\n return '';\n }\n\n if (this.hintSelector) {\n return this.hintSelector;\n\n } else if (this._formDirective?.hintSelector) {\n return this._formDirective.hintSelector;\n }\n }\n\n public getWrapperSelector(): string {\n if (this.wrapperSelector === false) {\n return '';\n }\n\n if (this.wrapperSelector) {\n return this.wrapperSelector;\n\n } else if (this._formDirective?.wrapperSelector) {\n return this._formDirective.wrapperSelector;\n }\n }\n\n public getlabelSelector(): string {\n\n if (this.labelSelector === false) {\n return '';\n }\n\n if (this.labelSelector) {\n return this.labelSelector;\n\n } else if (this._formDirective?.labelSelector) {\n return this._formDirective.labelSelector;\n }\n }\n\n public getWrapperElement() {\n const wrapper = this._getWrapper(this._elementRef.nativeElement);\n\n if (wrapper) {\n return wrapper;\n }\n\n return this._elementRef.nativeElement;\n }\n\n /*\n <mat-form-field class=\"mat-form-field\"> <-- Field Wrapper Class. Look for parents from the native element with the matching wrapperSelector. If not found defaults to native element.\n <input>\n <div class=\"fs-form-message\"> <-- Message Selector. Look for the element with class .fs-form-message or messageSelector\n <div class=\"fs-form-message\"></div>\n <div class=\"fs-form-hint\"></div> <-- Hint Selector. Look for the element with class .fs-form-hint or hintSelector\n </div>\n </mat-form-field>\n */\n\n private get _shouldErrorBeRendered() {\n return this._ngControl.invalid\n && (this._ngControl.dirty || this._formDirective?.ngForm?.submitted);\n }\n\n public render() {\n if (this._ngControl) {\n const renderer = this._renderer2;\n const wrapper = this.getWrapperElement();\n const error = this._ngControl.dirty ? this._getError(this._ngControl) : null;\n\n if (this._shouldErrorBeRendered && error) {\n wrapper.classList.add('ng-invalid', 'ng-dirty');\n } else {\n wrapper.classList.remove('ng-invalid');\n }\n\n if (!this.getMessageSelector()) {\n return;\n }\n\n const messageWrapper = wrapper.querySelector(this.getMessageSelector());\n \n if (!messageWrapper) {\n return console\n .warn(`Failed to locate ${ this.getMessageSelector()}`, this._elementRef.nativeElement);\n }\n\n renderer.addClass(messageWrapper, 'fs-form-message');\n\n if (this.appendMessageClass) {\n renderer.addClass(messageWrapper, this.appendMessageClass);\n }\n\n this._renderHint(error, messageWrapper);\n this._renderError(wrapper, messageWrapper, error);\n }\n }\n\n protected _renderHint(error, messageWrapper) {\n const hints = [\n ...messageWrapper.querySelectorAll('.mat-mdc-form-field-hint'),\n ];\n\n const hintWrapper: HTMLElement = this.getHintWrapper();\n if (hintWrapper) {\n hintWrapper.classList.add('fs-form-hint-wrapper');\n }\n\n hints.forEach((hint) => {\n this._renderer2.setStyle(hint, 'display', error ? 'none' : 'block');\n\n if (this.appendHintClass) {\n this._renderer2.addClass(hint, 'fs-form-hint');\n if(this.appendHintClass) {\n this._renderer2.addClass(hint, this.appendHintClass);\n }\n }\n });\n }\n\n protected _renderError(wrapper, messageWrapper, error) {\n let errorWrapper = wrapper.querySelector('.fs-form-error');\n if (errorWrapper) {\n errorWrapper.remove();\n }\n\n if (!this._shouldErrorBeRendered || !error) {\n return;\n }\n\n errorWrapper = this._renderer2.createElement('div');\n this._renderer2.addClass(errorWrapper, 'fs-form-error');\n this._renderer2.addClass(errorWrapper, `fs-form-error-${error.name}`);\n\n if(this.appendErrorClass) {\n this._renderer2.addClass(errorWrapper, this.appendErrorClass);\n this._renderer2.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);\n }\n \n const errorText = this._renderer2.createText(error.message);\n\n this._renderer2.appendChild(errorWrapper, errorText);\n\n const hintWrapper: HTMLElement = messageWrapper.querySelector(this.getHintWrapperSelector());\n if (hintWrapper) {\n hintWrapper.prepend(errorWrapper);\n }\n }\n\n protected _subscribeToStatusChagnes():void {\n if (this._control) {\n this._control.statusChanges\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(this.render.bind(this));\n }\n }\n\n protected _getWrapper(node, count = 0) {\n if (!node || count > 10) {\n return null;\n }\n\n if (node.parentNode && node.parentNode.querySelector(this.getWrapperSelector())) {\n return node;\n }\n\n return this._getWrapper(node.parentNode, ++count);\n }\n\n protected _parseErrorMessage(message, args): string {\n values(args)\n .forEach((name) => {\n message = message.replace(/\\$\\(\\d\\)/, name);\n });\n\n return message;\n }\n\n protected _getError(controlRef): { name: string, message: string } {\n\n const name = keys(controlRef.control.errors)[0];\n\n if (!name) {\n return null;\n }\n\n let message = controlRef.control.errors[name];\n\n if (this._validateMessages[name]) {\n message = this._parseErrorMessage(this._validateMessages[name], message);\n }\n\n return { name: name, message: message };\n }\n\n private _setupValidators(): void {\n const control = this._control;\n\n if (this.validate) {\n const validators = control.validator\n ? [control.validator, this.validate.bind(this)]\n : this.validate.bind(this);\n\n control.setValidators(validators);\n }\n\n if (this.validateAsync) {\n const asyncValidators = control.asyncValidator\n ? [control.asyncValidator, this.validateAsync.bind(this)]\n : this.validateAsync.bind(this);\n\n control.setAsyncValidators(asyncValidators);\n }\n\n control.updateValueAndValidity();\n }\n\n}\n","import { AfterViewInit, Directive, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormCompare]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormCompareDirective extends FsControlDirective\n implements OnChanges, AfterViewInit, OnDestroy, FsValidator {\n\n @Input()\n public fsFormCompare;\n\n @Input('fsFormCompareMessage')\n public set validationMessage(value: string) {\n this._validateMessages.compare = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.fsFormCompare.value === this._elementRef.nativeElement.value) {\n return null;\n }\n \n return { compare: true };\n \n }\n\n public ngAfterViewInit() {\n this.fsFormCompare.addEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n\n public ngOnDestroy() {\n this.fsFormCompare.removeEventListener('keyup', () => {\n this._control.updateValueAndValidity();\n }, false);\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';\n\nimport { Observable, from, isObservable, of, throwError } from 'rxjs';\nimport { catchError, mapTo, take } from 'rxjs/operators';\n\nimport { isValid } from 'date-fns';\nimport { isObject } from 'lodash-es';\n\n\nexport class FsValidators {\n\n public static email(control: AbstractControl): ValidationErrors | null {\n if (!control.value || email(control.value)) {\n return null;\n }\n\n return { email: true };\n }\n\n public static emails(control: AbstractControl): ValidationErrors | null {\n const model = control.value || '';\n\n const hasInvalidEmails = model\n .split(',')\n .some((part) => !email(part));\n\n return hasInvalidEmails ? { email: true } : null;\n }\n\n public static numeric(control: AbstractControl): ValidationErrors | null {\n if (isEmpty(control.value) || isNumeric(control.value)) {\n return null;\n }\n \n return { numeric: true };\n \n }\n\n public static integer(control: AbstractControl): ValidationErrors | null {\n if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {\n return null;\n }\n \n return { integer: true };\n \n }\n\n public static phone(control: AbstractControl): ValidationErrors | null {\n if (!control.value || phone(control.value)) {\n return null;\n }\n\n return { phone: true };\n }\n\n public static url(control: AbstractControl, protocolRequired = false): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (!url(control.value)) {\n return { url: true };\n }\n\n if (protocolRequired) {\n const pattern = new RegExp(/^http(s)?:\\/\\//gm);\n\n if (!String(control.value).match(pattern)) {\n return { urlProtocol: true };\n }\n }\n\n return null;\n }\n\n public static dateRange(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (isObject(control.value)) {\n\n const start = control.value.start;\n const end = control.value.end;\n\n if ((!start && !end) || (isValid(start) && isValid(end))) {\n return null;\n }\n }\n\n return { dateRange: true };\n }\n\n public static func(\n control: AbstractControl, \n formFunction: (control: AbstractControl, data: any) => Observable<unknown> | Promise<unknown> | void, data: any,\n ): Observable<unknown> {\n let result: unknown;\n let stream$: Observable<unknown>;\n\n try {\n result = formFunction(control, data);\n } catch (err) {\n const error = err instanceof Error ? err.message : err;\n\n stream$ = throwError(() => error);\n }\n\n if (!stream$) {\n if (result instanceof Promise) {\n stream$ = from(result);\n } else if (isObservable(result)) {\n stream$ = result;\n } else {\n stream$ = of(null);\n }\n }\n\n return stream$\n .pipe(\n mapTo(null),\n catchError((err) => {\n return of({ validationError: err });\n }),\n take(1),\n );\n }\n}\n","export function isEnabled(value: any): boolean {\n return value !== 'false' && (value || value === '');\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormDateRange]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormDateRangeDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormDateRange;\n\n @Input('fsFormDateRangeMessage')\n public set validationMessage(value: string) {\n this._validateMessages.dateRange = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormDateRange)) {\n return FsValidators.dateRange(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmail]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormEmailDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmail;\n\n @Input('fsFormEmailMessage')\n public set validationMessage(value: string) {\n this._validateMessages.email = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmail)) {\n return FsValidators.email(this._control);\n } else {\n return null;\n }\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormEmails]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormEmailsDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormEmails;\n\n @Input('fsFormEmailsMessage')\n public set validationMessage(value: string) {\n this._validateMessages.emails = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormEmails)) {\n return FsValidators.emails(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, of } from 'rxjs';\n\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormFunction]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormFunctionDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n\n @Input()\n public fsFormFunction;\n\n @Input()\n public fsFormFunctionData;\n\n @Input()\n public validateOnSubmit = false;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n if(this.validateOnSubmit && !this._formDirective.validating) {\n return of(null);\n }\n \n return FsValidators.func(this._control, this.fsFormFunction, this.fsFormFunctionData);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormGreaterEqual]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormGreaterEqualDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormGreaterEqual;\n\n @Input('fsFormGreaterEqualMessage')\n public set validationMessage(value: string) {\n this._validateMessages.greater = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const greater = parseFloat(this.fsFormGreaterEqual);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(greater) && !isNaN(value) && value < greater) {\n return { greaterEqual: { greater, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormGreater]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormGreaterDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormGreater;\n\n @Input('fsFormGreaterMessage')\n public set validationMessage(value: string) {\n this._validateMessages.greater = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const greater = parseFloat(this.fsFormGreater);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(greater) && !isNaN(value) && value <= greater) {\n return { greater: { greater, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormInteger]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormIntegerDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormInteger;\n\n @Input('fsFormIntegerMessage')\n public set validationMessage(value: string) {\n this._validateMessages.integer = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormInteger)) {\n return FsValidators.integer(this._control);\n }\n \n return null;\n \n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormLesserEqual]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormLesserEqualDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormLesserEqual;\n\n @Input('fsFormLesserEqualMessage')\n public set validationMessage(value: string) {\n this._validateMessages.lesser = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const lesser = parseFloat(this.fsFormLesserEqual);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(lesser) && !isNaN(value) && value > lesser) {\n return { lesserEqual: { lesser, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormLesser]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormLesserDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormLesser;\n\n @Input('fsFormLesserMessage')\n public set validationMessage(value: string) {\n this._validateMessages.lesser = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const lesser = parseFloat(this.fsFormLesser);\n const value = parseFloat(this._control.value);\n\n if (!isNaN(lesser) && !isNaN(value) && value >= lesser) {\n return { lesser: { lesser, actual: value } };\n }\n\n return FsValidators.numeric(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMax]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMaxDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMax: number;\n\n @Input('fsFormMaxMessage')\n public set validationMessage(value: string) {\n this._validateMessages.max = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.max(this.fsFormMax)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMaxLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMaxLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMaxLength: number;\n\n @Input('fsFormMaxLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.maxlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.maxLength(this.fsFormMaxLength)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMin]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMinDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMin;\n\n @Input('fsFormMinMessage')\n public set validationMessage(value: string) {\n this._validateMessages.min = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return FsValidators.numeric(this._control) || Validators.min(parseFloat(this.fsFormMin))(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormMinLength]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormMinLengthDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormMinLength: number;\n\n @Input('fsFormMinLengthMessage')\n public set validationMessage(value: string) {\n this._validateMessages.minlength = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.minLength(this.fsFormMinLength)(this._control);\n }\n}\n","import { Directive, OnChanges } from '@angular/core';\n\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\n\n/**\n * This directive required for cases when we have custom Control like <fs-phone-field> but without any of our validators applied\n *\n * This directive required for automatic validation messages\n */\n@Directive({\n selector: '[ngModel]' +\n ':not([required])' +\n ':not([fsFormRequired])' +\n ':not([fsFormCompare])' +\n ':not([fsFormDateRange])' +\n ':not([fsFormEmail])' +\n ':not([fsFormEmails])' +\n ':not([fsFormFunction])' +\n ':not([fsFormGreater])' +\n ':not([fsFormGreaterEqual])' +\n ':not([fsFormInteger])' +\n ':not([fsFormLesser])' +\n ':not([fsFormMax])' +\n ':not([fsFormMaxLength])' +\n ':not([fsFormMin])' +\n ':not([fsFormMinLength])' +\n ':not([fsFormNumeric])' +\n ':not([fsFormPattern])' +\n ':not([fsFormPhone])' +\n ':not([fsFormUrl])' +\n ':not([validate])',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormNoFsValidatorsDirective extends FsControlDirective implements OnChanges {\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n protected _subscribeToStatusChagnes(): void {\n if (!!this._control.validator || !!this._control.asyncValidator) {\n super._subscribeToStatusChagnes();\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormNumeric]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormNumericDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormNumeric;\n\n @Input('fsFormNumericMessage')\n public set validationMessage(value: string) {\n this._validateMessages.numeric = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormNumeric)) {\n return FsValidators.numeric(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { FsControlDirective } from './control.directive';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\n\n\n@Directive({\n selector: '[fsFormPattern]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormPatternDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPattern: RegExp | string;\n\n @Input('fsFormPatternMessage')\n public set validationMessage(value: string) {\n this._validateMessages.pattern = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n return Validators.pattern(this.fsFormPattern)(this._control);\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { FsControlDirective } from './control.directive';\nimport { FsValidators } from '../../validators/validators';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidator } from '../../interfaces/validator';\nimport { isEnabled } from '../../helpers/is-enabled';\n\n\n@Directive({\n selector: '[fsFormPhone]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER\n ],\n standalone: true,\n})\nexport class FsFormPhoneDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormPhone;\n\n @Input('fsFormPhoneMessage')\n public set validationMessage(value: string) {\n this._validateMessages.phone = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormPhone)) {\n return FsValidators.phone(this._control);\n } else {\n return null;\n }\n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormRequired],[ngModel][required]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormRequiredDirective extends FsControlDirective implements OnChanges, FsValidator {\n public required = false;\n\n @Input('fsFormRequired')\n public set setFsFormRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('required')\n public set setRequired(value) {\n this.required = isEnabled(value);\n }\n\n @Input('fsFormRequiredMessage')\n public set validationMessage(value: string) {\n this._validateMessages.required = value;\n }\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (this.required) {\n return Validators.required(this._control);\n }\n \n return null;\n \n }\n\n public render() {\n const wrapper = this.getWrapperElement();\n\n if (wrapper && this.getlabelSelector()) {\n const labelWrapper = wrapper.querySelector(this.getlabelSelector());\n\n // Adding class fs-form-label-requried adds the * to the label\n if (labelWrapper) {\n if (this.required) {\n this._renderer2.addClass(labelWrapper, 'fs-form-label-required');\n } else {\n this._renderer2.removeClass(labelWrapper, 'fs-form-label-required');\n }\n }\n }\n\n super.render();\n }\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { isEnabled } from '../../helpers/is-enabled';\nimport { FsValidator } from '../../interfaces/validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[fsFormUrl]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormUrlDirective extends FsControlDirective implements OnChanges, FsValidator {\n\n @Input()\n public fsFormUrl;\n\n @Input()\n public fsFormUrlProtocol = true;\n\n @Input('fsFormUrlMessage')\n public set validationMessage(value: string) {\n this._validateMessages.url = value;\n }\n\n public ngOnChanges() {\n this._control.updateValueAndValidity();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (isEnabled(this.fsFormUrl)) {\n return FsValidators.url(this._control, this.fsFormUrlProtocol);\n }\n \n return null;\n \n }\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { Observable, of } from 'rxjs';\n\nimport { FsAsyncValidator } from '../../interfaces/async-validator';\nimport { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';\nimport { FsValidators } from '../../validators/validators';\n\nimport { FsControlDirective } from './control.directive';\n\n\n@Directive({\n selector: '[validate]',\n providers: [\n VALIDATE_MESSAGE_PROVIDER,\n ],\n standalone: true,\n})\nexport class FsFormValidateDirective extends FsControlDirective implements OnChanges, FsAsyncValidator {\n\n @Input('validate')\n public validateFn: (control: AbstractControl, data: any) => Observable<unknown> | Promise<unknown> | void;\n\n @Input('validateData')\n public validateFnData;\n\n @Input()\n public validateOnSubmit = false;\n\n public ngOnChanges(): void {\n this._control.updateValueAndValidity();\n }\n\n public validateAsync(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n if(this.validateOnSubmit && !this._formDirective.validating) {\n return of(null);\n }\n\n return FsValidators.func(this._control, this.validateFn, this.validateFnData);\n }\n\n}\n","import { AfterContentInit, ContentChildren, Directive, inject } from '@angular/core';\nimport { NgForm, NgModel } from '@angular/forms';\n\n\n@Directive({\n selector: '[fsFormTemplate],fs-form-template',\n standalone: true,\n})\nexport class FsFormTemplateDirective implements AfterContentInit {\n\n @ContentChildren(NgModel)\n protected _projectedControls: NgModel[];\n\n protected _ngForm: NgForm = inject(NgForm);\n\n public ngAfterContentInit(): void {\n this._projectedControls.forEach((control: NgModel) => {\n this._ngForm.addControl(control);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { FsButtonDirective } from './button.directive';\n\n\n@Directive({\n selector: 'dummy-selector',\n standalone: true,\n})\nexport class FsSubmitButtonDirective extends FsButtonDirective {\n}\n","import {\n TemplateRef,\n Directive,\n Input,\n ViewContainerRef,\n Injector,\n inject,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[fsFormTemplateOutlet]',\n standalone: true,\n})\nexport class FsFormTemplateOutletDirective implements OnInit {\n\n @Input()\n public template: TemplateRef<any>;\n\n @Input()\n public context: Record<string, unknown> = {};\n\n protected _viewContainerRef: ViewContainerRef = inject(ViewContainerRef)\n protected _injector: Injector = inject(Injector);\n\n public ngOnInit() {\n this._viewContainerRef.createEmbeddedView(\n this.template,\n this.context,\n {\n injector: this._injector,\n },\n )\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormGroupDirective, FormsModule, NgForm, UntypedFormControl } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport {\n FsFormDialogActionsComponent,\n} from './components';\nimport {\n FsFormGreaterEqualDirective, FsFormLesserEqualDirective,\n FsFormTemplateDirective, FsSubmitButtonDirective,\n} from './directives';\nimport { FsButtonDirective } from './directives/button.directive';\nimport { FsFormDialogCloseDirective } from './directives/form-dialog-close.directive';\nimport { FsFormGroupDirective } from './directives/form-group/form-group.directive';\nimport { FsFormDirective } from './directives/form/form.directive';\nimport { FsFormCompareDirective } from './directives/validators/compare.directive';\nimport { FsControlDirective } from './directives/validators/control.directive';\nimport { FsFormDateRangeDirective } from './directives/validators/daterange.directive';\nimport { FsFormEmailDirective } from './directives/validators/email.directive';\nimport { FsFormEmailsDirective } from './directives/validators/emails.directive';\nimport { FsFormFunctionDirective } from './directives/validators/function.directive';\nimport { FsFormGreaterDirective } from './directives/validators/greater.directive';\nimport { FsFormIntegerDirective } from './directives/validators/integer.directive';\nimport { FsFormLesserDirective } from './directives/validators/lesser.directive';\nimport { FsFormMaxDirective } from './directives/validators/max.directive';\nimport { FsFormMaxLengthDirective } from './directives/validators/maxlength.directive';\nimport { FsFormMinDirective } from './directives/validators/min.directive';\nimport { FsFormMinLengthDirective } from './directives/validators/minlength.directive';\nimport { FsFormNoFsValidatorsDirective } from './directives/validators/no-fs-validators.directive';\nimport { FsFormNumericDirective } from './directives/validators/numeric.directive';\nimport { FsFormPatternDirective } from './directives/validators/pattern.directive';\nimport { FsFormPhoneDirective } from './directives/validators/phone.directive';\nimport { FsFormRequiredDirective } from './directives/validators/required.directive';\nimport { FsFormUrlDirective } from './directives/validators/url.directive';\nimport { FsFormValidateDirective } from './directives/validators/validate.directive';\nimport { FsFormTemplateOutletDirective } from './directives/form-template-outlet.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatDialogModule,\n FsDialogModule,\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormGreaterEqualDirective,\n FsFormLesserDirective,\n FsFormLesserEqualDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n FsFormNoFsValidatorsDirective,\n FsButtonDirective,\n FsSubmitButtonDirective,\n FsFormTemplateDirective,\n FsFormTemplateDirective,\n FsFormTemplateOutletDirective,\n FsFormGroupDirective,\n ],\n exports: [\n FsFormDirective,\n FsControlDirective,\n FsFormRequiredDirective,\n FsFormMinDirective,\n FsFormMaxDirective,\n FsFormMinLengthDirective,\n FsFormMaxLengthDirective,\n FsFormEmailDirective,\n FsFormEmailsDirective,\n FsFormPhoneDirective,\n FsFormCompareDirective,\n FsFormIntegerDirective,\n FsFormNumericDirective,\n FsFormPatternDirective,\n FsFormFunctionDirective,\n FsFormDateRangeDirective,\n FsFormGreaterDirective,\n FsFormGreaterEqualDirective,\n FsFormLesserDirective,\n FsFormLesserEqualDirective,\n FsFormUrlDirective,\n FsFormDialogCloseDirective,\n FsFormValidateDirective,\n FsFormDialogActionsComponent,\n FsFormNoFsValidatorsDirective,\n FsButtonDirective,\n FsSubmitButtonDirective,\n FsFormTemplateDirective,\n FsFormTemplateDirective,\n FsFormTemplateOutletDirective,\n FsFormGroupDirective,\n ],\n providers: [\n {\n provide: ErrorStateMatcher,\n useClass: ShowOnDirtyErrorStateMatcher,\n },\n ],\n})\nexport class FsFormModule {\n public static forRoot(): ModuleWithProviders<FsFormModule> {\n\n /**\n * Hack: https://github.com/angular/components/issues/20097\n */\n ErrorStateMatcher.prototype\n .isErrorState = (\n control: UntypedFormControl | null,\n form: FormGroupDirective | NgForm | null,\n ): boolean => {\n return control?.invalid && control?.touched && control?.dirty;\n };\n\n return {\n ngModule: FsFormModule,\n };\n }\n}\n","// Modules\nexport { FsFormModule } from './app/fs-form.module';\n\n// Services\nexport { FsForm } from './app/services/fsform.service';\n\n// Directives\nexport { FsFormGreaterDirective, FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormTemplateDirective } from './app/directives';\nexport { FsButtonDirective } from './app/directives/button.directive';\nexport { FsFormDialogCloseDirective } from './app/directives/form-dialog-close.directive';\nexport { FsFormGroupDirective } from './app/directives/form-group/form-group.directive';\nexport { FsFormDirective } from './app/directives/form/form.directive';\nexport { FsSubmitButtonDirective } from './app/directives/submit-button.directive';\nexport { FsFormCompareDirective } from './app/directives/validators/compare.directive';\nexport { FsControlDirective } from './app/directives/validators/control.directive';\nexport { FsFormDateRangeDirective } from './app/directives/validators/daterange.directive';\nexport { FsFormEmailDirective } from './app/directives/validators/email.directive';\nexport { FsFormEmailsDirective } from './app/directives/validators/emails.directive';\nexport { FsFormFunctionDirective } from './app/directives/validators/function.directive';\nexport { FsFormIntegerDirective } from './app/directives/validators/integer.directive';\nexport { FsFormLesserDirective } from './app/directives/validators/lesser.directive';\nexport { FsFormMaxDirective } from './app/directives/validators/max.directive';\nexport { FsFormMaxLengthDirective } from './app/directives/validators/maxlength.directive';\nexport { FsFormMinDirective } from './app/directives/validators/min.directive';\nexport { FsFormMinLengthDirective } from './app/directives/validators/minlength.directive';\nexport { FsFormNoFsValidatorsDirective } from './app/directives/validators/no-fs-validators.directive';\nexport { FsFormNumericDirective } from './app/directives/validators/numeric.directive';\nexport { FsFormPatternDirective } from './app/directives/validators/pattern.directive';\nexport { FsFormPhoneDirective } from './app/directives/validators/phone.directive';\nexport { FsFormRequiredDirective } from './app/directives/validators/required.directive';\nexport { FsFormUrlDirective } from './app/directives/validators/url.directive';\nexport { FsFormValidateDirective } from './app/directives/validators/validate.directive';\nexport { FsFormTemplateOutletDirective } from './app/directives/form-template-outlet.directive';\n\n// Components\nexport { FsFormDialogActionsComponent } from './app/components';\n\nexport { FsValidators } from './app/validators/validators';\n\nexport { FormDeactivateGuard } from './app/guards/form-deactivate.guard';\n\n// Interfaces\nexport { ConfirmConfig } from './app/interfaces/confirm-config';\nexport { SubmitEvent } from './app/interfaces/submit-event';\nexport { SubmittedEvent } from './app/interfaces/submitted-event';\n\n// Enums\nexport { ConfirmResult } from './app/enums/confirm-result';\nexport { FormStatus } from './app/enums/form-status';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/form",
3
- "version": "18.0.24",
3
+ "version": "18.0.25",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-form"