syncfusion-react-listview

Implement Syncfusion React ListView component for displaying dynamic lists with single/multiple selection, templates, filtering, grouping, drag-drop, and virtualization. Use this when you need list visualization, item management, selection handling, custom templates, and data filtering. Supports loc

By syncfusion · 526 installs

npx skills add syncfusion/react-ui-components-skills --skill syncfusion-react-listview

Source repository · Upstream listing

Implementing Syncfusion React ListView A comprehensive guide to implementing the Syncfusion React ListView component for displaying dynamic, interactive lists with advanced features like templating, filtering, selection, and data management. When to Use This Skill Use this skill when you need to: Display lists of items with rich templating and customization Implement single or multiple item selection Add, remove, or update list items dynamically Filter and search list data Create nested or grouped lists Handle user interactions (scroll, select, check) Apply custom animations and styling Support drag and drop operations Optimize performance with virtualization Implement data binding (local or remote) Add checkboxes or custom icons Provide accessibility features (WCAG 2.1) Component Overview The ListView component displays a collection of items in a scrollable, interactive list. It supports: Data Sources: Arrays, objects, DataManager, remote APIs Selection Modes: None, single, multiple, or checkbox based Templates: Item templates, header templates, group templates Data Operations: Filtering, sorting, grouping, searching Performance: Virtual scrolling for 1000+ items Interactions: Click, select, scroll events Styling: Built in themes, custom CSS, RTL support Accessibility: WCAG 2.1 Level AA compliant Installation & Setup Step 1: Install Syncfusion Packages Step 2: Import Required Modules Step 3: Import CSS Quick Start Example Core Concepts 1. Data Binding Local Array: Object Array with Mapping: 2. Selection Handling 3. Item Management Add Items: addItem(data, fields?) Remove Items: removeItem(item) Update Items: Replace in dataSource and refresh Get Selection: getSelectedItems() 4. Templates Documentation & Navigation Guide Getting Started 📄 Read: [references/getting started.md](references/getting started.md) Installation and imports Basic setup and first component CSS themes and styling Minimal working example Project structure Data Binding & Rendering 📄 Read: [references/data binding rendering.md](references/data binding rendering.md) Local array data sources Object mapping with fields Remote data with DataManager Query filtering on remote data Load on demand and pagination Dynamic data updates Item Management (CRUD) 📄 Read: [references/item management.md](references/item management.md) Adding new items dynamically Removing items by reference Updating existing items Batch operations Finding items in list Managing nested list items Selection & Filtering 📄 Read: [references/selection filtering.md](references/selection filtering.md) Single item selection Multiple item selection Checkbox based selection Programmatic selection Filtering list items Search functionality Selection events and callbacks Templating & Customization 📄 Read: [references/templating customization.md](references/templating customization.md) Custom item templates (JSX, function, string) Header templates with headerTemplate Group header templates with groupTemplate Template data context and variables Dynamic templates based on device CSS customization with classes RTL template support Advanced Features 📄 Read: [references/advanced features.md](references/advanced features.md) Grouping and sorting Nested lists with hierarchy (up to 3 levels) Checkbox state management Animations and effects Custom icons and image display Enable/disable item states Layout patterns for complex dashboards Layout & Alignment Patterns ⭐ NEW 📄 Read: [references/layout alignment patterns.md](references/layout alignment patterns.md) Patient Portal Pattern: ListView with Cards, Appointments, Prescriptions, Messages Appointments Dashboard: 3x2 Grid layout with filters, scheduler, analytics Monitoring Dashboard: 3x3 Grid layout with KPIs, alerts, tickets Fixing common alignment issues (scrolling, borders, spacing) Responsive grid layouts for mobile/tablet/desktop Complete code examples for each pattern Performance & Virtualization 📄 Read: [references/performance virtualization.md](references/performance virtualization.md) Virtual scrolling for large datasets (1000+) Enabling virtualization Refresh item heights Memory optimization tips Combining with pagination Performance best practices Dataset size recommendations API Reference & Properties 📄 Read: [references/api reference.md](references/api reference.md) Complete property documentation Method signatures and parameters Event handler arguments Default values for all properties Property type specifications Usage examples for each API Accessibility & Events 📄 Read: [references/accessibility events.md](references/accessibility events.md) WCAG 2.1 compliance Keyboard navigation Screen reader support ARIA attributes Focus management Event lifecycle Event arguments and data Common Patterns Pattern 1: List with Selection User clicks item → select event fires → update UI Pattern 2: Add/Remove Items Pattern 3: Filtered List Pattern 4: Multiple Selection with Checkboxes Pattern 5: ListView in Card Container (NEW) Pattern 6: ListView in Grid Layout (NEW) Pattern 7: Dashboard with Multiple ListViews (NEW) See [Layout & Alignment Patterns Guide](references/layout alignment patterns.md) for: 🏥 Patient Portal: Appointments + Messages + Prescriptions grid 📅 Appointments Dashboard: 3x2 grid with filters and scheduler 📊 Monitoring Dashboard: 3x3 grid with KPIs, logs, alerts, and tickets Key Properties Property Type Default Purpose dataSource Array/DataManager [] Data to display fields FieldSettingsModel defaultMappedFields Map data to fields template string/function/JSX null Custom item template headerTemplate string/function/JSX null Custom header template groupTemplate string/function/JSX null Custom group template showCheckBox boolean false Show checkboxes checkBoxPosition 'Left'\ 'Right' 'Left' Checkbox position sortOrder 'None'\ 'Ascending'\ 'Descending' 'None' Data sort order enableVirtualization boolean false Virtual scrolling height number\ string '' List height width number\ string '' List width cssClass string '' Custom CSS class enabled boolean true Enable/disable component enableRtl boolean false Right to left support animation AnimationSettings {...} Item animations Key Methods Method Purpose addItem(data, fields?) Add new items to list removeItem(item) Remove item from list removeMultipleItems(items) Remove multiple items at once selectItem(item) Select an item selectMultipleItems(items) Select multiple items unselectItem(item?) Deselect item(s) getSelectedItems() Get current selection findItem(item) Find item details checkItem(item) Check a checkbox item uncheckItem(item) Uncheck checkbox item checkAllItems() Check all items uncheckAllItems() Uncheck all items enableItem(item) Enable disabled item disableItem(item) Disable item hideItem(item) Hide item showItem(item) Show hidden item back() Navigate back from nested list refreshItemHeight() Refresh item heights (virtualization) destroy() Clean up component Key Events Event Triggers When select Item is selected actionBegin Any action starts actionComplete Any action completes actionFailure Remote data fetch fails scroll User scrolls to top/bottom Common Use Cases 1. Display Settings List: Grouped items with icons 2. Contact List: Multi line templates with images 3. Nested Navigation: Drill down hierarchy 4. Filterable Search: Dynamic data filtering 5. Todo List: Checkboxes and item removal 6. Product Catalog: Pagination and filtering 7. Chat Messages: Reverse grouping by date 8. Notification Feed: Scrolling with actions 9. Multi Select Picker: Checkboxes and buttons 10. Hierarchical Menu: Nested items with back navigation Tips & Best Practices General Best Practices ✅ Always map fields correctly for data to display ✅ Use templates for rich UI beyond plain text ✅ Enable virtualization for 1000+ items ✅ Use DataManager for filtering/sorting large remote data ✅ Memoize templates and callbacks to prevent re renders ✅ Use cssClass for lightweight customization ✅ Handle select event for user interactions ✅ Clean up with destroy() when component unmounts ❌ Don't render complex components in every item template ❌ Don't forget to set proper fields mapping Alignment & Layout Best Practices ⭐ ✅ Always set explicit height on parent container when using flex layout ✅ Use overflow: 'auto' and minHeight: 0 on flex children for scrolling ✅ Use flexShrink: 0 on headers to prevent shrinking ✅ Use gap in templates instead of individual margins for consistent spacing ✅ Set width: '100%' and height: '100%' on ListView to fill container ✅ Wrap ListView in flex container with display: 'flex' and flexDirection: 'column' ✅ Use CSS Grid for dashboard layouts with proper gridColumn / gridRow ✅ Set overflow: 'hidden' on card container to respect border radius ❌ Don't rely on default margins they cause misalignment ❌ Don't skip flex container setup ListView needs proper parent context ❌ Don't forget minHeight: 0 on scrolling containers in flex Troubleshooting Items not displaying? Verify dataSource is populated Check fields mapping matches data structure Ensure text field is mapped correctly Selection not working? Verify select event handler is bound Check item has valid id field Ensure item is not disabled Performance issues? Enable enableVirtualization={true} Reduce template complexity Use DataManager for remote filtering instead of client side Styling issues? Import CSS theme file Check cssClass is applied to root element Inspect CSS specificity conflicts Next Steps: Read appropriate reference files based on your use case Check API Reference for complete property/method documentation Review Accessibility guide for WCAG compliance Explore code examples for your specific feature