ngx-bar-rating
Version:
Angular Bar Rating
63 lines (62 loc) • 3.44 kB
TypeScript
import { Signal, InputSignal, ModelSignal, WritableSignal, OutputEmitterRef, InputSignalWithTransform } from '@angular/core';
import { ControlValueAccessor, Validator, UntypedFormControl } from '@angular/forms';
import { ActiveRating, FractionRating, InactiveRating } from './custom-rating';
import { BarRatingOptions } from './bar-rating.model';
import * as i0 from "@angular/core";
declare enum BarRatingUnitStateEnum {
active = "active",
inactive = "inactive",
selected = "selected",
fraction = "fraction"
}
type BarRatingUnitState = `${BarRatingUnitStateEnum}`;
export declare class BarRating implements ControlValueAccessor, Validator {
readonly defaultOptions: BarRatingOptions;
onChange: OnChangeFn<number>;
onTouched: OnTouchedFn;
readonly UNITS: typeof BarRatingUnitStateEnum;
disabled: boolean;
/** Current rating. Can be a decimal value like 3.14 */
rate: ModelSignal<number>;
/** Maximal rating that can be given using this widget. */
max: InputSignalWithTransform<number, number | string>;
/** A flag indicating if rating can be updated. */
readonly: InputSignalWithTransform<boolean, string | boolean>;
/** Set the theme */
theme: InputSignal<string>;
/** Show rating title */
showText: InputSignalWithTransform<boolean, string | boolean>;
/** Replace rate value with a title */
titles: InputSignal<string[]>;
/** A flag indicating if rating is required for form validation. */
required: InputSignalWithTransform<boolean, string | boolean>;
tabIndex: InputSignalWithTransform<number, number | string>;
hoveredIndex: WritableSignal<number>;
contexts: Signal<BarRatingUnitState[]>;
ratingText: Signal<string | number>;
/**
* A stream that forwards a bar rating click since clicks are not propagated
*/
barClick: OutputEmitterRef<number>;
customActiveRating: Signal<ActiveRating>;
customInActiveRating: Signal<InactiveRating>;
customFractionRating: Signal<FractionRating>;
updateRating(value: number): void;
/**
* This is the initial value set to the component
*/
writeValue(value: number): void;
validate(c: UntypedFormControl): {
required: boolean;
} | null;
registerOnChange(fn: OnChangeFn<number>): void;
registerOnTouched(fn: () => OnTouchedFn): void;
setDisabledState(isDisabled: boolean): void;
handleKeydown(event: KeyboardEvent): void;
handleClick(event: MouseEvent): void;
static ɵfac: i0.ɵɵFactoryDeclaration<BarRating, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BarRating, "bar-rating", never, { "rate": { "alias": "rate"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "showText": { "alias": "showText"; "required": false; "isSignal": true; }; "titles": { "alias": "titles"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; }, { "rate": "rateChange"; "barClick": "barClick"; }, ["customActiveRating", "customInActiveRating", "customFractionRating"], never, true, never>;
}
type OnChangeFn<T> = (value: T) => void;
type OnTouchedFn = () => void;
export {};