Skip to main content

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 local/remote data binding, checkboxes, animations, RTL, and accessibility features.

معلومات المصدر

المستودع
syncfusion/react-ui-components-skills
آخر نشاط في المصدر
١١ أغسطس ٢٠٢٦ في ٠٥:١٩
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣
التفرعات
٩

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
12 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
syncfusion-react-listview
description
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 local/remote data binding, checkboxes, animations, RTL, and accessibility features.
metadata
{"author":"Syncfusion Inc","category":"Lists","version":"34.1.29"}
# 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 ```bash npm install @syncfusion/ej2-react-lists @syncfusion/ej2-base @syncfusion/ej2-data ``` ### Step 2: Import Required Modules ```tsx import { ListViewComponent } from '@syncfusion/ej2-react-lists'; // For additional features: import { Inject, Virtualization } from '@syncfusion/ej2-react-lists'; ``` ### Step 3: Import CSS ```tsx import '@syncfusion/ej2-react-lists/styles/material.css'; // or other themes ``` ## Quick Start Example ```tsx import React from 'react'; import { ListViewComponent } from '@syncfusion/ej2-react-lists'; export function BasicListView() { const data = [ { id: '1', text: 'Item 1' }, { id: '2', text: 'Item 2' }, { id: '3', text: 'Item 3' } ]; return ( <ListViewComponent id="list" dataSource={data} fields={{ text: 'text', id: 'id' }} /> ); } ``` ## Core Concepts ### 1. Data Binding **Local Array:** ```tsx const items = ['Apple', 'Banana', 'Orange']; <ListViewComponent dataSource={items} /> ``` **Object Array with Mapping:** ```tsx const data = [ { productId: 1, productName: 'Laptop', category: 'Electronics' }, { productId: 2, productName: 'Desk', category: 'Furniture' } ]; <ListViewComponent dataSource={data} fields={{ id: 'productId', text: 'productName', groupBy: 'category' }} /> ``` ### 2. Selection Handling ```tsx const handleSelect = (args) => { console.log('Selected item:', args.text, args.id); }; <ListViewComponent dataSource={data} select={handleSelect} /> ``` ### 3. Item Management - **Add Items:** `addItem(data, fields?)` - **Remove Items:** `removeItem(item)` - **Update Items:** Replace in dataSource and refresh - **Get Selection:** `getSelectedItems()` ### 4. Templates ```tsx // Item Template const itemTemplate = (props) => ( <div className="e-list-wrapper"> <span>{props.text}</span> <span className="e-list-content">{props.category}</span> </div> ); <ListViewComponent dataSource={data} fields={fields} template={itemTemplate} /> ``` ## 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 ```tsx const [selected, setSelected] = React.useState(null); const handleSelect = (args) => { setSelected(args); }; <ListViewComponent dataSource={items} select={handleSelect} /> ``` ### Pattern 2: Add/Remove Items ```tsx const listViewRef = React.useRef(null); const addItem = () => { listViewRef.current.addItem([{ text: 'New Item', id: Date.now() }]); }; const removeItem = (item) => { listViewRef.current.removeItem(item); }; <ListViewComponent ref={listViewRef} dataSource={items} /> ``` ### Pattern 3: Filtered List ```tsx const [filteredData, setFilteredData] = React.useState(items); const handleFilter = (searchText) => { const filtered = items.filter(item => item.text.toLowerCase().includes(searchText.toLowerCase()) ); setFilteredData(filtered); }; <ListViewComponent dataSource={filteredData} /> ``` ### Pattern 4: Multiple Selection with Checkboxes ```tsx <ListViewComponent dataSource={items} showCheckBox={true} fields={{ id: 'id', text: 'text', isChecked: 'checked' }} /> ``` ### Pattern 5: ListView in Card Container (NEW) ```tsx <div style={{ border: '1px solid #e0e0e0', borderRadius: '4px', overflow: 'hidden', display: 'flex', flexDirection: 'column' }}> <div style={{ padding: '16px', backgroundColor: '#f5f5f5', borderBottom: '1px solid #e0e0e0' }}> <h3 style={{ margin: 0 }}>Messages</h3> </div> <div style={{ flex: 1, overflow: 'auto', minHeight: 0 }}> <ListViewComponent dataSource={items} height="100%" width="100%" /> </div> </div> ``` ### Pattern 6: ListView in Grid Layout (NEW) ```tsx <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '16px' }}> {/* Card 1 - ListView */} <div style={{ border: '1px solid #e0e0e0', display: 'flex', flexDirection: 'column' }}> <div style={{ padding: '12px', backgroundColor: '#f5f5f5' }}>Appointments</div> <div style={{ flex: 1, overflow: 'auto', minHeight: 0 }}> <ListViewComponent dataSource={appointments} height="300px" /> </div> </div> {/* Card 2, Card 3, etc. */} </div> ``` ### 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 |
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub