@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
239 lines (238 loc) • 8.25 kB
TypeScript
import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, AfterViewInit, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
import { WindowRef } from '@duoduo-oba/ng-devui/window-ref';
import { I18nService, I18nInterface } from '@duoduo-oba/ng-devui/i18n';
import { VerticalConnectionPos, ConnectedOverlayPositionChange, CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
export declare class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, OnChanges {
private renderer;
private windowRef;
private changeDetectorRef;
private i18n;
private ngZone;
isOpen: boolean;
/**
* 【必选】下拉选项资源,支持Array<string>, Array<{key: value}>
*/
options: any[];
/**
* 【可选】是否支持过滤搜索
*/
isSearch: boolean;
/**
* 【可选】是否支持聚焦自动展开下拉
*/
toggleOnFocus: boolean;
/**
* 【可选】下拉菜单高度,建议使用px作为高度单位
*/
scrollHight: string;
/**
* 【可选】下拉高亮css
*/
hightLightItemClass: string;
/**
* 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段做过滤操作
*/
filterKey: string;
/**
* 【可选】是否支持多选
*/
multiple: boolean;
/**
* 【可选】是否支持全选
*/
isSelectAll: boolean;
/**
* 【可选】是否可以输入
*/
readonly: boolean;
/**
* 【可选】下拉选框尺寸
*/
size: '' | 'sm' | 'lg';
/**
* 【可选】是否appendToBody
*/
appendToBody: boolean;
/**
* 【可选】cdk模式origin width
*/
width: number;
/**
* 【可选】模板高度
*/
templateItemSize: number;
/**
* 【可选】是否禁用下拉框
*/
disabled: boolean;
/**
* 【可选】下拉默认显示文字
*/
placeholder: string;
/**
* 【可选】搜索函数,当需要自定义下拉选择过滤规则时可以使用
* 请保证返回值有id和option字段,id是确保尤其多选的时候能正确索引对应选项
* 简单实现参考:
* search = (term) => {
* return of(
* [Lily, May, Jorsh, Shiwa, Nanth]
* .map((option, index) => ({id: index, option: option}))
* .filter(item => item.option.name.toLowerCase().indexOf(term.toLowerCase()) !== -1)
* );
* }
*/
searchFn: (term: string) => Observable<Array<{
id: string | number;
option: any;
}>>;
/**
* 【可选】决定选择框文字如何显示,默认显示filterKey字段或者本身的值
*/
valueParser: (item: any) => any;
/**
* 【可选】决定下拉框没项文字如何显示,默认显示filterKey字段或者本身的值
*/
formatter: (item: any) => string;
direction: 'up' | 'down' | 'auto';
overview: 'border' | 'underlined';
/**
* 【可选】是否开启clear功能(是否开启只对单选生效)
*/
allowClear: boolean;
readonly isClearIconShow: any;
color: any;
/**
* 【可选】启用数据懒加载,默认不启用
*/
enableLazyLoad: boolean;
/**
* 是否虚拟滚动
*/
virtualScroll: any;
/**
* 非必填,如传入,会忽略ContentChild
*/
inputItemTemplate: TemplateRef<any>;
itemTemplate: TemplateRef<any>;
/**
* 输出函数,当选中某个选项项后,将会调用此函数,参数为当前选择项的值。如果需要获取所有选择状态的值,请参考(ngModelChange)方法
*/
valueChange: EventEmitter<any>;
i18nCommonText: I18nInterface['common'];
i18nSubscription: Subscription;
/**
* select下拉toggle事件,值为true或false
*/
toggleChange: EventEmitter<any>;
loadMore: EventEmitter<any>;
extraConfig: {
labelization?: {
enable: boolean;
overflow?: 'normal' | 'scroll-y' | 'multiple-line' | string;
containnerMaxHeight?: string;
labelMaxWidth?: string;
};
selectedItemWithTemplate?: {
enable: boolean;
};
[featrue: string]: any;
};
/**
* 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段做禁用操作的key
*/
optionDisabledKey: string;
/**
* 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段禁止变更的key
*/
optionImmutableKey: string;
/**
* 【可选】配置无数据展示
*/
noResultItemTemplate: TemplateRef<any>;
/**
* 【可选】配置多选的时候是否维持原数组排序还是用户选择的顺序排序,默认是用户顺序
*/
keepMultipleOrder: 'origin' | 'user-select';
customViewTemplate: TemplateRef<any>;
/**
* customViewTemplate的方向,支持下方和右方
*/
customViewDirection: 'bottom' | 'right';
autoFocus: boolean;
notAutoScroll: boolean;
selectInputElement: ElementRef;
selectMenuElement: ElementRef;
selectBoxElement: ElementRef;
selectInputWithTemplateElement: ElementRef;
selectInputWithLabelElement: ElementRef;
filterInputElement: ElementRef;
dropdownUl: ElementRef;
connectedOverlay: CdkConnectedOverlay;
showLoading: boolean;
_isOpen: boolean;
menuPosition: VerticalConnectionPos;
halfChecked: boolean;
allChecked: boolean;
isMouseEvent: boolean;
filter: string;
activeIndex: number;
availableOptions: any[];
multiItems: any[];
popDirection: 'top' | 'bottom';
selectIndex: number;
_inputValue: any;
virtualScrollItemSize: any;
cdkConnectedOverlayOrigin: CdkOverlayOrigin;
private sourceSubscription;
private filterSubscription;
value: any;
private resetting;
private onChange;
private onTouch;
constructor(renderer: Renderer2, windowRef: WindowRef, changeDetectorRef: ChangeDetectorRef, i18n: I18nService, ngZone: NgZone);
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
ngOnChanges(changes: SimpleChanges): void;
setI18nText(): void;
getVirtualScrollHeight(len: any, size: any): string;
getVirtualScrollItemSize(size: any): any;
resetSource(): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
registerFilterChange(): void;
searchInputValueChangeEvent(): void;
writeValue(obj: any): void;
writeIntoInput(value: any): void;
setAvailableOptions(): void;
choose: (option: any, index: any, $event?: Event) => void;
updateCdkConnectedOverlayOrigin(): void;
autoToggle($event: any): void;
setMouseEventTrue(event: any): void;
setMouseEventFalse(event: any): void;
toggle(): void;
isBottomRectEnough(): boolean;
setDocumentClickListener(): void;
onDocumentClick: ($event: Event) => void;
onEscKeyup($event: any): void;
handleKeyUpEvent($event: any): void;
handleKeyDownEvent($event: any): void;
scrollToActive(): void;
handleKeyEnterEvent($event: any): void;
removeItem(item: any, $event: any): void;
selectAll(): void;
trackByFn(index: any, item: any): any;
trackByOptionPointer(index: any, item: any): any;
loadMoreEvent(event: any): void;
loadFinish(): void;
loadStart(): void;
onPositionChange(position: ConnectedOverlayPositionChange): void;
animationEnd($event: any): void;
setChecked(selectedItem: any): void;
showSelectAll(): boolean;
forceSearchNext(): void;
valueClear($event: any): void;
resetStatus(): void;
}