ngx-lighttable
Advanced tools
Comparing version 1.0.0 to 1.0.1
import { ModuleWithProviders } from '@angular/core'; | ||
export * from './components/ngx-table.component'; | ||
export declare class NgXTableModule { | ||
export * from './components/ngx-lighttable.component'; | ||
export declare class NgXLightTableModule { | ||
static forRoot(): ModuleWithProviders; | ||
} |
import { Component, ContentChild, ContentChildren, EventEmitter, Input, NgModule, Output, TemplateRef, ViewChild } from '@angular/core'; | ||
import { CommonModule } from '@angular/common'; | ||
var NgXTableCellComponent = (function () { | ||
function NgXTableCellComponent() { | ||
var NgXLightTableCellComponent = (function () { | ||
function NgXLightTableCellComponent() { | ||
} | ||
return NgXTableCellComponent; | ||
return NgXLightTableCellComponent; | ||
}()); | ||
NgXTableCellComponent.decorators = [ | ||
NgXLightTableCellComponent.decorators = [ | ||
{ type: Component, args: [{ | ||
selector: 'ngx-table-cell', | ||
selector: 'ngx-lighttable-cell', | ||
template: "<ng-template let-content #defaultTemplate> <span [ngClass]=\"cellClass\" [ngStyle]=\"cellStyle\"> {{content}} </span> </ng-template>" | ||
@@ -18,4 +18,4 @@ },] }, | ||
*/ | ||
NgXTableCellComponent.ctorParameters = function () { return []; }; | ||
NgXTableCellComponent.propDecorators = { | ||
NgXLightTableCellComponent.ctorParameters = function () { return []; }; | ||
NgXLightTableCellComponent.propDecorators = { | ||
'field': [{ type: Input },], | ||
@@ -37,4 +37,4 @@ 'cellStyle': [{ type: Input },], | ||
}; | ||
var NgXTableComponent = (function () { | ||
function NgXTableComponent() { | ||
var NgXLightTableComponent = (function () { | ||
function NgXLightTableComponent() { | ||
/** | ||
@@ -58,3 +58,3 @@ * \@description Property injected with the records to render the table | ||
} | ||
Object.defineProperty(NgXTableComponent.prototype, "settings", { | ||
Object.defineProperty(NgXLightTableComponent.prototype, "settings", { | ||
/** | ||
@@ -74,3 +74,3 @@ * \@description Sets table settings | ||
*/ | ||
NgXTableComponent.prototype.ngAfterContentInit = function () { | ||
NgXLightTableComponent.prototype.ngAfterContentInit = function () { | ||
this._setCells(); | ||
@@ -85,3 +85,3 @@ this._sortCells(); | ||
*/ | ||
NgXTableComponent.prototype.isSortable = function (header) { | ||
NgXLightTableComponent.prototype.isSortable = function (header) { | ||
return header.sortable.enabled; | ||
@@ -94,4 +94,4 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.isSorting = function (header) { | ||
return header.sortable.direction !== NgXTableSortableDirectionEnum.neutral; | ||
NgXLightTableComponent.prototype.isSorting = function (header) { | ||
return header.sortable.direction !== NgXLightTableSortableDirectionEnum.neutral; | ||
}; | ||
@@ -102,3 +102,3 @@ /** | ||
*/ | ||
NgXTableComponent.prototype.getHeaders = function () { | ||
NgXLightTableComponent.prototype.getHeaders = function () { | ||
return this._settings.headers; | ||
@@ -111,7 +111,7 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getArrowSortClasses = function (header) { | ||
NgXLightTableComponent.prototype.getArrowSortClasses = function (header) { | ||
return { | ||
'ngx-table__header-cell--sortable-arrow': !this.isSorting(header) || !this._checkSortDirection(header, NgXTableSortableDirectionEnum.neutral), | ||
'ngx-table__header-cell--sortable-arrow-down': this._checkSortDirection(header, NgXTableSortableDirectionEnum.desc), | ||
'ngx-table__header-cell--sortable-arrow-up': !this.isSorting(header) || this._checkSortDirection(header, NgXTableSortableDirectionEnum.asc) | ||
'ngx-lighttable__header-cell--sortable-arrow': !this.isSorting(header) || !this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.neutral), | ||
'ngx-lighttable__header-cell--sortable-arrow-down': this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.desc), | ||
'ngx-lighttable__header-cell--sortable-arrow-up': !this.isSorting(header) || this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.asc) | ||
}; | ||
@@ -124,6 +124,6 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getHeaderSortClasses = function (header) { | ||
NgXLightTableComponent.prototype.getHeaderSortClasses = function (header) { | ||
return _a = { | ||
'ngx-table__header-cell--sortable': this.isSortable(header), | ||
'ngx-table__header-cell--sorting': this.isSorting(header) | ||
'ngx-lighttable__header-cell--sortable': this.isSortable(header), | ||
'ngx-lighttable__header-cell--sorting': this.isSorting(header) | ||
}, | ||
@@ -141,11 +141,11 @@ _a[header.headerClass ? header.headerClass : ''] = true, | ||
*/ | ||
NgXTableComponent.prototype.handleSort = function (event, header) { | ||
NgXLightTableComponent.prototype.handleSort = function (event, header) { | ||
var _this = this; | ||
event.preventDefault(); | ||
this._settings.headers.map(function (item) { return item.field !== header.field | ||
? item.sortable.direction = NgXTableSortableDirectionEnum.neutral | ||
? item.sortable.direction = NgXLightTableSortableDirectionEnum.neutral | ||
: item.sortable.direction = _this._getNextSortDirection(item); }); | ||
this.onSort.emit({ | ||
field: header.field, | ||
direction: NgXTableSortableDirectionEnum[header.sortable.direction] | ||
direction: NgXLightTableSortableDirectionEnum[header.sortable.direction] | ||
}); | ||
@@ -159,3 +159,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.handleRow = function (event, row) { | ||
NgXLightTableComponent.prototype.handleRow = function (event, row) { | ||
event.preventDefault(); | ||
@@ -172,3 +172,3 @@ this.onClickRow.emit(row); | ||
*/ | ||
NgXTableComponent.prototype.handleCell = function (event, field, row, cell) { | ||
NgXLightTableComponent.prototype.handleCell = function (event, field, row, cell) { | ||
event.preventDefault(); | ||
@@ -182,3 +182,3 @@ this.onClickCell.emit({ value: this.records[row][field], field: field, row: row, cell: cell }); | ||
*/ | ||
NgXTableComponent.prototype.getCellTemplate = function (cell) { | ||
NgXLightTableComponent.prototype.getCellTemplate = function (cell) { | ||
return cell.templateRef || cell.defaultTemplateRef; | ||
@@ -192,3 +192,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getAttrDataAutomation = function (area, value) { | ||
NgXLightTableComponent.prototype.getAttrDataAutomation = function (area, value) { | ||
return "table-" + area + "-" + value; | ||
@@ -200,3 +200,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getEmptyText = function () { | ||
NgXLightTableComponent.prototype.getEmptyText = function () { | ||
return this.isLoading ? this._settings.messages.loading : this._settings.messages.empty; | ||
@@ -208,3 +208,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getColspan = function () { | ||
NgXLightTableComponent.prototype.getColspan = function () { | ||
return this._settings.headers.length; | ||
@@ -216,3 +216,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.hasRecords = function () { | ||
NgXLightTableComponent.prototype.hasRecords = function () { | ||
return this.records.length === 0; | ||
@@ -225,3 +225,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getWidth = function (header) { | ||
NgXLightTableComponent.prototype.getWidth = function (header) { | ||
return header.width ? header.width + "%" : null; | ||
@@ -234,3 +234,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._checkSortDirection = function (header, direction) { | ||
NgXLightTableComponent.prototype._checkSortDirection = function (header, direction) { | ||
return header.sortable.direction === direction; | ||
@@ -242,10 +242,10 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._getNextSortDirection = function (header) { | ||
NgXLightTableComponent.prototype._getNextSortDirection = function (header) { | ||
switch (header.sortable.direction) { | ||
case NgXTableSortableDirectionEnum.asc: | ||
return NgXTableSortableDirectionEnum.desc; | ||
case NgXTableSortableDirectionEnum.desc: | ||
return this._settings.allowNeutralSort ? NgXTableSortableDirectionEnum.neutral : NgXTableSortableDirectionEnum.asc; | ||
case NgXTableSortableDirectionEnum.neutral: | ||
return NgXTableSortableDirectionEnum.asc; | ||
case NgXLightTableSortableDirectionEnum.asc: | ||
return NgXLightTableSortableDirectionEnum.desc; | ||
case NgXLightTableSortableDirectionEnum.desc: | ||
return this._settings.allowNeutralSort ? NgXLightTableSortableDirectionEnum.neutral : NgXLightTableSortableDirectionEnum.asc; | ||
case NgXLightTableSortableDirectionEnum.neutral: | ||
return NgXLightTableSortableDirectionEnum.asc; | ||
} | ||
@@ -256,3 +256,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._checkWidths = function () { | ||
NgXLightTableComponent.prototype._checkWidths = function () { | ||
var /** @type {?} */ widths = 0; | ||
@@ -267,3 +267,3 @@ this._settings.headers.map(function (header) { return header.width ? widths = widths + header.width : null; }); | ||
*/ | ||
NgXTableComponent.prototype._setCells = function () { | ||
NgXLightTableComponent.prototype._setCells = function () { | ||
this.cells = this.templateCells.toArray(); | ||
@@ -274,3 +274,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._sortCells = function () { | ||
NgXLightTableComponent.prototype._sortCells = function () { | ||
var /** @type {?} */ parseHeader = {}; | ||
@@ -282,9 +282,9 @@ var /** @type {?} */ parseCells = []; | ||
}; | ||
return NgXTableComponent; | ||
return NgXLightTableComponent; | ||
}()); | ||
NgXTableComponent.decorators = [ | ||
NgXLightTableComponent.decorators = [ | ||
{ type: Component, args: [{ | ||
selector: 'ngx-table', | ||
template: "<table class=\"ngx-table\"> <thead class=\"ngx-table__header\"> <tr> <th *ngFor=\"let header of getHeaders()\" (click)=\"isSortable(header) ? handleSort($event, header) : null\" [ngClass]=\"getHeaderSortClasses(header)\" [ngStyle]=\"header.headerStyle\" [style.width]=\"getWidth(header)\" [attr.data-automation]=\"getAttrDataAutomation('header', header.field)\" class=\"ngx-table__header-cell\"> <span class=\"ngx-table__header-cell-label\">{{header.title}}</span> <i *ngIf=\"isSortable(header)\" [ngClass]=\"getArrowSortClasses(header)\"> </i> </th> </tr> </thead> <tbody class=\"ngx-table__body\"> <tr *ngIf=\"hasRecords()\" class=\"ngx-table__body-no-records\"> <td [attr.colspan]=\"getColspan()\" class=\"ngx-table__body-cell\">{{getEmptyText()}}</td> </tr> <tr *ngFor=\"let record of records; let i = index\" [attr.data-automation]=\"getAttrDataAutomation('row', i)\" (click)=\"handleRow($event, record)\" class=\"ngx-table__body-row\"> <td *ngFor=\"let cell of cells; let j = index\" (click)=\"handleCell($event, cell.field, i, j)\" [attr.data-automation]=\"getAttrDataAutomation('cell', i + '-' + j)\" class=\"ngx-table__body-cell\"> <ng-container *ngTemplateOutlet=\"getCellTemplate(cell); context: {$implicit: record[cell.field]};\"> </ng-container> </td> </tr> </tbody> </table>", | ||
styles: ["@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400\"); .ngx-table { width: 100%; border-collapse: collapse; border-spacing: 0; font-family: 'Open Sans', sans-serif; } .ngx-table__header-cell { padding: 12px 8px; vertical-align: middle; border-bottom: 1px solid #ddd; } .ngx-table__header-cell-label { float: left; font-weight: 300; font-size: 18px; text-transform: capitalize; } .ngx-table__header-cell--sortable { cursor: pointer; } .ngx-table__header-cell--sortable-arrow { display: inline-block; padding: 5px; border: solid #ddd; border-width: 0 1px 1px 0; visibility: hidden; transform: rotate(45deg); } .ngx-table__header-cell--sortable-arrow-down { transform: rotate(45deg); } .ngx-table__header-cell--sortable-arrow-up { transform: rotate(-135deg); } .ngx-table__header-cell--sortable-arrow i { font-size: 12px; } .ngx-table__header-cell--sortable:hover .ngx-table__header-cell--sortable-arrow { visibility: visible; } .ngx-table__header-cell--sorting .ngx-table__header-cell--sortable-arrow { visibility: visible; border-color: #333; } .ngx-table__body-row { border-bottom: 1px solid #ddd; } .ngx-table__body-cell { padding: 12px; color: #333; font-size: 14px; max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ngx-table__body-no-records { padding: 20px; color: #333; font-size: 16px; } "] | ||
selector: 'ngx-lighttable', | ||
template: "<table class=\"ngx-lighttable\"> <thead class=\"ngx-lighttable__header\"> <tr> <th *ngFor=\"let header of getHeaders()\" (click)=\"isSortable(header) ? handleSort($event, header) : null\" [ngClass]=\"getHeaderSortClasses(header)\" [ngStyle]=\"header.headerStyle\" [style.width]=\"getWidth(header)\" [attr.data-automation]=\"getAttrDataAutomation('header', header.field)\" class=\"ngx-lighttable__header-cell\"> <span class=\"ngx-lighttable__header-cell-label\">{{header.title}}</span> <i *ngIf=\"isSortable(header)\" [ngClass]=\"getArrowSortClasses(header)\"> </i> </th> </tr> </thead> <tbody class=\"ngx-lighttable__body\"> <tr *ngIf=\"hasRecords()\" class=\"ngx-lighttable__body-no-records\"> <td [attr.colspan]=\"getColspan()\" class=\"ngx-lighttable__body-cell\">{{getEmptyText()}}</td> </tr> <tr *ngFor=\"let record of records; let i = index\" [attr.data-automation]=\"getAttrDataAutomation('row', i)\" (click)=\"handleRow($event, record)\" class=\"ngx-lighttable__body-row\"> <td *ngFor=\"let cell of cells; let j = index\" (click)=\"handleCell($event, cell.field, i, j)\" [attr.data-automation]=\"getAttrDataAutomation('cell', i + '-' + j)\" class=\"ngx-lighttable__body-cell\"> <ng-container *ngTemplateOutlet=\"getCellTemplate(cell); context: {$implicit: record[cell.field]};\"> </ng-container> </td> </tr> </tbody> </table>", | ||
styles: ["@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400\"); .ngx-lighttable { width: 100%; border-collapse: collapse; border-spacing: 0; font-family: 'Open Sans', sans-serif; } .ngx-lighttable__header-cell { padding: 12px 8px; vertical-align: middle; border-bottom: 1px solid #ddd; } .ngx-lighttable__header-cell-label { float: left; font-weight: 300; font-size: 18px; text-transform: capitalize; } .ngx-lighttable__header-cell--sortable { cursor: pointer; } .ngx-lighttable__header-cell--sortable-arrow { display: inline-block; padding: 5px; border: solid #ddd; border-width: 0 1px 1px 0; visibility: hidden; transform: rotate(45deg); } .ngx-lighttable__header-cell--sortable-arrow-down { transform: rotate(45deg); } .ngx-lighttable__header-cell--sortable-arrow-up { transform: rotate(-135deg); } .ngx-lighttable__header-cell--sortable-arrow i { font-size: 12px; } .ngx-lighttable__header-cell--sortable:hover .ngx-lighttable__header-cell--sortable-arrow { visibility: visible; } .ngx-lighttable__header-cell--sorting .ngx-lighttable__header-cell--sortable-arrow { visibility: visible; border-color: #333; } .ngx-lighttable__body-row { border-bottom: 1px solid #ddd; } .ngx-lighttable__body-cell { padding: 12px; color: #333; font-size: 14px; max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ngx-lighttable__body-no-records { padding: 20px; color: #333; font-size: 16px; } "] | ||
},] }, | ||
@@ -295,4 +295,4 @@ ]; | ||
*/ | ||
NgXTableComponent.ctorParameters = function () { return []; }; | ||
NgXTableComponent.propDecorators = { | ||
NgXLightTableComponent.ctorParameters = function () { return []; }; | ||
NgXLightTableComponent.propDecorators = { | ||
'records': [{ type: Input },], | ||
@@ -304,14 +304,14 @@ 'settings': [{ type: Input },], | ||
'onClickCell': [{ type: Output },], | ||
'templateCells': [{ type: ContentChildren, args: [NgXTableCellComponent,] },], | ||
'templateCells': [{ type: ContentChildren, args: [NgXLightTableCellComponent,] },], | ||
}; | ||
var NgXTableSortableDirectionEnum = {}; | ||
NgXTableSortableDirectionEnum.asc = 0; | ||
NgXTableSortableDirectionEnum.desc = 1; | ||
NgXTableSortableDirectionEnum.neutral = 2; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.asc] = "asc"; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.desc] = "desc"; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.neutral] = "neutral"; | ||
var NgXLightTableSortableDirectionEnum = {}; | ||
NgXLightTableSortableDirectionEnum.asc = 0; | ||
NgXLightTableSortableDirectionEnum.desc = 1; | ||
NgXLightTableSortableDirectionEnum.neutral = 2; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.asc] = "asc"; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.desc] = "desc"; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.neutral] = "neutral"; | ||
var NgXTableModule = (function () { | ||
function NgXTableModule() { | ||
var NgXLightTableModule = (function () { | ||
function NgXLightTableModule() { | ||
} | ||
@@ -321,11 +321,10 @@ /** | ||
*/ | ||
NgXTableModule.forRoot = function () { | ||
NgXLightTableModule.forRoot = function () { | ||
return { | ||
ngModule: NgXTableModule, | ||
providers: [] | ||
ngModule: NgXLightTableModule | ||
}; | ||
}; | ||
return NgXTableModule; | ||
return NgXLightTableModule; | ||
}()); | ||
NgXTableModule.decorators = [ | ||
NgXLightTableModule.decorators = [ | ||
{ type: NgModule, args: [{ | ||
@@ -336,8 +335,8 @@ imports: [ | ||
declarations: [ | ||
NgXTableComponent, | ||
NgXTableCellComponent, | ||
NgXLightTableComponent, | ||
NgXLightTableCellComponent, | ||
], | ||
exports: [ | ||
NgXTableComponent, | ||
NgXTableCellComponent | ||
NgXLightTableComponent, | ||
NgXLightTableCellComponent | ||
] | ||
@@ -349,4 +348,4 @@ },] }, | ||
*/ | ||
NgXTableModule.ctorParameters = function () { return []; }; | ||
NgXLightTableModule.ctorParameters = function () { return []; }; | ||
export { NgXTableModule, NGX_TABLE_DEFAULT_SETTINGS, NgXTableComponent, NgXTableSortableDirectionEnum }; | ||
export { NgXLightTableModule, NGX_TABLE_DEFAULT_SETTINGS, NgXLightTableComponent, NgXLightTableSortableDirectionEnum }; |
@@ -7,10 +7,10 @@ (function (global, factory) { | ||
var NgXTableCellComponent = (function () { | ||
function NgXTableCellComponent() { | ||
var NgXLightTableCellComponent = (function () { | ||
function NgXLightTableCellComponent() { | ||
} | ||
return NgXTableCellComponent; | ||
return NgXLightTableCellComponent; | ||
}()); | ||
NgXTableCellComponent.decorators = [ | ||
NgXLightTableCellComponent.decorators = [ | ||
{ type: _angular_core.Component, args: [{ | ||
selector: 'ngx-table-cell', | ||
selector: 'ngx-lighttable-cell', | ||
template: "<ng-template let-content #defaultTemplate> <span [ngClass]=\"cellClass\" [ngStyle]=\"cellStyle\"> {{content}} </span> </ng-template>" | ||
@@ -22,4 +22,4 @@ },] }, | ||
*/ | ||
NgXTableCellComponent.ctorParameters = function () { return []; }; | ||
NgXTableCellComponent.propDecorators = { | ||
NgXLightTableCellComponent.ctorParameters = function () { return []; }; | ||
NgXLightTableCellComponent.propDecorators = { | ||
'field': [{ type: _angular_core.Input },], | ||
@@ -41,4 +41,4 @@ 'cellStyle': [{ type: _angular_core.Input },], | ||
}; | ||
var NgXTableComponent = (function () { | ||
function NgXTableComponent() { | ||
var NgXLightTableComponent = (function () { | ||
function NgXLightTableComponent() { | ||
/** | ||
@@ -62,3 +62,3 @@ * \@description Property injected with the records to render the table | ||
} | ||
Object.defineProperty(NgXTableComponent.prototype, "settings", { | ||
Object.defineProperty(NgXLightTableComponent.prototype, "settings", { | ||
/** | ||
@@ -78,3 +78,3 @@ * \@description Sets table settings | ||
*/ | ||
NgXTableComponent.prototype.ngAfterContentInit = function () { | ||
NgXLightTableComponent.prototype.ngAfterContentInit = function () { | ||
this._setCells(); | ||
@@ -89,3 +89,3 @@ this._sortCells(); | ||
*/ | ||
NgXTableComponent.prototype.isSortable = function (header) { | ||
NgXLightTableComponent.prototype.isSortable = function (header) { | ||
return header.sortable.enabled; | ||
@@ -98,4 +98,4 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.isSorting = function (header) { | ||
return header.sortable.direction !== NgXTableSortableDirectionEnum.neutral; | ||
NgXLightTableComponent.prototype.isSorting = function (header) { | ||
return header.sortable.direction !== NgXLightTableSortableDirectionEnum.neutral; | ||
}; | ||
@@ -106,3 +106,3 @@ /** | ||
*/ | ||
NgXTableComponent.prototype.getHeaders = function () { | ||
NgXLightTableComponent.prototype.getHeaders = function () { | ||
return this._settings.headers; | ||
@@ -115,7 +115,7 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getArrowSortClasses = function (header) { | ||
NgXLightTableComponent.prototype.getArrowSortClasses = function (header) { | ||
return { | ||
'ngx-table__header-cell--sortable-arrow': !this.isSorting(header) || !this._checkSortDirection(header, NgXTableSortableDirectionEnum.neutral), | ||
'ngx-table__header-cell--sortable-arrow-down': this._checkSortDirection(header, NgXTableSortableDirectionEnum.desc), | ||
'ngx-table__header-cell--sortable-arrow-up': !this.isSorting(header) || this._checkSortDirection(header, NgXTableSortableDirectionEnum.asc) | ||
'ngx-lighttable__header-cell--sortable-arrow': !this.isSorting(header) || !this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.neutral), | ||
'ngx-lighttable__header-cell--sortable-arrow-down': this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.desc), | ||
'ngx-lighttable__header-cell--sortable-arrow-up': !this.isSorting(header) || this._checkSortDirection(header, NgXLightTableSortableDirectionEnum.asc) | ||
}; | ||
@@ -128,6 +128,6 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getHeaderSortClasses = function (header) { | ||
NgXLightTableComponent.prototype.getHeaderSortClasses = function (header) { | ||
return _a = { | ||
'ngx-table__header-cell--sortable': this.isSortable(header), | ||
'ngx-table__header-cell--sorting': this.isSorting(header) | ||
'ngx-lighttable__header-cell--sortable': this.isSortable(header), | ||
'ngx-lighttable__header-cell--sorting': this.isSorting(header) | ||
}, | ||
@@ -145,11 +145,11 @@ _a[header.headerClass ? header.headerClass : ''] = true, | ||
*/ | ||
NgXTableComponent.prototype.handleSort = function (event, header) { | ||
NgXLightTableComponent.prototype.handleSort = function (event, header) { | ||
var _this = this; | ||
event.preventDefault(); | ||
this._settings.headers.map(function (item) { return item.field !== header.field | ||
? item.sortable.direction = NgXTableSortableDirectionEnum.neutral | ||
? item.sortable.direction = NgXLightTableSortableDirectionEnum.neutral | ||
: item.sortable.direction = _this._getNextSortDirection(item); }); | ||
this.onSort.emit({ | ||
field: header.field, | ||
direction: NgXTableSortableDirectionEnum[header.sortable.direction] | ||
direction: NgXLightTableSortableDirectionEnum[header.sortable.direction] | ||
}); | ||
@@ -163,3 +163,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.handleRow = function (event, row) { | ||
NgXLightTableComponent.prototype.handleRow = function (event, row) { | ||
event.preventDefault(); | ||
@@ -176,3 +176,3 @@ this.onClickRow.emit(row); | ||
*/ | ||
NgXTableComponent.prototype.handleCell = function (event, field, row, cell) { | ||
NgXLightTableComponent.prototype.handleCell = function (event, field, row, cell) { | ||
event.preventDefault(); | ||
@@ -186,3 +186,3 @@ this.onClickCell.emit({ value: this.records[row][field], field: field, row: row, cell: cell }); | ||
*/ | ||
NgXTableComponent.prototype.getCellTemplate = function (cell) { | ||
NgXLightTableComponent.prototype.getCellTemplate = function (cell) { | ||
return cell.templateRef || cell.defaultTemplateRef; | ||
@@ -196,3 +196,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getAttrDataAutomation = function (area, value) { | ||
NgXLightTableComponent.prototype.getAttrDataAutomation = function (area, value) { | ||
return "table-" + area + "-" + value; | ||
@@ -204,3 +204,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getEmptyText = function () { | ||
NgXLightTableComponent.prototype.getEmptyText = function () { | ||
return this.isLoading ? this._settings.messages.loading : this._settings.messages.empty; | ||
@@ -212,3 +212,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getColspan = function () { | ||
NgXLightTableComponent.prototype.getColspan = function () { | ||
return this._settings.headers.length; | ||
@@ -220,3 +220,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.hasRecords = function () { | ||
NgXLightTableComponent.prototype.hasRecords = function () { | ||
return this.records.length === 0; | ||
@@ -229,3 +229,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype.getWidth = function (header) { | ||
NgXLightTableComponent.prototype.getWidth = function (header) { | ||
return header.width ? header.width + "%" : null; | ||
@@ -238,3 +238,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._checkSortDirection = function (header, direction) { | ||
NgXLightTableComponent.prototype._checkSortDirection = function (header, direction) { | ||
return header.sortable.direction === direction; | ||
@@ -246,10 +246,10 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._getNextSortDirection = function (header) { | ||
NgXLightTableComponent.prototype._getNextSortDirection = function (header) { | ||
switch (header.sortable.direction) { | ||
case NgXTableSortableDirectionEnum.asc: | ||
return NgXTableSortableDirectionEnum.desc; | ||
case NgXTableSortableDirectionEnum.desc: | ||
return this._settings.allowNeutralSort ? NgXTableSortableDirectionEnum.neutral : NgXTableSortableDirectionEnum.asc; | ||
case NgXTableSortableDirectionEnum.neutral: | ||
return NgXTableSortableDirectionEnum.asc; | ||
case NgXLightTableSortableDirectionEnum.asc: | ||
return NgXLightTableSortableDirectionEnum.desc; | ||
case NgXLightTableSortableDirectionEnum.desc: | ||
return this._settings.allowNeutralSort ? NgXLightTableSortableDirectionEnum.neutral : NgXLightTableSortableDirectionEnum.asc; | ||
case NgXLightTableSortableDirectionEnum.neutral: | ||
return NgXLightTableSortableDirectionEnum.asc; | ||
} | ||
@@ -260,3 +260,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._checkWidths = function () { | ||
NgXLightTableComponent.prototype._checkWidths = function () { | ||
var /** @type {?} */ widths = 0; | ||
@@ -271,3 +271,3 @@ this._settings.headers.map(function (header) { return header.width ? widths = widths + header.width : null; }); | ||
*/ | ||
NgXTableComponent.prototype._setCells = function () { | ||
NgXLightTableComponent.prototype._setCells = function () { | ||
this.cells = this.templateCells.toArray(); | ||
@@ -278,3 +278,3 @@ }; | ||
*/ | ||
NgXTableComponent.prototype._sortCells = function () { | ||
NgXLightTableComponent.prototype._sortCells = function () { | ||
var /** @type {?} */ parseHeader = {}; | ||
@@ -286,9 +286,9 @@ var /** @type {?} */ parseCells = []; | ||
}; | ||
return NgXTableComponent; | ||
return NgXLightTableComponent; | ||
}()); | ||
NgXTableComponent.decorators = [ | ||
NgXLightTableComponent.decorators = [ | ||
{ type: _angular_core.Component, args: [{ | ||
selector: 'ngx-table', | ||
template: "<table class=\"ngx-table\"> <thead class=\"ngx-table__header\"> <tr> <th *ngFor=\"let header of getHeaders()\" (click)=\"isSortable(header) ? handleSort($event, header) : null\" [ngClass]=\"getHeaderSortClasses(header)\" [ngStyle]=\"header.headerStyle\" [style.width]=\"getWidth(header)\" [attr.data-automation]=\"getAttrDataAutomation('header', header.field)\" class=\"ngx-table__header-cell\"> <span class=\"ngx-table__header-cell-label\">{{header.title}}</span> <i *ngIf=\"isSortable(header)\" [ngClass]=\"getArrowSortClasses(header)\"> </i> </th> </tr> </thead> <tbody class=\"ngx-table__body\"> <tr *ngIf=\"hasRecords()\" class=\"ngx-table__body-no-records\"> <td [attr.colspan]=\"getColspan()\" class=\"ngx-table__body-cell\">{{getEmptyText()}}</td> </tr> <tr *ngFor=\"let record of records; let i = index\" [attr.data-automation]=\"getAttrDataAutomation('row', i)\" (click)=\"handleRow($event, record)\" class=\"ngx-table__body-row\"> <td *ngFor=\"let cell of cells; let j = index\" (click)=\"handleCell($event, cell.field, i, j)\" [attr.data-automation]=\"getAttrDataAutomation('cell', i + '-' + j)\" class=\"ngx-table__body-cell\"> <ng-container *ngTemplateOutlet=\"getCellTemplate(cell); context: {$implicit: record[cell.field]};\"> </ng-container> </td> </tr> </tbody> </table>", | ||
styles: ["@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400\"); .ngx-table { width: 100%; border-collapse: collapse; border-spacing: 0; font-family: 'Open Sans', sans-serif; } .ngx-table__header-cell { padding: 12px 8px; vertical-align: middle; border-bottom: 1px solid #ddd; } .ngx-table__header-cell-label { float: left; font-weight: 300; font-size: 18px; text-transform: capitalize; } .ngx-table__header-cell--sortable { cursor: pointer; } .ngx-table__header-cell--sortable-arrow { display: inline-block; padding: 5px; border: solid #ddd; border-width: 0 1px 1px 0; visibility: hidden; transform: rotate(45deg); } .ngx-table__header-cell--sortable-arrow-down { transform: rotate(45deg); } .ngx-table__header-cell--sortable-arrow-up { transform: rotate(-135deg); } .ngx-table__header-cell--sortable-arrow i { font-size: 12px; } .ngx-table__header-cell--sortable:hover .ngx-table__header-cell--sortable-arrow { visibility: visible; } .ngx-table__header-cell--sorting .ngx-table__header-cell--sortable-arrow { visibility: visible; border-color: #333; } .ngx-table__body-row { border-bottom: 1px solid #ddd; } .ngx-table__body-cell { padding: 12px; color: #333; font-size: 14px; max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ngx-table__body-no-records { padding: 20px; color: #333; font-size: 16px; } "] | ||
selector: 'ngx-lighttable', | ||
template: "<table class=\"ngx-lighttable\"> <thead class=\"ngx-lighttable__header\"> <tr> <th *ngFor=\"let header of getHeaders()\" (click)=\"isSortable(header) ? handleSort($event, header) : null\" [ngClass]=\"getHeaderSortClasses(header)\" [ngStyle]=\"header.headerStyle\" [style.width]=\"getWidth(header)\" [attr.data-automation]=\"getAttrDataAutomation('header', header.field)\" class=\"ngx-lighttable__header-cell\"> <span class=\"ngx-lighttable__header-cell-label\">{{header.title}}</span> <i *ngIf=\"isSortable(header)\" [ngClass]=\"getArrowSortClasses(header)\"> </i> </th> </tr> </thead> <tbody class=\"ngx-lighttable__body\"> <tr *ngIf=\"hasRecords()\" class=\"ngx-lighttable__body-no-records\"> <td [attr.colspan]=\"getColspan()\" class=\"ngx-lighttable__body-cell\">{{getEmptyText()}}</td> </tr> <tr *ngFor=\"let record of records; let i = index\" [attr.data-automation]=\"getAttrDataAutomation('row', i)\" (click)=\"handleRow($event, record)\" class=\"ngx-lighttable__body-row\"> <td *ngFor=\"let cell of cells; let j = index\" (click)=\"handleCell($event, cell.field, i, j)\" [attr.data-automation]=\"getAttrDataAutomation('cell', i + '-' + j)\" class=\"ngx-lighttable__body-cell\"> <ng-container *ngTemplateOutlet=\"getCellTemplate(cell); context: {$implicit: record[cell.field]};\"> </ng-container> </td> </tr> </tbody> </table>", | ||
styles: ["@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400\"); .ngx-lighttable { width: 100%; border-collapse: collapse; border-spacing: 0; font-family: 'Open Sans', sans-serif; } .ngx-lighttable__header-cell { padding: 12px 8px; vertical-align: middle; border-bottom: 1px solid #ddd; } .ngx-lighttable__header-cell-label { float: left; font-weight: 300; font-size: 18px; text-transform: capitalize; } .ngx-lighttable__header-cell--sortable { cursor: pointer; } .ngx-lighttable__header-cell--sortable-arrow { display: inline-block; padding: 5px; border: solid #ddd; border-width: 0 1px 1px 0; visibility: hidden; transform: rotate(45deg); } .ngx-lighttable__header-cell--sortable-arrow-down { transform: rotate(45deg); } .ngx-lighttable__header-cell--sortable-arrow-up { transform: rotate(-135deg); } .ngx-lighttable__header-cell--sortable-arrow i { font-size: 12px; } .ngx-lighttable__header-cell--sortable:hover .ngx-lighttable__header-cell--sortable-arrow { visibility: visible; } .ngx-lighttable__header-cell--sorting .ngx-lighttable__header-cell--sortable-arrow { visibility: visible; border-color: #333; } .ngx-lighttable__body-row { border-bottom: 1px solid #ddd; } .ngx-lighttable__body-cell { padding: 12px; color: #333; font-size: 14px; max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ngx-lighttable__body-no-records { padding: 20px; color: #333; font-size: 16px; } "] | ||
},] }, | ||
@@ -299,4 +299,4 @@ ]; | ||
*/ | ||
NgXTableComponent.ctorParameters = function () { return []; }; | ||
NgXTableComponent.propDecorators = { | ||
NgXLightTableComponent.ctorParameters = function () { return []; }; | ||
NgXLightTableComponent.propDecorators = { | ||
'records': [{ type: _angular_core.Input },], | ||
@@ -308,14 +308,14 @@ 'settings': [{ type: _angular_core.Input },], | ||
'onClickCell': [{ type: _angular_core.Output },], | ||
'templateCells': [{ type: _angular_core.ContentChildren, args: [NgXTableCellComponent,] },], | ||
'templateCells': [{ type: _angular_core.ContentChildren, args: [NgXLightTableCellComponent,] },], | ||
}; | ||
var NgXTableSortableDirectionEnum = {}; | ||
NgXTableSortableDirectionEnum.asc = 0; | ||
NgXTableSortableDirectionEnum.desc = 1; | ||
NgXTableSortableDirectionEnum.neutral = 2; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.asc] = "asc"; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.desc] = "desc"; | ||
NgXTableSortableDirectionEnum[NgXTableSortableDirectionEnum.neutral] = "neutral"; | ||
var NgXLightTableSortableDirectionEnum = {}; | ||
NgXLightTableSortableDirectionEnum.asc = 0; | ||
NgXLightTableSortableDirectionEnum.desc = 1; | ||
NgXLightTableSortableDirectionEnum.neutral = 2; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.asc] = "asc"; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.desc] = "desc"; | ||
NgXLightTableSortableDirectionEnum[NgXLightTableSortableDirectionEnum.neutral] = "neutral"; | ||
var NgXTableModule = (function () { | ||
function NgXTableModule() { | ||
var NgXLightTableModule = (function () { | ||
function NgXLightTableModule() { | ||
} | ||
@@ -325,11 +325,10 @@ /** | ||
*/ | ||
NgXTableModule.forRoot = function () { | ||
NgXLightTableModule.forRoot = function () { | ||
return { | ||
ngModule: NgXTableModule, | ||
providers: [] | ||
ngModule: NgXLightTableModule | ||
}; | ||
}; | ||
return NgXTableModule; | ||
return NgXLightTableModule; | ||
}()); | ||
NgXTableModule.decorators = [ | ||
NgXLightTableModule.decorators = [ | ||
{ type: _angular_core.NgModule, args: [{ | ||
@@ -340,8 +339,8 @@ imports: [ | ||
declarations: [ | ||
NgXTableComponent, | ||
NgXTableCellComponent, | ||
NgXLightTableComponent, | ||
NgXLightTableCellComponent, | ||
], | ||
exports: [ | ||
NgXTableComponent, | ||
NgXTableCellComponent | ||
NgXLightTableComponent, | ||
NgXLightTableCellComponent | ||
] | ||
@@ -353,8 +352,8 @@ },] }, | ||
*/ | ||
NgXTableModule.ctorParameters = function () { return []; }; | ||
NgXLightTableModule.ctorParameters = function () { return []; }; | ||
exports.NgXTableModule = NgXTableModule; | ||
exports.NgXLightTableModule = NgXLightTableModule; | ||
exports.NGX_TABLE_DEFAULT_SETTINGS = NGX_TABLE_DEFAULT_SETTINGS; | ||
exports.NgXTableComponent = NgXTableComponent; | ||
exports.NgXTableSortableDirectionEnum = NgXTableSortableDirectionEnum; | ||
exports.NgXLightTableComponent = NgXLightTableComponent; | ||
exports.NgXLightTableSortableDirectionEnum = NgXLightTableSortableDirectionEnum; | ||
@@ -361,0 +360,0 @@ Object.defineProperty(exports, '__esModule', { value: true }); |
{ | ||
"name": "@bacanz/ngx-table", | ||
"version": "0.1.1", | ||
"name": "ngx-lighttable", | ||
"version": "1.0.0", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/bacanz/ngx-table.git" | ||
"url": "https://github.com/jcunhafonte/ngx-lighttable.git" | ||
}, | ||
"author": { | ||
"name": "Bacanz", | ||
"name": "José Cunha Fonte", | ||
"email": "jcunhafonte@gmail.com" | ||
@@ -17,6 +17,6 @@ }, | ||
"bugs": { | ||
"url": "https://github.com/bacanz/ngx-table.git/issues" | ||
"url": "https://github.com/jcunhafonte/ngx-lighttable.git/issues" | ||
}, | ||
"module": "ngx-table.js", | ||
"typings": "ngx-table.d.ts", | ||
"module": "ngx-lighttable.js", | ||
"typings": "ngx-lighttable.d.ts", | ||
"peerDependencies": { | ||
@@ -27,4 +27,4 @@ "@angular/core": "^4.0.0", | ||
}, | ||
"description": "`ngx-table` is an Angular component built with _TypeScript_, _CSS3_, _HTML5_ and _Angular >= 4_. It is an Angular component for presenting complex data in a light package with no external dependencies. The table just consume your data and doesn't make any assumptions about your datastructure or how you handle it (filtering, sorting or pagination).", | ||
"homepage": "https://github.com/bacanz/ngx-table#readme", | ||
"description": "`ngx-lighttable` is an Angular component built with _TypeScript_, _CSS3_, _HTML5_ and _Angular >= 4_. It is an Angular component for presenting complex data in a light package with no external dependencies. The table just consume your data and doesn't make any assumptions about your datastructure or how you handle it (filtering, sorting or pagination).", | ||
"homepage": "https://github.com/jcunhafonte/ngx-lighttable#readme", | ||
"directories": { | ||
@@ -31,0 +31,0 @@ "doc": "docs" |
@@ -1,7 +0,5 @@ | ||
![bacanz](https://raw.githubusercontent.com/bacanz/ngx-table/master/bacanz.png) | ||
# ngx-lighttable | ||
# ngx-table | ||
`ngx-lighttable` is an Angular component built with _TypeScript_, _CSS3_, _HTML5_ and _Angular >= 4_. It is an Angular component for presenting complex data in a light package with no external dependencies. The table just consume your data and doesn't make any assumptions about your datastructure or how you handle it (filtering, sorting or pagination). | ||
`ngx-table` is an Angular component built with _TypeScript_, _CSS3_, _HTML5_ and _Angular >= 4_. It is an Angular component for presenting complex data in a light package with no external dependencies. The table just consume your data and doesn't make any assumptions about your datastructure or how you handle it (filtering, sorting or pagination). | ||
## Features | ||
@@ -28,3 +26,3 @@ - Handle large data sets (Virtual DOM) | ||
```bash | ||
$ npm install @bacanz/ngx-table --save | ||
$ npm install ngx-lighttable --save | ||
``` | ||
@@ -34,3 +32,3 @@ | ||
Import ngx-table directives into your component: | ||
Import ngx-lighttable directives into your component: | ||
@@ -42,3 +40,3 @@ ```typescript | ||
import {NgXTable} from '@bacanz/ngx-table'; | ||
import {NgXLightTable} from 'ngx-lighttable'; | ||
``` | ||
@@ -52,3 +50,3 @@ | ||
... | ||
NgXTable | ||
NgXLightTable | ||
], | ||
@@ -64,3 +62,3 @@ ... | ||
```typescript | ||
settings: TableSettings = { // exported type | ||
settings: NgXLightTableSettings = { // exported type | ||
headers: | ||
@@ -73,3 +71,3 @@ [ | ||
enabled: false, | ||
direction: NgXTableSortableDirectionEnum.neutral | ||
direction: NgXLightTableSortableDirectionEnum.neutral | ||
} | ||
@@ -82,3 +80,3 @@ }, | ||
enabled: true, | ||
direction: NgXTableSortableDirectionEnum.asc | ||
direction: NgXLightTableSortableDirectionEnum.asc | ||
} | ||
@@ -91,3 +89,3 @@ }, | ||
enabled: true, | ||
direction: NgXTableSortableDirectionEnum.neutral | ||
direction: NgXLightTableSortableDirectionEnum.neutral | ||
} | ||
@@ -100,3 +98,3 @@ }, | ||
enabled: false, | ||
direction: NgXTableSortableDirectionEnum.neutral | ||
direction: NgXLightTableSortableDirectionEnum.neutral | ||
} | ||
@@ -109,3 +107,3 @@ }, | ||
enabled: false, | ||
direction: NgXTableSortableDirectionEnum.neutral | ||
direction: NgXLightTableSortableDirectionEnum.neutral | ||
} | ||
@@ -118,3 +116,3 @@ }, | ||
enabled: true, | ||
direction: NgXTableSortableDirectionEnum.neutral | ||
direction: NgXLightTableSortableDirectionEnum.neutral | ||
} | ||
@@ -132,3 +130,3 @@ } | ||
Add ngx-table component inside to the template: | ||
Add ngx-lighttable component inside to the template: | ||
@@ -139,3 +137,3 @@ ```typescript | ||
@Component({ | ||
template: `<ngx-table [settings]="settings"></ngx-table>` | ||
template: `<ngx-lighttable [settings]="settings"></ngx-lighttable>` | ||
}) | ||
@@ -223,18 +221,18 @@ // ... | ||
template: ` | ||
<ngx-table [settings]="settings" [records]="records"> | ||
<ngx-table-cell [field]="'tag'"></ngx-table-cell> | ||
<ngx-table-cell [field]="'name'"></ngx-table-cell> | ||
<ngx-table-cell [field]="'position'"></ngx-table-cell> | ||
<ngx-table-cell [field]="'since'"></ngx-table-cell> | ||
<ngx-table-cell [field]="'salary'"> | ||
<ngx-lighttable [settings]="settings" [records]="records"> | ||
<ngx-lighttable-cell [field]="'tag'"></ngx-lighttable-cell> | ||
<ngx-lighttable-cell [field]="'name'"></ngx-lighttable-cell> | ||
<ngx-lighttable-cell [field]="'position'"></ngx-lighttable-cell> | ||
<ngx-lighttable-cell [field]="'since'"></ngx-lighttable-cell> | ||
<ngx-lighttable-cell [field]="'salary'"> | ||
<ng-template let-salary> | ||
<strong>{{salary}}</strong> | ||
</ng-template> | ||
</ngx-table-cell> | ||
<ngx-table-cell [field]="'actions'"> | ||
</ngx-lighttable-cell> | ||
<ngx-lighttable-cell [field]="'actions'"> | ||
<ng-template let-actions> | ||
<button>{{actions}}</button> | ||
</ng-template> | ||
</ngx-table-cell> | ||
</ngx-table> | ||
</ngx-lighttable-cell> | ||
</ngx-lighttable> | ||
` | ||
@@ -257,3 +255,3 @@ }) | ||
template: ` | ||
<ngx-table | ||
<ngx-lighttable | ||
[settings]="settings" | ||
@@ -265,3 +263,3 @@ [records]="records" | ||
... | ||
</ngx-table> | ||
</ngx-lighttable> | ||
` | ||
@@ -273,2 +271,2 @@ }) | ||
MIT © [Bacanz](mailto:jose.fonte@pt.bosch.com) | ||
MIT © [jcunhafonte](mailto:jose.fonte@pt.bosch.com) |
{ | ||
"name": "ngx-lighttable", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"scripts": { | ||
@@ -5,0 +5,0 @@ "build": "gulp build", |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
73969