UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

239 lines (238 loc) 8.25 kB
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; }