import { LiveAnnouncer } from '@angular/cdk/a11y'; import { SelectionModel } from '@angular/cdk/collections'; import { CdkConnectedOverlay, ConnectedPosition, Overlay, ScrollStrategy, ViewportRuler } from '@angular/cdk/overlay'; import { AfterContentInit, ChangeDetectorRef, DoCheck, ElementRef, EventEmitter, InjectionToken, NgZone, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core'; import { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms'; import { CanColor, CanDisable, CanUpdateErrorState, ErrorStateMatcher, HasTabIndex, ThemePalette, ThemeSize } from '@ngx-simple/core/common-behaviors'; import { NgClassInterface, NgStringOrTemplateRef, OnChangeType, OnTouchedType, SafeAny } from '@ngx-simple/core/types'; import { SimFormFieldComponent, SimFormFieldControl } from '@ngx-simple/simple-ui/form-field'; import { SimOptgroupComponent, SimOptionComponent, SimOptionSelectionChange } from '@ngx-simple/simple-ui/option'; import { SimPseudoCheckboxState } from '@ngx-simple/simple-ui/pseudo-checkbox'; import { Observable, Subject } from 'rxjs'; import { SimSelectTriggerDirective } from './select.directive'; /** * Select可以接收的值 字符串 数字 */ export declare type SelectValue = Array | string | number; /** 当选择值发生更改时发出的更改事件对象。 */ export declare class SimSelectChange { /** 引用发出更改事件的select。 */ source: SimSelectComponent; /** 发出事件的select的当前值。 */ value: T | T[]; constructor( /** 引用发出更改事件的select。 */ source: SimSelectComponent, /** 发出事件的select的当前值。 */ value: T | T[]); } declare class SimSelectBase { _elementRef: ElementRef; _defaultErrorStateMatcher: ErrorStateMatcher; _parentForm: NgForm; _parentFormGroup: FormGroupDirective; ngControl: NgControl; constructor(_elementRef: ElementRef, _defaultErrorStateMatcher: ErrorStateMatcher, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, ngControl: NgControl); } /** 注入令牌,用于在打开选择面板时确定滚动处理。 */ export declare const SIM_SELECT_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; export declare function SIM_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy; export declare const SIM_SELECT_SCROLL_STRATEGY_PROVIDER: { provide: InjectionToken<() => ScrollStrategy>; deps: (typeof Overlay)[]; useFactory: typeof SIM_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY; }; declare const _SimSelectMixinBase: import("../../../dist/libs/core/common-behaviors/constructor").Constructor & import("../../../dist/libs/core/common-behaviors/constructor").Constructor & import("../../../dist/libs/core/common-behaviors/constructor").Constructor & import("../../../dist/libs/core/common-behaviors/constructor").Constructor & import("../../../dist/libs/core/common-behaviors/constructor").Constructor & typeof SimSelectBase; export declare class SimSelectComponent extends _SimSelectMixinBase implements OnChanges, OnInit, AfterContentInit, DoCheck, OnDestroy, ControlValueAccessor, CanDisable, CanColor, HasTabIndex, CanUpdateErrorState, SimFormFieldControl { private _viewportRuler; private _changeDetector; private _ngZone; private _parentFormField; ngControl: NgControl; private _liveAnnouncer; size: ThemeSize; disabled: boolean; color: ThemePalette; /** * 是否多选模式 * 注意:初始化成功以后不能修改,简单理解这个属性时单次设置,不能动态绑定 */ get multiple(): boolean; set multiple(value: boolean); private _multiple; /** 是否只读 */ readonly: boolean; get value(): SelectValue; set value(newValue: SelectValue); private _value; get placeholder(): string; set placeholder(value: string); private _placeholder; get required(): boolean; set required(value: boolean); private _required; get id(): string; set id(value: string); private _id; /** * 函数的作用是: 将选项值与所选值进行比较。 * 第一个参数是一个选项的值。 * 第二个是来自选择的值。 * 返回一个布尔值。 */ get compareWith(): (o1: SafeAny, o2: SafeAny) => boolean; set compareWith(fn: (o1: SafeAny, o2: SafeAny) => boolean); private _compareWith; /** 防抖 在上一次按键之后等待的毫秒数,然后将焦点移到某个项目上。 */ get typeaheadDebounceInterval(): number; set typeaheadDebounceInterval(value: number); private _typeaheadDebounceInterval; /** * 用于在多模式下的选择中对值进行排序的函数。 * 遵循与Array.prototype.sort相同的逻辑。 */ sortComparator: (a: SimOptionComponent, b: SimOptionComponent, options: SimOptionComponent[]) => number; /** * 要传递给选择面板的class。支持与`ngClass`相同的语法 * 注意:class要在`ViewEncapsulation.none`模式下才会生效 */ panelClass: NgClassInterface; /** 没有内容 */ notFoundContent: NgStringOrTemplateRef; /** 全选标签 */ selectAllLabel: string; errorStateMatcher: ErrorStateMatcher; /** 切换选择面板时发出的事件 */ readonly openedChange: EventEmitter; /** 打开选择时发出的事件 */ readonly opened: Observable; /** 关闭选择时发出的事件 */ readonly closed: Observable; /** * 当用户更改所选值时发出的事件 */ readonly selectionChange: EventEmitter>; /** * 该事件在选择的原始值发生更改时发出。这主要是为了方便"[(Value)]"输入的双向绑定 */ readonly valueChange: EventEmitter; /** 包含选择选项的面板 */ panel: ElementRef; /** 触发打开select面板的DOM。 */ trigger: ElementRef; /** 包含选项的选择面板 */ overlayDir: CdkConnectedOverlay; /** 用户提供的触发器元素 */ customTrigger: SimSelectTriggerDirective; /** 所有定义的选择选项 */ options: QueryList; /** 所有定义的选择选项组 */ optionGroups: QueryList; get empty(): boolean; /** 触发器的值 */ get triggerValue(): string; /** 获取选中的项 */ get selected(): SimOptionComponent | SimOptionComponent[]; /** 获取面板主题 */ get panelTheme(): string; /** 处理选择逻辑 */ _selectionModel: SelectionModel; /** 选择面板的 transform-origin 属性的值 */ _transformOrigin: string; /** * 位置策略,如果不满足展示将会选择回退处理 */ _positions: ConnectedPosition[]; /** 选择面板相对于触发器顶部开始的y偏移量。 */ _offsetY: number; /** 搜索中 */ searching: boolean; _controlValueAccessorChangeFn: OnChangeType; _onTouched: OnTouchedType; get focused(): boolean; private _focused; controlType: string; autofilled: boolean; /** 在选择面板打开时将用于处理滚动的策略 */ _scrollStrategy: ScrollStrategy; /** 触发器的客户端边界矩形的最后一个测量值 */ _triggerRect: ClientRect; /** 当面板元素动画完成后发出 */ _panelDoneAnimatingStream: Subject; /** 全选复选框的状态 */ _selectAllState: SimPseudoCheckboxState; /** 所有子选项的更改事件的组合流 */ readonly optionSelectionChanges: Observable; /** 覆盖面板是否打开 */ get panelOpen(): boolean; private _scrollStrategyFactory; private _uid; private _panelOpen; /** 覆盖面板的滚动位置,计算以使所选选项居中 */ private _scrollTop; /** 滚动的索引 */ private scrolledIndex; /** 管理面板中选项的键盘事件 */ private _keyManager; constructor(_viewportRuler: ViewportRuler, _changeDetector: ChangeDetectorRef, _ngZone: NgZone, _defaultErrorStateMatcher: ErrorStateMatcher, elementRef: ElementRef, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _parentFormField: SimFormFieldComponent, ngControl: NgControl, tabIndex: string, scrollStrategyFactory: any, _liveAnnouncer: LiveAnnouncer); ngOnChanges(changes: SimpleChanges): void; ngOnInit(): void; ngDoCheck(): void; ngAfterContentInit(): void; ngOnDestroy(): void; writeValue(value: SelectValue): void; registerOnChange(fn: OnChangeType): void; registerOnTouched(fn: OnTouchedType): void; setDisabledState(isDisabled: boolean): void; /** 确保从键盘激活时选择该选项 */ _handleKeydown(event: KeyboardEvent): void; _onFocus(): void; _onBlur(): void; /** * 在附加覆盖面板时调用的回调 */ _onAttached(): void; onContainerClick(): void; setDescribedByIds(ids: string[]): void; /** 清除value */ clearValue(event: Event): void; /** 全选处理 */ selectAll(event: Event): void; /** 切换覆盖面板的打开或关闭 */ toggle(): void; open(): void; close(): void; /** 聚焦当前元素 */ focus(options?: FocusOptions): void; private _initializeSelection; /** 设置按键管理器以监听覆盖面板上的键盘事件 */ private _initKeyManager; /** * 突出显示选中的项目。如果没有选择,它将突出显示第一项。 */ private _highlightCorrectOption; /** 将活动选项滚动到视图中 */ private _scrollActiveOptionIntoView; /** 单击选项时调用 */ private _onSelect; /** 发出change事件以设置模型值 */ private _propagateChanges; /** 根据面板中所选值的顺序对所选值进行排序 */ private _sortValues; /** 删除当前的选项订阅和ID并从头开始重置 */ private _resetOptions; private _calculateOverlayPosition; private _calculateOverlayScroll; /** 获取选项列表中提供的选项的索引 */ private _getOptionIndex; /** 计算选择项的数量。 这包括选项和组标签。 */ private _getItemCount; /** 计算选择选项的高度 */ private _getItemHeight; /** * 根据值设置所选选项。如果无法找到具有指定值的选项,则清除select触发器。 */ private _setSelectionByValue; /** * 查找并选择,然后根据其值进行选择 * @returns 具有相应值的选项 */ private _selectValue; /** 设置全选的状态 */ private setSelectAllState; /** 处理选择器打开时的键盘事件 */ private _handleOpenKeydown; /** 在选择器关闭时处理键盘事件 */ private _handleClosedKeydown; private _markForCheck; } export {};