UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

85 lines 13.6 kB
export function initializeCalculatedGridState(autoSizeColumnsToContent = true) { return { minRow: -1, maxRow: -1, top: undefined, calculatedDisplayedCols: [], autoSizeColumnsToContent: autoSizeColumnsToContent }; } export class AutosizeGridHelper { static itWasPreviouslyCalculated(event, gridState, gridOptions) { let previouslyCalculated = false; if (event?.direction === 'vertical') { previouslyCalculated = this.itWasVerticallyCalculated(gridState, gridOptions, event); } else if (event?.direction === 'horizontal') { previouslyCalculated = this.itWasHorizontallyCalculated(gridState, gridOptions); } return previouslyCalculated; } static itWasVerticallyCalculated(gridState, gridOptions, event) { if (!event.top) { gridState.top = event.top; } let previouslyCalculated = false; //Scrolling up if (event.top <= gridState.top && gridState.minRow <= gridOptions.api.getFirstDisplayedRow()) { previouslyCalculated = true; } //Scrolling down if (event.top >= gridState.top && gridState.maxRow >= gridOptions.api.getLastDisplayedRow()) { previouslyCalculated = true; } gridState.top = event.top; gridState.minRow = gridOptions.api.getFirstDisplayedRow(); gridState.maxRow = gridOptions.api.getLastDisplayedRow(); return previouslyCalculated; } static itWasHorizontallyCalculated(gridState, gridOptions) { const displayedColumns = gridOptions.columnApi.getAllDisplayedColumns(); const newColumnOnDisplay = displayedColumns.find(col => !gridState.calculatedDisplayedCols.includes(col.getColId())); gridState.calculatedDisplayedCols = displayedColumns.map(col => col.getColId()); return !newColumnOnDisplay; } static doAutoSizeManagement(calculatedGridState, gridOptions, event) { if (!event || !calculatedGridState) { calculatedGridState = initializeCalculatedGridState(calculatedGridState?.autoSizeColumnsToContent); } if (calculatedGridState.autoSizeColumnsToContent) { const previouslyCalculated = this.itWasPreviouslyCalculated(event, calculatedGridState, gridOptions); if (!previouslyCalculated) { gridOptions.columnApi.getColumns() .forEach(col => { if (!col.getColDef().suppressSizeToFit) { gridOptions.columnApi.autoSizeColumn(col.getColId(), true); } }); } } else { this.sizeColumnsToFit(gridOptions); } } //This is to reduce the size of the last autosized column by 1 pixel. // This is necessary because some browsers do not correctly calculate // the available grid size when it is not an integer. // For example, if the actual available size is 99.6, some browsers return 99.6 // for the parent size (viewport) and 100 for the grid size (container). And now, // since the container is bigger than its viewport, an horizontal scrollbar appears. // Additionally, as the size in difference is less than 1 (caused because of // rounding), the scrollbar is empty, having no bar handle. //This is only necessary for sizeColumnsToFit, autoSizeColumns does it correctly. static sizeColumnsToFit(gridOptions) { gridOptions.api.sizeColumnsToFit(); const cols = gridOptions.columnApi.getColumns(); for (let i = cols.length - 1; i >= 0; i--) { const col = cols[i]; if (!col.getColDef().suppressSizeToFit && col.getActualWidth() > 1) { gridOptions.columnApi.setColumnWidth(col, col.getActualWidth() - 1); break; } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUtZ3JpZC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvaGVscGVyL2F1dG9zaXplLWdyaWQtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQywyQkFBb0MsSUFBSTtJQUNyRixPQUFPO1FBQ04sTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNWLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDVixHQUFHLEVBQUUsU0FBUztRQUNkLHVCQUF1QixFQUFFLEVBQUU7UUFDM0Isd0JBQXdCLEVBQUUsd0JBQXdCO0tBQ2xELENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxPQUFPLGtCQUFrQjtJQUV0QixNQUFNLENBQUMseUJBQXlCLENBQUMsS0FBVSxFQUFFLFNBQThCLEVBQUUsV0FBd0I7UUFDNUcsSUFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxLQUFLLEVBQUUsU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUNwQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyRjthQUFNLElBQUksS0FBSyxFQUFFLFNBQVMsS0FBSyxZQUFZLEVBQUU7WUFDN0Msb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNoRjtRQUNELE9BQU8sb0JBQW9CLENBQUM7SUFDN0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxTQUE4QixFQUFFLFdBQXdCLEVBQUUsS0FBVTtRQUM1RyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNmLFNBQVMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUMxQjtRQUVELElBQUksb0JB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QyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsaUJBQWlCLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDbEUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsTUFBTTthQUNOO1NBQ0Q7SUFDRixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW4sIEdyaWRPcHRpb25zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGN1bGF0ZWRHcmlkU3RhdGUge1xuXHRtaW5Sb3c6IG51bWJlcjtcblx0bWF4Um93OiBudW1iZXI7XG5cdHRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRjYWxjdWxhdGVkRGlzcGxheWVkQ29sczogc3RyaW5nW107XG5cdGF1dG9TaXplQ29sdW1uc1RvQ29udGVudDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDYWxjdWxhdGVkR3JpZFN0YXRlKGF1dG9TaXplQ29sdW1uc1RvQ29udGVudDogYm9vbGVhbiA9IHRydWUpOiBDYWxjdWxhdGVkR3JpZFN0YXRlIHtcblx0cmV0dXJuIHtcblx0XHRtaW5Sb3c6IC0xLFxuXHRcdG1heFJvdzogLTEsXG5cdFx0dG9wOiB1bmRlZmluZWQsXG5cdFx0Y2FsY3VsYXRlZERpc3BsYXllZENvbHM6IFtdLFxuXHRcdGF1dG9TaXplQ29sdW1uc1RvQ29udGVudDogYXV0b1NpemVDb2x1bW5zVG9Db250ZW50XG5cdH07XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRvc2l6ZUdyaWRIZWxwZXIge1xuXG5cdHByaXZhdGUgc3RhdGljIGl0V2FzUHJldmlvdXNseUNhbGN1bGF0ZWQoZXZlbnQ6IGFueSwgZ3JpZFN0YXRlOiBDYWxjdWxhdGVkR3JpZFN0YXRlLCBncmlkT3B0aW9uczogR3JpZE9wdGlvbnMpIHtcblx0XHRsZXQgcHJldmlvdXNseUNhbGN1bGF0ZWQgPSBmYWxzZTtcblx0XHRpZiAoZXZlbnQ/LmRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuXHRcdFx0cHJldmlvdXNseUNhbGN1bGF0ZWQgPSB0aGlzLml0V2FzVmVydGljYWxseUNhbGN1bGF0ZWQoZ3JpZFN0YXRlLCBncmlkT3B0aW9ucywgZXZlbnQpO1xuXHRcdH0gZWxzZSBpZiAoZXZlbnQ/LmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG5cdFx0XHRwcmV2aW91c2x5Q2FsY3VsYXRlZCA9IHRoaXMuaXRXYXNIb3Jpem9udGFsbHlDYWxjdWxhdGVkKGdyaWRTdGF0ZSwgZ3JpZE9wdGlvbnMpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJldmlvdXNseUNhbGN1bGF0ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBpdFdhc1ZlcnRpY2FsbHlDYWxjdWxhdGVkKGdyaWRTdGF0ZTogQ2FsY3VsYXRlZEdyaWRTdGF0ZSwgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zLCBldmVudDogYW55KSB7XG5cdFx0aWYgKCFldmVudC50b3ApIHtcblx0XHRcdGdyaWRTdGF0ZS50b3AgPSBldmVudC50b3A7XG5cdFx0fVxuXG5cdFx0bGV0IHByZXZpb3VzbHlDYWxjdWxhdGVkID0gZmFsc2U7XG5cdFx0Ly9TY3JvbGxpbmcgdXBcblx0XHRpZiAoZXZlbnQudG9wIDw9IGdyaWRTdGF0ZS50b3AgJiYgZ3JpZFN0YXRlLm1pblJvdyA8PSBncmlkT3B0aW9ucy5hcGkuZ2V0Rmlyc3REaXNwbGF5ZWRSb3coKSkge1xuXHRcdFx0cHJldmlvdXNseUNhbGN1bGF0ZWQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vU2Nyb2xsaW5nIGRvd25cblx0XHRpZiAoZXZlbnQudG9wID49IGdyaWRTdGF0ZS50b3AgJiYgZ3JpZFN0YXRlLm1heFJvdyA+PSBncmlkT3B0aW9ucy5hcGkuZ2V0TGFzdERpc3BsYXllZFJvdygpKSB7XG5cdFx0XHRwcmV2aW91c2x5Q2FsY3VsYXRlZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Z3JpZFN0YXRlLnRvcCA9IGV2ZW50LnRvcDtcblx0XHRncmlkU3RhdGUubWluUm93ID0gZ3JpZE9wdGlvbnMuYXBpLmdldEZpcnN0RGlzcGxheWVkUm93KCk7XG5cdFx0Z3JpZFN0YXRlLm1heFJvdyA9IGdyaWRPcHRpb25zLmFwaS5nZXRMYXN0RGlzcGxheWVkUm93KCk7XG5cblx0XHRyZXR1cm4gcHJldmlvdXNseUNhbGN1bGF0ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBpdFdhc0hvcml6b250YWxseUNhbGN1bGF0ZWQoZ3JpZFN0YXRlOiBDYWxjdWxhdGVkR3JpZFN0YXRlLCBncmlkT3B0aW9uczogR3JpZE9wdGlvbnMpIHtcblx0XHRjb25zdCBkaXNwbGF5ZWRDb2x1bW5zOiBDb2x1bW5bXSA9IGdyaWRPcHRpb25zLmNvbHVtbkFwaS5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCk7XG5cdFx0Y29uc3QgbmV3Q29sdW1uT25EaXNwbGF5OiBDb2x1bW4gPSBkaXNwbGF5ZWRDb2x1bW5zLmZpbmQoY29sID0+ICFncmlkU3RhdGUuY2FsY3VsYXRlZERpc3BsYXllZENvbHMuaW5jbHVkZXMoY29sLmdldENvbElkKCkpKTtcblxuXHRcdGdyaWRTdGF0ZS5jYWxjdWxhdGVkRGlzcGxheWVkQ29scyA9IGRpc3BsYXllZENvbHVtbnMubWFwKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSk7XG5cdFx0cmV0dXJuICFuZXdDb2x1bW5PbkRpc3BsYXk7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGRvQXV0b1NpemVNYW5hZ2VtZW50KGNhbGN1bGF0ZWRHcmlkU3RhdGU6IENhbGN1bGF0ZWRHcmlkU3RhdGUsIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucywgZXZlbnQ/OiBhbnkpIHtcblx0XHRpZighZXZlbnQgfHwgIWNhbGN1bGF0ZWRHcmlkU3RhdGUpIHtcblx0XHRcdGNhbGN1bGF0ZWRHcmlkU3RhdGUgPSBpbml0aWFsaXplQ2FsY3VsYXRlZEdyaWRTdGF0ZShjYWxjdWxhdGVkR3JpZFN0YXRlPy5hdXRvU2l6ZUNvbHVtbnNUb0NvbnRlbnQpO1xuXHRcdH1cblxuXHRcdGlmKGNhbGN1bGF0ZWRHcmlkU3RhdGUuYXV0b1NpemVDb2x1bW5zVG9Db250ZW50KSB7XG5cdFx0XHRjb25zdCBwcmV2aW91c2x5Q2FsY3VsYXRlZCA9IHRoaXMuaXRXYXNQcmV2aW91c2x5Q2FsY3VsYXRlZChldmVudCwgY2FsY3VsYXRlZEdyaWRTdGF0ZSwgZ3JpZE9wdGlvbnMpO1xuXHRcdFx0aWYgKCFwcmV2aW91c2x5Q2FsY3VsYXRlZCkge1xuXHRcdFx0XHRncmlkT3B0aW9ucy5jb2x1bW5BcGkuZ2V0Q29sdW1ucygpXG5cdFx0XHRcdFx0LmZvckVhY2goY29sID0+IHtcblx0XHRcdFx0XHRcdGlmICghY29sLmdldENvbERlZigpLnN1cHByZXNzU2l6ZVRvRml0KSB7XG5cdFx0XHRcdFx0XHRcdGdyaWRPcHRpb25zLmNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbihjb2wuZ2V0Q29sSWQoKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2l6ZUNvbHVtbnNUb0ZpdChncmlkT3B0aW9ucyk7XG5cdFx0fVxuXHR9XG5cblx0Ly9UaGlzIGlzIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBhdXRvc2l6ZWQgY29sdW1uIGJ5IDEgcGl4ZWwuXG5cdC8vIFx0VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzb21lIGJyb3dzZXJzIGRvIG5vdCBjb3JyZWN0bHkgY2FsY3VsYXRlXG5cdC8vIFx0dGhlIGF2YWlsYWJsZSBncmlkIHNpemUgd2hlbiBpdCBpcyBub3QgYW4gaW50ZWdlci5cblx0Ly9cdEZvciBleGFtcGxlLCBpZiB0aGUgYWN0dWFsIGF2YWlsYWJsZSBzaXplIGlzIDk5LjYsIHNvbWUgYnJvd3NlcnMgcmV0dXJuIDk5LjZcblx0Ly9cdGZvciB0aGUgcGFyZW50IHNpemUgKHZpZXdwb3J0KSBhbmQgMTAwIGZvciB0aGUgZ3JpZCBzaXplIChjb250YWluZXIpLiBBbmQgbm93LFxuXHQvL1x0c2luY2UgdGhlIGNvbnRhaW5lciBpcyBiaWdnZXIgdGhhbiBpdHMgdmlld3BvcnQsIGFuIGhvcml6b250YWwgc2Nyb2xsYmFyIGFwcGVhcnMuXG5cdC8vXHRBZGRpdGlvbmFsbHksIGFzIHRoZSBzaXplIGluIGRpZmZlcmVuY2UgaXMgbGVzcyB0aGFuIDEgKGNhdXNlZCBiZWNhdXNlIG9mXG5cdC8vXHRyb3VuZGluZyksIHRoZSBzY3JvbGxiYXIgaXMgZW1wdHksIGhhdmluZyBubyBiYXIgaGFuZGxlLlxuXHQvL1RoaXMgaXMgb25seSBuZWNlc3NhcnkgZm9yIHNpemVDb2x1bW5zVG9GaXQsIGF1dG9TaXplQ29sdW1ucyBkb2VzIGl0IGNvcnJlY3RseS5cblx0cHVibGljIHN0YXRpYyBzaXplQ29sdW1uc1RvRml0KGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucykge1xuXHRcdGdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG5cblx0XHRjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGdyaWRPcHRpb25zLmNvbHVtbkFwaS5nZXRDb2x1bW5zKCk7XG5cdFx0Zm9yKGxldCBpOiBudW1iZXIgPSBjb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRjb25zdCBjb2w6IENvbHVtbiA9IGNvbHNbaV07XG5cdFx0XHRpZighY29sLmdldENvbERlZigpLnN1cHByZXNzU2l6ZVRvRml0ICYmIGNvbC5nZXRBY3R1YWxXaWR0aCgpID4gMSkge1xuXHRcdFx0XHRncmlkT3B0aW9ucy5jb2x1bW5BcGkuc2V0Q29sdW1uV2lkdGgoY29sLCBjb2wuZ2V0QWN0dWFsV2lkdGgoKSAtIDEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdfQ==