UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 12.7 kB
{"version":3,"file":"primeng-textarea.mjs","sources":["../../src/textarea/style/textareastyle.ts","../../src/textarea/textarea.ts","../../src/textarea/primeng-textarea.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/textarea';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: ({ instance }) => [\n 'p-textarea p-component',\n {\n 'p-filled': instance.$filled(),\n 'p-textarea-resizable ': instance.autoResize(),\n 'p-variant-filled': instance.$variant() === 'filled',\n 'p-textarea-fluid': instance.hasFluid,\n 'p-inputfield-sm p-textarea-sm': instance.pSize() === 'small',\n 'p-textarea-lg p-inputfield-lg': instance.pSize() === 'large',\n 'p-invalid': instance.invalid()\n }\n ]\n};\n\n@Injectable()\nexport class TextareaStyle extends BaseStyle {\n name = 'textarea';\n\n style = style;\n\n classes = classes;\n}\n\n/**\n *\n * Textarea is a multi-line text input element.\n *\n * [Live Demo](https://www.primeng.org/textarea/)\n *\n * @module textareastyle\n *\n */\nexport enum TextareaClasses {\n /**\n * Class name of the root element\n */\n root = 'p-textarea'\n}\n\nexport interface TextareaStyle extends BaseStyle {}\n","import { booleanAttribute, computed, DestroyRef, Directive, effect, HostListener, inject, InjectionToken, input, NgModule, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseModelHolder } from 'primeng/basemodelholder';\nimport { Bind } from 'primeng/bind';\nimport { Fluid } from 'primeng/fluid';\nimport type { InputSize, InputVariant } from 'primeng/types/shared';\nimport type { TextareaPassThrough } from 'primeng/types/textarea';\nimport { TextareaStyle } from './style/textareastyle';\n\nconst TEXTAREA_INSTANCE = new InjectionToken<Textarea>('TEXTAREA_INSTANCE');\n\n/**\n * Textarea adds styling and autoResize functionality to standard textarea element.\n * @group Components\n */\n@Directive({\n selector: '[pTextarea], [pInputTextarea]',\n standalone: true,\n host: {\n '[class]': \"cx('root')\"\n },\n providers: [TextareaStyle, { provide: TEXTAREA_INSTANCE, useExisting: Textarea }, { provide: PARENT_INSTANCE, useExisting: Textarea }],\n hostDirectives: [Bind]\n})\nexport class Textarea extends BaseModelHolder<TextareaPassThrough> {\n componentName = 'Textarea';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n $pcTextarea: Textarea | undefined = inject(TEXTAREA_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n /**\n * Used to pass attributes to DOM elements inside the Textarea component.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaPT = input<TextareaPassThrough>();\n /**\n * Indicates whether the component should be rendered without styles.\n * @defaultValue undefined\n * @group Props\n */\n pTextareaUnstyled = input<boolean | undefined>();\n\n /**\n * When present, textarea size changes as being typed.\n * @group Props\n */\n autoResize = input(false, { transform: booleanAttribute });\n /**\n * Defines the size of the component.\n * @group Props\n */\n pSize = input<InputSize>();\n /**\n * Specifies the input variant of the component.\n * @defaultValue undefined\n * @group Props\n */\n variant = input<InputVariant>();\n /**\n * Spans 100% width of the container when enabled.\n * @defaultValue undefined\n * @group Props\n */\n fluid = input(false, { transform: booleanAttribute });\n /**\n * When present, it specifies that the component should have invalid state style.\n * @defaultValue false\n * @group Props\n */\n invalid = input(false, { transform: booleanAttribute });\n\n $variant = computed(() => this.variant() || this.config.inputVariant());\n /**\n * Callback to invoke on textarea resize.\n * @param {(Event | {})} event - Custom resize event.\n * @group Emits\n */\n onResize = output<Event | {}>();\n\n get hasFluid() {\n return this.fluid() ?? !!this.pcFluid;\n }\n\n _componentStyle = inject(TextareaStyle);\n\n ngControl = inject(NgControl, { optional: true, self: true });\n\n pcFluid: Fluid | null = inject(Fluid, { optional: true, host: true, skipSelf: true });\n\n destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n effect(() => {\n const pt = this.pTextareaPT();\n pt && this.directivePT.set(pt);\n });\n\n effect(() => {\n this.pTextareaUnstyled() && this.directiveUnstyled.set(this.pTextareaUnstyled());\n });\n }\n\n onInit() {\n if (this.ngControl && (this.ngControl as any).valueChanges) {\n (this.ngControl as any).valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.updateState();\n });\n }\n }\n\n onAfterViewInit() {\n if (this.autoResize()) this.resize();\n\n this.cd.detectChanges();\n }\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n if (this.autoResize()) {\n this.resize();\n }\n this.writeModelValue(this.ngControl?.value ?? this.el.nativeElement.value);\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n this.writeModelValue((e.target as HTMLTextAreaElement)?.value);\n this.updateState();\n }\n\n resize(event?: Event) {\n this.el.nativeElement.style.height = 'auto';\n this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n this.el.nativeElement.style.overflowY = 'scroll';\n this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n } else {\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n this.onResize.emit(event || {});\n }\n\n updateState() {\n if (this.autoResize()) {\n this.resize();\n }\n }\n}\n\n@NgModule({\n imports: [Textarea],\n exports: [Textarea]\n})\nexport class TextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}