@sixbell-telco/sdk
Version:
A collection of reusable components designed for use in Sixbell Telco Angular projects
171 lines (170 loc) • 6.28 kB
TypeScript
import { FormGroup } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import * as i0 from "@angular/core";
/** Possible select dropdown style variants */
export type SelectVariantProps = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'info' | 'success' | 'error' | 'warning' | null | undefined;
/** Possible select dropdown size variants */
export type SelectSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined;
/** Configuration object for select styling */
export type SelectProps = {
variant?: SelectVariantProps;
size?: SelectSizeProps;
};
/**
* A customizable select dropdown component with form integration
*
* @remarks
* Supports both primitive and object options with configurable tracking properties.
* Implements ControlValueAccessor for Angular form compatibility.
*
* @example
* ```html
* <!-- Basic usage with primitive values -->
* <st-select
* [options]="['Option 1', 'Option 2']"
* [(value)]="selectedValue"
* ></st-select>
* ```
*
* @example
* ```html
* <!-- Object options with custom tracking -->
* <st-select
* [options]="users"
* trackBy="id"
* key="name"
* label="Select user"
* [parentForm]="userForm"
* formControlName="selectedUser"
* ></st-select>
* ```
*/
export declare class SelectComponent {
/** @internal Translation service instance */
translateService: TranslateService;
/**
* Select dropdown style variant
* @defaultValue 'secondary'
*/
variant: import("@angular/core").InputSignal<SelectVariantProps>;
/**
* Select dropdown size variant
* @defaultValue 'md'
*/
size: import("@angular/core").InputSignal<SelectSizeProps>;
/**
* Whether to use ghost (transparent) styling
* @defaultValue false
*/
ghost: import("@angular/core").InputSignal<boolean>;
/**
* HTML name attribute for the select
*/
name: import("@angular/core").InputSignal<string | null>;
/**
* Placeholder text when no option is selected
*/
placeholder: import("@angular/core").InputSignal<string>;
/**
* Label text displayed above the select
*/
label: import("@angular/core").InputSignal<string>;
/**
* Two-way bindable selected value
*/
value: import("@angular/core").ModelSignal<any>;
/**
* Array of available options (primitives or objects)
*/
options: import("@angular/core").InputSignal<any[]>;
/**
* Text to display when no options are available
*/
emptyOptionText: import("@angular/core").InputSignal<string | undefined>;
/**
* Property name for tracking object options
* @defaultValue 'id'
*/
trackBy: import("@angular/core").InputSignal<string>;
/**
* Property name for displaying object options
* @defaultValue 'name'
*/
key: import("@angular/core").InputSignal<string>;
/**
* 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>;
/**
* Event emitted when select loses focus
*/
blurred: import("@angular/core").OutputEmitterRef<unknown>;
private onControlChange;
private onControlTouch;
/**
* Whether the select is disabled
* @defaultValue false
*/
disabled: import("@angular/core").ModelSignal<boolean>;
/**
* Event emitted when selection changes
*/
valueUpdated: import("@angular/core").OutputEmitterRef<any>;
/**
* @internal
* Checks if options are primitive values
*/
simpleOption: import("@angular/core").Signal<boolean>;
/**
* @internal
* Computed base select 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>;
writeValue(obj: any): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setDisabledState(isDisabled: boolean): void;
/**
* @internal
* Handles selection changes
*/
handleSelect(): void;
/**
* @internal
* Handles blur event
*/
handleBlur(): void;
private blurTrigger;
private formControl;
private formControl$;
private statusChanges$;
private stateChanges$;
private statusSignal;
private stateSignal;
/**
* @internal
* Computed validation classes based on form state
*/
validationClass: import("@angular/core").Signal<string>;
/**
* @internal
* Validates trackBy and key configuration
*/
isValidTrackAndKey: import("@angular/core").Signal<boolean>;
static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "st-select", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ghost": { "alias": "ghost"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "emptyOptionText": { "alias": "emptyOptionText"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; "parentForm": { "alias": "parentForm"; "required": false; "isSignal": true; }; "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "blurred": "blurred"; "disabled": "disabledChange"; "valueUpdated": "valueUpdated"; }, never, ["*"], true, never>;
}