UNPKG

@3mo/data-grid

Version:
46 lines (45 loc) 1.49 kB
export class DataRecord { constructor(dataGrid, init) { this.dataGrid = dataGrid; Object.assign(this, init); } get isSelected() { return this.dataGrid.selectionController.isSelected(this.data); } get isSelectable() { return this.dataGrid.selectionController.isSelectable(this.data); } get detailsOpen() { return this.dataGrid.detailsController.isOpen(this); } get subDataRecords() { if (!this.dataGrid.subDataGridDataSelector) { return undefined; } if (this._subDataRecords !== undefined) { return this._subDataRecords; } const subData = KeyPath.get(this.data, this.dataGrid.subDataGridDataSelector); if (!Array.isArray(subData) || !subData.length) { return undefined; } return this._subDataRecords = this.dataGrid.sortingController .toSortedBy(subData, d => d) .map(data => new DataRecord(this.dataGrid, { data, level: this.level + 1 })); } get flattenedRecords() { return [ this, ...(this.subDataRecords?.flatMap(r => r.flattenedRecords) ?? []) ]; } getSubDataByLevel(level) { return this.subDataRecords?.filter(r => r.level === level); } get hasSubData() { return (this.subDataRecords?.length ?? 0) > 0; } get hasDetails() { return this.dataGrid.detailsController.hasDetail(this); } }