UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

204 lines (203 loc) 6.99 kB
import { FormControl, FormGroup } from '@angular/forms'; import * as i0 from "@angular/core"; /** Possible textarea style variants */ export type textareaVariantProps = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | null | undefined; /** Possible textarea size variants */ export type textareaSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined; /** Configuration object for textarea styling */ export type textareaProps = { variant?: textareaVariantProps; size?: textareaSizeProps; }; /** * A customizable textarea component with form integration and validation features * * @remarks * Supports character counting, debounced input, and automatic validation styling. * Implements ControlValueAccessor for Angular form compatibility. * * @example * ```html * <!-- Basic textarea usage --> * <st-textarea * [(value)]="description" * label="Description" * maxCharacters="500" * ></st-textarea> * ``` * * @example * ```html * <!-- Reactive form integration --> * <st-textarea * [parentForm]="userForm" * formControlName="bio" * variant="primary" * debounceTime="300" * ></st-textarea> * ``` */ export declare class TextareaComponent { /** * Textarea style variant * @defaultValue 'secondary' */ variant: import("@angular/core").InputSignal<textareaVariantProps>; /** * Textarea size variant * @defaultValue 'md' */ size: import("@angular/core").InputSignal<textareaSizeProps>; /** * Whether to use ghost (transparent) styling * @defaultValue false */ ghost: import("@angular/core").InputSignal<boolean>; /** * Label displayed above the textarea */ label: import("@angular/core").InputSignal<string | null>; /** * HTML name attribute for the textarea */ name: import("@angular/core").InputSignal<string | null>; /** * Placeholder text when empty */ placeholder: import("@angular/core").InputSignal<string>; /** * Number of visible text rows * @defaultValue 3 */ rows: import("@angular/core").InputSignal<string | number>; /** * Whether the textarea is readonly * @defaultValue false */ readonly: import("@angular/core").InputSignal<boolean>; /** * Whether the textarea is disabled * @defaultValue false */ disabled: import("@angular/core").ModelSignal<boolean>; /** * Event emitted on textarea blur */ blurred: import("@angular/core").OutputEmitterRef<string>; /** @internal */ private blurTrigger; /** * Two-way bindable textarea value */ value: import("@angular/core").ModelSignal<string>; /** * Maximum allowed character count * @defaultValue 0 (unlimited) */ maxCharacters: import("@angular/core").InputSignal<number>; /** * Whether current value exceeds maxCharacters * @internal */ invalidMaxCharacters: import("@angular/core").Signal<boolean>; /** * Parent form group for reactive forms */ parentForm: import("@angular/core").InputSignal<FormGroup<any> | null>; /** * Form control name for reactive forms */ formControlName: import("@angular/core").InputSignal<string>; /** * @internal * Gets associated form control */ get formField(): FormControl | null; /** @internal */ private onControlChange; /** @internal */ private onControlTouch; /** * Event emitted on Enter key press */ enterPressed: import("@angular/core").OutputEmitterRef<string>; /** * Debounce time in milliseconds for valueDebounced output * @defaultValue 500 */ debounceTime: import("@angular/core").InputSignal<number>; /** * Event emitted after debounce time when value changes */ valueDebounced: import("@angular/core").OutputEmitterRef<string>; /** @internal */ private debounceAction$; /** @internal */ private debounceTimeEffect; /** @internal */ private value$; constructor(); /** * @internal * Computed base textarea classes */ componentClass: import("@angular/core").Signal<string>; /** * @internal * Computed error state classes */ errorClass: import("@angular/core").Signal<string>; /** * @internal * Computed success state classes */ successClass: import("@angular/core").Signal<string>; /** * @internal * Computed character counter error classes */ errorClassMaxCharacters: import("@angular/core").Signal<string>; writeValue(obj: any): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; /** * @internal * Handles input changes */ handleChange(): void; /** * @internal * Handles Enter key press */ handleEnter(): void; /** * @internal * Handles blur event */ handleBlur(): void; /** @internal */ private formControl; /** @internal */ private formControl$; /** @internal */ private statusChanges$; /** @internal */ private stateChanges$; /** @internal */ private statusSignal; /** @internal */ private stateSignal; /** * @internal * Computed validation classes based on form state */ validationClass: import("@angular/core").Signal<string>; /** * @internal * Sets up debounce mechanism for value changes */ private setupDebounce; static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "st-textarea", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ghost": { "alias": "ghost"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "parentForm": { "alias": "parentForm"; "required": false; "isSignal": true; }; "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "blurred": "blurred"; "value": "valueChange"; "enterPressed": "enterPressed"; "valueDebounced": "valueDebounced"; }, never, ["*"], true, never>; }