oranguru/src/Gridler
2025-10-22 17:06:31 +02:00
..
components Event handlers and Flex changes 2025-10-22 17:06:31 +02:00
hooks A lot of refectoring 2025-10-21 14:10:59 +02:00
stories Event handlers and Flex changes 2025-10-22 17:06:31 +02:00
utils Form interface and Loading menu 2025-10-15 16:24:39 +02:00
Gridler.module.css Event handlers and Flex changes 2025-10-22 17:06:31 +02:00
Gridler.test.tsx A lot of refectoring 2025-10-21 14:10:59 +02:00
Gridler.tsx Build fixes 2025-10-21 14:24:28 +02:00
GridlerDataGrid.tsx Event handlers and Flex changes 2025-10-22 17:06:31 +02:00
index.ts A lot of refectoring 2025-10-21 14:10:59 +02:00
README.md Work on grid 2025-09-22 14:58:25 +02:00

Gridler

A powerful React data grid component built on top of @glideapps/glide-data-grid with enhanced features for data manipulation and visualization.

Features

Completed Features

Core Grid Functionality

  • Data Display: Support for both local data and remote API data sources
  • Column Management: Dynamic column configuration with customizable properties
  • Cell Rendering: Custom cell renderers with flexible display options
  • Row Selection: Multi-row selection capabilities
  • Context Menus: Right-click context menus for cells, headers, and general grid areas

Sorting & Filtering

  • Local File Sorting: Built-in sorting for local data sources
  • Column Sorting: Click-to-sort headers with ascending/descending indicators
  • Advanced Filtering: Column-based filtering with multiple operators:
    • Contains, Equal, Not Equal
    • Greater Than, Greater Than or Equal
    • Less Than, Less Than or Equal
    • Between, Starts With, Ends With
  • Filter UI: Dedicated filter input components with debounced search
  • Searching: Built-in search functionality across data

Column Features

  • Show/Hide Columns: Dynamic column visibility control
  • Column Resizing: Adjustable column widths with min/max constraints
  • Column Reordering: Drag-and-drop column repositioning
  • Column Persistence: Automatic saving of column order and sizes
  • Filtering Interface/Menu: Comprehensive filtering controls per column

Data Management

  • Pagination: Built-in pager component for large datasets
  • Progressive Scrolling: Efficient rendering for large data sets
  • State Persistence: Column preferences saved across sessions
  • Error Handling: Comprehensive error management and display

UI/UX Features

  • Theme Support: Customizable grid themes with dark/light mode support
  • Responsive Design: Adaptive layout for different screen sizes
  • Loading States: Visual feedback during data loading
  • Keyboard Navigation: Full keyboard accessibility
  • Sprites/Icons: Custom sort indicators and UI elements

Integration Features

  • API Adaptor: Go Lang v2 REST API integration
  • Zustand Store: Centralized state management
  • Mantine Integration: Seamless integration with Mantine UI components
  • TypeScript Support: Full TypeScript definitions and type safety

🚧 Planned Features

Enhanced Filtering

  • Date Range Filters: Specialized date/time filtering controls
  • Multi-Select Filters: Dropdown filters with multiple selection options
  • Custom Filter Types: Support for custom filter implementations
  • Filter Presets: Save and load common filter combinations
  • Advanced Search: Global search with highlighting and regex support

Export/Import

  • CSV Export: Export filtered/sorted data to CSV format
  • Excel Export: Export to Excel with formatting preservation
  • JSON Export: Export data in JSON format
  • Print Support: Print-friendly grid layouts
  • Data Import: Import data from various file formats

Advanced Grid Features

  • Cell Editing: In-place cell editing with validation
  • Bulk Operations: Multi-row operations (delete, update, etc.)
  • Grouping: Row grouping with expand/collapse functionality
  • Aggregation: Column aggregation (sum, average, count, etc.)
  • Virtual Scrolling: Enhanced performance for very large datasets
  • Frozen Columns: Pin important columns to left/right
  • Row Grouping: Hierarchical data display

UI Enhancements

  • Column Templates: Pre-defined column configurations
  • Grid Templates: Save and load entire grid configurations
  • Toolbar Customization: Configurable toolbar with custom actions
  • Status Bar: Display grid statistics and information
  • Full Screen Mode: Maximize grid to full viewport
  • Responsive Breakpoints: Better mobile/tablet support

Performance & Optimization

  • Data Virtualization: Improved virtual scrolling implementation
  • Lazy Loading: On-demand data loading for large datasets
  • Caching Strategy: Intelligent data caching for better performance
  • Memory Optimization: Reduced memory footprint for large grids

Developer Experience

  • Plugin System: Extensible plugin architecture
  • Custom Hooks: Reusable hooks for common grid operations
  • Documentation: Comprehensive API documentation and examples
  • Testing Suite: Complete test coverage for all features
  • Storybook Stories: Interactive component examples

Usage

import { Gridler } from './Gridler';

const MyGrid = () => {
  const columns = [
    { id: 'name', title: 'Name', width: 200 },
    { id: 'email', title: 'Email', width: 250 },
    { id: 'role', title: 'Role', width: 150 }
  ];

  const data = [
    { name: 'John Doe', email: 'john@example.com', role: 'Admin' },
    { name: 'Jane Smith', email: 'jane@example.com', role: 'User' }
  ];

  return (
    <Gridler
      uniqueid="my-grid"
      columns={columns}
      data={data}
    />
  );
};

Architecture

  • Gridler.tsx: Main component wrapper with provider setup
  • GridlerDataGrid.tsx: Core data grid implementation
  • Store.tsx: Zustand-based state management
  • Column.tsx: Column definitions and filtering components
  • components/: Reusable grid components (Pager, Computer, etc.)
  • hooks/: Custom React hooks for grid functionality
  • utils/: Utility functions and type definitions