novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
270 lines (269 loc) • 7.88 kB
TypeScript
import { EventEmitter, DoCheck } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { NovoLabelService } from '../../services/novo-label-service';
import { FormUtils } from '../../utils/form-utils/FormUtils';
import { PagedArrayCollection } from '../../services/data-provider/PagedArrayCollection';
export interface NovoTableConfig {
paging?: {
current: number;
itemsPerPage: number;
onPageChange: Function;
rowOptions?: {
value: number;
label: string;
}[];
disablePageSelection?: boolean;
};
footers?: Array<{
columns: Array<string>;
method: string;
labelColumn: string;
label: string;
}>;
filtering?: boolean | any;
sorting?: boolean | any;
ordering?: boolean | Function;
resizing?: boolean | Function;
rowSelectionStyle?: string;
rowSelect?: boolean;
hasDetails?: boolean;
detailsRenderer?: any;
expandAll?: boolean;
selectAllEnabled?: boolean;
}
export declare enum NovoTableMode {
VIEW = 1,
EDIT = 2,
}
export declare class NovoTableElement implements DoCheck {
labels: NovoLabelService;
private formUtils;
private builder;
config: NovoTableConfig;
columns: Array<any>;
theme: string;
skipSortAndFilterClear: boolean;
mode: NovoTableMode;
editable: boolean;
onRowClick: EventEmitter<any>;
onRowSelect: EventEmitter<any>;
onTableChange: EventEmitter<any>;
_dataProvider: PagedArrayCollection<any>;
_rows: Array<any>;
selected: Array<any>;
activeId: number;
master: boolean;
expandAll: boolean;
indeterminate: boolean;
lastPage: number;
selectedPageCount: number;
showSelectAllMessage: boolean;
currentSortColumn: any;
pagedData: Array<any>;
pageSelected: any;
toggledDropdownMap: any;
NovoTableMode: typeof NovoTableMode;
tableForm: FormGroup;
toast: {
theme: string;
icon: string;
message: string;
};
footers: any[];
grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast: boolean;
loading: boolean;
rows: Array<any>;
dataProvider: any;
readonly editing: boolean;
readonly formValue: any;
constructor(labels: NovoLabelService, formUtils: FormUtils, builder: FormBuilder);
onDropdownToggled(event: any, column: any): void;
onPageChange(event: any): void;
getOptionDataAutomationId(option: any): any;
/**
* @name setupColumnDefaults
*/
setupColumnDefaults(): void;
/**
* @name ngDoCheck
*/
ngDoCheck(): void;
/**
* @name getPageStart
* @returns {number}
*/
getPageStart(): number;
/**
* @name getPageEnd
* @returns {*}
*/
getPageEnd(): any;
/**
* @name onFilterClick
* @param column
* @param filter
*/
onFilterClick(column: any, filter: any): void;
/**
* @name onFilterClear
* @param column
*/
onFilterClear(column: any): void;
clearAllSortAndFilters(): void;
/**
* @name onFilterChange
*
* @description This method updates the row data to reflect the active filters.
*/
onFilterChange(): void;
escapeCharacters(filter: any): any;
/**
* @name isFilterActive
* @param column
* @param filter
* @returns {boolean}
*
* @description
*/
isFilterActive(column: any, filter: any): boolean;
/**
* @name onSortChange
* @param newSortColumn
*/
onSortChange(column: any): void;
/**
* @name fireTableChangeEvent
*/
fireTableChangeEvent(): void;
/**
* @name findColumnIndex
* @param value
* @returns {*}
*/
findColumnIndex(value: any): number;
/**
* @name onOrderChange
* @param event
*/
onOrderChange(event: any): void;
/**
* @name selectPage
*/
expandAllOnPage(expanded: any): void;
/**
* @name selectPage
*/
selectPage(): void;
/**
* @name selectAll
*/
selectAll(value: any): void;
/**
* @name rowSelectHandler
*/
rowSelectHandler(): void;
/**
* @name emitSelected
* @param selected
*/
emitSelected(selected: any): void;
/**
* @name rowClickHandler
* @param row
*/
rowClickHandler(row: any): void;
/**
* @name setDateOptions
* @returns {Array}
*/
getDefaultOptions(column: any): any[];
onCalenderSelect(column: any, event: any): void;
onFilterKeywords(config: any): void;
/**
* @name setTableEdit
* @description Sets the Table into EDIT mode, based on the row/column passed you can enter in a few states
* (1) setTableEdit() - don't pass any to put the FULL table into edit mode
* (2) setTableEdit(1) - pass only row to put that FULL row of the table into edit mode
* (3) setTableEdit(1, 1) - pass row and column to put that column of the row of the table into edit mode
* @param {number} [rowNumber]
* @param {number} [columnNumber]
* @memberOf NovoTableElement
*/
setTableEdit(rowNumber?: number, columnNumber?: number): void;
/**
* @name leaveEditMode
* @description Leaves edit mode for the Table and puts everything back to VIEW only
* @memberOf NovoTableElement
* @param {cancel} [boolean] - whether or not to save data or undo
*/
private leaveEditMode(cancel);
/**
* @name addEditableRow
* @description Adds a new row into the table to be edited, can be called from a local reference of the table in your template
* @param {*} [defaultValue={}]
* @memberOf NovoTableElement
*/
addEditableRow(defaultValue?: any): void;
/**
* @name validateAndGetUpdatedData
* @description Validates the Form inside of the Table, if there are errors it will display/return the errors for each row.
* If there are no errors, then it will return ONLY the changed data for each row, the data returned will be in the form:
* { id: ID_OF_RECORD, key: value } -- data that was updated
* { id: undefined, key: value } -- data that was added
* @returns {{ changed?: any[], errors?: { errors: any, row: any, index: number }[] }} - either the changed data or errors!
* @memberOf NovoTableElement
*/
validateAndGetUpdatedData(): {
changed?: any[];
errors?: {
errors: any;
row: any;
index: number;
}[];
};
/**
* @name cancelEditing
* @description Refresh the data provider and leave edit mode
* @memberOf NovoTableElement
*/
cancelEditing(): void;
/**
* @name saveChanges
* @description Refresh the data provider and leave edit mode
* @memberOf NovoTableElement
*/
saveChanges(): void;
/**
* @name displayToastMessage
* @description Displays a toast message inside of the table
* @param {{ icon: string, theme: string, message: string }} toast
* @param {number} [hideDelay]
* @memberOf NovoTableElement
*/
displayToastMessage(toast: {
icon: string;
theme: string;
message: string;
}, hideDelay?: number): void;
/**
* @name hideToastMessage
* @description Force hide the toast message
* @memberOf NovoTableElement
*/
hideToastMessage(): void;
/**
* @name toggleLoading
* @description display the loading overlay on the table
* @param {boolean} show
* @memberOf NovoTableElement
*/
toggleLoading(show: boolean): void;
/**
* @name isColumnHidden
* @description hide a column in edit or view mode
* @param {column meta} column
* @returns {boolean}
* @memberOf NovoTableElement
*/
isColumnHidden(column: any): boolean;
}