@ng-nest/ui 20.2.4 → 20.2.5
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/bubble/index.d.ts +20 -2
- package/checkbox/index.d.ts +1 -1
- package/core/index.d.ts +3 -0
- package/fesm2022/ng-nest-ui-attachments.mjs +0 -1
- package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-bubble.mjs +101 -18
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +8 -4
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +8 -10
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +25 -7
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/package.json +74 -74
- package/radio/index.d.ts +1 -1
- package/textarea/index.d.ts +34 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, Component, viewChild, computed, inject, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
|
2
|
+
import { input, output, Component, viewChild, signal, computed, inject, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
3
|
import { XToBoolean, XToNumber, XToCssPixelValue, XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';
|
|
4
4
|
import { XFormControlFunction, XValueAccessor } from '@ng-nest/ui/base-form';
|
|
5
5
|
import { NgClass } from '@angular/common';
|
|
@@ -56,6 +56,16 @@ class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {
|
|
|
56
56
|
* @en_US height
|
|
57
57
|
*/
|
|
58
58
|
this.height = input('6rem', ...(ngDevMode ? [{ debugName: "height", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
|
|
59
|
+
/**
|
|
60
|
+
* @zh_CN 浮动标签
|
|
61
|
+
* @en_US Float label
|
|
62
|
+
*/
|
|
63
|
+
this.floatLabel = input(this.config?.floatLabel ?? null, ...(ngDevMode ? [{ debugName: "floatLabel" }] : []));
|
|
64
|
+
/**
|
|
65
|
+
* @zh_CN 固定浮动标签
|
|
66
|
+
* @en_US Fixed float label
|
|
67
|
+
*/
|
|
68
|
+
this.floatFixed = input(this.config?.floatFixed ?? false, ...(ngDevMode ? [{ debugName: "floatFixed", transform: XToBoolean }] : [{ transform: XToBoolean }]));
|
|
59
69
|
/**
|
|
60
70
|
* @zh_CN 输入提示信息
|
|
61
71
|
* @en_US Enter prompt information
|
|
@@ -128,17 +138,18 @@ class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {
|
|
|
128
138
|
this.clearEmit = output();
|
|
129
139
|
}
|
|
130
140
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XTextareaProperty, isStandalone: true, selector: "x-textarea-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconLayout: { classPropertyName: "iconLayout", publicName: "iconLayout", isSignal: true, isRequired: false, transformFunction: null }, iconSpin: { classPropertyName: "iconSpin", publicName: "iconSpin", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearEmit: "clearEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
141
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XTextareaProperty, isStandalone: true, selector: "x-textarea-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconLayout: { classPropertyName: "iconLayout", publicName: "iconLayout", isSignal: true, isRequired: false, transformFunction: null }, iconSpin: { classPropertyName: "iconSpin", publicName: "iconSpin", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, floatFixed: { classPropertyName: "floatFixed", publicName: "floatFixed", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearEmit: "clearEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
132
142
|
}
|
|
133
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaProperty, decorators: [{
|
|
134
144
|
type: Component,
|
|
135
145
|
args: [{ selector: `${XTextareaPrefix}-property`, template: '' }]
|
|
136
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLayout", required: false }] }], iconSpin: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSpin", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], clearEmit: [{ type: i0.Output, args: ["clearEmit"] }] } });
|
|
146
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLayout", required: false }] }], iconSpin: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSpin", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], floatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatLabel", required: false }] }], floatFixed: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatFixed", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], clearEmit: [{ type: i0.Output, args: ["clearEmit"] }] } });
|
|
137
147
|
|
|
138
148
|
class XTextareaComponent extends XTextareaProperty {
|
|
139
149
|
constructor() {
|
|
140
150
|
super(...arguments);
|
|
141
151
|
this.textareaRef = viewChild.required('textareaRef');
|
|
152
|
+
this.focused = signal(false, ...(ngDevMode ? [{ debugName: "focused" }] : []));
|
|
142
153
|
this.valueLength = computed(() => {
|
|
143
154
|
if (this.maxlength()) {
|
|
144
155
|
return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;
|
|
@@ -159,11 +170,12 @@ class XTextareaComponent extends XTextareaProperty {
|
|
|
159
170
|
return false;
|
|
160
171
|
}
|
|
161
172
|
}, ...(ngDevMode ? [{ debugName: "clearShow" }] : []));
|
|
173
|
+
this.hasValue = computed(() => !XIsEmpty(this.value()), ...(ngDevMode ? [{ debugName: "hasValue" }] : []));
|
|
162
174
|
this.getIcon = computed(() => !XIsEmpty(this.icon()), ...(ngDevMode ? [{ debugName: "getIcon" }] : []));
|
|
163
175
|
this.getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left', ...(ngDevMode ? [{ debugName: "getIconLayoutLeft" }] : []));
|
|
164
176
|
this.getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right', ...(ngDevMode ? [{ debugName: "getIconLayoutRight" }] : []));
|
|
165
|
-
this.paddingLeft = computed(() => (this.getIconLayoutLeft() ? 2.
|
|
166
|
-
this.paddingRight = computed(() => (this.getIconLayoutRight() ? 2.
|
|
177
|
+
this.paddingLeft = computed(() => (this.getIconLayoutLeft() ? `2.15rem` : `0.75rem`), ...(ngDevMode ? [{ debugName: "paddingLeft" }] : []));
|
|
178
|
+
this.paddingRight = computed(() => (this.getIconLayoutRight() ? `2.15rem` : `0.75rem`), ...(ngDevMode ? [{ debugName: "paddingRight" }] : []));
|
|
167
179
|
this.configService = inject(XConfigService);
|
|
168
180
|
this.classMap = computed(() => ({
|
|
169
181
|
[`${XTextareaPrefix}-${this.size()}`]: !!this.size(),
|
|
@@ -189,12 +201,18 @@ class XTextareaComponent extends XTextareaProperty {
|
|
|
189
201
|
this.clearEmit.emit(clearValue);
|
|
190
202
|
this.textareaRef().nativeElement.focus();
|
|
191
203
|
}
|
|
204
|
+
onFocus(_event) {
|
|
205
|
+
this.focused.set(true);
|
|
206
|
+
}
|
|
207
|
+
onBlur(_event) {
|
|
208
|
+
this.focused.set(false);
|
|
209
|
+
}
|
|
192
210
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XTextareaComponent, isStandalone: true, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:500}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
211
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XTextareaComponent, isStandalone: true, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:500;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem)}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea-row{flex:1;display:flex;align-items:center}.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea-float-label{position:relative;display:flex!important;align-items:center!important;flex-direction:row!important}.x-textarea-float-label>label{position:absolute;pointer-events:none;transition:all var(--x-animation-duration-base) ease;line-height:1!important;height:initial!important;z-index:2}.x-textarea-float-label>label.x-textarea-label-required{display:flex;align-items:center;padding-left:var(--x-font-size-mini)}.x-textarea-float-label>label.x-textarea-label-required:before{position:absolute;left:0;top:.125rem}.x-textarea-float-label-over>label,.x-textarea-float-label-on>label,.x-textarea-float-label-in>label{top:.75rem}.x-textarea-float-label-over.x-textarea-focus>label,.x-textarea-float-label-over.x-textarea-has-value>label,.x-textarea-float-label-over.x-textarea-active>label,.x-textarea-float-label-over.x-textarea-float-fixed>label{top:calc(0% - (var(--x-font-size) + var(--x-padding-medium) * .5))}.x-textarea-float-label-on.x-textarea-focus>label,.x-textarea-float-label-on.x-textarea-has-value>label,.x-textarea-float-label-on.x-textarea-active>label,.x-textarea-float-label-on.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini);background-color:var(--x-background);top:calc(0% - var(--x-font-size-small) * .5)}.x-textarea-float-label-in>label{height:calc(var(--x-font-size) + .875rem)!important;line-height:calc(var(--x-font-size) + .875rem)!important;width:calc(100% - var(--x-border-width) * 2);margin-left:0!important;padding-left:.75rem;background-color:var(--x-background);top:var(--x-border-width);left:var(--x-border-width);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius)}.x-textarea-float-label-in.x-textarea-focus>label,.x-textarea-float-label-in.x-textarea-has-value>label,.x-textarea-float-label-in.x-textarea-active>label,.x-textarea-float-label-in.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini)}.x-textarea-float-label-in.x-textarea-focus .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-has-value .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-active .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-float-fixed .x-textarea-row>textarea{padding-top:calc(0% + var(--x-padding-medium) * .75 + 1rem)}.x-textarea{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
194
212
|
}
|
|
195
213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaComponent, decorators: [{
|
|
196
214
|
type: Component,
|
|
197
|
-
args: [{ selector: `${XTextareaPrefix}`, imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:500}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea{margin:0;padding:0}\n"] }]
|
|
215
|
+
args: [{ selector: `${XTextareaPrefix}`, imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:500;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem)}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea-row{flex:1;display:flex;align-items:center}.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea-float-label{position:relative;display:flex!important;align-items:center!important;flex-direction:row!important}.x-textarea-float-label>label{position:absolute;pointer-events:none;transition:all var(--x-animation-duration-base) ease;line-height:1!important;height:initial!important;z-index:2}.x-textarea-float-label>label.x-textarea-label-required{display:flex;align-items:center;padding-left:var(--x-font-size-mini)}.x-textarea-float-label>label.x-textarea-label-required:before{position:absolute;left:0;top:.125rem}.x-textarea-float-label-over>label,.x-textarea-float-label-on>label,.x-textarea-float-label-in>label{top:.75rem}.x-textarea-float-label-over.x-textarea-focus>label,.x-textarea-float-label-over.x-textarea-has-value>label,.x-textarea-float-label-over.x-textarea-active>label,.x-textarea-float-label-over.x-textarea-float-fixed>label{top:calc(0% - (var(--x-font-size) + var(--x-padding-medium) * .5))}.x-textarea-float-label-on.x-textarea-focus>label,.x-textarea-float-label-on.x-textarea-has-value>label,.x-textarea-float-label-on.x-textarea-active>label,.x-textarea-float-label-on.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini);background-color:var(--x-background);top:calc(0% - var(--x-font-size-small) * .5)}.x-textarea-float-label-in>label{height:calc(var(--x-font-size) + .875rem)!important;line-height:calc(var(--x-font-size) + .875rem)!important;width:calc(100% - var(--x-border-width) * 2);margin-left:0!important;padding-left:.75rem;background-color:var(--x-background);top:var(--x-border-width);left:var(--x-border-width);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius)}.x-textarea-float-label-in.x-textarea-focus>label,.x-textarea-float-label-in.x-textarea-has-value>label,.x-textarea-float-label-in.x-textarea-active>label,.x-textarea-float-label-in.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini)}.x-textarea-float-label-in.x-textarea-focus .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-has-value .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-active .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-float-fixed .x-textarea-row>textarea{padding-top:calc(0% + var(--x-padding-medium) * .75 + 1rem)}.x-textarea{margin:0;padding:0}\n"] }]
|
|
198
216
|
}], propDecorators: { textareaRef: [{ type: i0.ViewChild, args: ['textareaRef', { isSignal: true }] }] } });
|
|
199
217
|
|
|
200
218
|
class XTextareaModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-textarea.mjs","sources":["../../../../lib/ng-nest/ui/textarea/textarea.property.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.html","../../../../lib/ng-nest/ui/textarea/textarea.module.ts","../../../../lib/ng-nest/ui/textarea/ng-nest-ui-textarea.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XDirection,\r\n XAlign,\r\n XJustify,\r\n XTemplate,\r\n XVariant\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Textarea\r\n * @selector x-textarea\r\n * @decorator component\r\n */\r\nexport const XTextareaPrefix = 'x-textarea';\r\nconst X_TEXTAREA_CONFIG_NAME = 'textarea';\r\n\r\n/**\r\n * Textarea Property\r\n */\r\n@Component({ selector: `${XTextareaPrefix}-property`, template: '' })\r\nexport class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XTextareaVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XTextareaIconLayoutType>('right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n readonly height = input<string, XNumber>('6rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n}\r\n\r\n/**\r\n * Textarea Option\r\n */\r\nexport interface XTextareaOption extends XFormOption {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XTextareaVariant;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XTextareaIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XTextareaIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XTextareaVariant = XVariant;\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XTextareaPrefix, XTextareaProperty } from './textarea.property';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTextareaPrefix}`,\r\n imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTextareaComponent)]\r\n})\r\nexport class XTextareaComponent extends XTextareaProperty {\r\n textareaRef = viewChild.required<ElementRef<HTMLElement>>('textareaRef');\r\n\r\n valueLength = computed(() => {\r\n if (this.maxlength()) {\r\n return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;\r\n }\r\n return 0;\r\n });\r\n lengthTotal = computed(() => {\r\n if (this.maxlength()) {\r\n return `${this.valueLength()}/${this.maxlength()}`;\r\n }\r\n return '';\r\n });\r\n\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n\r\n getIcon = computed(() => !XIsEmpty(this.icon()));\r\n getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left');\r\n getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right');\r\n paddingLeft = computed(() => (this.getIconLayoutLeft() ? 2.15 : 0.75));\r\n paddingRight = computed(() => (this.getIconLayoutRight() ? 2.15 : 0.75));\r\n\r\n configService = inject(XConfigService);\r\n\r\n classMap = computed(() => ({\r\n [`${XTextareaPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n change(value: any) {\r\n if (this.onChange) this.onChange(value);\r\n if (this.validatorComputed() && XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.change(this.value());\r\n this.clearEmit.emit(clearValue);\r\n this.textareaRef().nativeElement.focus();\r\n }\r\n}\r\n","<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n exports: [XTextareaComponent],\r\n imports: [XTextareaComponent]\r\n})\r\nexport class XTextareaModule {}\r\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":"ng-nest-ui-textarea.mjs","sources":["../../../../lib/ng-nest/ui/textarea/textarea.property.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.html","../../../../lib/ng-nest/ui/textarea/textarea.module.ts","../../../../lib/ng-nest/ui/textarea/ng-nest-ui-textarea.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XDirection,\r\n XAlign,\r\n XJustify,\r\n XTemplate,\r\n XVariant,\r\n XFloatLabel\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Textarea\r\n * @selector x-textarea\r\n * @decorator component\r\n */\r\nexport const XTextareaPrefix = 'x-textarea';\r\nconst X_TEXTAREA_CONFIG_NAME = 'textarea';\r\n\r\n/**\r\n * Textarea Property\r\n */\r\n@Component({ selector: `${XTextareaPrefix}-property`, template: '' })\r\nexport class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XTextareaVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XTextareaIconLayoutType>('right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n readonly height = input<string, XNumber>('6rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XTextareaFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n}\r\n\r\n/**\r\n * Textarea Option\r\n */\r\nexport interface XTextareaOption extends XFormOption {\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XTextareaFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XTextareaVariant;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XTextareaIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XTextareaIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XTextareaVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XTextareaFloatLabel = XFloatLabel;\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XTextareaPrefix, XTextareaProperty } from './textarea.property';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTextareaPrefix}`,\r\n imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTextareaComponent)]\r\n})\r\nexport class XTextareaComponent extends XTextareaProperty {\r\n textareaRef = viewChild.required<ElementRef<HTMLElement>>('textareaRef');\r\n focused = signal(false);\r\n\r\n valueLength = computed(() => {\r\n if (this.maxlength()) {\r\n return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;\r\n }\r\n return 0;\r\n });\r\n lengthTotal = computed(() => {\r\n if (this.maxlength()) {\r\n return `${this.valueLength()}/${this.maxlength()}`;\r\n }\r\n return '';\r\n });\r\n\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n hasValue = computed(() => !XIsEmpty(this.value()));\r\n\r\n getIcon = computed(() => !XIsEmpty(this.icon()));\r\n getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left');\r\n getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right');\r\n paddingLeft = computed(() => (this.getIconLayoutLeft() ? `2.15rem` : `0.75rem`));\r\n paddingRight = computed(() => (this.getIconLayoutRight() ? `2.15rem` : `0.75rem`));\r\n\r\n configService = inject(XConfigService);\r\n\r\n classMap = computed(() => ({\r\n [`${XTextareaPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n change(value: any) {\r\n if (this.onChange) this.onChange(value);\r\n if (this.validatorComputed() && XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.change(this.value());\r\n this.clearEmit.emit(clearValue);\r\n this.textareaRef().nativeElement.focus();\r\n }\r\n\r\n onFocus(_event: Event) {\r\n this.focused.set(true);\r\n }\r\n\r\n onBlur(_event: Event) {\r\n this.focused.set(false);\r\n }\r\n}\r\n","<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n exports: [XTextareaComponent],\r\n imports: [XTextareaComponent]\r\n})\r\nexport class XTextareaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|