UNPKG

ngx-pluto

Version:
101 lines (100 loc) 4.13 kB
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; }