(grid: GridPattern, data: TestRowData[])
| 73 | } |
| 74 | |
| 75 | function createGridRows(grid: GridPattern, data: TestRowData[]) { |
| 76 | const builtWidgets: GridCellWidgetPattern[] = []; |
| 77 | const gridRows = data.map((rowData, rowIndex) => { |
| 78 | const rowInputs: TestGridRowInputs = { |
| 79 | grid: signal(grid), |
| 80 | cells: signal([]), |
| 81 | rowIndex: signal(rowData.rowIndex), |
| 82 | }; |
| 83 | const row = new GridRowPattern(rowInputs); |
| 84 | |
| 85 | const rowCells = rowData.cells.map((cellData, colIndex) => { |
| 86 | const cellInputs: TestGridCellInputs = { |
| 87 | id: signal(cellData.id ?? `cell-${rowIndex}-${colIndex}`), |
| 88 | element: signal(document.createElement('div')), |
| 89 | grid: signal(grid), |
| 90 | row: signal(row), |
| 91 | widget: signal<GridCellWidgetPattern | undefined>(undefined), |
| 92 | rowIndex: signal(cellData.rowIndex), |
| 93 | colIndex: signal(cellData.colIndex), |
| 94 | selectable: signal(cellData.selectable ?? true), |
| 95 | disabled: signal(cellData.disabled ?? false), |
| 96 | rowSpan: signal(cellData.rowSpan ?? 1), |
| 97 | colSpan: signal(cellData.colSpan ?? 1), |
| 98 | selected: signal(cellData.selected ?? false), |
| 99 | getWidget: (el: Element | null) => builtWidgets.find(w => w.element() === el), |
| 100 | }; |
| 101 | const cell = new GridCellPattern(cellInputs); |
| 102 | |
| 103 | if (cellData.widget) { |
| 104 | const widgetInputs: TestGridCellWidgetInputs = { |
| 105 | cell: signal(cell), |
| 106 | element: signal(document.createElement('div')), |
| 107 | widgetType: signal(cellData.widget.widgetType ?? 'simple'), |
| 108 | focusTarget: signal(undefined), |
| 109 | disabled: signal(cellData.widget.disabled ?? false), |
| 110 | }; |
| 111 | const widget = new GridCellWidgetPattern(widgetInputs); |
| 112 | builtWidgets.push(widget); |
| 113 | cellInputs.widget.set(widget); |
| 114 | } |
| 115 | |
| 116 | return cell; |
| 117 | }); |
| 118 | |
| 119 | rowInputs.cells.set(rowCells); |
| 120 | return row; |
| 121 | }); |
| 122 | return {gridRows}; |
| 123 | } |
| 124 | |
| 125 | function getDefaultGridInputs(): TestGridInputs { |
| 126 | return { |
no test coverage detected
searching dependent graphs…