@webilix/ngx-form-m3 0.0.13 → 0.0.14
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/webilix-ngx-form-m3.mjs +40 -0
- package/fesm2022/webilix-ngx-form-m3.mjs.map +1 -1
- package/lib/inputs/icon/input-icon.component.d.ts +14 -0
- package/lib/inputs/icon/input-icon.interface.d.ts +9 -0
- package/lib/inputs/index.d.ts +2 -0
- package/lib/inputs/input.component.d.ts +5 -0
- package/lib/ngx-form.interface.d.ts +2 -2
- package/ngx-form-m3.css +20 -0
- package/package.json +1 -1
|
@@ -654,6 +654,45 @@ class InputFileMethods extends InputMethods {
|
|
|
654
654
|
}
|
|
655
655
|
}
|
|
656
656
|
|
|
657
|
+
class InputIconComponent {
|
|
658
|
+
formControl = inject(INPUT_CONTROL);
|
|
659
|
+
input = inject(INPUT_TYPE);
|
|
660
|
+
config = inject(INPUT_CONFIG);
|
|
661
|
+
values;
|
|
662
|
+
isButtonDisabled;
|
|
663
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: InputIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
664
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: InputIconComponent, isStandalone: true, selector: "ng-component", inputs: { values: "values", isButtonDisabled: "isButtonDisabled" }, host: { attributes: { "selector": "input-icon" } }, ngImport: i0, template: "<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || '\u0622\u06CC\u06A9\u0648\u0646' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-icon-input\">\n @if (formControl.value) {\n <mat-icon>{{ formControl.value }}</mat-icon>\n }\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: AutoCompleteDirective, selector: "input[type=\"text\"]" }, { kind: "directive", type: AutoFocusDirective, selector: "[AutoFocusDirective]", inputs: ["AutoFocusDirective"] }, { kind: "pipe", type: InputErrorPipe, name: "InputErrorPipe" }, { kind: "pipe", type: MultiLinePipe, name: "MultiLinePipe" }] });
|
|
665
|
+
}
|
|
666
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: InputIconComponent, decorators: [{
|
|
667
|
+
type: Component,
|
|
668
|
+
args: [{ host: { selector: 'input-icon' }, imports: [
|
|
669
|
+
ReactiveFormsModule,
|
|
670
|
+
MatFormField,
|
|
671
|
+
MatIcon,
|
|
672
|
+
MatIconButton,
|
|
673
|
+
MatInputModule,
|
|
674
|
+
AutoCompleteDirective,
|
|
675
|
+
AutoFocusDirective,
|
|
676
|
+
InputErrorPipe,
|
|
677
|
+
MultiLinePipe,
|
|
678
|
+
], template: "<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || '\u0622\u06CC\u06A9\u0648\u0646' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-icon-input\">\n @if (formControl.value) {\n <mat-icon>{{ formControl.value }}</mat-icon>\n }\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n" }]
|
|
679
|
+
}], propDecorators: { values: [{
|
|
680
|
+
type: Input,
|
|
681
|
+
args: [{ required: true }]
|
|
682
|
+
}], isButtonDisabled: [{
|
|
683
|
+
type: Input,
|
|
684
|
+
args: [{ required: true }]
|
|
685
|
+
}] } });
|
|
686
|
+
|
|
687
|
+
class InputIconMethods extends InputMethods {
|
|
688
|
+
control(input, validators) {
|
|
689
|
+
return new FormControl(input.value || null, validators);
|
|
690
|
+
}
|
|
691
|
+
value(value, input) {
|
|
692
|
+
return typeof value === 'string' && value !== '' ? value : null;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
|
|
657
696
|
class InputIpComponent {
|
|
658
697
|
formControl = inject(INPUT_CONTROL);
|
|
659
698
|
input = inject(INPUT_TYPE);
|
|
@@ -1212,6 +1251,7 @@ const InputInfo = {
|
|
|
1212
1251
|
DATE: { title: 'تاریخ', methods: new InputDateMethods(), component: InputDateComponent },
|
|
1213
1252
|
EMAIL: { title: 'ایمیل', methods: new InputEmailMethods(), component: InputEmailComponent },
|
|
1214
1253
|
FILE: { title: 'فایل', methods: new InputFileMethods(), component: InputFileComponent },
|
|
1254
|
+
ICON: { title: 'آیکون', methods: new InputIconMethods(), component: InputIconComponent },
|
|
1215
1255
|
IP: { title: 'آدرس آیپی', methods: new InputIpMethods(), component: InputIpComponent },
|
|
1216
1256
|
MOBILE: { title: 'موبایل', methods: new InputMobileMethods(), component: InputMobileComponent },
|
|
1217
1257
|
MOMENT: { title: 'زمان', methods: new InputMomentMethods(), component: InputMomentComponent },
|