Error & Warning Reference
Every warning and error in @toolbox-web/grid includes a diagnostic code (e.g. TBW001) and a link back to this page. Find your code below for an explanation and fix.
Configuration Validation
Section titled “Configuration Validation”TBW001 — Missing Plugin (Column Property)
Section titled “TBW001 — Missing Plugin (Column Property)”A column uses a property (like editable, editor, pinned, or group) that requires a plugin, but that plugin isn’t loaded.
Fix: Import and add the required plugin:
// For editingimport '@toolbox-web/grid/features/editing';
grid.gridConfig = { features: { editing: true }, columns: [{ field: 'name', editable: true }],};Or with the plugin API directly:
import { EditingPlugin } from '@toolbox-web/grid/plugins/editing';
grid.gridConfig = { plugins: [new EditingPlugin()], columns: [{ field: 'name', editable: true }],};TBW002 — Missing Plugin (Config Property)
Section titled “TBW002 — Missing Plugin (Config Property)”A grid config property (like columnGroups) requires a plugin that isn’t loaded.
Fix: Same as TBW001 — import the required feature or plugin.
TBW003 — Config Rule Error
Section titled “TBW003 — Config Rule Error”A plugin’s configuration rule detected an invalid combination. The error message describes the specific rule that was violated.
Fix: Check the error message for the specific plugin and configuration that triggered the rule. Adjust the plugin config to avoid the invalid combination.
TBW004 — Config Rule Warning
Section titled “TBW004 — Config Rule Warning”A plugin detected a potentially problematic configuration. This is a development-only warning — the grid will still work, but behavior may be unexpected.
Fix: Read the warning message and adjust your config accordingly.
Plugin Lifecycle
Section titled “Plugin Lifecycle”TBW020 — Missing Plugin Dependency
Section titled “TBW020 — Missing Plugin Dependency”A plugin requires another plugin to be loaded first. For example, UndoRedoPlugin requires EditingPlugin.
Fix: Add the dependency plugin before the dependent one:
import '@toolbox-web/grid/features/editing';import '@toolbox-web/grid/features/undoRedo';
grid.gridConfig = { features: { editing: true, undoRedo: true, },};TBW021 — Optional Dependency Missing
Section titled “TBW021 — Optional Dependency Missing”A plugin has an optional dependency that isn’t loaded. The plugin will still work, but some features may be unavailable.
Fix: If you need the full feature set, add the optional dependency. Otherwise, this message is informational and can be ignored.
TBW022 — Incompatible Plugins
Section titled “TBW022 — Incompatible Plugins”Two plugins that are known to conflict are both loaded. Development-only warning.
Fix: Remove one of the conflicting plugins. The warning message names both plugins and explains the conflict.
TBW023 — Deprecated Hook
Section titled “TBW023 — Deprecated Hook”A plugin uses a deprecated API that will be removed in a future major version.
Fix: Migrate to the recommended replacement described in the warning message.
TBW024 — Plugin Event Handler Error
Section titled “TBW024 — Plugin Event Handler Error”An error was thrown inside a plugin event handler. This doesn’t crash the grid — the error is caught and logged — but it indicates a bug in plugin code.
Fix: Check the stack trace to find and fix the error in the plugin’s event handler.
Feature Registry
Section titled “Feature Registry”TBW030 — Feature Re-registered
Section titled “TBW030 — Feature Re-registered”A feature was registered more than once. The previous registration was overwritten. This typically happens when two different versions of the same feature module are loaded.
Fix: Check your bundle for duplicate imports. Each feature should be imported exactly once.
TBW031 — Feature Not Imported
Section titled “TBW031 — Feature Not Imported”A feature is configured in gridConfig.features but its module was never imported. Features require a side-effect import to register themselves.
Fix: Add the import shown in the warning:
import '@toolbox-web/grid/features/selection';
grid.gridConfig = { features: { selection: 'row' },};Framework adapters handle this automatically — if you’re using Angular, React, or Vue adapters, import from the adapter package instead.
TBW032 — Feature Missing Dependency
Section titled “TBW032 — Feature Missing Dependency”A feature requires another feature to be enabled. For example, clipboard requires selection.
Fix: Add the required feature to your config:
grid.gridConfig = { features: { selection: 'range', clipboard: true, },};Row Operations
Section titled “Row Operations”TBW040 — Missing Row ID
Section titled “TBW040 — Missing Row ID”The grid needs to identify a row but couldn’t determine its ID. This happens when:
- Rows don’t have an
idor_idproperty - No
getRowIdfunction is configured
Fix: Either add an id field to your data, or configure getRowId:
grid.gridConfig = { getRowId: (row) => row.employeeNumber,};TBW041 — Row Not Found
Section titled “TBW041 — Row Not Found”A row update or delete operation referenced a row ID that doesn’t exist in the grid.
Fix: Verify the row ID is correct and the row hasn’t been removed. Use grid.getRow(id) to check if a row exists before updating.
Column Operations
Section titled “Column Operations”TBW050 — Invalid Column Width
Section titled “TBW050 — Invalid Column Width”A column’s width value is not a valid CSS grid track size. Development-only warning.
Fix: Use a number (interpreted as pixels) or a valid CSS string:
{ field: 'name', width: 200 } // 200px{ field: 'name', width: '30%' } // 30%{ field: 'name', width: '2fr' } // 2 fractional units{ field: 'name', width: 'auto' } // autoRendering Callbacks
Section titled “Rendering Callbacks”TBW060 — rowClass Callback Error
Section titled “TBW060 — rowClass Callback Error”The rowClass function threw an error during rendering. The row will render without dynamic classes.
Fix: Check your rowClass function for null/undefined access or type errors.
TBW061 — cellClass Callback Error
Section titled “TBW061 — cellClass Callback Error”A column’s cellClass function threw an error. The cell will render without dynamic classes.
Fix: Check the cellClass function on the column named in the warning.
TBW062 — Format Error
Section titled “TBW062 — Format Error”A column’s format function threw an error. The raw value will be displayed instead.
Fix: Check the format function on the named column. Ensure it handles null/undefined values gracefully.
TBW063 — External View Mount Error
Section titled “TBW063 — External View Mount Error”An externalView.mount() callback threw during cell rendering.
Fix: Debug the mount function in your external view configuration for the named column.
TBW064 — External View Dispatch Error
Section titled “TBW064 — External View Dispatch Error”The mount-external-view event dispatch failed for a cell.
Fix: Check event listeners attached to the mount-external-view event on the grid.
TBW070 — Tool Panel Missing Attributes
Section titled “TBW070 — Tool Panel Missing Attributes”A <tbw-grid-tool-panel> light DOM element is missing required id or title attributes.
Fix: Add both attributes:
<tbw-grid-tool-panel id="my-panel" title="My Panel"> Panel content here</tbw-grid-tool-panel>TBW071 — No Tool Panels
Section titled “TBW071 — No Tool Panels”openToolPanel() was called but no tool panels are registered.
Fix: Register at least one tool panel before attempting to open the panel.
TBW072 — Tool Panel Not Found
Section titled “TBW072 — Tool Panel Not Found”toggleToolPanelSection() was called with a section ID that doesn’t match any registered panel.
Fix: Verify the section ID matches a registered tool panel’s id.
TBW073 — Duplicate Tool Panel
Section titled “TBW073 — Duplicate Tool Panel”A tool panel with the same id was registered twice. The duplicate was ignored.
Fix: Ensure each tool panel has a unique id.
TBW074 — Duplicate Header Content
Section titled “TBW074 — Duplicate Header Content”Header content with the same id was registered twice.
Fix: Use unique IDs for header content registrations.
TBW075 — Duplicate Toolbar Content
Section titled “TBW075 — Duplicate Toolbar Content”Toolbar content with the same id was registered twice.
Fix: Use unique IDs for toolbar content registrations.
Editing
Section titled “Editing”TBW080 — Editor Mount Error
Section titled “TBW080 — Editor Mount Error”An external editor’s mount() function threw during edit activation.
Fix: Debug the editor’s mount function. Ensure it handles the editor context correctly.
TBW090 — Print In Progress
Section titled “TBW090 — Print In Progress”print() was called while a print operation is already running.
Fix: Wait for the current print to complete before starting another. Listen for the print-complete event.
TBW091 — Grid Not Available
Section titled “TBW091 — Grid Not Available”print() was called but the grid element is not available (likely disconnected from the DOM).
Fix: Ensure the grid is mounted before calling print().
TBW092 — Print Failed
Section titled “TBW092 — Print Failed”The print operation encountered an error. The print-complete event will fire with success: false.
Fix: Check the error details in the console. Common causes include the grid being too large or the user canceling the print dialog.
TBW093 — Duplicate Grid ID (Print)
Section titled “TBW093 — Duplicate Grid ID (Print)”Multiple elements on the page share the same id as the grid. This interferes with print isolation.
Fix: Assign a unique id to each grid element on the page.
Clipboard
Section titled “Clipboard”TBW100 — Clipboard API Failed
Section titled “TBW100 — Clipboard API Failed”The browser’s navigator.clipboard.writeText() failed. The grid falls back to document.execCommand('copy').
Fix: This usually happens when the page isn’t focused or lacks the clipboard permission. The fallback typically succeeds, so this warning is informational.
Plugin-Specific
Section titled “Plugin-Specific”TBW110 — Missing Breakpoint (Responsive)
Section titled “TBW110 — Missing Breakpoint (Responsive)”ResponsivePlugin is loaded but no breakpoint is configured. The plugin will not activate.
Fix: Set a breakpoint based on your container width:
grid.gridConfig = { features: { responsive: { breakpoint: 600 }, },};TBW111 — Transaction In Progress (Undo/Redo)
Section titled “TBW111 — Transaction In Progress (Undo/Redo)”beginTransaction() was called while a transaction is already open.
Fix: Call endTransaction() before starting a new transaction.
TBW112 — No Transaction (Undo/Redo)
Section titled “TBW112 — No Transaction (Undo/Redo)”endTransaction() was called without a matching beginTransaction().
Fix: Ensure every endTransaction() has a preceding beginTransaction().
TBW113 — Column Group Missing ID
Section titled “TBW113 — Column Group Missing ID”A ColumnGroupDefinition has neither id nor header. The grid cannot generate an identifier.
Fix: Add either an id or header to every column group definition:
columnGroups: [ { id: 'personal', header: 'Personal Info', children: ['name', 'age'] },]TBW114 — Conflicting Column Groups
Section titled “TBW114 — Conflicting Column Groups”columnGroups are defined in both gridConfig and the groupingColumns feature config. The feature config takes precedence.
Fix: Define column groups in only one place — preferably in the feature config.
Style Injection
Section titled “Style Injection”TBW120 — Style Extraction Failed
Section titled “TBW120 — Style Extraction Failed”The grid couldn’t extract its CSS from document.styleSheets due to a CORS or access error.
Fix: Ensure the grid’s CSS file is served from the same origin, or add CORS headers to the stylesheet response.
TBW121 — Stylesheet Not Found
Section titled “TBW121 — Stylesheet Not Found”The grid’s CSS was not found in document.styleSheets. The grid will render without styling.
Fix: Ensure you’re importing the grid’s CSS. For most setups:
import '@toolbox-web/grid/style.css';Or link it in your HTML:
<link rel="stylesheet" href="node_modules/@toolbox-web/grid/style.css" />Attribute Parsing
Section titled “Attribute Parsing”TBW130 — Invalid Attribute JSON
Section titled “TBW130 — Invalid Attribute JSON”An HTML attribute (rows, columns, or grid-config) contains invalid JSON.
Fix: Verify the attribute value is valid JSON. For complex config, use JavaScript properties instead of HTML attributes:
import { queryGrid } from '@toolbox-web/grid';
const grid = queryGrid('tbw-grid');grid.gridConfig = { columns: [...], ... };