import { FocusMonitor } from '@angular/cdk/a11y'; import { UniqueSelectionDispatcher } from '@angular/cdk/collections'; import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DoCheck, ElementRef, EventEmitter, InjectionToken, OnChanges, OnDestroy, OnInit, QueryList } from '@angular/core'; import { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms'; import { CanUpdateErrorState, ErrorStateMatcher, ThemePalette } from '@ngx-simple/core/common-behaviors'; import { OnChangeType, OnTouchedType, SafeAny } from '@ngx-simple/core/types'; import { SimFormFieldControl } from '@ngx-simple/simple-ui/form-field'; export interface SimRadioDefaultOptions { color: ThemePalette; } export declare class SimRadioGroupBase { _defaultErrorStateMatcher: ErrorStateMatcher; _parentForm: NgForm; _parentFormGroup: FormGroupDirective; ngControl: NgControl; constructor(_defaultErrorStateMatcher: ErrorStateMatcher, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, ngControl: NgControl); } export declare const _SimRadioGroupMixinBase: import("../../../dist/libs/core/common-behaviors/constructor").Constructor & typeof SimRadioGroupBase; export declare const SIM_RADIO_DEFAULT_OPTIONS: InjectionToken; export declare function SIM_RADIO_DEFAULT_OPTIONS_FACTORY(): SimRadioDefaultOptions; /** * Radio可以接收的值 字符串 数字 布尔值 */ export declare type RadioValue = string | number | boolean; /** * 单选按钮标签显示的位置 */ export declare type RadioLabelPosition = 'before' | 'after'; /** SimRadio 和 SimRadioGroup 发出的 change事件对象。 */ export declare class SimRadioChange { /** 发出change事件的sim-radio */ source: SimRadioComponent; /** sim-radio的值 */ value: RadioValue; constructor( /** 发出change事件的sim-radio */ source: SimRadioComponent, /** sim-radio的值 */ value: RadioValue); } export declare class SimRadioGroupDirective extends _SimRadioGroupMixinBase implements SimFormFieldControl, AfterContentInit, ControlValueAccessor, OnChanges, DoCheck, OnDestroy, CanUpdateErrorState { ngControl: NgControl; private _changeDetector; /** 单选按钮组的名称。这个组中的所有单选按钮都将使用这个名称。 */ get name(): string; set name(value: string); private _name; /** 标签应该出现在单选按钮之后还是之前。默认为 after */ get labelPosition(): RadioLabelPosition; set labelPosition(v: RadioLabelPosition); /** * 单选按钮组的值。 * 如果存在一个具有匹配值的单选按钮,则该值应等于所选单选按钮的值。 * 如果没有这样的单选按钮,则在添加具有匹配值的新单选按钮的情况下,将继续应用此值。 */ get value(): RadioValue; set value(newValue: RadioValue); /** * 当前选择的单选按钮。如果设置为新的单选按钮,则单选组值将被更新以匹配新选中的按钮。 */ get selected(): SimRadioComponent | null; set selected(selected: SimRadioComponent | null); /** 单选按钮组是否禁用 */ get disabled(): boolean; set disabled(value: boolean); /** 单选按钮组是否必填 */ get required(): boolean; set required(value: boolean); /** 单选按钮主题 */ color: ThemePalette; id: string; errorStateMatcher: ErrorStateMatcher; placeholder: string; focused: boolean; get empty(): boolean; controlType: string; autofilled: boolean; /** * 当此单选按钮的选中状态更改时发出的事件。 * 只有当 value 是由于用户与单选按钮交互而发生更改时才会发出 change 事件(与``相同的行为)。 */ readonly change: EventEmitter; _radios: QueryList; private _labelPosition; private _value; private _selected; private _disabled; private _required; /** value 是否被设置为初始值。 */ private _isInitialized; _controlValueAccessorChangeFn: OnChangeType; _onTouched: OnTouchedType; constructor(_defaultErrorStateMatcher: ErrorStateMatcher, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, ngControl: NgControl, _changeDetector: ChangeDetectorRef); ngAfterContentInit(): void; ngOnChanges(): void; ngDoCheck(): void; ngOnDestroy(): void; writeValue(value: RadioValue): void; registerOnChange(fn: OnChangeType): void; registerOnTouched(fn: OnTouchedType): void; setDisabledState(isDisabled: boolean): void; onContainerClick(): void; setDescribedByIds(ids: string[]): void; _checkSelectedRadioButton(): void; _touch(): void; /** 具有当前选择和组值的派送更改事件。 */ _emitChangeEvent(): void; private _markRadiosForCheck; /** 从内部_value状态更新selected单选按钮。 */ private _updateSelectedRadioFromValue; private _updateRadioButtonNames; } export declare class SimRadioComponent implements OnInit, AfterViewInit, OnDestroy { private _elementRef; private _changeDetectorRef; private _focusMonitor; private _radioDispatcher; private _providerOverride?; /** 单选按钮主题 */ get color(): ThemePalette; set color(value: ThemePalette); private _color; /** 单选按钮是否选中 */ get checked(): boolean; set checked(value: boolean); /** 单选按钮是否禁用 */ get disabled(): boolean; set disabled(value: boolean); /** 单选按钮的焦点 */ get tabIndex(): number; set tabIndex(value: number); private _tabIndex; /** 单选按钮的值 */ get value(): RadioValue; set value(value: RadioValue); /** 标签应该出现在单选按钮之后还是之前。默认为 after */ get labelPosition(): RadioLabelPosition; set labelPosition(value: RadioLabelPosition); private _labelPosition; /** 单选按钮是否必填 */ get required(): boolean; set required(value: boolean); private _required; /** * 当此单选按钮的选中状态更改时发出的事件。 * 只有当 value 是由于用户与单选按钮交互而发生更改时才会发出 change 事件(与``相同的行为)。 */ readonly change: EventEmitter; /** 绑定自定义数据 */ data: SafeAny; /** 单选按钮的唯一ID */ id: string; /** 与HTML的name属性类似,用于对radio-group以进行唯一选择 */ name: string; /** 获取 `` */ _inputElement: ElementRef; /** 设置隐藏input的id */ get inputId(): string; radioGroup: SimRadioGroupDirective; private _checked; private _disabled; private _uniqueId; private _value; private _removeUniqueSelectionListener; constructor(radioGroup: SimRadioGroupDirective, _elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _focusMonitor: FocusMonitor, _radioDispatcher: UniqueSelectionDispatcher, _providerOverride?: SimRadioDefaultOptions); ngOnInit(): void; ngAfterViewInit(): void; ngOnDestroy(): void; /** * 在正常情况下,焦点不应该落在这个元素上,但是它可以通过编程设置, * 例如在焦点捕捉中,在这种情况下,我们希望将焦点转发给原生元素。 */ _focus(): void; /** radio 键盘聚焦 */ focus(options?: FocusOptions): void; _markForCheck(): void; /** 当单选按钮接收到单击或意识到更改时触发。单击