-
Notifications
You must be signed in to change notification settings - Fork 0
Description
@etherisc/ui-kit Feature Request: Advanced DataTable Features Roadmap
Feature Request for: @etherisc/ui-kit
Submitted by: Web Application Team
Type: Enhancement
Scope: DataTable Component Enhancement
Overview
Building on the successful DataTable pagination architecture in v0.6.0, we propose a comprehensive enhancement roadmap to expose TanStack Table's advanced features through the ui-kit DataTable component. This will provide enterprise-grade table functionality while maintaining the clean, consistent API that ui-kit is known for.
Business Justification
Current Success
Our team has successfully implemented:
- Smart pagination configuration system with performance presets
- Configurable pagination (SIMPLE/STANDARD/COMPLEX/HEAVY thresholds)
- Unified ActionDefinition patterns across all tables
- Significant code reduction and performance improvements
Next Level Requirements
Enterprise applications require advanced table functionality that goes beyond basic data display and pagination. These features are essential for:
- Data Analysis: Column resizing, sorting, filtering for data exploration
- User Productivity: Show/hide columns, in-cell editing for efficient workflows
- Large Datasets: Virtualization, grouping for performance and organization
- Customization: Drag-and-drop, pinning for personalized experiences
Prioritized Feature Roadmap
🔥 Priority 1: High Priority (Next Release)
1.1 Column Resizability
Why High Priority: Essential for data tables with varying content lengths
TanStack Foundation:
// TanStack Table provides this out of the box
const table = useReactTable({
enableColumnResizing: true,
columnResizeMode: "onChange", // or "onEnd"
columnResizeDirection: "ltr",
})Proposed ui-kit API:
<DataTable
data={data}
columns={columns}
enableResizing={true}
resizeMode="onChange" // "onChange" | "onEnd"
resizeDirection="ltr" // "ltr" | "rtl"
/>Features:
- Mouse and touch resizing support
- Performance modes (onChange vs onEnd)
- Min/max width constraints per column
- Visual resize indicators
- RTL support
1.2 In-Cell Editing
Why High Priority: Critical for data entry and productivity workflows
TanStack Foundation:
// TanStack provides full editable cell support
const defaultColumn = {
cell: ({ getValue, row, column, table }) => {
// Full editing logic available
return <EditableCell {...props} />
}
}Proposed ui-kit API:
interface EditableColumnDef extends ColumnDef {
editable?: boolean;
editType?: 'text' | 'number' | 'date' | 'select' | 'custom';
editOptions?: string[]; // for select type
editValidation?: (value: any) => string | undefined;
onCellEdit?: (rowIndex: number, columnId: string, value: any) => void;
}
<DataTable
data={data}
columns={editableColumns}
editMode="cell" // "cell" | "row" | "table"
onDataChange={handleDataUpdate}
/>Features:
- Cell-level, row-level, or table-level editing modes
- Multiple input types (text, number, date, select, custom)
- Validation and error handling
- Edit/cancel functionality
- Optimistic updates
📋 Priority 2: Medium Priority (Future Releases)
2.1 Table Configuration Management (Show/Hide Columns)
Why Medium Priority: Improves user experience with customizable interfaces
Proposed API:
<DataTable
data={data}
columns={columns}
enableColumnVisibility={true}
initialColumnVisibility={{
columnId1: false, // hidden by default
columnId2: true,
}}
onColumnVisibilityChange={handleVisibilityChange}
showColumnToggle={true} // renders column visibility UI
/>2.2 Column Ordering/Drag & Drop
Why Medium Priority: Enhances personalization and workflow optimization
Proposed API:
<DataTable
data={data}
columns={columns}
enableColumnOrdering={true}
onColumnOrderChange={handleOrderChange}
columnOrderPersistence="localStorage" // "localStorage" | "sessionStorage" | "custom"
/>2.3 Column Pinning
Why Medium Priority: Useful for wide tables with key identifier columns
Proposed API:
<DataTable
data={data}
columns={columns}
enableColumnPinning={true}
initialColumnPinning={{
left: ['id', 'name'],
right: ['actions']
}}
/>2.4 Grouping & Aggregation
Why Medium Priority: Powerful for data analysis and hierarchical data
Proposed API:
<DataTable
data={data}
columns={columns}
enableGrouping={true}
enableExpanding={true}
groupingConfig={{
aggregationFns: {
sum: 'sum',
avg: 'mean',
count: 'count'
}
}}
/>📊 Priority 3: Low Priority (Future Consideration)
3.1 Advanced Column Filtering
Note: Basic filtering might be higher priority, but advanced faceted filtering is lower
Proposed API:
<DataTable
data={data}
columns={columns}
enableFiltering={true}
filterMode="client" // "client" | "server"
enableFacetedFiltering={true}
customFilterFns={customFilters}
/>3.2 Row Selection with Bulk Operations
Proposed API:
<DataTable
data={data}
columns={columns}
enableRowSelection={true}
rowSelectionMode="multiple" // "single" | "multiple"
onRowSelectionChange={handleSelection}
bulkActions={[
{ id: 'delete', label: 'Delete Selected', onClick: handleBulkDelete },
{ id: 'export', label: 'Export Selected', onClick: handleBulkExport }
]}
/>3.3 Advanced Sorting
Proposed API:
<DataTable
data={data}
columns={columns}
enableSorting={true}
enableMultiSort={true}
maxMultiSortColCount={3}
customSortingFns={customSorts}
/>3.4 Virtualization
Proposed API:
<DataTable
data={data}
columns={columns}
enableVirtualization={true}
virtualRowHeight={48}
overscan={5}
maxHeight={600}
/>3.5 Custom Features Extension
Proposed API:
<DataTable
data={data}
columns={columns}
customFeatures={[
myCustomFeature,
anotherCustomFeature
]}
customTableOptions={{
// Pass through to TanStack Table
}}
/>Implementation Strategy
Phase 1: High Priority Features (Priority 1)
Target: Next major release (v0.7.0)
- Column Resizability
- In-Cell Editing
- Enhanced pagination bug fixes
Phase 2: Core User Experience (Priority 2)
Target: Subsequent releases (v0.8.0 - v0.9.0)
- Table Configuration Management
- Column Ordering/Drag & Drop
- Column Pinning
- Grouping & Aggregation
Phase 3: Advanced Features (Priority 3)
Target: Future releases (v1.0.0+)
- Advanced Filtering
- Row Selection & Bulk Operations
- Advanced Sorting
- Virtualization
- Custom Features Extension
Technical Architecture
Design Principles
- Incremental Enhancement: Each feature should be opt-in and not break existing implementations
- TanStack Compatibility: Expose TanStack Table features while maintaining ui-kit's clean API
- Performance First: Provide performance-optimized defaults with customization options
- TypeScript Excellence: Full type safety for all feature configurations
- Accessibility: WCAG compliance for all interactive features
Backward Compatibility
All new features will be:
- Opt-in: Disabled by default to maintain current behavior
- Non-breaking: Existing DataTable usage continues to work unchanged
- Progressive: Features can be adopted individually
Integration with Current Patterns
These features will work seamlessly with our existing:
- Smart pagination configuration system
- ActionDefinition patterns
- Performance optimization helpers
Success Criteria
Developer Experience
- Clean, intuitive API that maintains ui-kit's design philosophy
- Comprehensive TypeScript support
- Clear documentation with examples
- Easy migration path from basic to advanced usage
Performance
- No performance degradation for basic usage
- Optimized rendering for advanced features
- Efficient memory usage for large datasets
- 60fps interactions for resizing, sorting, etc.
User Experience
- Intuitive interactions following platform conventions
- Consistent visual design with ui-kit components
- Accessible keyboard navigation
- Responsive design for mobile/desktop
Community Impact
Benefits
- Position: Establishes ui-kit as the leading React table solution
- Adoption: Reduces need for custom table implementations
- Ecosystem: Creates a rich ecosystem of table-based components
- Performance: Leverages TanStack Table's optimizations
Migration Support
We commit to:
- Providing migration guides for each feature
- Offering code examples and best practices
- Supporting the community during adoption
- Contributing to documentation and examples
Conclusion
This roadmap transforms ui-kit's DataTable from a solid pagination-enabled component into a comprehensive enterprise-grade table solution. By systematically exposing TanStack Table's advanced features through ui-kit's clean API, we can provide developers with powerful tools while maintaining the simplicity and consistency that makes ui-kit excellent.
The prioritized approach ensures that the most impactful features (column resizing, in-cell editing) are delivered first, while building a foundation for advanced capabilities that will serve enterprise applications for years to come.
Contact: Web Application Team
Available for: Feature specification, testing, implementation collaboration, and community support