ng-devui
Version:
DevUI components based on Angular
264 lines (258 loc) • 25 kB
JavaScript
import { __decorate, __metadata } from 'tslib';
import * as i0 from '@angular/core';
import { Directive, Optional, Self, Inject, Input, HostBinding, forwardRef, Component, ViewChild, NgModule } from '@angular/core';
import * as i2 from '@angular/forms';
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
import * as i2$1 from 'ng-devui/utils';
import { WithConfig } from 'ng-devui/utils';
import { DOCUMENT, CommonModule } from '@angular/common';
class TextareaDirective {
get hasGlowStyle() {
return this.showGlowStyle;
}
get gray() {
return this.styleType === 'gray';
}
constructor(ngModel, doc, devConfigService, el, render) {
this.ngModel = ngModel;
this.doc = doc;
this.devConfigService = devConfigService;
this.el = el;
this.render = render;
this.maxLengthBlocker = false;
this.maxLengthCounter = false;
this.resize = 'none';
this.rows = 3;
this.styleType = 'default';
this.showGlowStyle = true;
this.fontSize = 12;
this.document = this.doc;
const root = getComputedStyle(this.document.querySelector(':root'));
this.fontSize = parseInt(root.getPropertyValue('--devui-font-size-sm'), 10) || 12;
}
ngAfterViewInit() {
this.setMaxLengthBlocker();
this.setMaxLengthCounter();
// 监听 ngModel 变化
const max = this.el.nativeElement.maxLength;
const rules = [!!this.ngModel, this.maxLengthCounter, !!max];
if (!rules.includes(false)) {
this.ngModel.valueChanges.subscribe((value) => {
const content = value || this.el.nativeElement.value || '';
this.counterInner.textContent = `${content.length}/${max}`;
});
}
}
ngOnDestroy() {
if (this.checkMaxLength) {
this.checkMaxLength();
}
if (this.getMaxLength) {
this.getMaxLength();
}
if (this.resizeWatcher) {
this.resizeWatcher.unobserve();
}
}
setMaxLengthBlocker() {
if (this.maxLengthBlocker) {
this.checkMaxLength = this.render.listen(this.el.nativeElement, 'compositionupdate', () => {
/**
* 通过失焦中断composition输入事件规避chrome textarea中文符号输入超出最大宽度问题,如浏览器修复该问题可移除此方法
* 复现步骤:
* 1. 输若干入内容
* 2. 回车换行
* 3. 粘贴内容至最大长度
* 4. 输入中文等触发composition事件输入法的符号
*/
const max = this.el.nativeElement.maxLength;
const len = (this.el.nativeElement.textContent || this.el.nativeElement.value).length;
if (max <= len) {
this.el.nativeElement.blur();
this.el.nativeElement.focus();
}
});
}
}
setMaxLengthCounter() {
const max = this.el.nativeElement.maxLength;
if (this.maxLengthCounter && max) {
const length = this.ngModel?.model ? this.ngModel.model.length : this.el.nativeElement.value.length;
this.counter = this.document.createElement('span');
this.counter.className = 'devui-textarea-counter';
this.counterInner = this.document.createElement('i');
this.counterInner.textContent = `${length}/${max}`;
this.counterInner.style.width = `${(String(max).length * 2 + 1) * this.fontSize}px`;
this.counter.appendChild(this.counterInner);
this.el.nativeElement.after(this.counter);
this.checkMaxLength = this.render.listen(this.el.nativeElement, 'input', () => {
this.counterInner.textContent = `${this.el.nativeElement.value.length}/${max}`;
});
this.resizeWatcher = new ResizeObserver(() => {
this.counter.style.left = `${this.el.nativeElement.offsetWidth - this.counterInner.offsetWidth}px`;
this.counter.style.top = `${this.el.nativeElement.offsetHeight - this.counter.offsetHeight}px`;
}).observe(this.el.nativeElement);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaDirective, deps: [{ token: i2.NgModel, optional: true, self: true }, { token: DOCUMENT }, { token: i2$1.DevConfigService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TextareaDirective, selector: "[dTextarea]", inputs: { maxLengthBlocker: "maxLengthBlocker", maxLengthCounter: "maxLengthCounter", resize: "resize", error: "error", rows: "rows", styleType: "styleType", showGlowStyle: "showGlowStyle" }, host: { properties: { "style.resize": "this.resize", "class.error": "this.error", "attr.rows": "this.rows", "class.devui-glow-style": "this.hasGlowStyle", "class.devui-gray-style": "this.gray" } }, exportAs: ["dTextarea"], ngImport: i0 }); }
}
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaDirective.prototype, "styleType", void 0);
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaDirective.prototype, "showGlowStyle", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaDirective, decorators: [{
type: Directive,
args: [{
selector: '[dTextarea]',
exportAs: 'dTextarea',
}]
}], ctorParameters: () => [{ type: i2.NgModel, decorators: [{
type: Optional
}, {
type: Self
}] }, { type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: i2$1.DevConfigService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { maxLengthBlocker: [{
type: Input
}], maxLengthCounter: [{
type: Input
}], resize: [{
type: Input
}, {
type: HostBinding,
args: ['style.resize']
}], error: [{
type: Input
}, {
type: HostBinding,
args: ['class.error']
}], rows: [{
type: Input
}, {
type: HostBinding,
args: ['attr.rows']
}], styleType: [{
type: Input
}], showGlowStyle: [{
type: Input
}], hasGlowStyle: [{
type: HostBinding,
args: ['class.devui-glow-style']
}], gray: [{
type: HostBinding,
args: ['class.devui-gray-style']
}] } });
class TextareaMaxLengthComponent {
constructor(el, devConfigService) {
this.el = el;
this.devConfigService = devConfigService;
this.disabled = false;
this.error = false;
this.maxLengthBlocker = false;
this.rows = 3;
this.resize = 'none';
this.styleType = 'default';
this.showGlowStyle = true;
this.onChange = (_) => null;
this.onTouch = () => null;
}
ngAfterViewInit() {
this.textareaElement = this.el.nativeElement.querySelector('textarea');
}
registerOnChange(fn) {
this.onChange = fn;
}
registerOnTouched(fn) {
this.onTouch = fn;
}
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
writeValue(val) {
this.value = val;
}
valueChanges(val) {
this.value = val;
this.onChange(val);
this.onTouch();
}
blurEvent() {
const event = new Event('blur', { bubbles: false, cancelable: true });
this.el.nativeElement.dispatchEvent(event);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, deps: [{ token: i0.ElementRef }, { token: i2$1.DevConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextareaMaxLengthComponent, selector: "d-textarea-max-length", inputs: { disabled: "disabled", error: "error", maxLength: "maxLength", maxLengthBlocker: "maxLengthBlocker", placeholder: "placeholder", rows: "rows", maxWidth: "maxWidth", maxHeight: "maxHeight", resize: "resize", styleType: "styleType", showGlowStyle: "showGlowStyle" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => TextareaMaxLengthComponent),
multi: true,
},
], viewQueries: [{ propertyName: "textareaInstance", first: true, predicate: TextareaDirective, descendants: true }], ngImport: i0, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"], dependencies: [{ kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TextareaDirective, selector: "[dTextarea]", inputs: ["maxLengthBlocker", "maxLengthCounter", "resize", "error", "rows", "styleType", "showGlowStyle"], exportAs: ["dTextarea"] }] }); }
}
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaMaxLengthComponent.prototype, "styleType", void 0);
__decorate([
WithConfig(),
__metadata("design:type", Object)
], TextareaMaxLengthComponent.prototype, "showGlowStyle", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, decorators: [{
type: Component,
args: [{ selector: 'd-textarea-max-length', providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => TextareaMaxLengthComponent),
multi: true,
},
], preserveWhitespaces: false, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"] }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i2$1.DevConfigService }], propDecorators: { textareaInstance: [{
type: ViewChild,
args: [TextareaDirective]
}], disabled: [{
type: Input
}], error: [{
type: Input
}], maxLength: [{
type: Input
}], maxLengthBlocker: [{
type: Input
}], placeholder: [{
type: Input
}], rows: [{
type: Input
}], maxWidth: [{
type: Input
}], maxHeight: [{
type: Input
}], resize: [{
type: Input
}], styleType: [{
type: Input
}], showGlowStyle: [{
type: Input
}] } });
class TextareaModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TextareaModule, declarations: [TextareaDirective, TextareaMaxLengthComponent], imports: [CommonModule, FormsModule], exports: [TextareaDirective, TextareaMaxLengthComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaModule, imports: [CommonModule, FormsModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaModule, decorators: [{
type: NgModule,
args: [{
imports: [CommonModule, FormsModule],
exports: [TextareaDirective, TextareaMaxLengthComponent],
declarations: [TextareaDirective, TextareaMaxLengthComponent],
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { TextareaDirective, TextareaMaxLengthComponent, TextareaModule };
//# sourceMappingURL=ng-devui-textarea.mjs.map