@educarehq/solaris-components 0.0.1 → 0.0.2
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/fesm2022/educarehq-solaris-components.mjs +477 -2
- package/fesm2022/educarehq-solaris-components.mjs.map +1 -1
- package/package.json +3 -2
- package/types/educarehq-solaris-components.d.ts +156 -2
- package/fesm2022/educare-solaris-components.mjs +0 -8
- package/fesm2022/educare-solaris-components.mjs.map +0 -1
- package/types/educare-solaris-components.d.ts +0 -3
|
@@ -1,8 +1,483 @@
|
|
|
1
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, signal, effect, Optional, Injectable, Directive, HostBinding, Input, ChangeDetectionStrategy, Component, computed, ContentChild, forwardRef, ElementRef } from '@angular/core';
|
|
3
|
+
import { NgForm, FormGroupDirective, NgControl, NG_VALIDATORS } from '@angular/forms';
|
|
4
|
+
import { SolarisTranslationPipe } from '@educarehq/solaris-services';
|
|
5
|
+
|
|
6
|
+
const SOLARIS_FORM_FIELD_FEATURES = new InjectionToken('SOLARIS_FORM_FIELD_FEATURES');
|
|
7
|
+
|
|
8
|
+
class SolarisFormFieldController {
|
|
9
|
+
features = inject(SOLARIS_FORM_FIELD_FEATURES, { optional: true }) ?? [];
|
|
10
|
+
ngForm = inject(NgForm, { optional: true });
|
|
11
|
+
formGroupDir = inject(FormGroupDirective, { optional: true });
|
|
12
|
+
submitted = signal(false, ...(ngDevMode ? [{ debugName: "submitted" }] : []));
|
|
13
|
+
control = signal(null, ...(ngDevMode ? [{ debugName: "control" }] : []));
|
|
14
|
+
email = signal(null, ...(ngDevMode ? [{ debugName: "email" }] : []));
|
|
15
|
+
password = signal(null, ...(ngDevMode ? [{ debugName: "password" }] : []));
|
|
16
|
+
constructor() {
|
|
17
|
+
effect(() => {
|
|
18
|
+
const fgSubmitted = this.formGroupDir?.submitted ?? false;
|
|
19
|
+
const nfSubmitted = this.ngForm?.submitted ?? false;
|
|
20
|
+
this.submitted.set((fgSubmitted || nfSubmitted));
|
|
21
|
+
}, { allowSignalWrites: true });
|
|
22
|
+
}
|
|
23
|
+
registerPassword(dir) {
|
|
24
|
+
this.password.set(dir);
|
|
25
|
+
}
|
|
26
|
+
registerEmail(dir) {
|
|
27
|
+
this.email.set(dir);
|
|
28
|
+
}
|
|
29
|
+
registerControl(ctrl) {
|
|
30
|
+
if (!ctrl && this.control())
|
|
31
|
+
return;
|
|
32
|
+
this.control.set(ctrl);
|
|
33
|
+
}
|
|
34
|
+
passwordVisible() {
|
|
35
|
+
return this.password()?.visible() ?? false;
|
|
36
|
+
}
|
|
37
|
+
togglePasswordVisibility() {
|
|
38
|
+
this.password()?.toggle();
|
|
39
|
+
}
|
|
40
|
+
resetSubmitted() {
|
|
41
|
+
this.submitted.set(false);
|
|
42
|
+
}
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisFormFieldController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisFormFieldController });
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisFormFieldController, decorators: [{
|
|
47
|
+
type: Injectable
|
|
48
|
+
}], ctorParameters: () => [], propDecorators: { ngForm: [{
|
|
49
|
+
type: Optional
|
|
50
|
+
}], formGroupDir: [{
|
|
51
|
+
type: Optional
|
|
52
|
+
}] } });
|
|
53
|
+
|
|
54
|
+
class SolarisControlBridgeDirective {
|
|
55
|
+
ctrl = inject(NgControl, { optional: true });
|
|
56
|
+
field = inject(SolarisFormFieldController, { optional: true });
|
|
57
|
+
constructor() {
|
|
58
|
+
if (this.ctrl)
|
|
59
|
+
this.field?.registerControl(this.ctrl);
|
|
60
|
+
}
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisControlBridgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: SolarisControlBridgeDirective, isStandalone: true, selector: "input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]", ngImport: i0 });
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisControlBridgeDirective, decorators: [{
|
|
65
|
+
type: Directive,
|
|
66
|
+
args: [{
|
|
67
|
+
selector: 'input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]',
|
|
68
|
+
standalone: true,
|
|
69
|
+
}]
|
|
70
|
+
}], ctorParameters: () => [], propDecorators: { ctrl: [{
|
|
71
|
+
type: Optional
|
|
72
|
+
}], field: [{
|
|
73
|
+
type: Optional
|
|
74
|
+
}] } });
|
|
75
|
+
|
|
76
|
+
class SolarisPrefixDirective {
|
|
77
|
+
attr = '';
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
79
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: SolarisPrefixDirective, isStandalone: true, selector: "[solaris-prefix]", host: { properties: { "attr.solaris-prefix": "this.attr" } }, ngImport: i0 });
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisPrefixDirective, decorators: [{
|
|
82
|
+
type: Directive,
|
|
83
|
+
args: [{
|
|
84
|
+
selector: '[solaris-prefix]',
|
|
85
|
+
}]
|
|
86
|
+
}], propDecorators: { attr: [{
|
|
87
|
+
type: HostBinding,
|
|
88
|
+
args: ['attr.solaris-prefix']
|
|
89
|
+
}] } });
|
|
90
|
+
|
|
91
|
+
class SolarisSuffixDirective {
|
|
92
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
93
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: SolarisSuffixDirective, isStandalone: true, selector: "[solaris-suffix]", ngImport: i0 });
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisSuffixDirective, decorators: [{
|
|
96
|
+
type: Directive,
|
|
97
|
+
args: [{
|
|
98
|
+
selector: '[solaris-suffix]',
|
|
99
|
+
standalone: true
|
|
100
|
+
}]
|
|
101
|
+
}] });
|
|
102
|
+
|
|
103
|
+
const SOLARIS_FORM_FIELD_CONTROLLER = new InjectionToken('SOLARIS_FORM_FIELD_CONTROLLER');
|
|
104
|
+
|
|
105
|
+
class FieldErrorComponent {
|
|
106
|
+
text;
|
|
107
|
+
textKey;
|
|
108
|
+
textParams;
|
|
109
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FieldErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: FieldErrorComponent, isStandalone: true, selector: "solaris-field-error", inputs: { text: "text", textKey: "textKey", textParams: "textParams" }, ngImport: i0, template: "<div class=\"solaris-field-error\" role=\"alert\" aria-live=\"polite\">\r\n <span class=\"solaris-field-error__text\">\r\n @if (textKey) { {{ textKey | translate:textParams }} }\r\n @else { {{ text }} }\r\n </span>\r\n</div>\r\n", styles: [".solaris-field-error{line-height:1.25;padding-left:.5rem;font-size:var(--solaris-fs-10);color:var(--solaris-color-error)}\n"], dependencies: [{ kind: "pipe", type: SolarisTranslationPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
111
|
+
}
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FieldErrorComponent, decorators: [{
|
|
113
|
+
type: Component,
|
|
114
|
+
args: [{ selector: 'solaris-field-error', standalone: true, imports: [SolarisTranslationPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"solaris-field-error\" role=\"alert\" aria-live=\"polite\">\r\n <span class=\"solaris-field-error__text\">\r\n @if (textKey) { {{ textKey | translate:textParams }} }\r\n @else { {{ text }} }\r\n </span>\r\n</div>\r\n", styles: [".solaris-field-error{line-height:1.25;padding-left:.5rem;font-size:var(--solaris-fs-10);color:var(--solaris-color-error)}\n"] }]
|
|
115
|
+
}], propDecorators: { text: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], textKey: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], textParams: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}] } });
|
|
122
|
+
|
|
123
|
+
class PasswordToggle {
|
|
124
|
+
solarisSuffix = '';
|
|
125
|
+
field = inject(SOLARIS_FORM_FIELD_CONTROLLER, { optional: true });
|
|
126
|
+
visible = () => this.field?.passwordVisible() ?? false;
|
|
127
|
+
toggle() {
|
|
128
|
+
this.field?.togglePasswordVisibility();
|
|
129
|
+
}
|
|
130
|
+
get ariaLabelHide() { return 'Hide password'; }
|
|
131
|
+
get ariaLabelShow() { return 'Show password'; }
|
|
132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PasswordToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: PasswordToggle, isStandalone: true, selector: "solaris-password-toggle", host: { properties: { "attr.solaris-suffix": "this.solarisSuffix" } }, ngImport: i0, template: "<button class=\"solaris-password-toggle\" type=\"button\" (click)=\"toggle()\" [attr.aria-pressed]=\"visible() ? 'true' : 'false'\"\r\n [attr.aria-label]=\"visible() ? ariaLabelHide : ariaLabelShow\">\r\n @if (visible()) { <i class=\"ph ph-eye-slash\"></i> }\r\n @else { <i class=\"ph ph-eye\"></i> }\r\n</button>\r\n", styles: [".solaris-password-toggle{border:0;opacity:.6;display:grid;width:3.8rem;height:3.8rem;cursor:pointer;place-items:center;background:transparent;color:var(--solaris-color-text-muted);transition:opacity .16s ease,filter .16s ease}.solaris-password-toggle:hover,.solaris-password-toggle:focus-visible{opacity:1;filter:brightness(1.1)}.solaris-password-toggle:focus-visible{outline-offset:.2rem;border-radius:var(--solaris-radius-md);outline:.2rem solid color-mix(in srgb,var(--solaris-color-primary) 35%,transparent)}.solaris-password-toggle i.ph{font-size:var(--solaris-fs-14)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PasswordToggle, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{ selector: 'solaris-password-toggle', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button class=\"solaris-password-toggle\" type=\"button\" (click)=\"toggle()\" [attr.aria-pressed]=\"visible() ? 'true' : 'false'\"\r\n [attr.aria-label]=\"visible() ? ariaLabelHide : ariaLabelShow\">\r\n @if (visible()) { <i class=\"ph ph-eye-slash\"></i> }\r\n @else { <i class=\"ph ph-eye\"></i> }\r\n</button>\r\n", styles: [".solaris-password-toggle{border:0;opacity:.6;display:grid;width:3.8rem;height:3.8rem;cursor:pointer;place-items:center;background:transparent;color:var(--solaris-color-text-muted);transition:opacity .16s ease,filter .16s ease}.solaris-password-toggle:hover,.solaris-password-toggle:focus-visible{opacity:1;filter:brightness(1.1)}.solaris-password-toggle:focus-visible{outline-offset:.2rem;border-radius:var(--solaris-radius-md);outline:.2rem solid color-mix(in srgb,var(--solaris-color-primary) 35%,transparent)}.solaris-password-toggle i.ph{font-size:var(--solaris-fs-14)}\n"] }]
|
|
138
|
+
}], propDecorators: { solarisSuffix: [{
|
|
139
|
+
type: HostBinding,
|
|
140
|
+
args: ['attr.solaris-suffix']
|
|
141
|
+
}], field: [{
|
|
142
|
+
type: Optional
|
|
143
|
+
}] } });
|
|
144
|
+
|
|
145
|
+
class FormField {
|
|
146
|
+
field = inject(SolarisFormFieldController);
|
|
147
|
+
prefix;
|
|
148
|
+
suffix;
|
|
149
|
+
hint = '';
|
|
150
|
+
label = '';
|
|
151
|
+
hintKey = '';
|
|
152
|
+
labelKey = '';
|
|
153
|
+
invalid = null;
|
|
154
|
+
showErrors = 'dirtyOrTouched';
|
|
155
|
+
get hasPrefix() { return !!this.prefix; }
|
|
156
|
+
get hasSuffix() { return !!this.suffix; }
|
|
157
|
+
getDirectErrorKey(errors) {
|
|
158
|
+
if (errors['required'])
|
|
159
|
+
return 'ui.solaris.validation.required';
|
|
160
|
+
if (errors['email'] || errors['solarisEmail'])
|
|
161
|
+
return 'ui.solaris.validation.email';
|
|
162
|
+
return '';
|
|
163
|
+
}
|
|
164
|
+
getPasswordErrorKey(bag) {
|
|
165
|
+
if (bag?.minLength)
|
|
166
|
+
return 'ui.solaris.validation.password.minLength';
|
|
167
|
+
if (bag?.uppercase)
|
|
168
|
+
return 'ui.solaris.validation.password.uppercase';
|
|
169
|
+
if (bag?.lowercase)
|
|
170
|
+
return 'ui.solaris.validation.password.lowercase';
|
|
171
|
+
if (bag?.number)
|
|
172
|
+
return 'ui.solaris.validation.password.number';
|
|
173
|
+
if (bag?.special)
|
|
174
|
+
return 'ui.solaris.validation.password.special';
|
|
175
|
+
return 'ui.solaris.validation.password.invalid';
|
|
176
|
+
}
|
|
177
|
+
showPasswordToggle = computed(() => !!this.field.password(), ...(ngDevMode ? [{ debugName: "showPasswordToggle" }] : []));
|
|
178
|
+
errorParams = computed(() => {
|
|
179
|
+
if (!this.invalidComputed())
|
|
180
|
+
return undefined;
|
|
181
|
+
const errors = this.field.control()?.errors;
|
|
182
|
+
if (!errors)
|
|
183
|
+
return undefined;
|
|
184
|
+
const bag = errors['solarisPassword'];
|
|
185
|
+
if (bag?.minLength)
|
|
186
|
+
return { requiredLength: bag.minLength.requiredLength };
|
|
187
|
+
return undefined;
|
|
188
|
+
}, ...(ngDevMode ? [{ debugName: "errorParams" }] : []));
|
|
189
|
+
invalidComputed = computed(() => {
|
|
190
|
+
if (this.invalid !== null)
|
|
191
|
+
return this.invalid;
|
|
192
|
+
const c = this.field.control();
|
|
193
|
+
if (!c)
|
|
194
|
+
return false;
|
|
195
|
+
if (this.showErrors === 'always')
|
|
196
|
+
return !!c.invalid;
|
|
197
|
+
if (this.showErrors === 'submitted')
|
|
198
|
+
return !!(c.invalid && this.field.submitted());
|
|
199
|
+
return !!(c.invalid && (c.touched || c.dirty));
|
|
200
|
+
}, ...(ngDevMode ? [{ debugName: "invalidComputed" }] : []));
|
|
201
|
+
errorKey = computed(() => {
|
|
202
|
+
if (!this.invalidComputed())
|
|
203
|
+
return '';
|
|
204
|
+
const c = this.field.control();
|
|
205
|
+
console.log('status', c?.status, 'errors', c?.errors, 'value', c?.value);
|
|
206
|
+
const errors = this.field.control()?.errors;
|
|
207
|
+
if (!errors)
|
|
208
|
+
return '';
|
|
209
|
+
const direct = this.getDirectErrorKey(errors);
|
|
210
|
+
if (direct)
|
|
211
|
+
return direct;
|
|
212
|
+
if (errors['solarisPassword'])
|
|
213
|
+
return this.getPasswordErrorKey(errors['solarisPassword']);
|
|
214
|
+
return 'solaris.validation.invalid';
|
|
215
|
+
}, ...(ngDevMode ? [{ debugName: "errorKey" }] : []));
|
|
216
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
217
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: FormField, isStandalone: true, selector: "solaris-form-field", inputs: { hint: "hint", label: "label", hintKey: "hintKey", labelKey: "labelKey", invalid: "invalid", showErrors: "showErrors" }, providers: [
|
|
218
|
+
SolarisFormFieldController,
|
|
219
|
+
{ provide: SOLARIS_FORM_FIELD_CONTROLLER, useExisting: SolarisFormFieldController }
|
|
220
|
+
], queries: [{ propertyName: "prefix", first: true, predicate: SolarisPrefixDirective, descendants: true }, { propertyName: "suffix", first: true, predicate: SolarisSuffixDirective, descendants: true }], ngImport: i0, template: "<div class=\"solaris-form-field\" [class.solaris-form-field--has-prefix]=\"hasPrefix\"\r\n [attr.data-invalid]=\"invalidComputed() ? 'true' : null\">\r\n @if ((label || labelKey)) {\r\n <label class=\"solaris-form-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} }\r\n @else if (label) { {{ label }} }\r\n </label>\r\n }\r\n\r\n <div class=\"solaris-form-field__frame\">\r\n @if (hasPrefix) {\r\n <span class=\"solaris-form-field__prefix\" aria-hidden=\"true\">\r\n <ng-content select=\"[solaris-prefix]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-form-field__body\">\r\n <div class=\"solaris-form-field__control-slot\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasSuffix || showPasswordToggle() || invalidComputed()) {\r\n <span class=\"solaris-form-field__suffix\">\r\n <ng-content select=\"[solaris-suffix]\"></ng-content>\r\n\r\n @if (showPasswordToggle()) {\r\n <solaris-password-toggle></solaris-password-toggle>\r\n }\r\n\r\n @if (invalidComputed()) {\r\n <span class=\"solaris-form-field__status\" aria-hidden=\"true\">\r\n <i class=\"ph ph-warning-circle\"></i>\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (errorKey()) {\r\n <solaris-field-error [textKey]=\"errorKey()\" [textParams]=\"errorParams()\"></solaris-field-error>\r\n } @else {\r\n <ng-content select=\"[form-field-message]\"></ng-content>\r\n }\r\n\r\n @if (hint || hintKey) {\r\n <div class=\"solaris-form-field__hint\">\r\n @if (hintKey) { {{ hintKey | translate }} }\r\n @else { {{ hint }} }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".solaris-form-field{display:grid;gap:var(--solaris-space-2)}.solaris-form-field__label{font-weight:600;font-size:var(--solaris-fs-14);color:var(--solaris-color-text);margin-left:var(--solaris-space-1)}.solaris-form-field__frame{display:grid;min-height:3.8rem;align-items:stretch;grid-template-columns:1fr;border-radius:var(--solaris-radius-sm);background:var(--solaris-color-surface-2);border:1px solid var(--solaris-color-border);transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}.solaris-form-field--has-prefix .solaris-form-field__frame{grid-template-columns:3.8rem 1fr}.solaris-form-field__prefix{opacity:.5;display:grid;width:3.8rem;line-height:0;place-items:center;font-size:var(--solaris-fs-14);color:var(--solaris-color-text-muted);transition:opacity .3s ease,filter .3s ease;border-right:1px solid color-mix(in srgb,var(--solaris-color-border) 85%,transparent)}.solaris-form-field__frame:hover .solaris-form-field__prefix,.solaris-form-field__frame:focus-within .solaris-form-field__prefix{opacity:1;filter:brightness(1.05)}.solaris-form-field__prefix :is(i,svg,[solarisPrefixIcon]){display:block;line-height:1}.solaris-form-field__prefix i.ph{opacity:.6;font-size:1.9rem}.solaris-form-field__prefix svg{width:1.9rem;height:1.9rem}.solaris-form-field__body{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;position:relative;padding-left:var(--solaris-space-3);padding-right:0}.solaris-form-field__control-slot{width:100%;min-width:0;display:flex;align-items:center;flex:1 1 auto}.solaris-form-field__control-slot>*{flex:1 1 0;min-width:0;width:100%}.solaris-form-field__control-slot :is(input,textarea){margin:0;border:0;outline:none;width:100%;min-width:0;padding:.9rem 0;background:transparent;font-size:var(--solaris-fs-14);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text)}.solaris-form-field__control-slot :is(input,textarea)::placeholder{opacity:.9;color:var(--solaris-color-text-muted)}.solaris-form-field__suffix{display:inline-flex;align-items:center;justify-content:center;padding-right:var(--solaris-space-3);gap:var(--solaris-space-2)}.solaris-form-field__suffix :is(button,a){align-self:stretch;display:inline-flex;align-items:center;height:3.6rem}.solaris-form-field__status{width:3.8rem;height:3.8rem;display:grid;place-items:center;color:var(--solaris-color-error);opacity:.95}.solaris-form-field__status i.ph{font-size:1.9rem;line-height:1}.solaris-form-field__hint{font-size:var(--solaris-fs-12);color:var(--solaris-color-text-muted)}.solaris-form-field__frame:has(:is(input,textarea)[disabled]){opacity:.45}.solaris-form-field__frame:has(:is(input,textarea)[disabled]) .solaris-form-field__prefix,.solaris-form-field__frame:has(:is(input,textarea)[disabled]) :is(.solaris-form-field__label,.solaris-form-field__hint){color:var(--solaris-color-text-muted)}.solaris-form-field__frame:has(:focus-visible){box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-primary) 5%,transparent);border-color:color-mix(in srgb,var(--solaris-color-primary) 70%,var(--solaris-color-border))}.solaris-form-field[data-invalid=true] .solaris-form-field__frame{box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-error) 5%,transparent);border-color:color-mix(in srgb,var(--solaris-color-error) 70%,var(--solaris-color-border))}.solaris-form-field[data-invalid=true] .solaris-form-field__frame:focus-within{border-color:color-mix(in srgb,var(--solaris-color-error) 80%,var(--solaris-color-border));box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-error) 16%,transparent)}.solaris-form-field[data-invalid=true] .solaris-form-field__prefix{border-right-color:color-mix(in srgb,var(--solaris-color-error) 30%,var(--solaris-color-border));color:color-mix(in srgb,var(--solaris-color-error) 75%,var(--solaris-color-text-muted))}.solaris-form-field[data-invalid=true] .solaris-form-field__control-slot :is(input,textarea)::placeholder{color:color-mix(in srgb,var(--solaris-color-error) 45%,var(--solaris-color-text-muted))}\n"], dependencies: [{ kind: "component", type: PasswordToggle, selector: "solaris-password-toggle" }, { kind: "component", type: FieldErrorComponent, selector: "solaris-field-error", inputs: ["text", "textKey", "textParams"] }, { kind: "pipe", type: SolarisTranslationPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
221
|
+
}
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FormField, decorators: [{
|
|
223
|
+
type: Component,
|
|
224
|
+
args: [{ selector: 'solaris-form-field', standalone: true, imports: [
|
|
225
|
+
PasswordToggle,
|
|
226
|
+
FieldErrorComponent,
|
|
227
|
+
SolarisTranslationPipe
|
|
228
|
+
], providers: [
|
|
229
|
+
SolarisFormFieldController,
|
|
230
|
+
{ provide: SOLARIS_FORM_FIELD_CONTROLLER, useExisting: SolarisFormFieldController }
|
|
231
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"solaris-form-field\" [class.solaris-form-field--has-prefix]=\"hasPrefix\"\r\n [attr.data-invalid]=\"invalidComputed() ? 'true' : null\">\r\n @if ((label || labelKey)) {\r\n <label class=\"solaris-form-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} }\r\n @else if (label) { {{ label }} }\r\n </label>\r\n }\r\n\r\n <div class=\"solaris-form-field__frame\">\r\n @if (hasPrefix) {\r\n <span class=\"solaris-form-field__prefix\" aria-hidden=\"true\">\r\n <ng-content select=\"[solaris-prefix]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-form-field__body\">\r\n <div class=\"solaris-form-field__control-slot\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasSuffix || showPasswordToggle() || invalidComputed()) {\r\n <span class=\"solaris-form-field__suffix\">\r\n <ng-content select=\"[solaris-suffix]\"></ng-content>\r\n\r\n @if (showPasswordToggle()) {\r\n <solaris-password-toggle></solaris-password-toggle>\r\n }\r\n\r\n @if (invalidComputed()) {\r\n <span class=\"solaris-form-field__status\" aria-hidden=\"true\">\r\n <i class=\"ph ph-warning-circle\"></i>\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (errorKey()) {\r\n <solaris-field-error [textKey]=\"errorKey()\" [textParams]=\"errorParams()\"></solaris-field-error>\r\n } @else {\r\n <ng-content select=\"[form-field-message]\"></ng-content>\r\n }\r\n\r\n @if (hint || hintKey) {\r\n <div class=\"solaris-form-field__hint\">\r\n @if (hintKey) { {{ hintKey | translate }} }\r\n @else { {{ hint }} }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".solaris-form-field{display:grid;gap:var(--solaris-space-2)}.solaris-form-field__label{font-weight:600;font-size:var(--solaris-fs-14);color:var(--solaris-color-text);margin-left:var(--solaris-space-1)}.solaris-form-field__frame{display:grid;min-height:3.8rem;align-items:stretch;grid-template-columns:1fr;border-radius:var(--solaris-radius-sm);background:var(--solaris-color-surface-2);border:1px solid var(--solaris-color-border);transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}.solaris-form-field--has-prefix .solaris-form-field__frame{grid-template-columns:3.8rem 1fr}.solaris-form-field__prefix{opacity:.5;display:grid;width:3.8rem;line-height:0;place-items:center;font-size:var(--solaris-fs-14);color:var(--solaris-color-text-muted);transition:opacity .3s ease,filter .3s ease;border-right:1px solid color-mix(in srgb,var(--solaris-color-border) 85%,transparent)}.solaris-form-field__frame:hover .solaris-form-field__prefix,.solaris-form-field__frame:focus-within .solaris-form-field__prefix{opacity:1;filter:brightness(1.05)}.solaris-form-field__prefix :is(i,svg,[solarisPrefixIcon]){display:block;line-height:1}.solaris-form-field__prefix i.ph{opacity:.6;font-size:1.9rem}.solaris-form-field__prefix svg{width:1.9rem;height:1.9rem}.solaris-form-field__body{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;position:relative;padding-left:var(--solaris-space-3);padding-right:0}.solaris-form-field__control-slot{width:100%;min-width:0;display:flex;align-items:center;flex:1 1 auto}.solaris-form-field__control-slot>*{flex:1 1 0;min-width:0;width:100%}.solaris-form-field__control-slot :is(input,textarea){margin:0;border:0;outline:none;width:100%;min-width:0;padding:.9rem 0;background:transparent;font-size:var(--solaris-fs-14);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text)}.solaris-form-field__control-slot :is(input,textarea)::placeholder{opacity:.9;color:var(--solaris-color-text-muted)}.solaris-form-field__suffix{display:inline-flex;align-items:center;justify-content:center;padding-right:var(--solaris-space-3);gap:var(--solaris-space-2)}.solaris-form-field__suffix :is(button,a){align-self:stretch;display:inline-flex;align-items:center;height:3.6rem}.solaris-form-field__status{width:3.8rem;height:3.8rem;display:grid;place-items:center;color:var(--solaris-color-error);opacity:.95}.solaris-form-field__status i.ph{font-size:1.9rem;line-height:1}.solaris-form-field__hint{font-size:var(--solaris-fs-12);color:var(--solaris-color-text-muted)}.solaris-form-field__frame:has(:is(input,textarea)[disabled]){opacity:.45}.solaris-form-field__frame:has(:is(input,textarea)[disabled]) .solaris-form-field__prefix,.solaris-form-field__frame:has(:is(input,textarea)[disabled]) :is(.solaris-form-field__label,.solaris-form-field__hint){color:var(--solaris-color-text-muted)}.solaris-form-field__frame:has(:focus-visible){box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-primary) 5%,transparent);border-color:color-mix(in srgb,var(--solaris-color-primary) 70%,var(--solaris-color-border))}.solaris-form-field[data-invalid=true] .solaris-form-field__frame{box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-error) 5%,transparent);border-color:color-mix(in srgb,var(--solaris-color-error) 70%,var(--solaris-color-border))}.solaris-form-field[data-invalid=true] .solaris-form-field__frame:focus-within{border-color:color-mix(in srgb,var(--solaris-color-error) 80%,var(--solaris-color-border));box-shadow:0 0 .5rem .25rem color-mix(in srgb,var(--solaris-color-error) 16%,transparent)}.solaris-form-field[data-invalid=true] .solaris-form-field__prefix{border-right-color:color-mix(in srgb,var(--solaris-color-error) 30%,var(--solaris-color-border));color:color-mix(in srgb,var(--solaris-color-error) 75%,var(--solaris-color-text-muted))}.solaris-form-field[data-invalid=true] .solaris-form-field__control-slot :is(input,textarea)::placeholder{color:color-mix(in srgb,var(--solaris-color-error) 45%,var(--solaris-color-text-muted))}\n"] }]
|
|
232
|
+
}], propDecorators: { prefix: [{
|
|
233
|
+
type: ContentChild,
|
|
234
|
+
args: [SolarisPrefixDirective]
|
|
235
|
+
}], suffix: [{
|
|
236
|
+
type: ContentChild,
|
|
237
|
+
args: [SolarisSuffixDirective]
|
|
238
|
+
}], hint: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], label: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], hintKey: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], labelKey: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], invalid: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], showErrors: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}] } });
|
|
251
|
+
|
|
252
|
+
class SolarisPasswordDirective {
|
|
253
|
+
minLength = 8;
|
|
254
|
+
requireUpper = true;
|
|
255
|
+
requireLower = true;
|
|
256
|
+
requireNumber = true;
|
|
257
|
+
requireSpecial = false;
|
|
258
|
+
set requireUpperKebab(v) { this.requireUpper = coerceBoolean(v); this._onChange?.(); }
|
|
259
|
+
set requireLowerKebab(v) { this.requireLower = coerceBoolean(v); this._onChange?.(); }
|
|
260
|
+
set requireNumberKebab(v) { this.requireNumber = coerceBoolean(v); this._onChange?.(); }
|
|
261
|
+
set minLengthKebab(v) { this.minLength = coerceNumber(v, 8); this._onChange?.(); }
|
|
262
|
+
set requireSpecialKebab(v) { this.requireSpecial = coerceBoolean(v); this._onChange?.(); }
|
|
263
|
+
get type() {
|
|
264
|
+
return this.visible() ? 'text' : 'password';
|
|
265
|
+
}
|
|
266
|
+
spellcheck = 'false';
|
|
267
|
+
marker = '';
|
|
268
|
+
solarisInput = '';
|
|
269
|
+
autocapitalize = 'none';
|
|
270
|
+
autocomplete = 'current-password';
|
|
271
|
+
field = inject(SolarisFormFieldController, { optional: true });
|
|
272
|
+
visible = signal(false, ...(ngDevMode ? [{ debugName: "visible" }] : []));
|
|
273
|
+
_onChange;
|
|
274
|
+
constructor() {
|
|
275
|
+
this.field?.registerPassword(this);
|
|
276
|
+
}
|
|
277
|
+
toggle() {
|
|
278
|
+
this.visible.set(!this.visible());
|
|
279
|
+
}
|
|
280
|
+
validate(control) {
|
|
281
|
+
const v = String(control.value ?? '');
|
|
282
|
+
if (!v)
|
|
283
|
+
return null;
|
|
284
|
+
const errors = {};
|
|
285
|
+
if (this.minLength && v.length < this.minLength) {
|
|
286
|
+
errors.minLength = { requiredLength: this.minLength, actualLength: v.length };
|
|
287
|
+
}
|
|
288
|
+
if (this.requireLower && !/[a-z]/.test(v))
|
|
289
|
+
errors.lowercase = true;
|
|
290
|
+
if (this.requireUpper && !/[A-Z]/.test(v))
|
|
291
|
+
errors.uppercase = true;
|
|
292
|
+
if (this.requireNumber && !/\d/.test(v))
|
|
293
|
+
errors.number = true;
|
|
294
|
+
if (this.requireSpecial && !/[^\w\s]/.test(v))
|
|
295
|
+
errors.special = true;
|
|
296
|
+
return Object.keys(errors).length ? { solarisPassword: errors } : null;
|
|
297
|
+
}
|
|
298
|
+
registerOnValidatorChange(fn) {
|
|
299
|
+
this._onChange = fn;
|
|
300
|
+
}
|
|
301
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisPasswordDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
302
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: SolarisPasswordDirective, isStandalone: true, selector: "input[solaris-password],input[solarisPassword]", inputs: { minLength: "minLength", requireUpper: "requireUpper", requireLower: "requireLower", requireNumber: "requireNumber", requireSpecial: "requireSpecial", requireUpperKebab: "requireUpperKebab", requireLowerKebab: "requireLowerKebab", requireNumberKebab: "requireNumberKebab", minLengthKebab: "minLengthKebab", requireSpecialKebab: "requireSpecialKebab" }, host: { properties: { "attr.type": "this.type", "attr.spellcheck": "this.spellcheck", "attr.solaris-password": "this.marker", "attr.solaris-input": "this.solarisInput", "attr.autocapitalize": "this.autocapitalize", "attr.autocomplete": "this.autocomplete" } }, providers: [
|
|
303
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisPasswordDirective), multi: true },
|
|
304
|
+
{ provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'password' }, multi: true }
|
|
305
|
+
], ngImport: i0 });
|
|
306
|
+
}
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisPasswordDirective, decorators: [{
|
|
308
|
+
type: Directive,
|
|
309
|
+
args: [{
|
|
310
|
+
selector: 'input[solaris-password],input[solarisPassword]',
|
|
311
|
+
standalone: true,
|
|
312
|
+
providers: [
|
|
313
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisPasswordDirective), multi: true },
|
|
314
|
+
{ provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'password' }, multi: true }
|
|
315
|
+
],
|
|
316
|
+
}]
|
|
317
|
+
}], ctorParameters: () => [], propDecorators: { minLength: [{
|
|
318
|
+
type: Input
|
|
319
|
+
}], requireUpper: [{
|
|
320
|
+
type: Input
|
|
321
|
+
}], requireLower: [{
|
|
322
|
+
type: Input
|
|
323
|
+
}], requireNumber: [{
|
|
324
|
+
type: Input
|
|
325
|
+
}], requireSpecial: [{
|
|
326
|
+
type: Input
|
|
327
|
+
}], requireUpperKebab: [{
|
|
328
|
+
type: Input
|
|
329
|
+
}], requireLowerKebab: [{
|
|
330
|
+
type: Input
|
|
331
|
+
}], requireNumberKebab: [{
|
|
332
|
+
type: Input
|
|
333
|
+
}], minLengthKebab: [{
|
|
334
|
+
type: Input
|
|
335
|
+
}], requireSpecialKebab: [{
|
|
336
|
+
type: Input
|
|
337
|
+
}], type: [{
|
|
338
|
+
type: HostBinding,
|
|
339
|
+
args: ['attr.type']
|
|
340
|
+
}], spellcheck: [{
|
|
341
|
+
type: HostBinding,
|
|
342
|
+
args: ['attr.spellcheck']
|
|
343
|
+
}], marker: [{
|
|
344
|
+
type: HostBinding,
|
|
345
|
+
args: ['attr.solaris-password']
|
|
346
|
+
}], solarisInput: [{
|
|
347
|
+
type: HostBinding,
|
|
348
|
+
args: ['attr.solaris-input']
|
|
349
|
+
}], autocapitalize: [{
|
|
350
|
+
type: HostBinding,
|
|
351
|
+
args: ['attr.autocapitalize']
|
|
352
|
+
}], autocomplete: [{
|
|
353
|
+
type: HostBinding,
|
|
354
|
+
args: ['attr.autocomplete']
|
|
355
|
+
}], field: [{
|
|
356
|
+
type: Optional
|
|
357
|
+
}] } });
|
|
358
|
+
function coerceBoolean(v) {
|
|
359
|
+
return v === '' || v === true || v === 'true' || v === 1 || v === '1';
|
|
360
|
+
}
|
|
361
|
+
function coerceNumber(v, fallback) {
|
|
362
|
+
const n = Number(v);
|
|
363
|
+
return Number.isFinite(n) ? n : fallback;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
class SolarisEmailDirective {
|
|
367
|
+
type = 'email';
|
|
368
|
+
inputmode = 'email';
|
|
369
|
+
spellcheck = 'false';
|
|
370
|
+
autocomplete = 'email';
|
|
371
|
+
solarisInput = '';
|
|
372
|
+
autocapitalize = 'none';
|
|
373
|
+
field = inject(SolarisFormFieldController, { optional: true });
|
|
374
|
+
constructor() {
|
|
375
|
+
this.field?.registerEmail(this);
|
|
376
|
+
}
|
|
377
|
+
validate(control) {
|
|
378
|
+
const v = String(control.value ?? '').trim();
|
|
379
|
+
if (!v)
|
|
380
|
+
return null;
|
|
381
|
+
const ok = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v);
|
|
382
|
+
return ok ? null : { solarisEmail: true };
|
|
383
|
+
}
|
|
384
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisEmailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
385
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: SolarisEmailDirective, isStandalone: true, selector: "input[solaris-email],input[solarisEmail]", host: { properties: { "attr.type": "this.type", "attr.inputmode": "this.inputmode", "attr.spellcheck": "this.spellcheck", "attr.autocomplete": "this.autocomplete", "attr.solaris-input": "this.solarisInput", "attr.autocapitalize": "this.autocapitalize" } }, providers: [
|
|
386
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisEmailDirective), multi: true },
|
|
387
|
+
{ provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'email' }, multi: true }
|
|
388
|
+
], ngImport: i0 });
|
|
389
|
+
}
|
|
390
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisEmailDirective, decorators: [{
|
|
391
|
+
type: Directive,
|
|
392
|
+
args: [{
|
|
393
|
+
selector: 'input[solaris-email],input[solarisEmail]',
|
|
394
|
+
standalone: true,
|
|
395
|
+
providers: [
|
|
396
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisEmailDirective), multi: true },
|
|
397
|
+
{ provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'email' }, multi: true }
|
|
398
|
+
],
|
|
399
|
+
}]
|
|
400
|
+
}], ctorParameters: () => [], propDecorators: { type: [{
|
|
401
|
+
type: HostBinding,
|
|
402
|
+
args: ['attr.type']
|
|
403
|
+
}], inputmode: [{
|
|
404
|
+
type: HostBinding,
|
|
405
|
+
args: ['attr.inputmode']
|
|
406
|
+
}], spellcheck: [{
|
|
407
|
+
type: HostBinding,
|
|
408
|
+
args: ['attr.spellcheck']
|
|
409
|
+
}], autocomplete: [{
|
|
410
|
+
type: HostBinding,
|
|
411
|
+
args: ['attr.autocomplete']
|
|
412
|
+
}], solarisInput: [{
|
|
413
|
+
type: HostBinding,
|
|
414
|
+
args: ['attr.solaris-input']
|
|
415
|
+
}], autocapitalize: [{
|
|
416
|
+
type: HostBinding,
|
|
417
|
+
args: ['attr.autocapitalize']
|
|
418
|
+
}], field: [{
|
|
419
|
+
type: Optional
|
|
420
|
+
}] } });
|
|
421
|
+
|
|
422
|
+
const SOLARIS_INPUT = new InjectionToken('SOLARIS_INPUT');
|
|
423
|
+
|
|
424
|
+
class InputTextDirective {
|
|
425
|
+
el = inject((ElementRef));
|
|
426
|
+
attr = '';
|
|
427
|
+
get placeholderAttr() {
|
|
428
|
+
return this.el.nativeElement.getAttribute('placeholder');
|
|
429
|
+
}
|
|
430
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InputTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
431
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: InputTextDirective, isStandalone: true, selector: "input[solaris-input],textarea[solaris-input]", host: { properties: { "attr.solaris-input": "this.attr", "attr.placeholder": "this.placeholderAttr" } }, providers: [
|
|
432
|
+
{
|
|
433
|
+
provide: SOLARIS_INPUT,
|
|
434
|
+
useFactory: () => {
|
|
435
|
+
const el = inject((ElementRef)).nativeElement;
|
|
436
|
+
return {
|
|
437
|
+
element: el,
|
|
438
|
+
setType: (type) => {
|
|
439
|
+
if (el instanceof HTMLInputElement)
|
|
440
|
+
el.type = type;
|
|
441
|
+
},
|
|
442
|
+
getType: () => (el instanceof HTMLInputElement ? el.type : 'textarea'),
|
|
443
|
+
};
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
], ngImport: i0 });
|
|
447
|
+
}
|
|
448
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: InputTextDirective, decorators: [{
|
|
449
|
+
type: Directive,
|
|
450
|
+
args: [{
|
|
451
|
+
selector: 'input[solaris-input],textarea[solaris-input]',
|
|
452
|
+
standalone: true,
|
|
453
|
+
providers: [
|
|
454
|
+
{
|
|
455
|
+
provide: SOLARIS_INPUT,
|
|
456
|
+
useFactory: () => {
|
|
457
|
+
const el = inject((ElementRef)).nativeElement;
|
|
458
|
+
return {
|
|
459
|
+
element: el,
|
|
460
|
+
setType: (type) => {
|
|
461
|
+
if (el instanceof HTMLInputElement)
|
|
462
|
+
el.type = type;
|
|
463
|
+
},
|
|
464
|
+
getType: () => (el instanceof HTMLInputElement ? el.type : 'textarea'),
|
|
465
|
+
};
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
],
|
|
469
|
+
}]
|
|
470
|
+
}], propDecorators: { attr: [{
|
|
471
|
+
type: HostBinding,
|
|
472
|
+
args: ['attr.solaris-input']
|
|
473
|
+
}], placeholderAttr: [{
|
|
474
|
+
type: HostBinding,
|
|
475
|
+
args: ['attr.placeholder']
|
|
476
|
+
}] } });
|
|
2
477
|
|
|
3
478
|
/**
|
|
4
479
|
* Generated bundle index. Do not edit.
|
|
5
480
|
*/
|
|
6
481
|
|
|
7
|
-
export {
|
|
482
|
+
export { FieldErrorComponent, FormField, InputTextDirective, PasswordToggle, SOLARIS_FORM_FIELD_CONTROLLER, SOLARIS_FORM_FIELD_FEATURES, SOLARIS_INPUT, SolarisControlBridgeDirective, SolarisEmailDirective, SolarisFormFieldController, SolarisPasswordDirective, SolarisPrefixDirective, SolarisSuffixDirective };
|
|
8
483
|
//# sourceMappingURL=educarehq-solaris-components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"educarehq-solaris-components.mjs","sources":["../../../projects/solaris-components/src/lib/version.ts","../../../projects/solaris-components/src/educarehq-solaris-components.ts"],"sourcesContent":["export const SOLARIS_COMPONENTS_VERSION = '0.0.1';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,0BAA0B,GAAG;;ACA1C;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"educarehq-solaris-components.mjs","sources":["../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-features.ts","../../../projects/solaris-components/src/lib/forms/form-field/controller/form-field-controller.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/solaris-control-bridge.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/solaris-prefix-directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/solaris-suffix-directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-controller.token.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.html","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.ts","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.html","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.ts","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.html","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-password.directive.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-email.directive.ts","../../../projects/solaris-components/src/lib/forms/input-text/tokens/solaris-input.token.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-text.directive.ts","../../../projects/solaris-components/src/educarehq-solaris-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldFeature {\r\n kind: 'email' | 'password';\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_FEATURES =\r\n new InjectionToken<ReadonlyArray<SolarisFormFieldFeature>>('SOLARIS_FORM_FIELD_FEATURES');\r\n","import { Injectable, Optional, effect, inject, signal } from '@angular/core';\r\nimport { NgControl, FormGroupDirective, NgForm, } from '@angular/forms';\r\n\r\nimport type { SolarisPasswordDirective } from '../../input-text/directives/input-password.directive';\r\nimport type { SolarisEmailDirective } from '../../input-text/directives/input-email.directive';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../tokens/form-field-features';\r\n\r\n@Injectable()\r\nexport class SolarisFormFieldController {\r\n features = inject(SOLARIS_FORM_FIELD_FEATURES, { optional: true }) ?? [];\r\n @Optional() private readonly ngForm = inject(NgForm, { optional: true });\r\n @Optional() private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\r\n\r\n readonly submitted = signal<boolean>(false);\r\n readonly control = signal<NgControl | null>(null);\r\n readonly email = signal<SolarisEmailDirective | null>(null);\r\n readonly password = signal<SolarisPasswordDirective | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n const fgSubmitted = this.formGroupDir?.submitted ?? false;\r\n const nfSubmitted = this.ngForm?.submitted ?? false;\r\n\r\n this.submitted.set((fgSubmitted || nfSubmitted));\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n registerPassword(dir: SolarisPasswordDirective | null) {\r\n this.password.set(dir);\r\n }\r\n\r\n registerEmail(dir: SolarisEmailDirective | null) {\r\n this.email.set(dir);\r\n }\r\n\r\n registerControl(ctrl: NgControl | null) {\r\n if (!ctrl && this.control()) return;\r\n this.control.set(ctrl);\r\n }\r\n\r\n passwordVisible(): boolean {\r\n return this.password()?.visible() ?? false;\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n this.password()?.toggle();\r\n }\r\n\r\n resetSubmitted() {\r\n this.submitted.set(false);\r\n }\r\n}\r\n","import { Directive, Optional, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\n\r\n@Directive({\r\n selector: 'input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n})\r\nexport class SolarisControlBridgeDirective {\r\n @Optional() private readonly ctrl = inject(NgControl, { optional: true });\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n constructor() {\r\n if (this.ctrl) this.field?.registerControl(this.ctrl);\r\n }\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-prefix]',\r\n})\r\nexport class SolarisPrefixDirective {\r\n @HostBinding('attr.solaris-prefix') readonly attr = '';\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-suffix]',\r\n standalone: true\r\n})\r\nexport class SolarisSuffixDirective {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldControllerLike {\r\n passwordVisible(): boolean\r\n togglePasswordVisibility(): void;\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_CONTROLLER =\r\n new InjectionToken<SolarisFormFieldControllerLike>('SOLARIS_FORM_FIELD_CONTROLLER');\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { SolarisTranslationParams, SolarisTranslationPipe } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-field-error',\r\n standalone: true,\r\n imports: [SolarisTranslationPipe],\r\n templateUrl: './field-error.html',\r\n styleUrls: ['./field-error.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FieldErrorComponent {\r\n @Input() public text?: string;\r\n @Input() public textKey?: string;\r\n @Input() public textParams?: SolarisTranslationParams;\r\n}\r\n","<div class=\"solaris-field-error\" role=\"alert\" aria-live=\"polite\">\r\n <span class=\"solaris-field-error__text\">\r\n @if (textKey) { {{ textKey | translate:textParams }} }\r\n @else { {{ text }} }\r\n </span>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Optional, inject } from '@angular/core';\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER, SolarisFormFieldControllerLike } from '../../form-field/tokens/form-field-controller.token';\r\n\r\n@Component({\r\n selector: 'solaris-password-toggle',\r\n standalone: true,\r\n templateUrl: './password-toggle.html',\r\n styleUrls: ['./password-toggle.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PasswordToggle {\r\n @HostBinding('attr.solaris-suffix') readonly solarisSuffix = '';\r\n @Optional() private readonly field = inject<SolarisFormFieldControllerLike>(SOLARIS_FORM_FIELD_CONTROLLER, { optional: true });\r\n\r\n protected visible = () => this.field?.passwordVisible() ?? false;\r\n\r\n protected toggle(): void {\r\n this.field?.togglePasswordVisibility();\r\n }\r\n protected get ariaLabelHide() { return 'Hide password'; }\r\n protected get ariaLabelShow() { return 'Show password'; }\r\n}\r\n","<button class=\"solaris-password-toggle\" type=\"button\" (click)=\"toggle()\" [attr.aria-pressed]=\"visible() ? 'true' : 'false'\"\r\n [attr.aria-label]=\"visible() ? ariaLabelHide : ariaLabelShow\">\r\n @if (visible()) { <i class=\"ph ph-eye-slash\"></i> }\r\n @else { <i class=\"ph ph-eye\"></i> }\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, computed, inject } from '@angular/core';\r\n\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER } from '../tokens/form-field-controller.token';\r\nimport { PasswordToggle } from '../../input-text/password-toggle/password-toggle';\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\nimport { SolarisPrefixDirective } from '../directives/solaris-prefix-directive';\r\nimport { SolarisSuffixDirective } from '../directives/solaris-suffix-directive';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { FieldErrorComponent } from '../messages/error/field-error';\r\n\r\n@Component({\r\n selector: 'solaris-form-field',\r\n standalone: true,\r\n imports: [\r\n PasswordToggle,\r\n FieldErrorComponent,\r\n SolarisTranslationPipe\r\n ],\r\n templateUrl: './form-field.html',\r\n styleUrls: ['./form-field.scss'],\r\n providers: [\r\n SolarisFormFieldController,\r\n { provide: SOLARIS_FORM_FIELD_CONTROLLER, useExisting: SolarisFormFieldController }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormField {\r\n private readonly field = inject(SolarisFormFieldController);\r\n @ContentChild(SolarisPrefixDirective) prefix?: SolarisPrefixDirective;\r\n @ContentChild(SolarisSuffixDirective) suffix?: SolarisSuffixDirective;\r\n\r\n @Input() public hint?: string = '';\r\n @Input() public label?: string = '';\r\n @Input() public hintKey?: string = '';\r\n @Input() public labelKey?: string = '';\r\n @Input() public invalid: boolean | null = null;\r\n @Input() public showErrors: 'dirtyOrTouched' | 'always' | 'submitted' = 'dirtyOrTouched';\r\n\r\n get hasPrefix(): boolean { return !!this.prefix; }\r\n get hasSuffix(): boolean { return !!this.suffix; }\r\n\r\n private getDirectErrorKey(errors: Record<string, any>): string {\r\n if (errors['required']) return 'ui.solaris.validation.required';\r\n if (errors['email'] || errors['solarisEmail']) return 'ui.solaris.validation.email';\r\n return '';\r\n }\r\n private getPasswordErrorKey(bag: any): string {\r\n if (bag?.minLength) return 'ui.solaris.validation.password.minLength';\r\n if (bag?.uppercase) return 'ui.solaris.validation.password.uppercase';\r\n if (bag?.lowercase) return 'ui.solaris.validation.password.lowercase';\r\n if (bag?.number) return 'ui.solaris.validation.password.number';\r\n if (bag?.special) return 'ui.solaris.validation.password.special';\r\n return 'ui.solaris.validation.password.invalid';\r\n }\r\n\r\n readonly showPasswordToggle = computed(() => !!this.field.password());\r\n readonly errorParams = computed(() => {\r\n if (!this.invalidComputed()) return undefined;\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return undefined;\r\n\r\n const bag = errors['solarisPassword'];\r\n if (bag?.minLength) return { requiredLength: bag.minLength.requiredLength };\r\n\r\n return undefined;\r\n });\r\n readonly invalidComputed = computed(() => {\r\n if (this.invalid !== null) return this.invalid;\r\n\r\n const c = this.field.control();\r\n if (!c) return false;\r\n\r\n if (this.showErrors === 'always') return !!c.invalid;\r\n if (this.showErrors === 'submitted') return !!(c.invalid && this.field.submitted());\r\n\r\n return !!(c.invalid && (c.touched || c.dirty));\r\n });\r\n readonly errorKey = computed(() => {\r\n if (!this.invalidComputed()) return '';\r\n const c = this.field.control();\r\n console.log('status', c?.status, 'errors', c?.errors, 'value', c?.value);\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return '';\r\n\r\n const direct = this.getDirectErrorKey(errors);\r\n if (direct) return direct;\r\n\r\n if (errors['solarisPassword']) return this.getPasswordErrorKey(errors['solarisPassword']);\r\n\r\n return 'solaris.validation.invalid';\r\n });\r\n}\r\n","<div class=\"solaris-form-field\" [class.solaris-form-field--has-prefix]=\"hasPrefix\"\r\n [attr.data-invalid]=\"invalidComputed() ? 'true' : null\">\r\n @if ((label || labelKey)) {\r\n <label class=\"solaris-form-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} }\r\n @else if (label) { {{ label }} }\r\n </label>\r\n }\r\n\r\n <div class=\"solaris-form-field__frame\">\r\n @if (hasPrefix) {\r\n <span class=\"solaris-form-field__prefix\" aria-hidden=\"true\">\r\n <ng-content select=\"[solaris-prefix]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-form-field__body\">\r\n <div class=\"solaris-form-field__control-slot\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasSuffix || showPasswordToggle() || invalidComputed()) {\r\n <span class=\"solaris-form-field__suffix\">\r\n <ng-content select=\"[solaris-suffix]\"></ng-content>\r\n\r\n @if (showPasswordToggle()) {\r\n <solaris-password-toggle></solaris-password-toggle>\r\n }\r\n\r\n @if (invalidComputed()) {\r\n <span class=\"solaris-form-field__status\" aria-hidden=\"true\">\r\n <i class=\"ph ph-warning-circle\"></i>\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (errorKey()) {\r\n <solaris-field-error [textKey]=\"errorKey()\" [textParams]=\"errorParams()\"></solaris-field-error>\r\n } @else {\r\n <ng-content select=\"[form-field-message]\"></ng-content>\r\n }\r\n\r\n @if (hint || hintKey) {\r\n <div class=\"solaris-form-field__hint\">\r\n @if (hintKey) { {{ hintKey | translate }} }\r\n @else { {{ hint }} }\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, HostBinding, Optional, inject, signal, WritableSignal, Input, forwardRef } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\nimport { SolarisPasswordErrorBag } from '../models/password-directive.type';\r\n\r\n\r\n@Directive({\r\n selector: 'input[solaris-password],input[solarisPassword]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisPasswordDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'password' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisPasswordDirective implements Validator {\r\n @Input() minLength = 8;\r\n @Input() requireUpper = true;\r\n @Input() requireLower = true;\r\n @Input() requireNumber = true;\r\n @Input() requireSpecial = false;\r\n\r\n @Input() set requireUpperKebab(v: any) { this.requireUpper = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireLowerKebab(v: any) { this.requireLower = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireNumberKebab(v: any) { this.requireNumber = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set minLengthKebab(v: any) { this.minLength = coerceNumber(v, 8); this._onChange?.(); }\r\n @Input() set requireSpecialKebab(v: any) { this.requireSpecial = coerceBoolean(v); this._onChange?.(); }\r\n\r\n @HostBinding('attr.type') get type() {\r\n return this.visible() ? 'text' : 'password';\r\n }\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.solaris-password') readonly marker = '';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @HostBinding('attr.autocomplete') autocomplete = 'current-password';\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n readonly visible: WritableSignal<boolean> = signal(false);\r\n\r\n private _onChange?: () => void;\r\n\r\n constructor() {\r\n this.field?.registerPassword(this);\r\n }\r\n\r\n public toggle(): void {\r\n this.visible.set(!this.visible());\r\n }\r\n\r\n public validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '');\r\n if (!v) return null;\r\n\r\n const errors: SolarisPasswordErrorBag = {};\r\n\r\n if (this.minLength && v.length < this.minLength) {\r\n errors.minLength = { requiredLength: this.minLength, actualLength: v.length };\r\n }\r\n if (this.requireLower && !/[a-z]/.test(v)) errors.lowercase = true;\r\n if (this.requireUpper && !/[A-Z]/.test(v)) errors.uppercase = true;\r\n if (this.requireNumber && !/\\d/.test(v)) errors.number = true;\r\n if (this.requireSpecial && !/[^\\w\\s]/.test(v)) errors.special = true;\r\n\r\n return Object.keys(errors).length ? { solarisPassword: errors } : null;\r\n }\r\n\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n\r\nfunction coerceNumber(v: any, fallback: number): number {\r\n const n = Number(v);\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n","import { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { Directive, forwardRef, HostBinding, inject, Optional } from '@angular/core';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\n\r\n@Directive({\r\n selector: 'input[solaris-email],input[solarisEmail]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisEmailDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'email' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisEmailDirective implements Validator {\r\n @HostBinding('attr.type') type = 'email';\r\n @HostBinding('attr.inputmode') inputmode = 'email';\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.autocomplete') autocomplete = 'email';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n constructor() {\r\n this.field?.registerEmail(this);\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '').trim();\r\n if (!v) return null;\r\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v);\r\n return ok ? null : { solarisEmail: true };\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisInputApi {\r\n element: HTMLInputElement | HTMLTextAreaElement;\r\n setType?(type: string): void;\r\n getType?(): string;\r\n}\r\n\r\nexport const SOLARIS_INPUT = new InjectionToken<SolarisInputApi>('SOLARIS_INPUT');\r\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\r\n\r\nimport { SOLARIS_INPUT, SolarisInputApi } from '../tokens/solaris-input.token';\r\n\r\n@Directive({\r\n selector: 'input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: SOLARIS_INPUT,\r\n useFactory: (): SolarisInputApi => {\r\n const el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>).nativeElement;\r\n return {\r\n element: el,\r\n setType: (type: string) => {\r\n if (el instanceof HTMLInputElement) el.type = type;\r\n },\r\n getType: () => (el instanceof HTMLInputElement ? el.type : 'textarea'),\r\n };\r\n },\r\n },\r\n ],\r\n})\r\nexport class InputTextDirective {\r\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\r\n @HostBinding('attr.solaris-input') readonly attr = '';\r\n @HostBinding('attr.placeholder') get placeholderAttr() {\r\n return this.el.nativeElement.getAttribute('placeholder');\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@educarehq/solaris-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^21.1.0",
|
|
6
6
|
"@angular/core": "^21.1.0",
|
|
7
|
-
"@educarehq/solaris-tokens": "^0.0.
|
|
7
|
+
"@educarehq/solaris-tokens": "^0.0.3",
|
|
8
|
+
"@educarehq/solaris-services": "^0.0.2"
|
|
8
9
|
},
|
|
9
10
|
"dependencies": {
|
|
10
11
|
"tslib": "^2.3.0"
|
|
@@ -1,3 +1,157 @@
|
|
|
1
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { WritableSignal, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _educarehq_solaris_components from '@educarehq/solaris-components';
|
|
4
|
+
import { Validator, AbstractControl, ValidationErrors, NgControl } from '@angular/forms';
|
|
5
|
+
import { SolarisTranslationParams } from '@educarehq/solaris-services';
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
declare class SolarisControlBridgeDirective {
|
|
8
|
+
private readonly ctrl;
|
|
9
|
+
private readonly field;
|
|
10
|
+
constructor();
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisControlBridgeDirective, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SolarisControlBridgeDirective, "input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class SolarisPrefixDirective {
|
|
16
|
+
readonly attr = "";
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisPrefixDirective, never>;
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SolarisPrefixDirective, "[solaris-prefix]", never, {}, {}, never, never, true, never>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare class SolarisSuffixDirective {
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisSuffixDirective, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SolarisSuffixDirective, "[solaris-suffix]", never, {}, {}, never, never, true, never>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare class SolarisPasswordDirective implements Validator {
|
|
27
|
+
minLength: number;
|
|
28
|
+
requireUpper: boolean;
|
|
29
|
+
requireLower: boolean;
|
|
30
|
+
requireNumber: boolean;
|
|
31
|
+
requireSpecial: boolean;
|
|
32
|
+
set requireUpperKebab(v: any);
|
|
33
|
+
set requireLowerKebab(v: any);
|
|
34
|
+
set requireNumberKebab(v: any);
|
|
35
|
+
set minLengthKebab(v: any);
|
|
36
|
+
set requireSpecialKebab(v: any);
|
|
37
|
+
get type(): "password" | "text";
|
|
38
|
+
spellcheck: string;
|
|
39
|
+
readonly marker = "";
|
|
40
|
+
readonly solarisInput = "";
|
|
41
|
+
autocapitalize: string;
|
|
42
|
+
autocomplete: string;
|
|
43
|
+
private readonly field;
|
|
44
|
+
readonly visible: WritableSignal<boolean>;
|
|
45
|
+
private _onChange?;
|
|
46
|
+
constructor();
|
|
47
|
+
toggle(): void;
|
|
48
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
49
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
50
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisPasswordDirective, never>;
|
|
51
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SolarisPasswordDirective, "input[solaris-password],input[solarisPassword]", never, { "minLength": { "alias": "minLength"; "required": false; }; "requireUpper": { "alias": "requireUpper"; "required": false; }; "requireLower": { "alias": "requireLower"; "required": false; }; "requireNumber": { "alias": "requireNumber"; "required": false; }; "requireSpecial": { "alias": "requireSpecial"; "required": false; }; "requireUpperKebab": { "alias": "requireUpperKebab"; "required": false; }; "requireLowerKebab": { "alias": "requireLowerKebab"; "required": false; }; "requireNumberKebab": { "alias": "requireNumberKebab"; "required": false; }; "minLengthKebab": { "alias": "minLengthKebab"; "required": false; }; "requireSpecialKebab": { "alias": "requireSpecialKebab"; "required": false; }; }, {}, never, never, true, never>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare class SolarisEmailDirective implements Validator {
|
|
55
|
+
type: string;
|
|
56
|
+
inputmode: string;
|
|
57
|
+
spellcheck: string;
|
|
58
|
+
autocomplete: string;
|
|
59
|
+
readonly solarisInput = "";
|
|
60
|
+
autocapitalize: string;
|
|
61
|
+
private readonly field;
|
|
62
|
+
constructor();
|
|
63
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
64
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisEmailDirective, never>;
|
|
65
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SolarisEmailDirective, "input[solaris-email],input[solarisEmail]", never, {}, {}, never, never, true, never>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare class SolarisFormFieldController {
|
|
69
|
+
features: readonly _educarehq_solaris_components.SolarisFormFieldFeature[];
|
|
70
|
+
private readonly ngForm;
|
|
71
|
+
private readonly formGroupDir;
|
|
72
|
+
readonly submitted: i0.WritableSignal<boolean>;
|
|
73
|
+
readonly control: i0.WritableSignal<NgControl | null>;
|
|
74
|
+
readonly email: i0.WritableSignal<SolarisEmailDirective | null>;
|
|
75
|
+
readonly password: i0.WritableSignal<SolarisPasswordDirective | null>;
|
|
76
|
+
constructor();
|
|
77
|
+
registerPassword(dir: SolarisPasswordDirective | null): void;
|
|
78
|
+
registerEmail(dir: SolarisEmailDirective | null): void;
|
|
79
|
+
registerControl(ctrl: NgControl | null): void;
|
|
80
|
+
passwordVisible(): boolean;
|
|
81
|
+
togglePasswordVisibility(): void;
|
|
82
|
+
resetSubmitted(): void;
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SolarisFormFieldController, never>;
|
|
84
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SolarisFormFieldController>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
interface SolarisFormFieldControllerLike {
|
|
88
|
+
passwordVisible(): boolean;
|
|
89
|
+
togglePasswordVisibility(): void;
|
|
90
|
+
}
|
|
91
|
+
declare const SOLARIS_FORM_FIELD_CONTROLLER: InjectionToken<SolarisFormFieldControllerLike>;
|
|
92
|
+
|
|
93
|
+
interface SolarisFormFieldFeature {
|
|
94
|
+
kind: 'email' | 'password';
|
|
95
|
+
}
|
|
96
|
+
declare const SOLARIS_FORM_FIELD_FEATURES: InjectionToken<readonly SolarisFormFieldFeature[]>;
|
|
97
|
+
|
|
98
|
+
declare class FieldErrorComponent {
|
|
99
|
+
text?: string;
|
|
100
|
+
textKey?: string;
|
|
101
|
+
textParams?: SolarisTranslationParams;
|
|
102
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FieldErrorComponent, never>;
|
|
103
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FieldErrorComponent, "solaris-field-error", never, { "text": { "alias": "text"; "required": false; }; "textKey": { "alias": "textKey"; "required": false; }; "textParams": { "alias": "textParams"; "required": false; }; }, {}, never, never, true, never>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
declare class FormField {
|
|
107
|
+
private readonly field;
|
|
108
|
+
prefix?: SolarisPrefixDirective;
|
|
109
|
+
suffix?: SolarisSuffixDirective;
|
|
110
|
+
hint?: string;
|
|
111
|
+
label?: string;
|
|
112
|
+
hintKey?: string;
|
|
113
|
+
labelKey?: string;
|
|
114
|
+
invalid: boolean | null;
|
|
115
|
+
showErrors: 'dirtyOrTouched' | 'always' | 'submitted';
|
|
116
|
+
get hasPrefix(): boolean;
|
|
117
|
+
get hasSuffix(): boolean;
|
|
118
|
+
private getDirectErrorKey;
|
|
119
|
+
private getPasswordErrorKey;
|
|
120
|
+
readonly showPasswordToggle: i0.Signal<boolean>;
|
|
121
|
+
readonly errorParams: i0.Signal<{
|
|
122
|
+
requiredLength: any;
|
|
123
|
+
} | undefined>;
|
|
124
|
+
readonly invalidComputed: i0.Signal<boolean>;
|
|
125
|
+
readonly errorKey: i0.Signal<string>;
|
|
126
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormField, never>;
|
|
127
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormField, "solaris-form-field", never, { "hint": { "alias": "hint"; "required": false; }; "label": { "alias": "label"; "required": false; }; "hintKey": { "alias": "hintKey"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "showErrors": { "alias": "showErrors"; "required": false; }; }, {}, ["prefix", "suffix"], ["[solaris-prefix]", "*", "[solaris-suffix]", "[form-field-message]"], true, never>;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare class InputTextDirective {
|
|
131
|
+
private readonly el;
|
|
132
|
+
readonly attr = "";
|
|
133
|
+
get placeholderAttr(): any;
|
|
134
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<InputTextDirective, never>;
|
|
135
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InputTextDirective, "input[solaris-input],textarea[solaris-input]", never, {}, {}, never, never, true, never>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
declare class PasswordToggle {
|
|
139
|
+
readonly solarisSuffix = "";
|
|
140
|
+
private readonly field;
|
|
141
|
+
protected visible: () => boolean;
|
|
142
|
+
protected toggle(): void;
|
|
143
|
+
protected get ariaLabelHide(): string;
|
|
144
|
+
protected get ariaLabelShow(): string;
|
|
145
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PasswordToggle, never>;
|
|
146
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PasswordToggle, "solaris-password-toggle", never, {}, {}, never, never, true, never>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
interface SolarisInputApi {
|
|
150
|
+
element: HTMLInputElement | HTMLTextAreaElement;
|
|
151
|
+
setType?(type: string): void;
|
|
152
|
+
getType?(): string;
|
|
153
|
+
}
|
|
154
|
+
declare const SOLARIS_INPUT: InjectionToken<SolarisInputApi>;
|
|
155
|
+
|
|
156
|
+
export { FieldErrorComponent, FormField, InputTextDirective, PasswordToggle, SOLARIS_FORM_FIELD_CONTROLLER, SOLARIS_FORM_FIELD_FEATURES, SOLARIS_INPUT, SolarisControlBridgeDirective, SolarisEmailDirective, SolarisFormFieldController, SolarisPasswordDirective, SolarisPrefixDirective, SolarisSuffixDirective };
|
|
157
|
+
export type { SolarisFormFieldControllerLike, SolarisFormFieldFeature, SolarisInputApi };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"educare-solaris-components.mjs","sources":["../../../projects/solaris-components/src/lib/version.ts","../../../projects/solaris-components/src/educare-solaris-components.ts"],"sourcesContent":["export const SOLARIS_COMPONENTS_VERSION = '0.0.1';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,0BAA0B,GAAG;;ACA1C;;AAEG;;;;"}
|