@browser.style/data-grid
v1.0.16
Published
Dynamic data grid component with sorting, filtering, and pagination support
Downloads
107
Maintainers
Readme
DataGrid
A dynamic web component for creating interactive data grids with sorting, filtering, pagination, and internationalization support.
Installation
npm install @browser.style/data-gridUsage
import '@browser.style/data-grid';<!-- Basic usage -->
<data-grid
data="/api/data"
itemsperpage="10">
</data-grid>
<!-- Full featured -->
<data-grid
data="/api/data"
debug
density="medium"
export-csv
export-json
i18n="/api/i18n"
itemsperpage="25"
lang="en"
printable
searchable
selectable
stickycols="0,1"
styles>
</data-grid>Attributes
data: URL to fetch data or JSON stringdebug: Enable debug loggingdensity: Row density ('small', 'medium', 'large')export-csv: Enable CSV exportexport-json: Enable JSON exportexternal-navigation: Enable external page navigationi18n: URL to fetch translationsitemsperpage: Items per page (default: 10)lang: Language code (default: 'en')layoutfixed: Fixed table layout (default: true)noform: Hide form controlsnonav: Hide navigationnopage: Disable paginationnorows: Hide rows per page selectornosortable: Disable sortingpage: Initial page numberprintable: Enable print functionalityschema: URL to fetch JSON schemasearchable: Enable search functionalityselectable: Enable row selectionstickycols: Comma-separated sticky column indicestableclasses: Space-separated table CSS classestextoptions: Show text wrap/layout optionstextwrap: Enable text wrapping (default: true)wrapperclasses: Comma-separated wrapper CSS classes
Events
dg:itemsperpage: Items per page changeddg:loaded: Grid initializeddg:requestpagechange: Page change requesteddg:selection: Selection changed
Form Integration
<form>
<data-grid name="grid"></data-grid>
</form>Access grid instance:
const form = document.querySelector('form');
const grid = form.elements.grid;Custom Rendering
const grid = document.querySelector('data-grid');
grid.addEventListener('dg:loaded', () => {
// Grid is ready for customization
console.log('Total items:', grid.state.items);
});External Navigation
<data-grid
data="/api/data?page=0&size=10"
external-navigation
itemsperpage="10">
</data-grid>Handle page changes:
grid.addEventListener('dg:requestpagechange', event => {
const { page, direction } = event.detail;
// Fetch new data and update grid
});