Skip to content

Feature Request: Advanced DataTable Features Roadmap #62

@christoph2806

Description

@christoph2806

@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

  1. Incremental Enhancement: Each feature should be opt-in and not break existing implementations
  2. TanStack Compatibility: Expose TanStack Table features while maintaining ui-kit's clean API
  3. Performance First: Provide performance-optimized defaults with customization options
  4. TypeScript Excellence: Full type safety for all feature configurations
  5. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions