anguland 0.0.4 → 0.0.8
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.
- package/esm2022/lib/dark-mode-toggle.component.mjs +8 -8
- package/esm2022/lib/formError.component.mjs +31 -21
- package/esm2022/lib/validation.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/anguland.mjs +38 -28
- package/fesm2022/anguland.mjs.map +1 -1
- package/lib/formError.component.d.ts +4 -8
- package/lib/validation.d.ts +8 -38
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Component, input, output } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
3
|
export class DarkModeToggleComponent {
|
|
6
4
|
constructor() {
|
|
7
5
|
this.isDarkMode = input.required();
|
|
6
|
+
//Would also work
|
|
7
|
+
// isDarkMode = model<boolean>();
|
|
8
8
|
this.darkModeToggled = output();
|
|
9
9
|
}
|
|
10
10
|
toggleDarkMode(e) {
|
|
@@ -13,7 +13,7 @@ export class DarkModeToggleComponent {
|
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DarkModeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
14
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: DarkModeToggleComponent, isStandalone: true, selector: "lib-dark-mode-toggle", inputs: { isDarkMode: { classPropertyName: "isDarkMode", publicName: "isDarkMode", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { darkModeToggled: "darkModeToggled" }, ngImport: i0, template: `
|
|
15
15
|
<div class="darkModeToggleButton">
|
|
16
|
-
<input type="checkbox" id="switch" [
|
|
16
|
+
<input type="checkbox" id="switch" [checked]="isDarkMode()" (change)="toggleDarkMode($event)" />
|
|
17
17
|
<div class="switch-btn">
|
|
18
18
|
<label>
|
|
19
19
|
<div class="icons">
|
|
@@ -24,13 +24,13 @@ export class DarkModeToggleComponent {
|
|
|
24
24
|
</div>
|
|
25
25
|
</div>
|
|
26
26
|
|
|
27
|
-
`, isInline: true, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height:
|
|
27
|
+
`, isInline: true, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height: 30px;--label-width: 30px;--switch-radius: 20px}.darkModeToggleButton *{transition:all .75s ease}input[type=checkbox]{outline:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:var(--switch-width);height:100%;opacity:0;z-index:2;cursor:pointer}.switch-btn{width:var(--switch-width);height:var(--switch-height) + 5px;background-color:#eceef1;border:3px solid #d1d6db;border-radius:var(--switch-radius);position:relative;z-index:1;padding:3px}label{width:var(--label-width);height:var(--switch-height);display:flex;align-items:center;justify-content:center;background:#f8f8f9;border-radius:var(--switch-radius);overflow:hidden;cursor:pointer}.icons{display:flex;align-items:center;gap:20px;transform:translate(-11px,19px) rotate(110deg);-webkit-user-select:none;user-select:none;color:#17193f}input[type=checkbox]:checked~.switch-btn{border:3px solid #2e3052;background-color:#17193f}input[type=checkbox]:checked~.switch-btn label{transform:translate(calc(var(--switch-width) - var(--label-width)));box-shadow:0 3px 5px #0003}input[type=checkbox]:checked~.switch-btn label .icons{transform:translate(-20px)}\n"] }); }
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DarkModeToggleComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'lib-dark-mode-toggle', standalone: true, imports: [
|
|
31
|
+
args: [{ selector: 'lib-dark-mode-toggle', standalone: true, imports: [], template: `
|
|
32
32
|
<div class="darkModeToggleButton">
|
|
33
|
-
<input type="checkbox" id="switch" [
|
|
33
|
+
<input type="checkbox" id="switch" [checked]="isDarkMode()" (change)="toggleDarkMode($event)" />
|
|
34
34
|
<div class="switch-btn">
|
|
35
35
|
<label>
|
|
36
36
|
<div class="icons">
|
|
@@ -41,6 +41,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
|
-
`, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height:
|
|
44
|
+
`, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height: 30px;--label-width: 30px;--switch-radius: 20px}.darkModeToggleButton *{transition:all .75s ease}input[type=checkbox]{outline:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:var(--switch-width);height:100%;opacity:0;z-index:2;cursor:pointer}.switch-btn{width:var(--switch-width);height:var(--switch-height) + 5px;background-color:#eceef1;border:3px solid #d1d6db;border-radius:var(--switch-radius);position:relative;z-index:1;padding:3px}label{width:var(--label-width);height:var(--switch-height);display:flex;align-items:center;justify-content:center;background:#f8f8f9;border-radius:var(--switch-radius);overflow:hidden;cursor:pointer}.icons{display:flex;align-items:center;gap:20px;transform:translate(-11px,19px) rotate(110deg);-webkit-user-select:none;user-select:none;color:#17193f}input[type=checkbox]:checked~.switch-btn{border:3px solid #2e3052;background-color:#17193f}input[type=checkbox]:checked~.switch-btn label{transform:translate(calc(var(--switch-width) - var(--label-width)));box-shadow:0 3px 5px #0003}input[type=checkbox]:checked~.switch-btn label .icons{transform:translate(-20px)}\n"] }]
|
|
45
45
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFyay1tb2RlLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFuZC9zcmMvbGliL2RhcmstbW9kZS10b2dnbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE2RnpELE1BQU0sT0FBTyx1QkFBdUI7SUEzRnBDO1FBNkZFLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDdkMsaUJBQWlCO1FBQ2pCLGlDQUFpQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBS3JDO0lBSEMsY0FBYyxDQUFDLENBQU07UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQVRVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLG1SQXZGeEI7Ozs7Ozs7Ozs7Ozs7R0FhVDs7MkZBMEVVLHVCQUF1QjtrQkEzRm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxFQUFFLFlBQ0Q7Ozs7Ozs7Ozs7Ozs7R0FhVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFyay1tb2RlLXRvZ2dsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYXJrTW9kZVRvZ2dsZUJ1dHRvblwiPlxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInN3aXRjaFwiIFtjaGVja2VkXT1cImlzRGFya01vZGUoKVwiIChjaGFuZ2UpPVwidG9nZ2xlRGFya01vZGUoJGV2ZW50KVwiIC8+XG4gICAgPGRpdiBjbGFzcz1cInN3aXRjaC1idG5cIj5cbiAgICAgIDxsYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgPHNwYW4+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmxpZ2h0X21vZGU8L2k+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5kYXJrX21vZGU8L2k+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAgIC5kYXJrTW9kZVRvZ2dsZUJ1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICoge1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNzVzIGVhc2U7XG4gICAgfVxuICAgIC0tc3dpdGNoLXdpZHRoOiA2MHB4O1xuICAgIC0tc3dpdGNoLWhlaWdodDogMzBweDtcbiAgICAtLWxhYmVsLXdpZHRoOiAzMHB4O1xuICAgIC0tc3dpdGNoLXJhZGl1czogMjBweDtcbiAgfVxuXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgXG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9wYWNpdHk6IDA7IFxuICAgIHotaW5kZXg6IDI7IFxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5zd2l0Y2gtYnRuIHtcbiAgICB3aWR0aDogdmFyKC0tc3dpdGNoLXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLXN3aXRjaC1oZWlnaHQpICsgNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2VlZjE7XG4gICAgYm9yZGVyOiAzcHggc29saWQgI2QxZDZkYjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2l0Y2gtcmFkaXVzKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBwYWRkaW5nOiAzcHg7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgd2lkdGg6IHZhcigtLWxhYmVsLXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLXN3aXRjaC1oZWlnaHQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOGY5O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3aXRjaC1yYWRpdXMpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmljb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAyMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMXB4LCAxOXB4KSByb3RhdGUoMTEwZGVnKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBjb2xvcjogIzE3MTkzZjtcbiAgfVxuXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkIH4gLnN3aXRjaC1idG4ge1xuICAgIGJvcmRlcjogM3B4IHNvbGlkICMyZTMwNTI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MTkzZjtcbiAgfVxuXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkIH4gLnN3aXRjaC1idG4gbGFiZWwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKHZhcigtLXN3aXRjaC13aWR0aCkgLSB2YXIoLS1sYWJlbC13aWR0aCkpKTtcbiAgICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICB9XG5cbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgfiAuc3dpdGNoLWJ0biBsYWJlbCAuaWNvbnMge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7XG4gIH1cblxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXJrTW9kZVRvZ2dsZUNvbXBvbmVudCB7XG5cbiAgaXNEYXJrTW9kZSA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gIC8vV291bGQgYWxzbyB3b3JrXG4gIC8vIGlzRGFya01vZGUgPSBtb2RlbDxib29sZWFuPigpO1xuICBkYXJrTW9kZVRvZ2dsZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICB0b2dnbGVEYXJrTW9kZShlOiBhbnkpIHtcbiAgICB0aGlzLmRhcmtNb2RlVG9nZ2xlZC5lbWl0KGUudGFyZ2V0LmNoZWNrZWQpO1xuICB9XG59XG4iXX0=
|
|
@@ -8,31 +8,41 @@ export class FormErrorComponent {
|
|
|
8
8
|
this.controlName = input.required();
|
|
9
9
|
this.validationKey = input.required();
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
</ng-container>
|
|
11
|
+
get validationsForKey() {
|
|
12
|
+
return this.VALIDATION_MESSAGES[this.validationKey()];
|
|
13
|
+
}
|
|
14
|
+
get control() {
|
|
15
|
+
return this.formGroup().get(this.controlName());
|
|
16
|
+
}
|
|
17
|
+
hasError(errorType) {
|
|
18
|
+
const hasError = this.control?.hasError(errorType) && this.control?.touched && !this.control?.pristine || false;
|
|
19
|
+
return hasError;
|
|
21
20
|
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: FormErrorComponent, isStandalone: true, selector: "lib-form-error", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: true, transformFunction: null }, validationKey: { classPropertyName: "validationKey", publicName: "validationKey", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
23
|
+
@for (validation of validationsForKey; track $index) {
|
|
24
|
+
<ng-container>
|
|
25
|
+
@if(hasError(validation.type)) {
|
|
26
|
+
<small class="smallError">
|
|
27
|
+
{{ validation.message }}
|
|
28
|
+
</small>
|
|
29
|
+
}
|
|
30
|
+
</ng-container>
|
|
31
|
+
}
|
|
22
32
|
`, isInline: true, styles: [".smallError{color:#f44336;font-size:.7rem}\n"] }); }
|
|
23
33
|
}
|
|
24
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormErrorComponent, decorators: [{
|
|
25
35
|
type: Component,
|
|
26
|
-
args: [{ selector: 'lib-form-error', standalone: true, template: `
|
|
27
|
-
@for (validation of
|
|
28
|
-
<ng-container>
|
|
29
|
-
@if(
|
|
30
|
-
<small class="smallError">
|
|
31
|
-
{{ validation.message }}
|
|
32
|
-
</small>
|
|
33
|
-
}
|
|
34
|
-
</ng-container>
|
|
35
|
-
}
|
|
36
|
+
args: [{ selector: 'lib-form-error', standalone: true, template: `
|
|
37
|
+
@for (validation of validationsForKey; track $index) {
|
|
38
|
+
<ng-container>
|
|
39
|
+
@if(hasError(validation.type)) {
|
|
40
|
+
<small class="smallError">
|
|
41
|
+
{{ validation.message }}
|
|
42
|
+
</small>
|
|
43
|
+
}
|
|
44
|
+
</ng-container>
|
|
45
|
+
}
|
|
36
46
|
`, styles: [".smallError{color:#f44336;font-size:.7rem}\n"] }]
|
|
37
47
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYW5kL3NyYy9saWIvZm9ybUVycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXlDLE1BQU0sY0FBYyxDQUFDOztBQXVCMUYsTUFBTSxPQUFPLGtCQUFrQjtJQXJCL0I7UUFzQkUsd0JBQW1CLEdBQXVCLG1CQUFtQixDQUFDO1FBQzlELGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0tBZ0IxQztJQVpDLElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFpQjtRQUN4QixNQUFNLFFBQVEsR0FBWSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN6SCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQW5CVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixpZkFsQm5COzs7Ozs7Ozs7O0dBVVQ7OzJGQVFVLGtCQUFrQjtrQkFyQjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxZQUNOOzs7Ozs7Ozs7O0dBVVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVkFMSURBVElPTl9NRVNTQUdFUywgVmFsaWRhdGlvbk1lc3NhZ2UsIFZhbGlkYXRpb25NZXNzYWdlcyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWVycm9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICBAZm9yICh2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zRm9yS2V5OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICBAaWYoaGFzRXJyb3IodmFsaWRhdGlvbi50eXBlKSkge1xyXG4gICAgICAgIDxzbWFsbCBjbGFzcz1cInNtYWxsRXJyb3JcIj5cclxuICAgICAgICAgIHt7IHZhbGlkYXRpb24ubWVzc2FnZSB9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICBgLFxyXG4gIHN0eWxlczogYFxyXG4gICAgLnNtYWxsRXJyb3J7XHJcbiAgICAgIGNvbG9yOiAjZjQ0MzM2O1xyXG4gICAgICBmb250LXNpemU6IDAuN3JlbTtcclxuICAgIH1cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JDb21wb25lbnQge1xyXG4gIFZBTElEQVRJT05fTUVTU0FHRVM6IFZhbGlkYXRpb25NZXNzYWdlcyA9IFZBTElEQVRJT05fTUVTU0FHRVM7XHJcbiAgZm9ybUdyb3VwID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUdyb3VwPih7fSk7XHJcbiAgY29udHJvbE5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgdmFsaWRhdGlvbktleSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuXHJcblxyXG5cclxuICBnZXQgdmFsaWRhdGlvbnNGb3JLZXkoKTogVmFsaWRhdGlvbk1lc3NhZ2VbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5WQUxJREFUSU9OX01FU1NBR0VTW3RoaXMudmFsaWRhdGlvbktleSgpXTtcclxuICB9XHJcblxyXG4gIGdldCBjb250cm9sKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwKCkuZ2V0KHRoaXMuY29udHJvbE5hbWUoKSk7XHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcihlcnJvclR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaGFzRXJyb3I6IGJvb2xlYW4gPSB0aGlzLmNvbnRyb2w/Lmhhc0Vycm9yKGVycm9yVHlwZSkgJiYgdGhpcy5jb250cm9sPy50b3VjaGVkICYmICF0aGlzLmNvbnRyb2w/LnByaXN0aW5lIHx8IGZhbHNlO1xyXG4gICAgcmV0dXJuIGhhc0Vycm9yO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -85,4 +85,4 @@ export function matchValidator(matchTo, reverse) {
|
|
|
85
85
|
: { matching: true };
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYW5kL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBdUI7SUFDckQsUUFBUSxFQUFFO1FBQ1IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRTtRQUMxRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFO1FBQ2xEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFLGdDQUFnQyxtQkFBbUIsb0JBQW9CO1NBQ2pGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUUsK0JBQStCLG1CQUFtQixvQkFBb0I7U0FDaEY7UUFDRDtZQUNFLElBQUksRUFBRSxTQUFTO1lBQ2YsT0FBTyxFQUFFLHFFQUFxRTtTQUMvRTtLQUNGO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtRQUNwRCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1FBQzlDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUU7UUFDL0QsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRTtRQUNsRCxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsbUNBQW1DLEVBQUU7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QztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25NZXNzYWdlIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25NZXNzYWdlcyB7XHJcbiAgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbk1lc3NhZ2VbXTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBBU1NXT1JEX01JTl9MRU5HVEggPSA2O1xyXG5leHBvcnQgY29uc3QgVVNFUk5BTUVfTUlOX0xFTkdUSCA9IDI7XHJcbmV4cG9ydCBjb25zdCBVU0VSTkFNRV9NQVhfTEVOR1RIID0gMzA7XHJcblxyXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9NRVNTQUdFUzogVmFsaWRhdGlvbk1lc3NhZ2VzID0ge1xyXG4gIHVzZXJuYW1lOiBbXHJcbiAgICB7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdCZW51dHplcm5hbWUgZXJmb3JkZXJsaWNoJyB9LFxyXG4gICAgeyB0eXBlOiAndW5rbm93bicsIG1lc3NhZ2U6ICdVbmJla2FubnRlciBGZWhsZXInIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtaW5sZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiBgQmVudXR6ZXJuYW1lIG11c3MgbWluZGVzdGVucyAke1VTRVJOQU1FX01JTl9MRU5HVEh9IFplaWNoZW4gbGFuZyBzZWluYCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtYXhsZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiBgQmVudXR6ZXJuYW1lIGRhcmYgaMO2Y2hzdGVucyAke1VTRVJOQU1FX01BWF9MRU5HVEh9IFplaWNoZW4gbGFuZyBzZWluYCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgbWVzc2FnZTogJ0JlbnV0emVybmFtZSBkYXJmIG51ciBCdWNoc3RhYmVuLCBaYWhsZW4gdW5kIFVudGVyc3RyaWNoZSBlbnRoYWx0ZW4nLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVtYWlsOiBbXHJcbiAgICB7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdFLU1haWwgZXJmb3JkZXJsaWNoJyB9LFxyXG4gICAgeyB0eXBlOiAnZW1haWwnLCBtZXNzYWdlOiAnVW5nw7xsdGlnZSBFLU1haWwnIH0sXHJcbiAgICB7IHR5cGU6ICdhbHJlYWR5SW5Vc2UnLCBtZXNzYWdlOiAnRS1NYWlsIGJlcmVpdHMgaW4gR2VicmF1Y2gnIH0sXHJcbiAgICB7IHR5cGU6ICd1bmtub3duJywgbWVzc2FnZTogJ1VuYmVrYW5udGVyIEZlaGxlcicgfSxcclxuICAgIHsgdHlwZTogJ3VuYXV0aGVudGljYXRlZCcsIG1lc3NhZ2U6ICdCZW51dHplcm5hbWUgb2RlciBQYXNzd29ydCBmYWxzY2gnIH0sXHJcbiAgXSxcclxuICBjb25maXJtUGFzc3dvcmQ6IFtcclxuICAgIHsgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ1Bhc3N3b3J0IGVyZm9yZGVybGljaCcgfSxcclxuICAgIHsgdHlwZTogJ21hdGNoaW5nJywgbWVzc2FnZTogJ1Bhc3N3b3J0IHN0aW1tdCBuaWNodCDDvGJlcmVpbicgfSxcclxuICBdLFxyXG4gIHBhc3N3b3JkOiBbXHJcbiAgICB7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdQYXNzd29ydCBlcmZvcmRlcmxpY2gnIH0sXHJcbiAgICB7IHR5cGU6ICdtaW5sZW5ndGgnLCBtZXNzYWdlOiBgTWluZGVzdGzDpG5nZSAke1BBU1NXT1JEX01JTl9MRU5HVEh9IFplaWNoZW5gIH0sXHJcbiAgICB7IHR5cGU6ICd1bmF1dGhlbnRpY2F0ZWQnLCBtZXNzYWdlOiAnQmVudXR6ZXJuYW1lIG9kZXIgUGFzc3dvcnQgZmFsc2NoJyB9LFxyXG4gIF0sXHJcbiAgbmFtZTogW1xyXG4gICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnTmFtZSBlcmZvcmRlcmxpY2gnIH0sXHJcbiAgICB7IHR5cGU6ICd1bmtub3duJywgbWVzc2FnZTogJ1VuYmVrYW5udGVyIEZlaGxlcicgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogJ21pbmxlbmd0aCcsXHJcbiAgICAgIG1lc3NhZ2U6IGBOYW1lIG11c3MgbWluZGVzdGVucyAke1VTRVJOQU1FX01JTl9MRU5HVEh9IFplaWNoZW4gbGFuZyBzZWluYCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtYXhsZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiBgTmFtZSBkYXJmIGjDtmNoc3RlbnMgJHtVU0VSTkFNRV9NQVhfTEVOR1RIfSBaZWljaGVuIGxhbmcgc2VpbmAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIG1lc3NhZ2U6ICdOYW1lIGRhcmYgbnVyIEJ1Y2hzdGFiZW4sIFphaGxlbiB1bmQgVW50ZXJzdHJpY2hlIGVudGhhbHRlbicsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgcGhvbmU6IFtcclxuICAgIHsgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ1RlbGVmb25udW1tZXIgZXJmb3JkZXJsaWNoJyB9LFxyXG4gICAgeyB0eXBlOiAncGF0dGVybicsIG1lc3NhZ2U6ICdVbmfDvGx0aWdlIFRlbGVmb25udW1tZXInIH0sXHJcbiAgICB7IHR5cGU6ICd1bmtub3duJywgbWVzc2FnZTogJ1VuYmVrYW5udGVyIEZlaGxlcicgfSxcclxuICBdLFxyXG4gIGRhdGU6IFtcclxuICAgIHsgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ0RhdHVtIGVyZm9yZGVybGljaCcgfSxcclxuICAgIHsgdHlwZTogJ3Vua25vd24nLCBtZXNzYWdlOiAnVW5iZWthbm50ZXIgRmVobGVyJyB9LFxyXG4gIF0sXHJcbiAgemlwQ29kZTogW1xyXG4gICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnUExaIGVyZm9yZGVybGljaCcgfSxcclxuICAgIHsgdHlwZTogJ3BhdHRlcm4nLCBtZXNzYWdlOiAnVW5nw7xsdGlnZSBQTFonIH0sXHJcbiAgICB7IHR5cGU6ICd1bmtub3duJywgbWVzc2FnZTogJ1VuYmVrYW5udGVyIEZlaGxlcicgfSxcclxuICBdLFxyXG4gIG90aGVyOiBbXHJcbiAgICB7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdFaW5nYWJlIGVyZm9yZGVybGljaCcgfSxcclxuICAgIHsgdHlwZTogJ3Vua25vd24nLCBtZXNzYWdlOiAnVW5iZWthbm50ZXIgRmVobGVyJyB9LFxyXG4gIF0sXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hWYWxpZGF0b3IoXHJcbiAgbWF0Y2hUbzogc3RyaW5nLFxyXG4gIHJldmVyc2U/OiBib29sZWFuXHJcbik6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgIGlmIChjb250cm9sLnBhcmVudCAmJiByZXZlcnNlKSB7XHJcbiAgICAgIGNvbnN0IGMgPSAoY29udHJvbC5wYXJlbnQ/LmNvbnRyb2xzIGFzIGFueSlbbWF0Y2hUb10gYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICBpZiAoYykge1xyXG4gICAgICAgIGMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICEhY29udHJvbC5wYXJlbnQgJiZcclxuICAgICAgISFjb250cm9sLnBhcmVudC52YWx1ZSAmJlxyXG4gICAgICBjb250cm9sLnZhbHVlID09PSAoY29udHJvbC5wYXJlbnQ/LmNvbnRyb2xzIGFzIGFueSlbbWF0Y2hUb10udmFsdWVcclxuICAgICAgPyBudWxsXHJcbiAgICAgIDogeyBtYXRjaGluZzogdHJ1ZSB9O1xyXG4gIH07XHJcbn1cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from './lib/formError.component';
|
|
2
2
|
export * from './lib/dark-mode-toggle.component';
|
|
3
|
-
|
|
3
|
+
export * from './lib/validation';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYW5kL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybUVycm9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXJrLW1vZGUtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uJzsiXX0=
|
package/fesm2022/anguland.mjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, Component, output } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/forms';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
3
|
|
|
6
4
|
const PASSWORD_MIN_LENGTH = 6;
|
|
7
5
|
const USERNAME_MIN_LENGTH = 2;
|
|
@@ -98,37 +96,49 @@ class FormErrorComponent {
|
|
|
98
96
|
this.controlName = input.required();
|
|
99
97
|
this.validationKey = input.required();
|
|
100
98
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
</ng-container>
|
|
99
|
+
get validationsForKey() {
|
|
100
|
+
return this.VALIDATION_MESSAGES[this.validationKey()];
|
|
101
|
+
}
|
|
102
|
+
get control() {
|
|
103
|
+
return this.formGroup().get(this.controlName());
|
|
104
|
+
}
|
|
105
|
+
hasError(errorType) {
|
|
106
|
+
const hasError = this.control?.hasError(errorType) && this.control?.touched && !this.control?.pristine || false;
|
|
107
|
+
return hasError;
|
|
111
108
|
}
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: FormErrorComponent, isStandalone: true, selector: "lib-form-error", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: true, transformFunction: null }, validationKey: { classPropertyName: "validationKey", publicName: "validationKey", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
111
|
+
@for (validation of validationsForKey; track $index) {
|
|
112
|
+
<ng-container>
|
|
113
|
+
@if(hasError(validation.type)) {
|
|
114
|
+
<small class="smallError">
|
|
115
|
+
{{ validation.message }}
|
|
116
|
+
</small>
|
|
117
|
+
}
|
|
118
|
+
</ng-container>
|
|
119
|
+
}
|
|
112
120
|
`, isInline: true, styles: [".smallError{color:#f44336;font-size:.7rem}\n"] }); }
|
|
113
121
|
}
|
|
114
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormErrorComponent, decorators: [{
|
|
115
123
|
type: Component,
|
|
116
|
-
args: [{ selector: 'lib-form-error', standalone: true, template: `
|
|
117
|
-
@for (validation of
|
|
118
|
-
<ng-container>
|
|
119
|
-
@if(
|
|
120
|
-
<small class="smallError">
|
|
121
|
-
{{ validation.message }}
|
|
122
|
-
</small>
|
|
123
|
-
}
|
|
124
|
-
</ng-container>
|
|
125
|
-
}
|
|
124
|
+
args: [{ selector: 'lib-form-error', standalone: true, template: `
|
|
125
|
+
@for (validation of validationsForKey; track $index) {
|
|
126
|
+
<ng-container>
|
|
127
|
+
@if(hasError(validation.type)) {
|
|
128
|
+
<small class="smallError">
|
|
129
|
+
{{ validation.message }}
|
|
130
|
+
</small>
|
|
131
|
+
}
|
|
132
|
+
</ng-container>
|
|
133
|
+
}
|
|
126
134
|
`, styles: [".smallError{color:#f44336;font-size:.7rem}\n"] }]
|
|
127
135
|
}] });
|
|
128
136
|
|
|
129
137
|
class DarkModeToggleComponent {
|
|
130
138
|
constructor() {
|
|
131
139
|
this.isDarkMode = input.required();
|
|
140
|
+
//Would also work
|
|
141
|
+
// isDarkMode = model<boolean>();
|
|
132
142
|
this.darkModeToggled = output();
|
|
133
143
|
}
|
|
134
144
|
toggleDarkMode(e) {
|
|
@@ -137,7 +147,7 @@ class DarkModeToggleComponent {
|
|
|
137
147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DarkModeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
148
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: DarkModeToggleComponent, isStandalone: true, selector: "lib-dark-mode-toggle", inputs: { isDarkMode: { classPropertyName: "isDarkMode", publicName: "isDarkMode", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { darkModeToggled: "darkModeToggled" }, ngImport: i0, template: `
|
|
139
149
|
<div class="darkModeToggleButton">
|
|
140
|
-
<input type="checkbox" id="switch" [
|
|
150
|
+
<input type="checkbox" id="switch" [checked]="isDarkMode()" (change)="toggleDarkMode($event)" />
|
|
141
151
|
<div class="switch-btn">
|
|
142
152
|
<label>
|
|
143
153
|
<div class="icons">
|
|
@@ -148,13 +158,13 @@ class DarkModeToggleComponent {
|
|
|
148
158
|
</div>
|
|
149
159
|
</div>
|
|
150
160
|
|
|
151
|
-
`, isInline: true, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height:
|
|
161
|
+
`, isInline: true, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height: 30px;--label-width: 30px;--switch-radius: 20px}.darkModeToggleButton *{transition:all .75s ease}input[type=checkbox]{outline:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:var(--switch-width);height:100%;opacity:0;z-index:2;cursor:pointer}.switch-btn{width:var(--switch-width);height:var(--switch-height) + 5px;background-color:#eceef1;border:3px solid #d1d6db;border-radius:var(--switch-radius);position:relative;z-index:1;padding:3px}label{width:var(--label-width);height:var(--switch-height);display:flex;align-items:center;justify-content:center;background:#f8f8f9;border-radius:var(--switch-radius);overflow:hidden;cursor:pointer}.icons{display:flex;align-items:center;gap:20px;transform:translate(-11px,19px) rotate(110deg);-webkit-user-select:none;user-select:none;color:#17193f}input[type=checkbox]:checked~.switch-btn{border:3px solid #2e3052;background-color:#17193f}input[type=checkbox]:checked~.switch-btn label{transform:translate(calc(var(--switch-width) - var(--label-width)));box-shadow:0 3px 5px #0003}input[type=checkbox]:checked~.switch-btn label .icons{transform:translate(-20px)}\n"] }); }
|
|
152
162
|
}
|
|
153
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DarkModeToggleComponent, decorators: [{
|
|
154
164
|
type: Component,
|
|
155
|
-
args: [{ selector: 'lib-dark-mode-toggle', standalone: true, imports: [
|
|
165
|
+
args: [{ selector: 'lib-dark-mode-toggle', standalone: true, imports: [], template: `
|
|
156
166
|
<div class="darkModeToggleButton">
|
|
157
|
-
<input type="checkbox" id="switch" [
|
|
167
|
+
<input type="checkbox" id="switch" [checked]="isDarkMode()" (change)="toggleDarkMode($event)" />
|
|
158
168
|
<div class="switch-btn">
|
|
159
169
|
<label>
|
|
160
170
|
<div class="icons">
|
|
@@ -165,12 +175,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
165
175
|
</div>
|
|
166
176
|
</div>
|
|
167
177
|
|
|
168
|
-
`, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height:
|
|
178
|
+
`, styles: [".darkModeToggleButton{position:relative;--switch-width: 60px;--switch-height: 30px;--label-width: 30px;--switch-radius: 20px}.darkModeToggleButton *{transition:all .75s ease}input[type=checkbox]{outline:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:var(--switch-width);height:100%;opacity:0;z-index:2;cursor:pointer}.switch-btn{width:var(--switch-width);height:var(--switch-height) + 5px;background-color:#eceef1;border:3px solid #d1d6db;border-radius:var(--switch-radius);position:relative;z-index:1;padding:3px}label{width:var(--label-width);height:var(--switch-height);display:flex;align-items:center;justify-content:center;background:#f8f8f9;border-radius:var(--switch-radius);overflow:hidden;cursor:pointer}.icons{display:flex;align-items:center;gap:20px;transform:translate(-11px,19px) rotate(110deg);-webkit-user-select:none;user-select:none;color:#17193f}input[type=checkbox]:checked~.switch-btn{border:3px solid #2e3052;background-color:#17193f}input[type=checkbox]:checked~.switch-btn label{transform:translate(calc(var(--switch-width) - var(--label-width)));box-shadow:0 3px 5px #0003}input[type=checkbox]:checked~.switch-btn label .icons{transform:translate(-20px)}\n"] }]
|
|
169
179
|
}] });
|
|
170
180
|
|
|
171
181
|
/**
|
|
172
182
|
* Generated bundle index. Do not edit.
|
|
173
183
|
*/
|
|
174
184
|
|
|
175
|
-
export { DarkModeToggleComponent, FormErrorComponent };
|
|
185
|
+
export { DarkModeToggleComponent, FormErrorComponent, PASSWORD_MIN_LENGTH, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, VALIDATION_MESSAGES, matchValidator };
|
|
176
186
|
//# sourceMappingURL=anguland.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anguland.mjs","sources":["../../../projects/anguland/src/lib/validation.ts","../../../projects/anguland/src/lib/formError.component.ts","../../../projects/anguland/src/lib/dark-mode-toggle.component.ts","../../../projects/anguland/src/anguland.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport const PASSWORD_MIN_LENGTH = 6;\r\nexport const USERNAME_MIN_LENGTH = 2;\r\nexport const USERNAME_MAX_LENGTH = 30;\r\n\r\nexport const VALIDATION_MESSAGES = {\r\n username: [\r\n { type: 'required', message: 'Benutzername erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n {\r\n type: 'minlength',\r\n message: `Benutzername muss mindestens ${USERNAME_MIN_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'maxlength',\r\n message: `Benutzername darf höchstens ${USERNAME_MAX_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'pattern',\r\n message: 'Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten',\r\n },\r\n ],\r\n email: [\r\n { type: 'required', message: 'E-Mail erforderlich' },\r\n { type: 'email', message: 'Ungültige E-Mail' },\r\n { type: 'alreadyInUse', message: 'E-Mail bereits in Gebrauch' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n { type: 'unauthenticated', message: 'Benutzername oder Passwort falsch' },\r\n ],\r\n confirmPassword: [\r\n { type: 'required', message: 'Passwort erforderlich' },\r\n { type: 'matching', message: 'Passwort stimmt nicht überein' },\r\n ],\r\n password: [\r\n { type: 'required', message: 'Passwort erforderlich' },\r\n { type: 'minlength', message: `Mindestlänge ${PASSWORD_MIN_LENGTH} Zeichen` },\r\n { type: 'unauthenticated', message: 'Benutzername oder Passwort falsch' },\r\n ],\r\n name: [\r\n { type: 'required', message: 'Name erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n {\r\n type: 'minlength',\r\n message: `Name muss mindestens ${USERNAME_MIN_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'maxlength',\r\n message: `Name darf höchstens ${USERNAME_MAX_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'pattern',\r\n message: 'Name darf nur Buchstaben, Zahlen und Unterstriche enthalten',\r\n },\r\n ],\r\n phone: [\r\n { type: 'required', message: 'Telefonnummer erforderlich' },\r\n { type: 'pattern', message: 'Ungültige Telefonnummer' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n date: [\r\n { type: 'required', message: 'Datum erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n zipCode: [\r\n { type: 'required', message: 'PLZ erforderlich' },\r\n { type: 'pattern', message: 'Ungültige PLZ' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n other: [\r\n { type: 'required', message: 'Eingabe erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n};\r\n\r\nexport function matchValidator(\r\n matchTo: string,\r\n reverse?: boolean\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.parent && reverse) {\r\n const c = (control.parent?.controls as any)[matchTo] as AbstractControl;\r\n if (c) {\r\n c.updateValueAndValidity();\r\n }\r\n return null;\r\n }\r\n return !!control.parent &&\r\n !!control.parent.value &&\r\n control.value === (control.parent?.controls as any)[matchTo].value\r\n ? null\r\n : { matching: true };\r\n };\r\n}\r\n","import { Component, input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { VALIDATION_MESSAGES } from './validation';\n\n@Component({\n selector: 'lib-form-error',\n standalone: true,\n template: `\n @for (validation of VALIDATION_MESSAGES[validationKey()]; track $index) {\n <ng-container>\n @if(formGroup().get(controlName())?.hasError(validation.type) && formGroup().get(controlName())?.touched && !formGroup().get(controlName())?.pristine) {\n <small class=\"smallError\">\n {{ validation.message }}\n </small>\n }\n </ng-container>\n }\n `,\n styles: `\n .smallError{\n color: #f44336;\n font-size: 0.7rem;\n }\n `\n})\nexport class FormErrorComponent {\n VALIDATION_MESSAGES: ValidationMessages = VALIDATION_MESSAGES;\n formGroup = input.required<FormGroup>({});\n controlName = input.required<string>();\n validationKey = input.required<string>();\n}\n\ninterface ValidationMessages {\n [key: string]: ValidationMessage[];\n}\n\ninterface ValidationMessage {\n type: string;\n message: string;\n}\n\n","import { Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'lib-dark-mode-toggle',\n standalone: true,\n imports: [FormsModule],\n template: `\n <div class=\"darkModeToggleButton\">\n <input type=\"checkbox\" id=\"switch\" [ngModel]=\"isDarkMode()\" (change)=\"toggleDarkMode($event)\" />\n <div class=\"switch-btn\">\n <label>\n <div class=\"icons\">\n <span><i class=\"material-icons\">light_mode</i></span>\n <span><i class=\"material-icons\">dark_mode</i></span>\n </div>\n </label>\n </div>\n </div>\n\n `,\n styles: [`\n .darkModeToggleButton {\n position: relative; /* Set context for absolute positioning */\n * {\n transition: all 0.75s ease;\n }\n --switch-width: 60px;\n --switch-height: 25px;\n --label-width: 30px;\n --switch-radius: 20px;\n }\n\n input[type=\"checkbox\"] {\n outline: none;\n -webkit-tap-highlight-color: transparent;\n position: absolute; /* Absolutely position the checkbox */\n top: 0;\n left: 0;\n width: var(--switch-width);\n height: 100%;\n opacity: 0; /* Make it invisible */\n z-index: 2; /* Ensure it sits above the switch-btn */\n cursor: pointer;\n }\n\n .switch-btn {\n width: var(--switch-width);\n height: var(--switch-height) + 10px;\n background-color: #eceef1;\n border: 3px solid #d1d6db;\n border-radius: var(--switch-radius);\n position: relative; /* Ensure it's stacked below the checkbox */\n z-index: 1;\n padding: 6px;\n }\n\n label {\n width: var(--label-width);\n height: var(--switch-height);\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f8f8f9;\n border-radius: var(--switch-radius);\n overflow: hidden;\n cursor: pointer;\n }\n\n .icons {\n display: flex;\n align-items: center;\n gap: 20px;\n transform: translate(-11px, 19px) rotate(120deg);\n user-select: none;\n color: #17193f;\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn {\n border: 3px solid #2e3052;\n background-color: #17193f;\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn label {\n transform: translateX(calc(var(--switch-width) - var(--label-width)));\n box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.2);\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn label .icons {\n transform: translateX(-20px);\n }\n\n `]\n})\nexport class DarkModeToggleComponent {\n\n isDarkMode = input.required<boolean>();\n darkModeToggled = output<boolean>();\n\n toggleDarkMode(e: any) {\n this.darkModeToggled.emit(e.target.checked);\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":"anguland.mjs","sources":["../../../projects/anguland/src/lib/validation.ts","../../../projects/anguland/src/lib/formError.component.ts","../../../projects/anguland/src/lib/dark-mode-toggle.component.ts","../../../projects/anguland/src/anguland.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nexport interface ValidationMessage {\r\n type: string;\r\n message: string;\r\n}\r\n\r\nexport interface ValidationMessages {\r\n [key: string]: ValidationMessage[];\r\n}\r\n\r\nexport const PASSWORD_MIN_LENGTH = 6;\r\nexport const USERNAME_MIN_LENGTH = 2;\r\nexport const USERNAME_MAX_LENGTH = 30;\r\n\r\nexport const VALIDATION_MESSAGES: ValidationMessages = {\r\n username: [\r\n { type: 'required', message: 'Benutzername erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n {\r\n type: 'minlength',\r\n message: `Benutzername muss mindestens ${USERNAME_MIN_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'maxlength',\r\n message: `Benutzername darf höchstens ${USERNAME_MAX_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'pattern',\r\n message: 'Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten',\r\n },\r\n ],\r\n email: [\r\n { type: 'required', message: 'E-Mail erforderlich' },\r\n { type: 'email', message: 'Ungültige E-Mail' },\r\n { type: 'alreadyInUse', message: 'E-Mail bereits in Gebrauch' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n { type: 'unauthenticated', message: 'Benutzername oder Passwort falsch' },\r\n ],\r\n confirmPassword: [\r\n { type: 'required', message: 'Passwort erforderlich' },\r\n { type: 'matching', message: 'Passwort stimmt nicht überein' },\r\n ],\r\n password: [\r\n { type: 'required', message: 'Passwort erforderlich' },\r\n { type: 'minlength', message: `Mindestlänge ${PASSWORD_MIN_LENGTH} Zeichen` },\r\n { type: 'unauthenticated', message: 'Benutzername oder Passwort falsch' },\r\n ],\r\n name: [\r\n { type: 'required', message: 'Name erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n {\r\n type: 'minlength',\r\n message: `Name muss mindestens ${USERNAME_MIN_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'maxlength',\r\n message: `Name darf höchstens ${USERNAME_MAX_LENGTH} Zeichen lang sein`,\r\n },\r\n {\r\n type: 'pattern',\r\n message: 'Name darf nur Buchstaben, Zahlen und Unterstriche enthalten',\r\n },\r\n ],\r\n phone: [\r\n { type: 'required', message: 'Telefonnummer erforderlich' },\r\n { type: 'pattern', message: 'Ungültige Telefonnummer' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n date: [\r\n { type: 'required', message: 'Datum erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n zipCode: [\r\n { type: 'required', message: 'PLZ erforderlich' },\r\n { type: 'pattern', message: 'Ungültige PLZ' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n other: [\r\n { type: 'required', message: 'Eingabe erforderlich' },\r\n { type: 'unknown', message: 'Unbekannter Fehler' },\r\n ],\r\n};\r\n\r\nexport function matchValidator(\r\n matchTo: string,\r\n reverse?: boolean\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.parent && reverse) {\r\n const c = (control.parent?.controls as any)[matchTo] as AbstractControl;\r\n if (c) {\r\n c.updateValueAndValidity();\r\n }\r\n return null;\r\n }\r\n return !!control.parent &&\r\n !!control.parent.value &&\r\n control.value === (control.parent?.controls as any)[matchTo].value\r\n ? null\r\n : { matching: true };\r\n };\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { VALIDATION_MESSAGES, ValidationMessage, ValidationMessages } from './validation';\r\n\r\n@Component({\r\n selector: 'lib-form-error',\r\n standalone: true,\r\n template: `\r\n @for (validation of validationsForKey; track $index) {\r\n <ng-container>\r\n @if(hasError(validation.type)) {\r\n <small class=\"smallError\">\r\n {{ validation.message }}\r\n </small>\r\n }\r\n </ng-container>\r\n }\r\n `,\r\n styles: `\r\n .smallError{\r\n color: #f44336;\r\n font-size: 0.7rem;\r\n }\r\n `\r\n})\r\nexport class FormErrorComponent {\r\n VALIDATION_MESSAGES: ValidationMessages = VALIDATION_MESSAGES;\r\n formGroup = input.required<FormGroup>({});\r\n controlName = input.required<string>();\r\n validationKey = input.required<string>();\r\n\r\n\r\n\r\n get validationsForKey(): ValidationMessage[] {\r\n return this.VALIDATION_MESSAGES[this.validationKey()];\r\n }\r\n\r\n get control() {\r\n return this.formGroup().get(this.controlName());\r\n }\r\n\r\n hasError(errorType: string): boolean {\r\n const hasError: boolean = this.control?.hasError(errorType) && this.control?.touched && !this.control?.pristine || false;\r\n return hasError;\r\n }\r\n}\r\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'lib-dark-mode-toggle',\n standalone: true,\n imports: [],\n template: `\n <div class=\"darkModeToggleButton\">\n <input type=\"checkbox\" id=\"switch\" [checked]=\"isDarkMode()\" (change)=\"toggleDarkMode($event)\" />\n <div class=\"switch-btn\">\n <label>\n <div class=\"icons\">\n <span><i class=\"material-icons\">light_mode</i></span>\n <span><i class=\"material-icons\">dark_mode</i></span>\n </div>\n </label>\n </div>\n </div>\n\n `,\n styles: [`\n .darkModeToggleButton {\n position: relative;\n * {\n transition: all 0.75s ease;\n }\n --switch-width: 60px;\n --switch-height: 30px;\n --label-width: 30px;\n --switch-radius: 20px;\n }\n\n input[type=\"checkbox\"] {\n outline: none;\n -webkit-tap-highlight-color: transparent;\n position: absolute; \n top: 0;\n left: 0;\n width: var(--switch-width);\n height: 100%;\n opacity: 0; \n z-index: 2; \n cursor: pointer;\n }\n\n .switch-btn {\n width: var(--switch-width);\n height: var(--switch-height) + 5px;\n background-color: #eceef1;\n border: 3px solid #d1d6db;\n border-radius: var(--switch-radius);\n position: relative;\n z-index: 1;\n padding: 3px;\n }\n\n label {\n width: var(--label-width);\n height: var(--switch-height);\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f8f8f9;\n border-radius: var(--switch-radius);\n overflow: hidden;\n cursor: pointer;\n }\n\n .icons {\n display: flex;\n align-items: center;\n gap: 20px;\n transform: translate(-11px, 19px) rotate(110deg);\n user-select: none;\n color: #17193f;\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn {\n border: 3px solid #2e3052;\n background-color: #17193f;\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn label {\n transform: translateX(calc(var(--switch-width) - var(--label-width)));\n box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.2);\n }\n\n input[type=\"checkbox\"]:checked ~ .switch-btn label .icons {\n transform: translateX(-20px);\n }\n\n `]\n})\nexport class DarkModeToggleComponent {\n\n isDarkMode = input.required<boolean>();\n //Would also work\n // isDarkMode = model<boolean>();\n darkModeToggled = output<boolean>();\n\n toggleDarkMode(e: any) {\n this.darkModeToggled.emit(e.target.checked);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import { ValidationMessage, ValidationMessages } from './validation';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class FormErrorComponent {
|
|
4
5
|
VALIDATION_MESSAGES: ValidationMessages;
|
|
5
6
|
formGroup: import("@angular/core").InputSignal<FormGroup<any>>;
|
|
6
7
|
controlName: import("@angular/core").InputSignal<string>;
|
|
7
8
|
validationKey: import("@angular/core").InputSignal<string>;
|
|
9
|
+
get validationsForKey(): ValidationMessage[];
|
|
10
|
+
get control(): import("@angular/forms").AbstractControl<any, any> | null;
|
|
11
|
+
hasError(errorType: string): boolean;
|
|
8
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormErrorComponent, never>;
|
|
9
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<FormErrorComponent, "lib-form-error", never, { "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "controlName": { "alias": "controlName"; "required": true; "isSignal": true; }; "validationKey": { "alias": "validationKey"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
10
14
|
}
|
|
11
|
-
interface ValidationMessages {
|
|
12
|
-
[key: string]: ValidationMessage[];
|
|
13
|
-
}
|
|
14
|
-
interface ValidationMessage {
|
|
15
|
-
type: string;
|
|
16
|
-
message: string;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
package/lib/validation.d.ts
CHANGED
|
@@ -1,43 +1,13 @@
|
|
|
1
1
|
import { ValidatorFn } from '@angular/forms';
|
|
2
|
+
export interface ValidationMessage {
|
|
3
|
+
type: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ValidationMessages {
|
|
7
|
+
[key: string]: ValidationMessage[];
|
|
8
|
+
}
|
|
2
9
|
export declare const PASSWORD_MIN_LENGTH = 6;
|
|
3
10
|
export declare const USERNAME_MIN_LENGTH = 2;
|
|
4
11
|
export declare const USERNAME_MAX_LENGTH = 30;
|
|
5
|
-
export declare const VALIDATION_MESSAGES:
|
|
6
|
-
username: {
|
|
7
|
-
type: string;
|
|
8
|
-
message: string;
|
|
9
|
-
}[];
|
|
10
|
-
email: {
|
|
11
|
-
type: string;
|
|
12
|
-
message: string;
|
|
13
|
-
}[];
|
|
14
|
-
confirmPassword: {
|
|
15
|
-
type: string;
|
|
16
|
-
message: string;
|
|
17
|
-
}[];
|
|
18
|
-
password: {
|
|
19
|
-
type: string;
|
|
20
|
-
message: string;
|
|
21
|
-
}[];
|
|
22
|
-
name: {
|
|
23
|
-
type: string;
|
|
24
|
-
message: string;
|
|
25
|
-
}[];
|
|
26
|
-
phone: {
|
|
27
|
-
type: string;
|
|
28
|
-
message: string;
|
|
29
|
-
}[];
|
|
30
|
-
date: {
|
|
31
|
-
type: string;
|
|
32
|
-
message: string;
|
|
33
|
-
}[];
|
|
34
|
-
zipCode: {
|
|
35
|
-
type: string;
|
|
36
|
-
message: string;
|
|
37
|
-
}[];
|
|
38
|
-
other: {
|
|
39
|
-
type: string;
|
|
40
|
-
message: string;
|
|
41
|
-
}[];
|
|
42
|
-
};
|
|
12
|
+
export declare const VALIDATION_MESSAGES: ValidationMessages;
|
|
43
13
|
export declare function matchValidator(matchTo: string, reverse?: boolean): ValidatorFn;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED