Autosize feature
Autosize is aiming to provide intuitive functionality of content dependent entities. Meanwhile some limitations applied.
Column autosize
In order to achieve column autosize support you have to set autoSizeColumn
grid property.
autoSizeColumn
accept different options. The easiest way to start with to use excel like option: autoSizeColumn = true
(by default it's false
). Based on this option every column which has autoSize: true
property can be recalculated on column header separator double click.
Quick start
// define autosize per column, if you don't use advance config option allColumns (read below section #Advance usage)
const columns = [{ prop: 'myField', autoSize: true }];
const rows = [{ 'myField': 'my long-long field' }];
const grid = document.querySelector('revo-grid');
grid.autoSizeColumn = true;
grid.source = rows;
grid.columns = columns;
Advance usage
autoSizeColumn
can be set up as a config object with optional parameters.
grid.autoSizeColumn = {
mode: 'autoSizeOnTextOverlap'
};
type AutoSizeColumnConfig = {
// ui behavior mode
mode?: ColumnAutoSizeMode;
/**
* autoSize for all columns
* if allColumnes true all columns treated as autoSize, worse for performance
* false by default
*/
allColumns?: boolean;
/**
* assumption per characted size
* improves performance
* by default defined as 7px per char, can be changed in this config
*/
letterBlockSize?: number;
/** make size calculation exact
* by default it based on assumption each character takes some space defined in letterBlockSize */
preciseSize?: boolean;
};
Brief modes description
Column autosize comes in different variation based on user necessity. Each mode has it's own benefits and downsides:
enum ColumnAutoSizeMode {
// increases column width on header click according the largest text value
headerClickAutosize = 'headerClickAutoSize',
// increases column width on data set and text edit, decreases performance
autoSizeOnTextOverlap = 'autoSizeOnTextOverlap',
// increases and decreases column width based on all items sizes, worst for performance
autoSizeAll = 'autoSizeAll'
}
Visit our demo for real live sample.
WARNING
Currently AutoSize works in Beta mode. Only text autosize supported. Mapped values and custom renders can't be autosized at this moment and require different plugin approach based on per column prerender.
TIP
It's recommended to check autoSizeColumn.ts plugin for better understanding of all options.