import 'bit-grid-component'
import BitGrid from 'bit-grid-component'
// Create grid with initial data and labels
const grid = new BitGrid({
data: Array(7).fill(null).map(() => Array(24).fill(false)),
rowLabels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
colLabels: Array.from({length: 24}, (_, i) => `${i}:00`),
onChange: (data) => console.log('Data changed:', data)
});
// IMPORTANT:
// Must append to DOM
document.body.appendChild(grid);
// Listen for changes
grid.addEventListener('dataChange', (e) => {
console.log('Data changed:', e.detail);
});
<!-- Declarative -->
<bit-grid></bit-grid>
<script>
const grid = document.querySelector('bit-grid');
grid.update({
data: Array(31).fill(null).map(() => Array(24).fill(false)),
rowLabels: Array.from({length: 31}, (_, i) => 'Day ' + (i + 1)),
colLabels: Array.from({length: 24}, (_, i) => i + 'h')
});
// Listen for changes
grid.addEventListener('dataChange', (e) => {
console.log('Data changed:', e.detail);
});
</script>
<!-- Default: 5x5 grid -->
<div id="grid-container"></div>
<script type="module">
import 'bit-grid-component'
import BitGrid from 'bit-grid-component'
// Default grid (5x5 with auto-generated labels)
const defaultGrid = new BitGrid()
document.getElementById('grid-container').appendChild(defaultGrid)
// Or create with custom options
const customGrid = new BitGrid({
rowLabels: ['Row 1', 'Row 2', 'Row 3'],
colLabels: ['Col 1', 'Col 2', 'Col 3', 'Col 4']
})
document.getElementById('grid-container').appendChild(customGrid)
</script>
import 'bit-grid-component'
import BitGrid from 'bit-grid-component'
// Create and mount grid
const grid = new BitGrid();
document.getElementById('container').appendChild(grid);
// Get grid data
const data = grid.getData();
// Update data and labels
grid.update({
data: booleanArray,
rowLabels: ['Row 1', 'Row 2', ...],
colLabels: ['Col 1', 'Col 2', ...]
});
// Reset to empty grid
grid.reset();
bit-grid {
--grid-primary: #3b82f6;
--grid-bg: #ffffff;
--grid-cell-bg: #f8fafc;
--grid-text: #1f2937;
--grid-text-muted: #64748b;
--grid-header-bg: #f1f5f9;
--grid-hover-bg: #e2e8f0;
--grid-cell-size: 28px;
--grid-header-width: 80px;
--grid-cell-spacing: 4px;
--grid-selection-bg: rgba(59, 130, 246, 0.25);
--grid-selection-active-bg: rgba(59, 130, 246, 0.7);
--grid-cell-radius: 8px;
--grid-radius: 12px;
}