ngx-pluto
Version:
101 lines (100 loc) • 4.13 kB
TypeScript
import { OnInit, TemplateRef, ViewContainerRef, EventEmitter, SimpleChanges, ChangeDetectorRef, Renderer2 } from '@angular/core';
import { NpDropdownItemDirective } from './dropdown-item.directive';
import { ControlValueAccessor } from '@angular/forms';
import { OverlayService } from '../common/overlay.service';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
/**
* 下拉选择组件 - 支持单选和多选功能
*
* <example-url>https://stackblitz.com/edit/np-dropdown-sample?embed=1&file=src/app/app.component.html</example-url>
*
*/
export declare class NpDropdown implements OnInit, ControlValueAccessor {
private viewContainerRef;
private overlayService;
private cdf;
private renderer2;
private emitChange;
/**是否禁用状态 */
disabled: any;
/**下拉组件的基础设置,如是否单选等 */
settings: NpDropdownSettings;
/**全部下拉选项 */
items: Array<NpDropdownItem>;
/**已选项 - 单选为一个对象, 多选则为一组数组 */
selectedItem: NpDropdownItem | Array<NpDropdownItem>;
/**选择时触发 */
onSelected: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
/**取消选择时触发 */
onDeselected: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
/**全选时触发 */
onSelectedAll: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
/**取消全选时触发 */
onDeselectedAll: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
selectItemRef: NpDropdownItemDirective;
viewPort: CdkVirtualScrollViewport;
private originItems;
/**查询Token */
searchToken: string;
/**单选下拉框 */
readonly selectedLabel: string;
/**多选下拉框 */
selectedItems: Array<NpDropdownItem>;
selectedBadgeItems: Array<NpDropdownItem>;
noneBadgeCount: number;
private buildMultipleSelect;
readonly isDropdownOpen: boolean;
readonly isItemSelected: boolean;
_isCheckedAll: boolean;
isCheckedAll: boolean;
constructor(viewContainerRef: ViewContainerRef, overlayService: OverlayService, cdf: ChangeDetectorRef, renderer2: Renderer2);
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
onSelectAll(checked: boolean): void;
onSelect(item: NpDropdownItem): void;
onSearch(val: any): void;
isActive(item: NpDropdownItem): any;
onOpenDropdown($event: MouseEvent, dropdownTpl: TemplateRef<any>, origin: HTMLElement): void;
onRemoveItems($event: MouseEvent): void;
onRemoveItem($event: MouseEvent, item: NpDropdownItem): void;
writeValue(obj: any): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
private init;
private checkItemExists;
/**
* 清除查询并展示所有符合条件的items
*/
private clearSearch;
private buildItemsCheckedStatus;
private scrollToSelectedItem;
}
export interface NpDropdownSettings {
/**Left side label name */
lblName?: string;
/**Set if it is single dropdown, default is true - single dropdown */
single?: boolean;
/**Check if it is required. if not, show remove icon, otherwise hide the remove icon */
isRequired?: boolean;
/**Placeholder for dropdown */
placeHolder?: string;
/**Set the width of dropdown, default is 220, unit px */
width?: number;
/**Display badge count, default is 99999 */
badge?: number;
/**是否展示全选按钮 */
isShowCheckedAll?: boolean;
/**是否默认全选 */
isCheckedAll?: boolean;
/**没有数据时展示的文案,默认为‘没有数据!’ */
noData?: string;
/**是否显示搜索框,默认展示 */
isShowSearchBox?: boolean;
/**当下拉框有已选项,单选时,打开下拉框会自动滚动到已选项;当为多选时,打开下拉框会自动滚动到已选项的第一项;默认打开为true */
autoScrollTo?: boolean;
}
export interface NpDropdownItem {
id: string | number;
label: string;
[key: string]: any;
}