UNPKG

ng-devui

Version:

DevUI components based on Angular

301 lines (300 loc) 13.8 kB
import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectedPosition, ScrollStrategy, ScrollStrategyOptions, VerticalConnectionPos } from '@angular/cdk/overlay'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { I18nInterface, I18nService } from 'ng-devui/i18n'; import { AppendToBodyDirection, AppendToBodyScrollStrategyType, DevConfigService } from 'ng-devui/utils'; import { WindowRef } from 'ng-devui/window-ref'; import { Observable, Subscription } from 'rxjs'; import * as i0 from "@angular/core"; export declare class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, OnChanges { private doc; private renderer; private windowRef; private changeDetectorRef; private i18n; private ngZone; private el; private devConfigService; private scrollStrategyOption; /** * 【必选】下拉选项资源,支持Array<string>, Array<{key: value}> */ options: any[]; /** * 【可选】是否支持过滤搜索 */ isSearch: boolean; /** * 【可选】是否支持聚焦自动展开下拉 */ toggleOnFocus: boolean; /** * 【可选】下拉菜单高度,建议使用px作为高度单位 */ scrollHight: string; /** * 【可选】下拉高亮css */ highlightItemClass: string; /** * 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段做过滤操作 */ filterKey: string; /** * 【当传入资源(options)类型为Array<{key: value},可选】选项与选中值类型不一致时用于指定赋值属性 */ valueKey: string; /** * 【可选】是否支持多选 */ multiple: boolean; /** * 【可选】是否支持全选 */ isSelectAll: boolean; /** * 【可选】是否可以输入 */ readonly: boolean; /** * 【可选】下拉选框尺寸 */ size: '' | 'sm' | 'lg'; /** * 【可选】是否appendToBody */ appendToBody: boolean; /** * 【可选】cdk模式overlay Positions的控制 */ appendToBodyDirections: Array<AppendToBodyDirection | ConnectedPosition>; appendToBodyScrollStrategy: AppendToBodyScrollStrategyType; /** * 【可选】cdk模式origin width */ width: number; /** * 【可选】模板高度 */ templateItemSize: number; /** * 【可选】是否禁用下拉框 */ disabled: boolean; /** * 【可选】下拉默认显示文字 */ placeholder: string; searchPlaceholder: 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; color: any; /** * 【可选】启用数据懒加载,默认不启用 */ enableLazyLoad: boolean; /** * 是否虚拟滚动 */ virtualScroll: any; /** * 非必填,如传入,会忽略ContentChild */ inputItemTemplate: TemplateRef<any>; extraConfig: { labelization?: { enable: boolean; overflow?: 'normal' | 'scroll-y' | 'multiple-line' | string; containerMaxHeight?: string; /** * @deprecated */ containnerMaxHeight?: string; labelMaxWidth?: string; maxTags?: number; }; selectedItemWithTemplate?: { enable: boolean; }; enableFocusFirstFilteredOption?: boolean; [feature: 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' | 'left' | 'top'; autoScrollIntoActive: boolean; autoFocus: boolean; notAutoScroll: boolean; loadingTemplateRef: TemplateRef<any>; showItemTitle: boolean; showAnimation: boolean; styleType: string; showGlowStyle: boolean; beforeChange: (index: any, option: any, action: any) => boolean | Promise<boolean> | Observable<boolean>; /** * select下拉toggle事件,值为true或false */ toggleChange: EventEmitter<boolean>; loadMore: EventEmitter<any>; /** * 输出函数,当选中某个选项项后,将会调用此函数,参数为当前选择项的值。如果需要获取所有选择状态的值,请参考(ngModelChange)方法 */ valueChange: EventEmitter<any>; itemTemplate: TemplateRef<any>; selectWrapper: ElementRef; selectInputElement: ElementRef; selectMenuElement: ElementRef; selectBoxElement: ElementRef; selectInputWithTemplateElement: ElementRef; selectInputWithLabelElement: ElementRef; filterInputElement: ElementRef; dropdownUl: ElementRef; connectedOverlay: CdkConnectedOverlay; virtualScrollViewport: CdkVirtualScrollViewport; get hasGlowStyle(): boolean; set isOpen(value: boolean); get isOpen(): boolean; get isClearIconShow(): any; get showMoreTags(): any; get moreTagsNum(): string; _inputValue: any; _isOpen: boolean; allChecked: boolean; halfChecked: boolean; isMouseEvent: boolean; showLoading: boolean; startAnimation: boolean; limitMaxHeight: boolean; availableOptions: any[]; multiItems: any[]; value: any; filter: string; activeIndex: number; selectIndex: number; popDirection: 'top' | 'bottom'; menuPosition: VerticalConnectionPos; i18nCommonText: I18nInterface['common']; i18nSubscription: Subscription; document: Document; dropDownWidth: number; scrollHeightNum: number; lastCloseScrollHeight: number; minBuffer: number; maxBuffer: number; scrollStrategy: ScrollStrategy; cdkConnectedOverlayOrigin: CdkOverlayOrigin; overlayPositions: Array<ConnectedPosition>; virtualScrollViewportSizeMightChange: boolean; virtualScrollItemSize: any; CONTAINER_MARGINS: number; ANIMATION_DELAY: number; get showSelectAll(): boolean; private sourceSubscription; private filterSubscription; private resetting; private onChange; private onTouch; constructor(doc: any, renderer: Renderer2, windowRef: WindowRef, changeDetectorRef: ChangeDetectorRef, i18n: I18nService, ngZone: NgZone, el: ElementRef, devConfigService: DevConfigService, scrollStrategyOption: ScrollStrategyOptions); ngOnInit(): void; ngAfterViewInit(): void; ngOnDestroy(): void; ngOnChanges(changes: SimpleChanges): void; setPositions(): void; setI18nText(): void; getVirtualScrollHeight(len: any, size: any): string; get realVirtualScrollItemSize(): any; resetSource(): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; registerFilterChange(): void; searchInputValueChangeEvent(): void; writeValue(value: any): void; writeIntoInput(value: any): void; setAvailableOptions(): void; getMultipleSelectedOption(): void; getSingleSelectedOption(): void; getOption(data: any, value: any, hasOption?: any): any; getOptionIndex(option: any): number; getValue: (item: any, key: any) => string; scrollIntoActive(): void; canChange(option: any, index: any, action: string): Promise<boolean>; choose: (option: any, index: any, $event?: Event, operate?: string) => void; updateCdkConnectedOverlayOrigin(): void; resetScrollTop(isClose?: boolean): 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, isSearchInput?: boolean): void; getSelectedItem: () => any; 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; setAllChecked(): void; forceSearchNext(): void; valueClear($event: any): void; resetStatus(): void; clearText(): void; static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "d-select", ["select"], { "options": { "alias": "options"; "required": false; }; "isSearch": { "alias": "isSearch"; "required": false; }; "toggleOnFocus": { "alias": "toggleOnFocus"; "required": false; }; "scrollHight": { "alias": "scrollHight"; "required": false; }; "highlightItemClass": { "alias": "highlightItemClass"; "required": false; }; "filterKey": { "alias": "filterKey"; "required": false; }; "valueKey": { "alias": "valueKey"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isSelectAll": { "alias": "isSelectAll"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appendToBody": { "alias": "appendToBody"; "required": false; }; "appendToBodyDirections": { "alias": "appendToBodyDirections"; "required": false; }; "appendToBodyScrollStrategy": { "alias": "appendToBodyScrollStrategy"; "required": false; }; "width": { "alias": "width"; "required": false; }; "templateItemSize": { "alias": "templateItemSize"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; "valueParser": { "alias": "valueParser"; "required": false; }; "formatter": { "alias": "formatter"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "overview": { "alias": "overview"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "color": { "alias": "color"; "required": false; }; "enableLazyLoad": { "alias": "enableLazyLoad"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "inputItemTemplate": { "alias": "inputItemTemplate"; "required": false; }; "extraConfig": { "alias": "extraConfig"; "required": false; }; "optionDisabledKey": { "alias": "optionDisabledKey"; "required": false; }; "optionImmutableKey": { "alias": "optionImmutableKey"; "required": false; }; "noResultItemTemplate": { "alias": "noResultItemTemplate"; "required": false; }; "keepMultipleOrder": { "alias": "keepMultipleOrder"; "required": false; }; "customViewTemplate": { "alias": "customViewTemplate"; "required": false; }; "customViewDirection": { "alias": "customViewDirection"; "required": false; }; "autoScrollIntoActive": { "alias": "autoScrollIntoActive"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "notAutoScroll": { "alias": "notAutoScroll"; "required": false; }; "loadingTemplateRef": { "alias": "loadingTemplateRef"; "required": false; }; "showItemTitle": { "alias": "showItemTitle"; "required": false; }; "showAnimation": { "alias": "showAnimation"; "required": false; }; "styleType": { "alias": "styleType"; "required": false; }; "showGlowStyle": { "alias": "showGlowStyle"; "required": false; }; "beforeChange": { "alias": "beforeChange"; "required": false; }; }, { "toggleChange": "toggleChange"; "loadMore": "loadMore"; "valueChange": "valueChange"; }, ["itemTemplate"], never, false, never>; }