@muziehdesign/forms 0.0.1-alpha.111 → 0.0.1-alpha.122

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.
@@ -58,9 +58,15 @@ export class NgFormModelState {
58
58
  return await this.runValidations(this.options?.onValidate);
59
59
  }
60
60
  async runValidations(callback) {
61
+ this.removeCurrentErrors();
61
62
  const list = await this.modelValidator.validate(this.model);
62
63
  const final = callback?.(list) || list;
63
64
  this.errors.next(final);
64
65
  }
66
+ removeCurrentErrors() {
67
+ for (let key in Object.keys(this.form.controls)) {
68
+ this.form.controls[key]?.setErrors(null);
69
+ }
70
+ }
65
71
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRW5ELE1BQU0sQ0FBSSxJQUFZLEVBQUUsS0FBUSxFQUFFLE9BQTJCO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUFvQixJQUFZLEVBQVUsY0FBaUMsRUFBVSxLQUFRLEVBQUUsT0FBMkI7UUFBdEcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQUc7UUFKckYsV0FBTSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUMvRSxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUkxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2FBQ3hCLElBQUksQ0FDSCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDNUQsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUF3QixDQUFDLENBQUM7WUFFdkksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO2dCQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSTtvQkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDckQ7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDL0MsTUFBTSxDQUFDLENBQUM7aUJBQ1Q7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFvQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQTRDO1FBQ3ZFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWVsZEVycm9yIH0gZnJvbSAnLi9maWVsZC1lcnJvcic7XG5pbXBvcnQgeyBNb2RlbFNjaGVtYUZhY3RvcnkgfSBmcm9tICcuL21vZGVsLXNjaGVtYS5mYWN0b3J5JztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZhY3Rvcnk6IE1vZGVsU2NoZW1hRmFjdG9yeSkge31cblxuICBjcmVhdGU8VD4oZm9ybTogTmdGb3JtLCBtb2RlbDogVCwgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgbW9kZWxTdGF0ZSA9IG5ldyBOZ0Zvcm1Nb2RlbFN0YXRlPFQ+KGZvcm0sIHRoaXMuZmFjdG9yeS5idWlsZChtb2RlbCksIG1vZGVsLCBvcHRpb25zKTtcbiAgICByZXR1cm4gbW9kZWxTdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsU3RhdGVPcHRpb25zIHtcbiAgb25WYWxpZGF0ZTogKGVycm9yczogRmllbGRFcnJvcltdKSA9PiBGaWVsZEVycm9yW11cbn1cblxuZXhwb3J0IGNsYXNzIE5nRm9ybU1vZGVsU3RhdGU8VD4ge1xuICBwcml2YXRlIGVycm9yczogQmVoYXZpb3JTdWJqZWN0PEZpZWxkRXJyb3JbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpZWxkRXJyb3JbXT4oW10pO1xuICBwdWJsaWMgZXJyb3JzJCA9IHRoaXMuZXJyb3JzLmFzT2JzZXJ2YWJsZSgpO1xuICBwcml2YXRlIG9wdGlvbnM/OiBNb2RlbFN0YXRlT3B0aW9ucztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm06IE5nRm9ybSwgcHJpdmF0ZSBtb2RlbFZhbGlkYXRvcjogTW9kZWxWYWxpZGF0b3I8VD4sIHByaXZhdGUgbW9kZWw6IFQsIG9wdGlvbnM/OiBNb2RlbFN0YXRlT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgXG4gICAgdGhpcy5mb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHg7XG4gICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5ydW5WYWxpZGF0aW9ucyh0aGlzLm9wdGlvbnM/Lm9uVmFsaWRhdGUpKVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5lcnJvcnMkLnN1YnNjcmliZSgobGlzdCkgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBlZCA9IGxpc3QucmVkdWNlKChncm91cGVkLCB2KSA9PiBncm91cGVkLnNldCh2LnBhdGgsIFsuLi4oZ3JvdXBlZC5nZXQodi5wYXRoKSB8fCBbXSksIHZdKSwgbmV3IE1hcDxzdHJpbmcsIEZpZWxkRXJyb3JbXT4oKSk7XG5cbiAgICAgIGdyb3VwZWQuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGlvbkVycm9ycyA9IDxWYWxpZGF0aW9uRXJyb3JzPnt9O1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiAodmFsaWRhdGlvbkVycm9yc1t2LnR5cGVdID0gdi5tZXNzYWdlKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0RXJyb3JzKHZhbGlkYXRpb25FcnJvcnMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHNldHRpbmcgZm9ybSBjb250cm9sJywga2V5KTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLnZhbHVlLmxlbmd0aCA9PSAwO1xuICB9XG5cbiAgc2V0RXJyb3JzKGVycm9yczogRmllbGRFcnJvcltdKSB7XG4gICAgdGhpcy5lcnJvcnMubmV4dChlcnJvcnMpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnVuVmFsaWRhdGlvbnModGhpcy5vcHRpb25zPy5vblZhbGlkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuVmFsaWRhdGlvbnMoY2FsbGJhY2s/OiAobGlzdDpGaWVsZEVycm9yW10pPT5GaWVsZEVycm9yW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy5tb2RlbFZhbGlkYXRvci52YWxpZGF0ZSh0aGlzLm1vZGVsKTtcbiAgICBjb25zdCBmaW5hbCA9IGNhbGxiYWNrPy4obGlzdCkgfHwgbGlzdDtcbiAgICB0aGlzLmVycm9ycy5uZXh0KGZpbmFsKTtcbiAgfVxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRW5ELE1BQU0sQ0FBSSxJQUFZLEVBQUUsS0FBUSxFQUFFLE9BQTJCO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUFvQixJQUFZLEVBQVUsY0FBaUMsRUFBVSxLQUFRLEVBQUUsT0FBMkI7UUFBdEcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQUc7UUFKckYsV0FBTSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUMvRSxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVB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IEluamVjdGFibGUsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBmcm9tLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpZWxkRXJyb3IgfSBmcm9tICcuL2ZpZWxkLWVycm9yJztcbmltcG9ydCB7IE1vZGVsU2NoZW1hRmFjdG9yeSB9IGZyb20gJy4vbW9kZWwtc2NoZW1hLmZhY3RvcnknO1xuaW1wb3J0IHsgTW9kZWxWYWxpZGF0b3IgfSBmcm9tICcuL21vZGVsLXZhbGlkYXRvcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Zvcm1Nb2RlbFN0YXRlRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjdG9yeTogTW9kZWxTY2hlbWFGYWN0b3J5KSB7fVxuXG4gIGNyZWF0ZTxUPihmb3JtOiBOZ0Zvcm0sIG1vZGVsOiBULCBvcHRpb25zPzogTW9kZWxTdGF0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBtb2RlbFN0YXRlID0gbmV3IE5nRm9ybU1vZGVsU3RhdGU8VD4oZm9ybSwgdGhpcy5mYWN0b3J5LmJ1aWxkKG1vZGVsKSwgbW9kZWwsIG9wdGlvbnMpO1xuICAgIHJldHVybiBtb2RlbFN0YXRlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxTdGF0ZU9wdGlvbnMge1xuICBvblZhbGlkYXRlOiAoZXJyb3JzOiBGaWVsZEVycm9yW10pID0+IEZpZWxkRXJyb3JbXVxufVxuXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZTxUPiB7XG4gIHByaXZhdGUgZXJyb3JzOiBCZWhhdmlvclN1YmplY3Q8RmllbGRFcnJvcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmllbGRFcnJvcltdPihbXSk7XG4gIHB1YmxpYyBlcnJvcnMkID0gdGhpcy5lcnJvcnMuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybTogTmdGb3JtLCBwcml2YXRlIG1vZGVsVmFsaWRhdG9yOiBNb2RlbFZhbGlkYXRvcjxUPiwgcHJpdmF0ZSBtb2RlbDogVCwgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICBcbiAgICB0aGlzLmZvcm0uZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICB0aGlzLm1vZGVsID0geDtcbiAgICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnJ1blZhbGlkYXRpb25zKHRoaXMub3B0aW9ucz8ub25WYWxpZGF0ZSkpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmVycm9ycyQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XG4gICAgICBjb25zdCBncm91cGVkID0gbGlzdC5yZWR1Y2UoKGdyb3VwZWQsIHYpID0+IGdyb3VwZWQuc2V0KHYucGF0aCwgWy4uLihncm91cGVkLmdldCh2LnBhdGgpIHx8IFtdKSwgdl0pLCBuZXcgTWFwPHN0cmluZywgRmllbGRFcnJvcltdPigpKTtcblxuICAgICAgZ3JvdXBlZC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uRXJyb3JzID0gPFZhbGlkYXRpb25FcnJvcnM+e307XG4gICAgICAgIHZhbHVlLmZvckVhY2goKHYpID0+ICh2YWxpZGF0aW9uRXJyb3JzW3YudHlwZV0gPSB2Lm1lc3NhZ2UpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRFcnJvcnModmFsaWRhdGlvbkVycm9ycyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igc2V0dGluZyBmb3JtIGNvbnRyb2wnLCBrZXkpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMudmFsdWUubGVuZ3RoID09IDA7XG4gIH1cblxuICBzZXRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICB0aGlzLmVycm9ycy5uZXh0KGVycm9ycyk7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5WYWxpZGF0aW9ucyh0aGlzLm9wdGlvbnM/Lm9uVmFsaWRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5WYWxpZGF0aW9ucyhjYWxsYmFjaz86IChsaXN0OkZpZWxkRXJyb3JbXSk9PkZpZWxkRXJyb3JbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmVtb3ZlQ3VycmVudEVycm9ycygpO1xuICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLm1vZGVsVmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMubW9kZWwpO1xuICAgIGNvbnN0IGZpbmFsID0gY2FsbGJhY2s/LihsaXN0KSB8fCBsaXN0O1xuICAgIHRoaXMuZXJyb3JzLm5leHQoZmluYWwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDdXJyZW50RXJyb3JzKCkge1xuICAgIGZvciAobGV0IGtleSBpbiBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XT8uc2V0RXJyb3JzKG51bGwpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -345,11 +345,18 @@ class NgFormModelState {
345
345
  }
