UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

181 lines (180 loc) 7.54 kB
import { CdkDrag, DragDrop, DropListRef } from "@angular/cdk/drag-drop"; import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling"; import { AfterViewInit, ChangeDetectorRef, DoCheck, ElementRef, EventEmitter, IterableDiffers, OnDestroy, OnInit, QueryList, TemplateRef } from "@angular/core"; import { IItemsReorderedEvent, IRepeatItem, IRepeatItemConfig, PaddingOptions, RepeatSelectionMode } from "./types"; import { IFilter, IFilterPub, IRepeatFilter } from "../../services/data-source/public-api"; import { LoggerService } from "../../services/log-service"; import * as i0 from "@angular/core"; /** * repeat is used for displaying of continuous rows. * It can be used in "single"/"radio" or "multi" selection mode * <example-url>./../examples/index.html#/repeat</example-url> */ export declare class RepeatComponent<T extends IRepeatItem = unknown> implements OnInit, OnDestroy, AfterViewInit, DoCheck, IFilterPub { changeDetector: ChangeDetectorRef; logger: LoggerService; private iterableDiffers; dragDropService: DragDrop; private elRef; /** * Turns on/off dragging functionality */ set draggable(value: boolean); get draggable(): boolean; /** * Turns on/off item reorder functionality */ set reorderable(value: boolean); get reorderable(): boolean; draggableChange: EventEmitter<boolean>; reorderableChange: EventEmitter<boolean>; /** * This will stretch repeat items full width */ width: string; /** * Prevent item bodies from capturing clicks */ preventRowClick: boolean; /** * repeat item template */ repeatItemTemplateRef: TemplateRef<any>; /** * Drag handle template that is applied on each item */ dragHandleTemplateRef: TemplateRef<any>; /** * Drag preview class that is applied on the previewed item * * This input is required since CDK adds the preview DOM element as the last child on the body; * without it all drag previews within a project would have the same style */ dragPreviewClass: string; /** * Drag preview template that is applied on each item */ dragPreviewTemplateRef: TemplateRef<any>; /** * Actions-container content. */ actionsTemplateRef: TemplateRef<any>; /** * Possible values are 'single', 'radio', 'multi' and 'none' */ selectionMode: RepeatSelectionMode; /** * repeat rows padding. Possible values are: * 'normal', 'compact'. * Default value is 'compact'. */ paddingSize: PaddingOptions; /** * Enables virtual scroll feature. Requires @itemSize input to have a correct item size set. */ virtualScroll: boolean; /** * Required for virtual scroll. Don't forget to set a correct value here if you want to use virtual scroll. * The input accepts values in px only * @returns {number} */ itemSize: number; /** * Selected repeat objects */ selection: T[]; /** * Is emitted when on items order has changed */ itemsReordered: EventEmitter<IItemsReorderedEvent<T>>; /** * item config object containing callbacks */ itemConfig: IRepeatItemConfig<T>; /** * repeat view objects array */ itemsSource: T[]; /** * Is selected item should be highlighted */ highlightSelectedItem: boolean; /** * Is emitted when another item in the repeat is selected */ selectionChange: EventEmitter<any[]>; dropListArea: ElementRef; /** * Reference to CdkVirtualScrollViewport exposed to give users control * over virtual viewport (ex. infinite scroll, programmatic repeat container scrolling). * * @see https://material.angular.io/cdk/scrolling/api#CdkVirtualScrollViewport */ private _viewportRef; get viewportRef(): CdkVirtualScrollViewport; draggableElements: QueryList<CdkDrag>; mousedOver: boolean[]; /** * Reference to CDK DropList so that the user can also subscribe * to its events in case they need to * @see https://material.angular.io/cdk/drag-drop/api#DropListRef */ dropListRef: DropListRef; /** * Allows the list items to be draggable or not * * Note: This is not initialized so we can know whether it's been set by the consumer */ private _draggable; /** * Allows the list items to be reorderable or not */ private _reorderable; private selectionHasChanged; private itemsSourceDiff; private intersectionObserver; /** Emits when the drop list has been destroyed. */ private readonly dropListDestroyed; get role(): string; get ariaMultiselectable(): true | null; constructor(changeDetector: ChangeDetectorRef, logger: LoggerService, iterableDiffers: IterableDiffers, dragDropService: DragDrop, elRef: ElementRef); ngOnInit(): void; ngDoCheck(): void; ngAfterViewInit(): void; /** * Cleanup CDK * PS: No need to unsubscribe from the EventEmitters, they are handled * automatically by Angular & RxJs */ ngOnDestroy(): void; update(): void; getFilters(): IFilter<IRepeatFilter>; /** * Checks if repeat item is selected * @param item selected repeat item in repeat */ isItemSelected(item: T): boolean; /** * repeat item is clicked * @param event * @param item value object that is used in nui-repeat-item */ itemClicked(event: MouseEvent, item: T): void; /** * nui-repeat-item selection change handler * @param item selected nui-repeat-item */ multiSelectionChanged(item: T): void; isModeMulti(): boolean; isModeRadio(): boolean; isItemClickable(item: T): boolean; isItemSelectable(item: T): boolean; isItemDisabled(item: T): boolean; isItemDraggable(item: T): boolean; private initializeCDKDropList; private disposeCDKDropList; private itemDropped; private intersectionObserverCallback; static ɵfac: i0.ɵɵFactoryDeclaration<RepeatComponent<any>, never>; static ɵcmp: i0.ɵɵComponentDeclaration<RepeatComponent<any>, "nui-repeat", never, { "draggable": { "alias": "draggable"; "required": false; }; "reorderable": { "alias": "reorderable"; "required": false; }; "preventRowClick": { "alias": "preventRowClick"; "required": false; }; "repeatItemTemplateRef": { "alias": "repeatItemTemplateRef"; "required": false; }; "dragHandleTemplateRef": { "alias": "dragHandleTemplateRef"; "required": false; }; "dragPreviewClass": { "alias": "dragPreviewClass"; "required": false; }; "dragPreviewTemplateRef": { "alias": "dragPreviewTemplateRef"; "required": false; }; "actionsTemplateRef": { "alias": "actionsTemplateRef"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "paddingSize": { "alias": "paddingSize"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "itemConfig": { "alias": "itemConfig"; "required": false; }; "itemsSource": { "alias": "itemsSource"; "required": false; }; "highlightSelectedItem": { "alias": "highlightSelectedItem"; "required": false; }; }, { "draggableChange": "draggableChange"; "reorderableChange": "reorderableChange"; "itemsReordered": "itemsReordered"; "selectionChange": "selectionChange"; }, never, ["[repeatHeaderTemplate]"], false, never>; }