@nova-ui/bits
Version:
SolarWinds Nova Framework
181 lines (180 loc) • 7.54 kB
TypeScript
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>;
}