File

projects/angular/components/ui-grid/src/footer/ui-grid-footer.directive.ts

Description

Footer definition directive.

Implements

OnDestroy OnInit

Metadata

Index

Inputs
Outputs
Accessors

Inputs

hidden
Type : boolean
Default value : false
hidePageSize
Type : boolean
Default value : false

If the page size options should be hidden.

hideTotalCount
Type : boolean
Default value : false

Whether to show total count in custom paginator

length
Type : number
Default value : 0

The total item length.

pageIndex
Type : number

The active page index

pageSize
Type : number

The active page size.

pageSizes
Type : number[]
Default value : []

The available page size options.

showFirstLastButtons
Type : boolean
Default value : true

Whether to show the first/last buttons UI to the user.

Outputs

pageChange
Type : EventEmitter

Emits when the page is changed.

Accessors

pageSize
setpageSize(value: number)

The active page size.

Parameters :
Name Type Optional
value number No
Returns : void
pageIndex
setpageIndex(value: number)

The active page index

Parameters :
Name Type Optional
value number No
Returns : void
state
getstate()

The current footer state.

import { tap } from 'rxjs/operators';

import {
    Directive,
    EventEmitter,
    Input,
    OnDestroy,
    OnInit,
    Output,
} from '@angular/core';

import { PageChangeEvent } from '../events/page-change-event';

/**
 * Footer definition directive.
 *
 * @export
 */
@Directive({
    selector: '[uiGridFooter], ui-grid-footer',
})
export class UiGridFooterDirective implements OnDestroy, OnInit {
    /**
     * The total item length.
     *
     */
    @Input()
    length = 0;

    /**
     * The active page size.
     *
     */
    @Input()
    set pageSize(value: number) {
        this._state.pageSize = value;
    }

    /**
     * The active page index
     *
     */
    @Input()
    set pageIndex(value: number) {
        this._state.pageIndex = value;
    }

    /**
     * The available page size options.
     *
     */
    @Input()
    pageSizes: number[] = [];

    /**
     * If the page size options should be hidden.
     *
     */
    @Input()
    hidePageSize = false;

    /**
     * Whether to show the first/last buttons UI to the user.
     *
     */
    @Input()
    showFirstLastButtons = true;

    /*
    * Support hiding footer even if it's defined.
    */
    @Input()
    hidden = false;

    /**
     * Whether to show total count in custom paginator
     *
     */
    @Input()
    hideTotalCount = false;

    /**
     * Emits when the page is changed.
     *
     */
    @Output()
    pageChange = new EventEmitter<PageChangeEvent>();

    /**
     * The current footer state.
     *
     */
    get state() {
        return this._state;
    }

    private _state: PageChangeEvent = {
        length: NaN,
        pageIndex: 0,
        pageSize: NaN,
        previousPageIndex: NaN,
    };

    /**
     * @ignore
     */
    constructor() {
        this.pageChange.pipe(
            tap(ev => this._state = ev),
        ).subscribe();
    }

    /**
     * @ignore
     */
    ngOnInit() {
        this._state = {
            ...this._state,
            length: this.length,
        };
    }

    /**
     * @ignore
     */
    ngOnDestroy() {
        this.pageChange.complete();
    }
}

results matching ""

    No results matching ""