gd-bs
Version:
Bootstrap JavaScript, TypeScript and Web Components library.
121 lines (111 loc) • 4.6 kB
TypeScript
/**
* <div id="demo"></div>
* <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/gd-sprest-bs/5.0.3/gd-sprest-bs.min.js"></script>
* <script type="text/javascript">
* // Wait for the window to be loaded
* window.addEventListener("load", function() {
* // Render the table
* $REST.Components.Table({
* el: document.querySelector("#demo"),
* className: "table-sm is-striped",
* columns: [
* { name: "a0", title: "Actions", isHidden: true },
* { name: "a1", title: "Col 1" },
* { name: "a2", title: "Col 2" },
* { name: "a3", title: "Col 3" }
* ],
* rows: [
* { a0: "1", a1: "1.1", a2: "1.2", a3: "1.3" },
* { a0: "2", a1: "2.1", a2: "2.2", a3: "2.3" },
* { a0: "3", a1: "3.1", a2: "3.2", a3: "3.3" },
* { a0: "4", a1: "4.1", a2: "4.2", a3: "4.3" },
* { a0: "5", a1: "5.1", a2: "5.2", a3: "5.3" },
* { a0: "6", a1: "6.1", a2: "6.2", a3: "6.3" },
* { a0: "7", a1: "7.1", a2: "7.2", a3: "7.3" },
* { a0: "8", a1: "8.1", a2: "8.2", a3: "8.3" },
* { a0: "9", a1: "9.1", a2: "9.2", a3: "9.3" }
* ]
* });
* });
* </script>
*/
/**
* ### Table
*
* ```ts
* import { Components } from "gd-sprest-bs";
*
* // Create the table
* let el = document.querySelector("#table");
* let table = Components.Table({
* el: el,
* className: "table-sm is-striped",
* columns: [
* { name: "a0", title: "Actions", isHidden: true },
* { name: "a1", title: "Col 1" },
* { name: "a2", title: "Col 2" },
* { name: "a3", title: "Col 3" }
* ],
* rows: [
* { a0: "1", a1: "1.1", a2: "1.2", a3: "1.3" },
* { a0: "2", a1: "2.1", a2: "2.2", a3: "2.3" },
* { a0: "3", a1: "3.1", a2: "3.2", a3: "3.3" },
* { a0: "4", a1: "4.1", a2: "4.2", a3: "4.3" },
* { a0: "5", a1: "5.1", a2: "5.2", a3: "5.3" },
* { a0: "6", a1: "6.1", a2: "6.2", a3: "6.3" },
* { a0: "7", a1: "7.1", a2: "7.2", a3: "7.3" },
* { a0: "8", a1: "8.1", a2: "8.2", a3: "8.3" },
* { a0: "9", a1: "9.1", a2: "9.2", a3: "9.3" }
* ]
* });
* ```
*/
export const Table: (props: ITableProps, template?: string) => ITable
import { IBaseProps } from "../types";
/**
* Table
*/
export interface ITable {
addRows: (rows: Array<any>) => void;
el: HTMLTableElement;
/** Hides the table. */
hide: () => void;
/** Shows the table. */
show: () => void;
updateColumn: (elCol: HTMLElement, colIdx: number, row: any) => void;
updateRow: (elRow: HTMLElement, row: any) => void;
}
/**
* Table Properties
*/
export interface ITableProps extends IBaseProps<ITable> {
columns?: Array<ITableColumn>;
onClickCell?: (el: HTMLTableCellElement, column?: ITableColumn, data?: any, rowIdx?: number) => void;
onClickFooter?: (el: HTMLTableCellElement, column?: ITableColumn) => void;
onClickHeader?: (el: HTMLTableCellElement, column?: ITableColumn) => void;
onRenderCell?: (el?: HTMLTableCellElement, column?: ITableColumn, data?: any, rowIdx?: number) => void;
onRenderFooterCell?: (el?: HTMLTableCellElement, column?: ITableColumn) => void;
onRenderFooterRow?: (el?: HTMLTableRowElement) => void;
onRenderHeaderCell?: (el?: HTMLTableCellElement, column?: ITableColumn) => void;
onRenderHeaderRow?: (el?: HTMLTableRowElement) => void;
onRenderRow?: (el?: HTMLTableRowElement, data?: any, rowIdx?: number) => void;
rows?: Array<any>;
}
/**
* Table Column
*/
export interface ITableColumn {
className?: string;
data?: any;
footer?: string;
isHidden?: boolean;
name: string;
onClickCell?: (el: HTMLTableCellElement, column?: ITableColumn, data?: any, rowIdx?: number) => void;
onClickFooter?: (el: HTMLTableCellElement, column?: ITableColumn) => void;
onClickHeader?: (el: HTMLTableCellElement, column?: ITableColumn) => void;
onRenderCell?: (el: HTMLTableCellElement, column?: ITableColumn, data?: any, rowIdx?: number) => void;
onRenderFooter?: (el?: HTMLTableCellElement, column?: ITableColumn) => void;
onRenderHeader?: (el?: HTMLTableCellElement, column?: ITableColumn) => void;
scope?: string;
title?: string;
}