346
346
  runValidations(callback) {
347
347
  return __awaiter(this, void 0, void 0, function* () {
348
+ this.removeCurrentErrors();
348
349
  const list = yield this.modelValidator.validate(this.model);
349
350
  const final = (callback === null || callback === void 0 ? void 0 : callback(list)) || list;
350
351
  this.errors.next(final);
351
352
  });
352
353
  }
354
+ removeCurrentErrors() {
355
+ var _a;
356
+ for (let key in Object.keys(this.form.controls)) {
357
+ (_a = this.form.controls[key]) === null || _a === void 0 ? void 0 : _a.setErrors(null);
358
+ }
359
+ }
353
360
  }
354
361
 
355
362
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
1
+ {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n for (let key in Object.keys(this.form.controls)) {\n this.form.controls[key]?.setErrors(null);\n }\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
@@ -338,10 +338,16 @@ class NgFormModelState {
338
338
  return await this.runValidations(this.options?.onValidate);
339
339
  }
340
340
  async runValidations(callback) {
341
+ this.removeCurrentErrors();
341
342
  const list = await this.modelValidator.validate(this.model);
342
343
  const final = callback?.(list) || list;
343
344
  this.errors.next(final);
344
345
  }
346
+ removeCurrentErrors() {
347
+ for (let key in Object.keys(this.form.controls)) {
348
+ this.form.controls[key]?.setErrors(null);
349
+ }
350
+ }
345
351
  }
346
352
 
347
353
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
1
+ {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n for (let key in Object.keys(this.form.controls)) {\n this.form.controls[key]?.setErrors(null);\n }\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
@@ -25,4 +25,5 @@ export declare class NgFormModelState<T> {
25
25
  setErrors(errors: FieldError[]): void;
26
26
  validate(): Promise<void>;
27
27
  private runValidations;
28
+ private removeCurrentErrors;
28
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muziehdesign/forms",
3
- "version": "0.0.1-alpha.111",
3
+ "version": "0.0.1-alpha.122",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"