import {Component} from '../../lib/vues6.js' /** * An enum representing the different grid cell renderer types for the shared grid. * @type {object} */ const GridCellRenderType = { Simple: Symbol('simple'), HTML: Symbol('html'), Component: Symbol('component'), } export {GridCellRenderType} const template = `
# {{ col.header || '' }}
{{ idx + 1 }}
{{ row[col.key] }}
` /** * Shared grid component used to show tables in various interfaces. * @extends Component */ class GridComponent extends Component { static get selector() { return 'app-grid' } static get template() { return template } static get props() { return [ 'show_row_numbers', 'column_defs', 'data', ] } GridCellRenderType = GridCellRenderType /** * Called when the component is instantiated. * @return {Promise} */ async vue_on_create() { } /** * Called when the component renderer emits a click event, to pass it along to the column definition. * @param {object} col - the column definition * @param {object} row - the row clicked * @param {object} passcol - the column emitted from the component */ on_col_click(col, [row, passcol]) { col.on_click(row, passcol) } } export default GridComponent