Implementing Syncfusion Blazor FileUpload
This skill covers the Syncfusion Blazor FileUpload component, a robust solution for file handling in Blazor applications. Learn to implement single and multiple file uploads, configure validation rules, enable drag-drop interactions, handle large files with chunked uploads, and leverage comprehensive events for complete upload control and user feedback.
FileUpload
Learn to implement Syncfusion Blazor File Upload component with async/sync uploads, validation, events, customization, and always get immediate file handling with drag-drop or form integration for web and server applications.
Documentation
Getting Started
📄 Read: references/file-upload-getting-started.md
- Installation and NuGet package setup
- Visual Studio/Visual Studio Code setup steps
- Blazor WebAssembly vs Server configuration
- Basic SfUploader component rendering
- CSS and script imports
- Minimal working example
Core Configuration
📄 Read: references/file-upload-configuration.md
- ID property for component identification
- AllowedExtensions for file type restriction
- AllowMultiple vs single file uploads
- AutoUpload behavior configuration
- SequentialUpload for ordered processing
- DirectoryUpload capability
- Enabled state and component control
Upload Methods & Behavior
📄 Read: references/file-upload-file-upload-methods.md
- Synchronous vs asynchronous uploads
- Save URL and Remove URL configuration
- Upload button click handlers
- Automatic vs manual upload triggering
- Upload progress tracking mechanisms
- Backend API requirements
Events & Handlers
📄 Read: references/file-upload-events-and-handlers.md
- ValueChange event for direct file access (Blazor Server only, without AsyncSettings)
- FileSelected event for pre-validation
- Created event for initialization logic
- OnFileListRender for custom file display
- OnUploadStart, Success, OnFailure events (use with AsyncSettings)
- Event handler patterns and best practices
- Important: ValueChange and UploaderAsyncSettings are mutually exclusive
File Validation
📄 Read: references/file-upload-validation.md
- File type validation strategies
- File size constraints (MinFileSize, MaxFileSize)
- Custom validation functions
- Preventing invalid file uploads
- Error messages and user feedback
- Validation within EditForm
Advanced Features
📄 Read: references/file-upload-advanced-features.md
- Chunked upload for large files
- Pause and resume functionality
- Async/await patterns in event handlers
- MemoryStream processing without disk I/O
- Batch upload operations
- Retry and recovery mechanisms
Customization & Styling
📄 Read: references/file-upload-customization.md
- Custom file list templates
- CSS class customization
- Theme Studio integration
- Custom button styling
- Dark mode support
- Responsive design patterns
File Source Options
📄 Read: references/file-upload-file-source-options.md
- Drag-and-drop upload implementation
- Form integration patterns
- Direct file picker interaction
- Browser file dialog usage
- Directory selection and upload
- Multiple input method combinations
- Accessibility best practices
Localization & Accessibility
📄 Read: references/file-upload-localization-accessibility.md
- Multi-language UI support
- Locale configuration options
- Custom text labels
- WCAG 2.1 compliance
- Keyboard navigation implementation
- Screen reader support
- ARIA attributes
Platform-Specific Setup
📄 Read: references/file-upload-platform-specific-setup.md
- Blazor WebAssembly app setup
- Blazor Server app setup
- Blazor Web App (.NET 8+) setup
- MAUI integration
- Different render modes
- Platform-specific considerations
Quick Start Example
@using Syncfusion.Blazor.Inputs
<SfUploader AutoUpload="true" AllowedExtensions=".jpg,.jpeg,.png,.pdf">
<UploaderAsyncSettings
SaveUrl="api/upload/save"
RemoveUrl="api/upload/remove">
</UploaderAsyncSettings>
</SfUploader>
Common Patterns
Pattern 1: Basic File Upload with Validation (Server Upload)
- Use
AutoUpload="true" for instant uploads
- Configure
UploaderAsyncSettings with SaveUrl/RemoveUrl
- Set
AllowedExtensions to restrict file types
- Listen to
FileSelected event for pre-validation
- Use
Success/OnFailure events for upload feedback
Pattern 2: Direct File Access (Blazor Server Only)
- Use
ValueChange event to access file content directly
- Do NOT use
UploaderAsyncSettings with ValueChange
- Process files in memory or save to directory
- Best for file preview, Base64 conversion, or direct storage
Pattern 3: Multiple File Handling
- Set
AllowMultiple="true" to allow batch uploads
- Use
SequentialUpload for ordered processing
- Track progress with upload events
- Display file list with individual progress indicators
Pattern 4: Large File Upload with Chunking
- Configure
ChunkSize in UploaderAsyncSettings
- Enable pause/resume with chunk upload
- Implement retry logic for failed chunks
- Show chunk-level progress to user
Key Props
| Property |
Default |
Use When |
| AutoUpload |
true |
Upload files immediately after selection |
| AllowMultiple |
true |
User needs to upload multiple files |
| SequentialUpload |
false |
Files must upload one at a time |
| AllowedExtensions |
"" |
Only specific file types allowed |
| DirectoryUpload |
false |
User can select entire folders |
| MaxFileSize |
28.4 MB |
Limiting maximum upload file size |
| MinFileSize |
0 |
Setting minimum file size requirement |
| ChunkSize |
0 (disabled) |
Enable chunked upload for large files |
| ShowFileList |
true |
Control visibility of uploaded file list |
| ShowProgressBar |
true |
Display upload progress indicator |
| Enabled |
true |
Enable or disable the uploader |
| DropArea |
null |
Specify custom drop zone CSS selector |
| CssClass |
"" |
Apply custom CSS classes |
| TabIndex |
0 |
Set tab navigation order |
| EnablePersistence |
false |
Maintain state across page reloads |
| EnableRtl |
false |
Enable right-to-left layout |
Common Use Cases
- Document Upload: Resume, PDF, certification file uploads
- Image Gallery: User profile pictures, photo collections
- Data Import: CSV/Excel file imports for data processing
- Media Library: Video, audio file uploads and management
- Backup Uploads: Database backups, configuration files
- Report Generation: Monthly reports, analytics data
- Invoice Processing: Financial document uploads
- User Attachments: Email attachments, message files
Quick Decision Tree
User needs file upload functionality
├─ Single file only? → Set AllowMultiple="false" + use basic setup
├─ Multiple files?
│ ├─ All at once? → AllowMultiple="true" + SequentialUpload="false"
│ └─ One at a time? → AllowMultiple="true" + SequentialUpload="true"
└─ Large files (>100MB)?
├─ Enable chunking → Set ChunkSize property
└─ Add pause/resume → Listen to Paused and OnResume events
TextArea
Learn to implement Syncfusion Blazor TextArea component for multi-line text input with configurable resize modes, row/column sizing, character limits, floating labels, and comprehensive validation. Perfect for comments, descriptions, messages, and any scenario requiring extended text entry with real-time feedback and form integration.
Documentation
Getting Started
📄 Read: references/textarea-getting-started.md
- Installation and NuGet package setup
- Basic SfTextArea component setup
- Namespace imports and service registration
- CSS theme configuration
- Minimal working example
- Initial component rendering
Configuration Options
📄 Read: references/textarea-configuration.md
- RowCount and ColumnCount for sizing
- ResizeMode (Vertical, Horizontal, Both, None)
- MaxLength property for character limits
- Placeholder text configuration
- FloatLabelType (Auto, Always, Never)
- ReadOnly and Disabled states
- Width property and responsive sizing
- HTML attributes customization
Events and Data Binding
📄 Read: references/textarea-events-binding.md
- Value property and two-way binding (@bind-Value)
- ValueChange event for real-time updates
- Focus and Blur events (TextAreaFocusInEventArgs, TextAreaFocusOutEventArgs)
- Input event for keystroke tracking
- Created and Destroyed lifecycle events
- Form validation integration with EditForm
- ValueExpression for validation binding
Customization and Styling
📄 Read: references/textarea-customization.md
- CssClass for custom styling
- ShowClearButton for quick text removal
- InputAttributes and HtmlAttributes
- Theme customization with Theme Studio
- Responsive design patterns
- Accessibility features (ARIA, keyboard navigation)
- RTL (Right-to-Left) support with EnableRtl
Quick Start Example
@using Syncfusion.Blazor.Inputs
<SfTextArea @bind-Value="@description"
Placeholder="Enter description..."
RowCount="5"
ColumnCount="50"
MaxLength="500"
FloatLabelType="FloatLabelType.Auto">
</SfTextArea>
@code {
private string description = "";
}
Common Patterns
Pattern 1: Basic Multi-Line Input
- Use
RowCount to set visible lines (default: 2)
- Set
Placeholder for user guidance
- Enable
@bind-Value for two-way binding
- Apply
MaxLength for character constraints
Pattern 2: Resizable TextArea with Limits
- Set
ResizeMode="Resize.Both" for user resizing
- Configure
RowCount and ColumnCount for initial size
- Use
MaxLength to prevent excessive input
- Listen to
ValueChange for live character counting
Pattern 3: Form Integration with Validation
- Wrap in
<EditForm> with model binding
- Use
@bind-Value with ValueExpression
- Apply
[Required] or [StringLength] attributes
- Display validation messages with
<ValidationMessage>
- Style invalid state with CSS
Pattern 4: Auto-Growing TextArea
- Set
ResizeMode="Resize.Vertical" for vertical expansion
- Start with minimal
RowCount (e.g., 3)
- Allow user to expand as needed
- Combine with
MaxLength for upper bounds
Key Props
| Property |
Default |
Use When |
| Value |
"" |
Binding textarea content |
| RowCount |
2 |
Setting visible number of rows |
| ColumnCount |
20 |
Setting visible number of columns |
| MaxLength |
null |
Limiting maximum characters |
| ResizeMode |
Resize.Both |
Controlling user resize behavior |
| Placeholder |
"" |
Showing hint text when empty |
| FloatLabelType |
FloatLabelType.Never |
Enabling floating label animation |
| ShowClearButton |
false |
Adding quick clear functionality |
| ReadOnly |
false |
Preventing user edits while showing content |
| Disabled |
false |
Disabling the component entirely |
| Width |
"100%" |
Setting component width |
| CssClass |
"" |
Applying custom CSS classes |
| EnableRtl |
false |
Enabling right-to-left text direction |
Common Use Cases
- Comment Sections: User feedback, review comments, discussion threads
- Form Descriptions: Product descriptions, bio sections, about fields
- Message Composition: Email bodies, chat messages, note-taking
- Code/JSON Input: Configuration files, script input, data entry
- Address Fields: Multi-line address entry with street, city, etc.
- Search Queries: Complex search inputs with multiple criteria
- Customer Support: Ticket descriptions, issue reporting, help requests
- Content Management: Article drafts, blog post editing, documentation
Quick Decision Tree
User needs multi-line text input
├─ Fixed size? → Set ResizeMode="Resize.None" + specific RowCount
├─ User-resizable?
│ ├─ Vertical only? → ResizeMode="Resize.Vertical"
│ ├─ Horizontal only? → ResizeMode="Resize.Horizontal"
│ └─ Both directions? → ResizeMode="Resize.Both"
├─ Character limit needed? → Set MaxLength property
└─ Form validation?
├─ Use within <EditForm>
└─ Add ValueExpression for validation binding
Signature
Learn to implement Syncfusion Blazor Signature component for capturing digital signatures with configurable stroke width, colors, background images, save/load functionality in multiple formats (PNG, JPEG, SVG), and comprehensive event handling. Perfect for e-signatures, document approval workflows, digital consent forms, and any scenario requiring handwritten signature capture with touch and mouse support.
Documentation
Getting Started
📄 Read: references/signature-getting-started.md
- Installation and NuGet package setup
- Basic SfSignature component setup
- Namespace imports and service registration
- CSS theme configuration
- Canvas rendering and initialization
- Touch and mouse input support
- Minimal working example
Drawing Configuration
📄 Read: references/signature-drawing-configuration.md
- MinStrokeWidth and MaxStrokeWidth for pen thickness
- StrokeColor for ink color customization
- BackgroundColor for canvas background
- BackgroundImage for letterhead/watermark
- Velocity property for stroke smoothness
- Drawing behavior and responsiveness
- Pressure sensitivity simulation
Save and Load Signatures
📄 Read: references/signature-save-load.md
- Save() method with format options (PNG, JPEG, SVG)
- SaveWithBackground property configuration
- GetSignature() for Base64 string retrieval
- Load() method for existing signatures
- Clear() method for signature removal
- File format selection and quality settings
- Server integration patterns
- Database storage strategies
Event Handling
📄 Read: references/signature-events.md
- Changed event for stroke tracking
- OnSave event for save operations
- Created event for initialization
- Event argument structure
- Real-time signature validation
- Detecting empty vs filled signatures
- Event-driven workflows
Customization and Styling
📄 Read: references/signature-customization.md
- Disabled and IsReadOnly states
- HtmlAttributes for custom styling
- Canvas size customization
- Theme integration
- Mobile and touch device optimization
- Accessibility considerations
- Responsive design patterns
Quick Start Example
@using Syncfusion.Blazor.Inputs
<div class="signature-container">
<label>Sign below:</label>
<SfSignature @ref="signatureRef"
StrokeColor="#000000"
BackgroundColor="#FFFFFF"
MaxStrokeWidth="2.0"
MinStrokeWidth="0.5">
</SfSignature>
<div class="signature-actions">
<button @onclick="SaveSignature">Save</button>
<button @onclick="ClearSignature">Clear</button>
</div>
</div>
@code {
private SfSignature signatureRef;
private async Task SaveSignature()
{
await signatureRef.SaveAsync(SignatureFileType.Png, "signature.png");
}
private async Task ClearSignature()
{
await signatureRef.ClearAsync();
}
}
Common Patterns
Pattern 1: Basic Signature Capture
- Use default stroke settings for natural handwriting feel
- Set
BackgroundColor="#FFFFFF" for clear canvas
- Provide Clear button for user corrections
- Save as PNG for universal compatibility
- Validate signature is not empty before submission
Pattern 2: Document Signing with Letterhead
- Use
BackgroundImage for company letterhead or form template
- Set
SaveWithBackground="true" to include background in saved file
- Configure
StrokeColor to contrast with background
- Save as PNG or JPEG with background embedded
- Ideal for contracts, agreements, official documents
Pattern 3: Mobile-Optimized Signature
- Increase stroke width for better touch visibility
- Use larger canvas size for thumb-friendly drawing
- Set
IsReadOnly="false" only when signature mode active
- Auto-save on signature completion
- Provide clear visual feedback for touch interactions
Pattern 4: Multi-Signature Forms
- Use multiple SfSignature components for different signatories
- Track completion state per signature field
- Save each signature with unique identifier
- Combine signatures in final document generation
- Validate all required signatures before form submission
Key Props
| Property |
Default |
Use When |
| MinStrokeWidth |
0.5 |
Setting minimum pen thickness |
| MaxStrokeWidth |
2.0 |
Setting maximum pen thickness |
| StrokeColor |
"#000000" |
Changing ink color |
| BackgroundColor |
"#FFFFFF" |
Setting canvas background color |
| BackgroundImage |
null |
Adding letterhead or watermark image |
| Velocity |
0.7 |
Controlling stroke smoothness (0-1) |
| SaveWithBackground |
true |
Including background in saved signature |
| Disabled |
false |
Disabling signature capture entirely |
| IsReadOnly |
false |
Preventing signature changes while showing existing |
| EnablePersistence |
false |
Maintaining signature across page reloads |
| HtmlAttributes |
null |
Adding custom HTML attributes to wrapper |
Common Use Cases
- E-Signature Capture: Digital document signing, contract approval, consent forms
- Financial Services: Loan applications, account opening, transaction authorization
- Healthcare: Patient consent forms, HIPAA agreements, medical records
- Legal Documents: Contracts, NDAs, legal agreements, court documents
- HR Processes: Employment contracts, onboarding documents, policy acknowledgments
- Delivery Confirmation: Package delivery signatures, service completion
- Check-In Systems: Visitor logs, attendance tracking, registration forms
- Educational: Test proctoring, form submissions, parent consent
Quick Decision Tree
User needs signature capture
├─ Basic signature?
│ └─ Use default settings + Save as PNG
├─ Document with letterhead?
│ ├─ Set BackgroundImage property
│ └─ Enable SaveWithBackground="true"
├─ Mobile/touch primary?
│ ├─ Increase MaxStrokeWidth to 3.0+
│ └─ Use larger canvas dimensions
├─ Multiple signers?
│ ├─ Use multiple SfSignature components
│ ├─ Track each signature state separately
│ └─ Save with unique identifiers
└─ Need specific format?
├─ PNG → Universal support, transparency
├─ JPEG → Smaller file size, no transparency
└─ SVG → Vector format, scalable
RangeSlider
Learn to implement Syncfusion Blazor Range Slider component with dual handles for range selection, ticks, tooltips, color ranges, movement limits, and always get immediate two-value selection for price filters, date ranges, temperature zones, or any scenario requiring range input with visual feedback and validation in Blazor applications.
Documentation
Getting Started
📄 Read: references/rangeslider-getting-started.md
- Installation and NuGet package setup
- Basic SfSlider with Type="SliderType.Range"
- Value binding with arrays for dual handles
- CSS imports and theme configuration
- Namespace imports and service registration
- Minimal working example with range selection
Range Configuration
📄 Read: references/rangeslider-range-configuration.md
- Min, Max, and Step properties for range bounds
- Type property (SliderType.Range vs Default)
- Two-way value binding with arrays (@bind-Value)
- Custom non-numeric values with CustomValues
- IsImmediateValue for real-time updates
- Value array structure and data types
Ticks and Tooltip
📄 Read: references/rangeslider-ticks-and-tooltip.md
- SliderTicks component configuration
- LargeStep and SmallStep for interval markers
- Tick placement options (Before, After, Both)
- ShowSmallTicks property for granular display
- Format property for tick label customization
- SliderTooltip component setup
- Tooltip visibility modes (Focus, Hover, Always, Auto)
- Tooltip placement and format customization
- Custom tooltip templates
Color Ranges and Visual Indication
📄 Read: references/rangeslider-color-ranges-visual.md
- SliderColorRanges for visual feedback
- ColorRange components with Start, End, Color
- Multiple color segments for different value zones
- Use cases (temperature zones, price tiers, ratings)
- Color customization and styling
- Accessibility considerations for color choices
Limits and Constraints
📄 Read: references/rangeslider-limits-and-constraints.md
- SliderLimits configuration for movement restrictions
- MinStart, MinEnd, MaxStart, MaxEnd properties
- Enabled property for limit activation
- StartHandleFixed and EndHandleFixed for locked handles
- Restricting handle movement within bounds
- Use cases (booking date ranges, budget constraints)
- Validation patterns with limits
Orientation and Customization
📄 Read: references/rangeslider-orientation-and-customization.md
- Orientation property (Horizontal vs Vertical)
- ShowButtons for increment/decrement controls
- Width property for responsive sizing
- EnableAnimation for smooth transitions
- CssClass for custom styling
- EnableRtl for right-to-left language support
- ReadOnly and Enabled states
- Theme customization with Theme Studio
Events and Data Binding
📄 Read: references/rangeslider-events-and-binding.md
- SliderEvents component configuration
- ValueChange event callback for range updates
- OnChange vs Changed event timing
- Created event for initialization logic
- Rendered event for post-render operations
- OnTooltipChange for dynamic tooltip content
- OnTicksRender for custom tick label rendering
- Form integration with EditForm
- Validation with EditContext and data annotations
Quick Start Example
@using Syncfusion.Blazor.Inputs
<div class="range-slider-container">
<label>Select Price Range: $@priceRange[0] - $@priceRange[1]</label>
<SfSlider @bind-Value="@priceRange"
Type="SliderType.Range"
Min="0"
Max="1000"
Step="10">
<SliderTicks Placement="Placement.After" LargeStep="200" SmallStep="50" ShowSmallTicks="true"></SliderTicks>
<SliderTooltip IsVisible="true" ShowOn="TooltipShowOn.Always" Format="C0"></SliderTooltip>
</SfSlider>
</div>
@code {
private int[] priceRange = new int[] { 200, 800 };
}
Common Patterns
Pattern 1: Basic Range Selection
- Set
Type="SliderType.Range" for dual handles
- Bind value to int[] or double[] array with two elements
- Configure
Min, Max, and Step properties
- Enable tooltip with
IsVisible="true" for user feedback
- Use
ValueChange event to capture range updates
Pattern 2: Range with Visual Color Zones
- Add
SliderColorRanges component
- Define multiple
ColorRange segments (e.g., cold/warm/hot)
- Set colors that provide clear visual distinction
- Use for temperature, ratings, or risk indicators
- Combine with ticks for precise value identification
Pattern 3: Constrained Range Selection
- Use
SliderLimits to restrict handle movement
- Set
MinStart/MaxStart for first handle bounds
- Set
MinEnd/MaxEnd for second handle bounds
- Enable
StartHandleFixed or EndHandleFixed if one handle should be locked
- Ideal for booking systems, budget planning, scheduling
Pattern 4: Custom Value Range Selection
- Use
CustomValues array for non-numeric ranges
- Example: string[] { "XS", "S", "M", "L", "XL", "XXL" }
- Value array uses indices, not actual values
- Display custom labels via tick formatting
- Perfect for size selection, priority levels, skill ratings
Key Props
| Property |
Default |
Use When |
| Type |
SliderType.Default |
Set to SliderType.Range for dual handles |
| Value |
new int[]{} |
Binding range values (must be 2-element array) |
| Min |
0 |
Setting minimum selectable value |
| Max |
100 |
Setting maximum selectable value |
| Step |
1 |
Defining increment/decrement value |
| CustomValues |
null |
Using non-numeric values (sizes, labels) |
| IsImmediateValue |
false |
Getting real-time updates during drag |
| ShowButtons |
false |
Adding increment/decrement buttons |
| Orientation |
SliderOrientation.Horizontal |
Changing to vertical layout |
| Width |
null |
Setting component width |
| EnableAnimation |
true |
Controlling handle animation |
| ReadOnly |
false |
Preventing user interaction while showing value |
| Enabled |
true |
Enabling/disabling the entire component |
Common Use Cases
- E-Commerce Price Filters: Min/max price selection, budget range filtering
- Date Range Pickers: Check-in/check-out dates, event duration, scheduling
- Temperature Control: HVAC systems, oven settings, climate zones
- Age Range Selection: Demographics, target audience, age restrictions
- Time Range Selection: Working hours, availability slots, time windows
- Score/Rating Ranges: Grade filtering, performance metrics, review scores
- Financial Planning: Budget allocation, investment ranges, spending limits
- Resource Allocation: CPU/memory limits, bandwidth throttling, capacity planning
Quick Decision Tree
User needs range selection (two values)
├─ Numeric range?
│ ├─ Set Type="SliderType.Range"
│ ├─ Use int[] or double[] for Value
│ └─ Configure Min, Max, Step
├─ Non-numeric values (sizes, labels)?
│ ├─ Set CustomValues array
│ ├─ Value array contains indices
│ └─ Use tick formatting for labels
├─ Need visual zones?
│ ├─ Add SliderColorRanges component
│ └─ Define multiple ColorRange segments
├─ Restrict movement?
│ ├─ Use SliderLimits component
│ ├─ Set MinStart/MaxStart/MinEnd/MaxEnd
│ └─ Enable StartHandleFixed or EndHandleFixed if needed
├─ Vertical layout needed?
│ └─ Set Orientation="SliderOrientation.Vertical"
└─ Real-time updates during drag?
└─ Set IsImmediateValue="true"
OtpInput
Learn to implement Syncfusion Blazor OtpInput (One-Time Password) component for secure verification code entry with configurable length, input types (number, text, password), styling modes (outlined, underlined, filled), automatic focus management, and comprehensive event handling. Perfect for 2FA authentication, email verification, SMS codes, PIN entry, and any scenario requiring secure multi-digit code input with keyboard navigation and accessibility support.
Documentation
Getting Started
📄 Read: references/otpinput-getting-started.md
- Installation and NuGet package setup
- Basic SfOtpInput component setup
- Namespace imports and service registration
- CSS theme configuration
- Length property for OTP digit count
- Value binding and retrieval
- Minimal working example
Configuration Options
📄 Read: references/otpinput-configuration.md
- Length property for digit count (default: 4)
- Type property (Number, Text, Password)
- Placeholder configuration for empty inputs
- Separator for visual grouping
- AutoFocus for immediate input
- Disabled state management
- ID and HtmlAttributes customization
Styling Modes
📄 Read: references/otpinput-styling-modes.md
- StylingMode options (Outlined, Underlined, Filled)
- TextTransform (None, Lowercase, Uppercase)
- CssClass for custom styling
- Theme customization with Theme Studio
- Responsive design patterns
- Visual states and focus indicators
Events and Data Binding
📄 Read: references/otpinput-events-binding.md
- Value property and two-way binding (@bind-Value)
- ValueChanged event callback (use Value property only, NOT @bind-Value)
- OnInput event with OtpInputEventArgs
- OnFocus and OnBlur events
- Created lifecycle event
- Form validation integration
- Real-time verification patterns
- Auto-submit on completion
Accessibility
📄 Read: references/otpinput-accessibility.md
- AriaLabels array for individual input fields
- Keyboard navigation (arrows, backspace, delete)
- Screen reader support
- WCAG 2.1 compliance
- Focus management best practices
- Password type accessibility considerations
- Mobile device optimization
Quick Start Example
@using Syncfusion.Blazor.Inputs
<div class="otp-container">
<label>Enter verification code:</label>
<SfOtpInput @bind-Value="@otpValue"
Length="6"
Type="OtpInputType.Number"
StylingMode="OtpInputStyle.Outlined">
</SfOtpInput>
@if (!string.IsNullOrEmpty(message))
{
<div class="message">@message</div>
}
</div>
@code {
private string otpValue = "";
private string message = "";
protected override void OnParametersSet()
{
if (otpValue.Length == 6)
{
message = "Verifying code...";
// Call verification API
}
}
}
Common Patterns
Pattern 1: Basic OTP Verification (6-digit numeric)
- Set
Length="6" for standard OTP length
- Use
Type="OtpInputType.Number" for numeric-only input
- Enable
AutoFocus="true" for immediate input
- Use
@bind-Value for two-way binding (simplest approach)
- Validate and verify OTP on server
Pattern 2: Email/SMS Verification Code
- Configure
Length="4" or Length="6" based on service
- Use
Type="OtpInputType.Number" for numeric codes
- Set
StylingMode="OtpInputStyle.Underlined" for clean look
- Auto-focus first input on page load
- Show countdown timer for code expiration
- Provide "Resend code" functionality
Pattern 3: Secure PIN Entry
- Use
Type="OtpInputType.Password" to mask input
- Set
Length="4" or Length="6" for PIN length
- Apply
StylingMode="OtpInputStyle.Filled" for modern look
- Implement rate limiting for security
- Clear input on failed attempts
- Show visual feedback for validation
Pattern 4: Alphanumeric Verification (with separators)
- Set
Type="OtpInputType.Text" for letters and numbers
- Use
TextTransform="TextTransform.Uppercase" for readability
- Configure
Separator="-" to visually group digits
- Example: ABC-123-XYZ pattern
- Set
Length="9" (including separator positions)
- Useful for activation codes, license keys
Key Props
| Property |
Default |
Use When |
| Value |
"" |
Binding OTP value (two-way with @bind-Value) |
| Length |
4 |
Setting number of OTP input fields |
| Type |
OtpInputType.Number |
Defining input type (Number, Text, Password) |
| StylingMode |
OtpInputStyle.Outlined |
Choosing visual style (Outlined, Underlined, Filled) |
| Placeholder |
"" |
Showing hint text in empty fields |
| Separator |
"" |
Adding visual separator between groups |
| TextTransform |
TextTransform.None |
Transforming text (None, Lowercase, Uppercase) |
| AutoFocus |
false |
Auto-focusing first input on load |
| Disabled |
false |
Disabling all input fields |
| CssClass |
"" |
Applying custom CSS classes |
| AriaLabels |
null |
Setting custom ARIA labels for each input |
| HtmlAttributes |
null |
Adding custom HTML attributes |
Common Use Cases
- Two-Factor Authentication (2FA): Login security, account verification, multi-factor authentication
- Email Verification: Account activation, email confirmation, newsletter signup
- SMS Verification: Phone number verification, mobile app login, transaction confirmation
- Password Reset: Secure password recovery, account access restoration
- Transaction Verification: Banking transactions, payment confirmation, fund transfers
- Access Control: Building entry codes, secure area access, temporary access codes
- Device Pairing: Bluetooth pairing codes, smart device setup, IoT device linking
- Activation Codes: Software licenses, product activation, subscription validation
Quick Decision Tree
User needs OTP/verification code input
├─ Numeric only?
│ ├─ Set Type="OtpInputType.Number"
│ └─ Use Length="4" or Length="6"
├─ Need to hide input (PIN)?
│ ├─ Set Type="OtpInputType.Password"
│ └─ Apply security best practices
├─ Alphanumeric codes?
│ ├─ Set Type="OtpInputType.Text"
│ ├─ Use TextTransform="TextTransform.Uppercase"
│ └─ Consider Separator for readability
├─ Auto-submit when complete?
│ ├─ Listen to ValueChanged event
│ ├─ Check if value.Length == Length
│ └─ Call verification API automatically
├─ Custom styling needed?
│ ├─ Outlined → StylingMode="OtpInputStyle.Outlined" (default)
│ ├─ Underlined → StylingMode="OtpInputStyle.Underlined"
│ └─ Filled → StylingMode="OtpInputStyle.Filled"
└─ Accessibility important?
├─ Set AriaLabels array for screen readers
└─ Enable AutoFocus for keyboard users
Rating
Learn to implement Syncfusion Blazor Rating component for intuitive rating and feedback collection with configurable precision modes (full, half, quarter, exact), custom icons and templates, label and tooltip support, comprehensive event handling, and accessibility features. Perfect for product reviews, skill assessments, satisfaction surveys, quality ratings, and any scenario requiring user feedback through star ratings or custom iconography with keyboard navigation and form integration.
Documentation
Getting Started
📄 Read: references/rating-getting-started.md
- Installation and NuGet package setup
- Basic SfRating component setup
- Namespace imports and service registration
- CSS theme configuration
- ItemsCount property for rating scale
- Value binding and retrieval
- Minimal working example
- Basic 5-star rating implementation
Precision and Values
📄 Read: references/rating-precision-and-values.md
- Precision property (Full, Half, Quarter, Exact)
- Full precision for whole numbers only
- Half precision for 0.5 increments
- Quarter precision for 0.25 increments
- Exact precision for decimal values
- Min property for minimum rating value
- AllowReset for clearing ratings
- EnableSingleSelection for single-item mode
- Value calculations and display
Labels and Tooltips
📄 Read: references/rating-labels-and-tooltips.md
- ShowLabel property for label display
- LabelPosition (Top, Bottom, Left, Right)
- LabelTemplate for custom label formatting
- ShowTooltip property for hover tooltips
- TooltipTemplate for custom tooltip content
- Dynamic label updates based on value
- Contextual feedback patterns
Templates and Customization
📄 Read: references/rating-templates-customization.md
- EmptyTemplate for unselected items
- FullTemplate for selected items
- RatingItemContext for template data
- Custom icon implementation (hearts, thumbs, emojis)
- SVG and icon font integration
- CssClass for custom styling
- EnableAnimation property
- Theme customization and responsive design
Events and States
📄 Read: references/rating-events-and-states.md
- ValueChanged event for rating updates
- OnItemHover event with RatingHoverEventArgs
- Created lifecycle event
- Form validation integration
- ReadOnly state for display-only ratings
- Disabled state management
- Visible property control
- Keyboard navigation support
- Accessibility features and ARIA attributes
Quick Start Example
@using Syncfusion.Blazor.Inputs
<div class="rating-container">
<label>Rate your experience:</label>
<SfRating @bind-Value="@userRating"
ItemsCount="5"
Precision="PrecisionType.Full"
ShowLabel="true">
</SfRating>
@if (userRating > 0)
{
<p>You rated: @userRating / 5 stars</p>
}
</div>
@code {
private double userRating = 0;
}
Common Patterns
Pattern 1: Basic 5-Star Product Rating
- Use default
ItemsCount="5" for standard rating
- Set
Precision="PrecisionType.Full" for whole stars only
- Enable
@bind-Value for two-way data binding
- Show
ShowLabel="true" to display rating value
- Position label with
LabelPosition="LabelPosition.Right"
- Use
ValueChanged event for auto-submit
Pattern 2: Half-Star Rating with Hover Feedback
- Set
Precision="PrecisionType.Half" for 0.5 increments
- Enable
ShowTooltip="true" for hover feedback
- Use
OnItemHover event for preview
- Display average ratings with
ReadOnly="true"
- Show rating count in custom label template
- Implement real-time feedback messages
Pattern 3: Custom Icon Templates (Hearts, Thumbs, Emojis)
- Define
EmptyTemplate for unselected state
- Define
FullTemplate for selected state
- Use
RatingItemContext for item-specific rendering
- Implement custom icons (♥, 👍, 😊, etc.)
- Apply
CssClass for custom colors and sizing
- Enable
EnableAnimation="true" for smooth transitions
Pattern 4: Multi-Category Rating Form
- Create multiple
SfRating components
- Different
ItemsCount per category if needed
- Combine with
EditForm for validation
- Calculate overall rating average
- Track completion with event handlers
- Enable submit only when all ratings complete
Key Props
| Property |
Default |
Use When |
| Value |
0 |
Binding rating value (two-way with @bind-Value) |
| ItemsCount |
5 |
Setting number of rating items (stars) |
| Precision |
PrecisionType.Full |
Defining rating granularity (Full, Half, Quarter, Exact) |
| ShowLabel |
false |
Displaying rating value as text |
| LabelPosition |
LabelPosition.Right |
Positioning label (Top, Bottom, Left, Right) |
| ShowTooltip |
false |
Enabling hover tooltips |
| AllowReset |
true |
Allowing users to clear their rating |
| EnableSingleSelection |
false |
Single item selection mode (thumbs up/down) |
| Min |
null |
Setting minimum rating value |
| ReadOnly |
false |
Display-only mode for showing ratings |
| Disabled |
false |
Disabling all interactions |
| EnableAnimation |
true |
Enabling smooth transitions |
| Visible |
true |
Controlling component visibility |
| EmptyTemplate |
null |
Custom template for unselected items |
| FullTemplate |
null |
Custom template for selected items |
| LabelTemplate |
null |
Custom label content |
| TooltipTemplate |
null |
Custom tooltip content |
| CssClass |
"" |
Applying custom CSS classes |
Common Use Cases
- Product Reviews: E-commerce ratings, marketplace feedback, customer reviews, product quality assessment
- Service Quality: Restaurant ratings, hotel reviews, delivery service feedback, support
…(truncated)
1---2name: syncfusion-blazor-inputs3description: Implement Syncfusion Blazor Input components including FileUpload, TextBox, NumericTextBox, TextArea, Signature, RangeSlider, OtpInput, Rating, InputMask, and ColorPicker. Use this when working with file uploads, text entry, numeric values, multi-line text inputs, signatures, ratings, or color selection. This skill covers input validation, events, data binding, and advanced customization options for all input-related components in Blazor applications.4---5
6# Implementing Syncfusion Blazor FileUpload
7
8This skill covers the Syncfusion Blazor FileUpload component, a robust solution for file handling in Blazor applications. Learn to implement single and multiple file uploads, configure validation rules, enable drag-drop interactions, handle large files with chunked uploads, and leverage comprehensive events for complete upload control and user feedback.
9
10---
11
12## FileUpload
13
14Learn to implement Syncfusion Blazor File Upload component with async/sync uploads, validation, events, customization, and always get immediate file handling with drag-drop or form integration for web and server applications.
15
16### Documentation
17
18#### Getting Started
19📄 **Read:** [references/file-upload-getting-started.md](references/file-upload-getting-started.md)
20- Installation and NuGet package setup
21- Visual Studio/Visual Studio Code setup steps
22- Blazor WebAssembly vs Server configuration
23- Basic SfUploader component rendering
24- CSS and script imports
25- Minimal working example
26
27#### Core Configuration
28📄 **Read:** [references/file-upload-configuration.md](references/file-upload-configuration.md)
29- ID property for component identification
30- AllowedExtensions for file type restriction
31- AllowMultiple vs single file uploads
32- AutoUpload behavior configuration
33- SequentialUpload for ordered processing
34- DirectoryUpload capability
35- Enabled state and component control
36
37#### Upload Methods & Behavior
38📄 **Read:** [references/file-upload-file-upload-methods.md](references/file-upload-file-upload-methods.md)
39- Synchronous vs asynchronous uploads
40- Save URL and Remove URL configuration
41- Upload button click handlers
42- Automatic vs manual upload triggering
43- Upload progress tracking mechanisms
44- Backend API requirements
45
46#### Events & Handlers
47📄 **Read:** [references/file-upload-events-and-handlers.md](references/file-upload-events-and-handlers.md)
48- ValueChange event for direct file access (Blazor Server only, without AsyncSettings)
49- FileSelected event for pre-validation
50- Created event for initialization logic
51- OnFileListRender for custom file display
52- OnUploadStart, Success, OnFailure events (use with AsyncSettings)
53- Event handler patterns and best practices
54- **Important:** ValueChange and UploaderAsyncSettings are mutually exclusive
55
56#### File Validation
57📄 **Read:** [references/file-upload-validation.md](references/file-upload-validation.md)
58- File type validation strategies
59- File size constraints (MinFileSize, MaxFileSize)
60- Custom validation functions
61- Preventing invalid file uploads
62- Error messages and user feedback
63- Validation within EditForm
64
65#### Advanced Features
66📄 **Read:** [references/file-upload-advanced-features.md](references/file-upload-advanced-features.md)
67- Chunked upload for large files
68- Pause and resume functionality
69- Async/await patterns in event handlers
70- MemoryStream processing without disk I/O
71- Batch upload operations
72- Retry and recovery mechanisms
73
74#### Customization & Styling
75📄 **Read:** [references/file-upload-customization.md](references/file-upload-customization.md)
76- Custom file list templates
77- CSS class customization
78- Theme Studio integration
79- Custom button styling
80- Dark mode support
81- Responsive design patterns
82
83#### File Source Options
84📄 **Read:** [references/file-upload-file-source-options.md](references/file-upload-file-source-options.md)
85- Drag-and-drop upload implementation
86- Form integration patterns
87- Direct file picker interaction
88- Browser file dialog usage
89- Directory selection and upload
90- Multiple input method combinations
91- Accessibility best practices
92
93#### Localization & Accessibility
94📄 **Read:** [references/file-upload-localization-accessibility.md](references/file-upload-localization-accessibility.md)
95- Multi-language UI support
96- Locale configuration options
97- Custom text labels
98- WCAG 2.1 compliance
99- Keyboard navigation implementation
100- Screen reader support
101- ARIA attributes
102
103#### Platform-Specific Setup
104📄 **Read:** [references/file-upload-platform-specific-setup.md](references/file-upload-platform-specific-setup.md)
105- Blazor WebAssembly app setup
106- Blazor Server app setup
107- Blazor Web App (.NET 8+) setup
108- MAUI integration
109- Different render modes
110- Platform-specific considerations
111
112### Quick Start Example
113
114```razor
115@using Syncfusion.Blazor.Inputs
116
117<SfUploader AutoUpload="true" AllowedExtensions=".jpg,.jpeg,.png,.pdf">
118 <UploaderAsyncSettings
119 SaveUrl="api/upload/save"
120 RemoveUrl="api/upload/remove">
121 </UploaderAsyncSettings>
122</SfUploader>
123```
124
125### Common Patterns
126
127#### Pattern 1: Basic File Upload with Validation (Server Upload)
128- Use `AutoUpload="true"` for instant uploads
129- Configure `UploaderAsyncSettings` with SaveUrl/RemoveUrl
130- Set `AllowedExtensions` to restrict file types
131- Listen to `FileSelected` event for pre-validation
132- Use `Success`/`OnFailure` events for upload feedback
133
134#### Pattern 2: Direct File Access (Blazor Server Only)
135- Use `ValueChange` event to access file content directly
136- **Do NOT use** `UploaderAsyncSettings` with ValueChange
137- Process files in memory or save to directory
138- Best for file preview, Base64 conversion, or direct storage
139
140#### Pattern 3: Multiple File Handling
141- Set `AllowMultiple="true"` to allow batch uploads
142- Use `SequentialUpload` for ordered processing
143- Track progress with upload events
144- Display file list with individual progress indicators
145
146#### Pattern 4: Large File Upload with Chunking
147- Configure `ChunkSize` in `UploaderAsyncSettings`
148- Enable pause/resume with chunk upload
149- Implement retry logic for failed chunks
150- Show chunk-level progress to user
151
152### Key Props
153
154| Property | Default | Use When |
155|----------|---------|----------|
156| AutoUpload | true | Upload files immediately after selection |
157| AllowMultiple | true | User needs to upload multiple files |
158| SequentialUpload | false | Files must upload one at a time |
159| AllowedExtensions | "" | Only specific file types allowed |
160| DirectoryUpload | false | User can select entire folders |
161| MaxFileSize | 28.4 MB | Limiting maximum upload file size |
162| MinFileSize | 0 | Setting minimum file size requirement |
163| ChunkSize | 0 (disabled) | Enable chunked upload for large files |
164| ShowFileList | true | Control visibility of uploaded file list |
165| ShowProgressBar | true | Display upload progress indicator |
166| Enabled | true | Enable or disable the uploader |
167| DropArea | null | Specify custom drop zone CSS selector |
168| CssClass | "" | Apply custom CSS classes |
169| TabIndex | 0 | Set tab navigation order |
170| EnablePersistence | false | Maintain state across page reloads |
171| EnableRtl | false | Enable right-to-left layout |
172
173
174### Common Use Cases
175
1761. **Document Upload**: Resume, PDF, certification file uploads
1772. **Image Gallery**: User profile pictures, photo collections
1783. **Data Import**: CSV/Excel file imports for data processing
1794. **Media Library**: Video, audio file uploads and management
1805. **Backup Uploads**: Database backups, configuration files
1816. **Report Generation**: Monthly reports, analytics data
1827. **Invoice Processing**: Financial document uploads
1838. **User Attachments**: Email attachments, message files
184
185### Quick Decision Tree
186
187**User needs file upload functionality**
188 ├─ Single file only? → Set `AllowMultiple="false"` + use basic setup
189 ├─ Multiple files?
190 │ ├─ All at once? → `AllowMultiple="true"` + `SequentialUpload="false"`
191 │ └─ One at a time? → `AllowMultiple="true"` + `SequentialUpload="true"`
192 └─ Large files (>100MB)?
193 ├─ Enable chunking → Set `ChunkSize` property
194 └─ Add pause/resume → Listen to `Paused` and `OnResume` events
195
196---
197
198## TextArea
199
200Learn to implement Syncfusion Blazor TextArea component for multi-line text input with configurable resize modes, row/column sizing, character limits, floating labels, and comprehensive validation. Perfect for comments, descriptions, messages, and any scenario requiring extended text entry with real-time feedback and form integration.
201
202### Documentation
203
204#### Getting Started
205📄 **Read:** [references/textarea-getting-started.md](references/textarea-getting-started.md)
206- Installation and NuGet package setup
207- Basic SfTextArea component setup
208- Namespace imports and service registration
209- CSS theme configuration
210- Minimal working example
211- Initial component rendering
212
213#### Configuration Options
214📄 **Read:** [references/textarea-configuration.md](references/textarea-configuration.md)
215- RowCount and ColumnCount for sizing
216- ResizeMode (Vertical, Horizontal, Both, None)
217- MaxLength property for character limits
218- Placeholder text configuration
219- FloatLabelType (Auto, Always, Never)
220- ReadOnly and Disabled states
221- Width property and responsive sizing
222- HTML attributes customization
223
224#### Events and Data Binding
225📄 **Read:** [references/textarea-events-binding.md](references/textarea-events-binding.md)
226- Value property and two-way binding (@bind-Value)
227- ValueChange event for real-time updates
228- Focus and Blur events (TextAreaFocusInEventArgs, TextAreaFocusOutEventArgs)
229- Input event for keystroke tracking
230- Created and Destroyed lifecycle events
231- Form validation integration with EditForm
232- ValueExpression for validation binding
233
234#### Customization and Styling
235📄 **Read:** [references/textarea-customization.md](references/textarea-customization.md)
236- CssClass for custom styling
237- ShowClearButton for quick text removal
238- InputAttributes and HtmlAttributes
239- Theme customization with Theme Studio
240- Responsive design patterns
241- Accessibility features (ARIA, keyboard navigation)
242- RTL (Right-to-Left) support with EnableRtl
243
244### Quick Start Example
245
246```razor
247@using Syncfusion.Blazor.Inputs
248
249<SfTextArea @bind-Value="@description"
250 Placeholder="Enter description..."
251 RowCount="5"
252 ColumnCount="50"
253 MaxLength="500"
254 FloatLabelType="FloatLabelType.Auto">
255</SfTextArea>
256
257@code {
258 private string description = "";
259}
260```
261
262### Common Patterns
263
264#### Pattern 1: Basic Multi-Line Input
265- Use `RowCount` to set visible lines (default: 2)
266- Set `Placeholder` for user guidance
267- Enable `@bind-Value` for two-way binding
268- Apply `MaxLength` for character constraints
269
270#### Pattern 2: Resizable TextArea with Limits
271- Set `ResizeMode="Resize.Both"` for user resizing
272- Configure `RowCount` and `ColumnCount` for initial size
273- Use `MaxLength` to prevent excessive input
274- Listen to `ValueChange` for live character counting
275
276#### Pattern 3: Form Integration with Validation
277- Wrap in `<EditForm>` with model binding
278- Use `@bind-Value` with `ValueExpression`
279- Apply `[Required]` or `[StringLength]` attributes
280- Display validation messages with `<ValidationMessage>`
281- Style invalid state with CSS
282
283#### Pattern 4: Auto-Growing TextArea
284- Set `ResizeMode="Resize.Vertical"` for vertical expansion
285- Start with minimal `RowCount` (e.g., 3)
286- Allow user to expand as needed
287- Combine with `MaxLength` for upper bounds
288
289### Key Props
290
291| Property | Default | Use When |
292|----------|---------|----------|
293| Value | "" | Binding textarea content |
294| RowCount | 2 | Setting visible number of rows |
295| ColumnCount | 20 | Setting visible number of columns |
296| MaxLength | null | Limiting maximum characters |
297| ResizeMode | Resize.Both | Controlling user resize behavior |
298| Placeholder | "" | Showing hint text when empty |
299| FloatLabelType | FloatLabelType.Never | Enabling floating label animation |
300| ShowClearButton | false | Adding quick clear functionality |
301| ReadOnly | false | Preventing user edits while showing content |
302| Disabled | false | Disabling the component entirely |
303| Width | "100%" | Setting component width |
304| CssClass | "" | Applying custom CSS classes |
305| EnableRtl | false | Enabling right-to-left text direction |
306
307### Common Use Cases
308
3091. **Comment Sections**: User feedback, review comments, discussion threads
3102. **Form Descriptions**: Product descriptions, bio sections, about fields
3113. **Message Composition**: Email bodies, chat messages, note-taking
3124. **Code/JSON Input**: Configuration files, script input, data entry
3135. **Address Fields**: Multi-line address entry with street, city, etc.
3146. **Search Queries**: Complex search inputs with multiple criteria
3157. **Customer Support**: Ticket descriptions, issue reporting, help requests
3168. **Content Management**: Article drafts, blog post editing, documentation
317
318### Quick Decision Tree
319
320**User needs multi-line text input**
321 ├─ Fixed size? → Set `ResizeMode="Resize.None"` + specific `RowCount`
322 ├─ User-resizable?
323 │ ├─ Vertical only? → `ResizeMode="Resize.Vertical"`
324 │ ├─ Horizontal only? → `ResizeMode="Resize.Horizontal"`
325 │ └─ Both directions? → `ResizeMode="Resize.Both"`
326 ├─ Character limit needed? → Set `MaxLength` property
327 └─ Form validation?
328 ├─ Use within `<EditForm>`
329 └─ Add `ValueExpression` for validation binding
330
331---
332
333## Signature
334
335Learn to implement Syncfusion Blazor Signature component for capturing digital signatures with configurable stroke width, colors, background images, save/load functionality in multiple formats (PNG, JPEG, SVG), and comprehensive event handling. Perfect for e-signatures, document approval workflows, digital consent forms, and any scenario requiring handwritten signature capture with touch and mouse support.
336
337### Documentation
338
339#### Getting Started
340📄 **Read:** [references/signature-getting-started.md](references/signature-getting-started.md)
341- Installation and NuGet package setup
342- Basic SfSignature component setup
343- Namespace imports and service registration
344- CSS theme configuration
345- Canvas rendering and initialization
346- Touch and mouse input support
347- Minimal working example
348
349#### Drawing Configuration
350📄 **Read:** [references/signature-drawing-configuration.md](references/signature-drawing-configuration.md)
351- MinStrokeWidth and MaxStrokeWidth for pen thickness
352- StrokeColor for ink color customization
353- BackgroundColor for canvas background
354- BackgroundImage for letterhead/watermark
355- Velocity property for stroke smoothness
356- Drawing behavior and responsiveness
357- Pressure sensitivity simulation
358
359#### Save and Load Signatures
360📄 **Read:** [references/signature-save-load.md](references/signature-save-load.md)
361- Save() method with format options (PNG, JPEG, SVG)
362- SaveWithBackground property configuration
363- GetSignature() for Base64 string retrieval
364- Load() method for existing signatures
365- Clear() method for signature removal
366- File format selection and quality settings
367- Server integration patterns
368- Database storage strategies
369
370#### Event Handling
371📄 **Read:** [references/signature-events.md](references/signature-events.md)
372- Changed event for stroke tracking
373- OnSave event for save operations
374- Created event for initialization
375- Event argument structure
376- Real-time signature validation
377- Detecting empty vs filled signatures
378- Event-driven workflows
379
380#### Customization and Styling
381📄 **Read:** [references/signature-customization.md](references/signature-customization.md)
382- Disabled and IsReadOnly states
383- HtmlAttributes for custom styling
384- Canvas size customization
385- Theme integration
386- Mobile and touch device optimization
387- Accessibility considerations
388- Responsive design patterns
389
390### Quick Start Example
391
392```razor
393@using Syncfusion.Blazor.Inputs
394
395<div class="signature-container">
396 <label>Sign below:</label>
397 <SfSignature @ref="signatureRef"
398 StrokeColor="#000000"
399 BackgroundColor="#FFFFFF"
400 MaxStrokeWidth="2.0"
401 MinStrokeWidth="0.5">
402 </SfSignature>
403
404 <div class="signature-actions">
405 <button @onclick="SaveSignature">Save</button>
406 <button @onclick="ClearSignature">Clear</button>
407 </div>
408</div>
409
410@code {
411 private SfSignature signatureRef;
412
413 private async Task SaveSignature()
414 {
415 await signatureRef.SaveAsync(SignatureFileType.Png, "signature.png");
416 }
417
418 private async Task ClearSignature()
419 {
420 await signatureRef.ClearAsync();
421 }
422}
423```
424
425### Common Patterns
426
427#### Pattern 1: Basic Signature Capture
428- Use default stroke settings for natural handwriting feel
429- Set `BackgroundColor="#FFFFFF"` for clear canvas
430- Provide Clear button for user corrections
431- Save as PNG for universal compatibility
432- Validate signature is not empty before submission
433
434#### Pattern 2: Document Signing with Letterhead
435- Use `BackgroundImage` for company letterhead or form template
436- Set `SaveWithBackground="true"` to include background in saved file
437- Configure `StrokeColor` to contrast with background
438- Save as PNG or JPEG with background embedded
439- Ideal for contracts, agreements, official documents
440
441#### Pattern 3: Mobile-Optimized Signature
442- Increase stroke width for better touch visibility
443- Use larger canvas size for thumb-friendly drawing
444- Set `IsReadOnly="false"` only when signature mode active
445- Auto-save on signature completion
446- Provide clear visual feedback for touch interactions
447
448#### Pattern 4: Multi-Signature Forms
449- Use multiple SfSignature components for different signatories
450- Track completion state per signature field
451- Save each signature with unique identifier
452- Combine signatures in final document generation
453- Validate all required signatures before form submission
454
455### Key Props
456
457| Property | Default | Use When |
458|----------|---------|----------|
459| MinStrokeWidth | 0.5 | Setting minimum pen thickness |
460| MaxStrokeWidth | 2.0 | Setting maximum pen thickness |
461| StrokeColor | "#000000" | Changing ink color |
462| BackgroundColor | "#FFFFFF" | Setting canvas background color |
463| BackgroundImage | null | Adding letterhead or watermark image |
464| Velocity | 0.7 | Controlling stroke smoothness (0-1) |
465| SaveWithBackground | true | Including background in saved signature |
466| Disabled | false | Disabling signature capture entirely |
467| IsReadOnly | false | Preventing signature changes while showing existing |
468| EnablePersistence | false | Maintaining signature across page reloads |
469| HtmlAttributes | null | Adding custom HTML attributes to wrapper |
470
471### Common Use Cases
472
4731. **E-Signature Capture**: Digital document signing, contract approval, consent forms
4742. **Financial Services**: Loan applications, account opening, transaction authorization
4753. **Healthcare**: Patient consent forms, HIPAA agreements, medical records
4764. **Legal Documents**: Contracts, NDAs, legal agreements, court documents
4775. **HR Processes**: Employment contracts, onboarding documents, policy acknowledgments
4786. **Delivery Confirmation**: Package delivery signatures, service completion
4797. **Check-In Systems**: Visitor logs, attendance tracking, registration forms
4808. **Educational**: Test proctoring, form submissions, parent consent
481
482### Quick Decision Tree
483
484**User needs signature capture**
485 ├─ Basic signature?
486 │ └─ Use default settings + Save as PNG
487 ├─ Document with letterhead?
488 │ ├─ Set `BackgroundImage` property
489 │ └─ Enable `SaveWithBackground="true"`
490 ├─ Mobile/touch primary?
491 │ ├─ Increase `MaxStrokeWidth` to 3.0+
492 │ └─ Use larger canvas dimensions
493 ├─ Multiple signers?
494 │ ├─ Use multiple SfSignature components
495 │ ├─ Track each signature state separately
496 │ └─ Save with unique identifiers
497 └─ Need specific format?
498 ├─ PNG → Universal support, transparency
499 ├─ JPEG → Smaller file size, no transparency
500 └─ SVG → Vector format, scalable
501
502---
503
504## RangeSlider
505
506Learn to implement Syncfusion Blazor Range Slider component with dual handles for range selection, ticks, tooltips, color ranges, movement limits, and always get immediate two-value selection for price filters, date ranges, temperature zones, or any scenario requiring range input with visual feedback and validation in Blazor applications.
507
508### Documentation
509
510#### Getting Started
511📄 **Read:** [references/rangeslider-getting-started.md](references/rangeslider-getting-started.md)
512- Installation and NuGet package setup
513- Basic SfSlider with Type="SliderType.Range"
514- Value binding with arrays for dual handles
515- CSS imports and theme configuration
516- Namespace imports and service registration
517- Minimal working example with range selection
518
519#### Range Configuration
520📄 **Read:** [references/rangeslider-range-configuration.md](references/rangeslider-range-configuration.md)
521- Min, Max, and Step properties for range bounds
522- Type property (SliderType.Range vs Default)
523- Two-way value binding with arrays (@bind-Value)
524- Custom non-numeric values with CustomValues
525- IsImmediateValue for real-time updates
526- Value array structure and data types
527
528#### Ticks and Tooltip
529📄 **Read:** [references/rangeslider-ticks-and-tooltip.md](references/rangeslider-ticks-and-tooltip.md)
530- SliderTicks component configuration
531- LargeStep and SmallStep for interval markers
532- Tick placement options (Before, After, Both)
533- ShowSmallTicks property for granular display
534- Format property for tick label customization
535- SliderTooltip component setup
536- Tooltip visibility modes (Focus, Hover, Always, Auto)
537- Tooltip placement and format customization
538- Custom tooltip templates
539
540#### Color Ranges and Visual Indication
541📄 **Read:** [references/rangeslider-color-ranges-visual.md](references/rangeslider-color-ranges-visual.md)
542- SliderColorRanges for visual feedback
543- ColorRange components with Start, End, Color
544- Multiple color segments for different value zones
545- Use cases (temperature zones, price tiers, ratings)
546- Color customization and styling
547- Accessibility considerations for color choices
548
549#### Limits and Constraints
550📄 **Read:** [references/rangeslider-limits-and-constraints.md](references/rangeslider-limits-and-constraints.md)
551- SliderLimits configuration for movement restrictions
552- MinStart, MinEnd, MaxStart, MaxEnd properties
553- Enabled property for limit activation
554- StartHandleFixed and EndHandleFixed for locked handles
555- Restricting handle movement within bounds
556- Use cases (booking date ranges, budget constraints)
557- Validation patterns with limits
558
559#### Orientation and Customization
560📄 **Read:** [references/rangeslider-orientation-and-customization.md](references/rangeslider-orientation-and-customization.md)
561- Orientation property (Horizontal vs Vertical)
562- ShowButtons for increment/decrement controls
563- Width property for responsive sizing
564- EnableAnimation for smooth transitions
565- CssClass for custom styling
566- EnableRtl for right-to-left language support
567- ReadOnly and Enabled states
568- Theme customization with Theme Studio
569
570#### Events and Data Binding
571📄 **Read:** [references/rangeslider-events-and-binding.md](references/rangeslider-events-and-binding.md)
572- SliderEvents component configuration
573- ValueChange event callback for range updates
574- OnChange vs Changed event timing
575- Created event for initialization logic
576- Rendered event for post-render operations
577- OnTooltipChange for dynamic tooltip content
578- OnTicksRender for custom tick label rendering
579- Form integration with EditForm
580- Validation with EditContext and data annotations
581
582### Quick Start Example
583
584```razor
585@using Syncfusion.Blazor.Inputs
586
587<div class="range-slider-container">
588 <label>Select Price Range: $@priceRange[0] - $@priceRange[1]</label>
589 <SfSlider @bind-Value="@priceRange"
590 Type="SliderType.Range"
591 Min="0"
592 Max="1000"
593 Step="10">
594 <SliderTicks Placement="Placement.After" LargeStep="200" SmallStep="50" ShowSmallTicks="true"></SliderTicks>
595 <SliderTooltip IsVisible="true" ShowOn="TooltipShowOn.Always" Format="C0"></SliderTooltip>
596 </SfSlider>
597</div>
598
599@code {
600 private int[] priceRange = new int[] { 200, 800 };
601}
602```
603
604### Common Patterns
605
606#### Pattern 1: Basic Range Selection
607- Set `Type="SliderType.Range"` for dual handles
608- Bind value to int[] or double[] array with two elements
609- Configure `Min`, `Max`, and `Step` properties
610- Enable tooltip with `IsVisible="true"` for user feedback
611- Use `ValueChange` event to capture range updates
612
613#### Pattern 2: Range with Visual Color Zones
614- Add `SliderColorRanges` component
615- Define multiple `ColorRange` segments (e.g., cold/warm/hot)
616- Set colors that provide clear visual distinction
617- Use for temperature, ratings, or risk indicators
618- Combine with ticks for precise value identification
619
620#### Pattern 3: Constrained Range Selection
621- Use `SliderLimits` to restrict handle movement
622- Set `MinStart`/`MaxStart` for first handle bounds
623- Set `MinEnd`/`MaxEnd` for second handle bounds
624- Enable `StartHandleFixed` or `EndHandleFixed` if one handle should be locked
625- Ideal for booking systems, budget planning, scheduling
626
627#### Pattern 4: Custom Value Range Selection
628- Use `CustomValues` array for non-numeric ranges
629- Example: string[] { "XS", "S", "M", "L", "XL", "XXL" }
630- Value array uses indices, not actual values
631- Display custom labels via tick formatting
632- Perfect for size selection, priority levels, skill ratings
633
634### Key Props
635
636| Property | Default | Use When |
637|----------|---------|----------|
638| Type | SliderType.Default | Set to SliderType.Range for dual handles |
639| Value | new int[]{} | Binding range values (must be 2-element array) |
640| Min | 0 | Setting minimum selectable value |
641| Max | 100 | Setting maximum selectable value |
642| Step | 1 | Defining increment/decrement value |
643| CustomValues | null | Using non-numeric values (sizes, labels) |
644| IsImmediateValue | false | Getting real-time updates during drag |
645| ShowButtons | false | Adding increment/decrement buttons |
646| Orientation | SliderOrientation.Horizontal | Changing to vertical layout |
647| Width | null | Setting component width |
648| EnableAnimation | true | Controlling handle animation |
649| ReadOnly | false | Preventing user interaction while showing value |
650| Enabled | true | Enabling/disabling the entire component |
651
652### Common Use Cases
653
6541. **E-Commerce Price Filters**: Min/max price selection, budget range filtering
6552. **Date Range Pickers**: Check-in/check-out dates, event duration, scheduling
6563. **Temperature Control**: HVAC systems, oven settings, climate zones
6574. **Age Range Selection**: Demographics, target audience, age restrictions
6585. **Time Range Selection**: Working hours, availability slots, time windows
6596. **Score/Rating Ranges**: Grade filtering, performance metrics, review scores
6607. **Financial Planning**: Budget allocation, investment ranges, spending limits
6618. **Resource Allocation**: CPU/memory limits, bandwidth throttling, capacity planning
662
663### Quick Decision Tree
664
665**User needs range selection (two values)**
666 ├─ Numeric range?
667 │ ├─ Set `Type="SliderType.Range"`
668 │ ├─ Use int[] or double[] for Value
669 │ └─ Configure Min, Max, Step
670 ├─ Non-numeric values (sizes, labels)?
671 │ ├─ Set `CustomValues` array
672 │ ├─ Value array contains indices
673 │ └─ Use tick formatting for labels
674 ├─ Need visual zones?
675 │ ├─ Add `SliderColorRanges` component
676 │ └─ Define multiple `ColorRange` segments
677 ├─ Restrict movement?
678 │ ├─ Use `SliderLimits` component
679 │ ├─ Set MinStart/MaxStart/MinEnd/MaxEnd
680 │ └─ Enable StartHandleFixed or EndHandleFixed if needed
681 ├─ Vertical layout needed?
682 │ └─ Set `Orientation="SliderOrientation.Vertical"`
683 └─ Real-time updates during drag?
684 └─ Set `IsImmediateValue="true"`
685
686---
687
688## OtpInput
689
690Learn to implement Syncfusion Blazor OtpInput (One-Time Password) component for secure verification code entry with configurable length, input types (number, text, password), styling modes (outlined, underlined, filled), automatic focus management, and comprehensive event handling. Perfect for 2FA authentication, email verification, SMS codes, PIN entry, and any scenario requiring secure multi-digit code input with keyboard navigation and accessibility support.
691
692### Documentation
693
694#### Getting Started
695📄 **Read:** [references/otpinput-getting-started.md](references/otpinput-getting-started.md)
696- Installation and NuGet package setup
697- Basic SfOtpInput component setup
698- Namespace imports and service registration
699- CSS theme configuration
700- Length property for OTP digit count
701- Value binding and retrieval
702- Minimal working example
703
704#### Configuration Options
705📄 **Read:** [references/otpinput-configuration.md](references/otpinput-configuration.md)
706- Length property for digit count (default: 4)
707- Type property (Number, Text, Password)
708- Placeholder configuration for empty inputs
709- Separator for visual grouping
710- AutoFocus for immediate input
711- Disabled state management
712- ID and HtmlAttributes customization
713
714#### Styling Modes
715📄 **Read:** [references/otpinput-styling-modes.md](references/otpinput-styling-modes.md)
716- StylingMode options (Outlined, Underlined, Filled)
717- TextTransform (None, Lowercase, Uppercase)
718- CssClass for custom styling
719- Theme customization with Theme Studio
720- Responsive design patterns
721- Visual states and focus indicators
722
723#### Events and Data Binding
724📄 **Read:** [references/otpinput-events-binding.md](references/otpinput-events-binding.md)
725- Value property and two-way binding (@bind-Value)
726- ValueChanged event callback (use Value property only, NOT @bind-Value)
727- OnInput event with OtpInputEventArgs
728- OnFocus and OnBlur events
729- Created lifecycle event
730- Form validation integration
731- Real-time verification patterns
732- Auto-submit on completion
733
734#### Accessibility
735📄 **Read:** [references/otpinput-accessibility.md](references/otpinput-accessibility.md)
736- AriaLabels array for individual input fields
737- Keyboard navigation (arrows, backspace, delete)
738- Screen reader support
739- WCAG 2.1 compliance
740- Focus management best practices
741- Password type accessibility considerations
742- Mobile device optimization
743
744### Quick Start Example
745
746```razor
747@using Syncfusion.Blazor.Inputs
748
749<div class="otp-container">
750 <label>Enter verification code:</label>
751 <SfOtpInput @bind-Value="@otpValue"
752 Length="6"
753 Type="OtpInputType.Number"
754 StylingMode="OtpInputStyle.Outlined">
755 </SfOtpInput>
756
757 @if (!string.IsNullOrEmpty(message))
758 {
759 <div class="message">@message</div>
760 }
761</div>
762
763@code {
764 private string otpValue = "";
765 private string message = "";
766
767 protected override void OnParametersSet()
768 {
769 if (otpValue.Length == 6)
770 {
771 message = "Verifying code...";
772 // Call verification API
773 }
774 }
775}
776```
777
778### Common Patterns
779
780#### Pattern 1: Basic OTP Verification (6-digit numeric)
781- Set `Length="6"` for standard OTP length
782- Use `Type="OtpInputType.Number"` for numeric-only input
783- Enable `AutoFocus="true"` for immediate input
784- Use `@bind-Value` for two-way binding (simplest approach)
785- Validate and verify OTP on server
786
787#### Pattern 2: Email/SMS Verification Code
788- Configure `Length="4"` or `Length="6"` based on service
789- Use `Type="OtpInputType.Number"` for numeric codes
790- Set `StylingMode="OtpInputStyle.Underlined"` for clean look
791- Auto-focus first input on page load
792- Show countdown timer for code expiration
793- Provide "Resend code" functionality
794
795#### Pattern 3: Secure PIN Entry
796- Use `Type="OtpInputType.Password"` to mask input
797- Set `Length="4"` or `Length="6"` for PIN length
798- Apply `StylingMode="OtpInputStyle.Filled"` for modern look
799- Implement rate limiting for security
800- Clear input on failed attempts
801- Show visual feedback for validation
802
803#### Pattern 4: Alphanumeric Verification (with separators)
804- Set `Type="OtpInputType.Text"` for letters and numbers
805- Use `TextTransform="TextTransform.Uppercase"` for readability
806- Configure `Separator="-"` to visually group digits
807- Example: ABC-123-XYZ pattern
808- Set `Length="9"` (including separator positions)
809- Useful for activation codes, license keys
810
811### Key Props
812
813| Property | Default | Use When |
814|----------|---------|----------|
815| Value | "" | Binding OTP value (two-way with @bind-Value) |
816| Length | 4 | Setting number of OTP input fields |
817| Type | OtpInputType.Number | Defining input type (Number, Text, Password) |
818| StylingMode | OtpInputStyle.Outlined | Choosing visual style (Outlined, Underlined, Filled) |
819| Placeholder | "" | Showing hint text in empty fields |
820| Separator | "" | Adding visual separator between groups |
821| TextTransform | TextTransform.None | Transforming text (None, Lowercase, Uppercase) |
822| AutoFocus | false | Auto-focusing first input on load |
823| Disabled | false | Disabling all input fields |
824| CssClass | "" | Applying custom CSS classes |
825| AriaLabels | null | Setting custom ARIA labels for each input |
826| HtmlAttributes | null | Adding custom HTML attributes |
827
828### Common Use Cases
829
8301. **Two-Factor Authentication (2FA)**: Login security, account verification, multi-factor authentication
8312. **Email Verification**: Account activation, email confirmation, newsletter signup
8323. **SMS Verification**: Phone number verification, mobile app login, transaction confirmation
8334. **Password Reset**: Secure password recovery, account access restoration
8345. **Transaction Verification**: Banking transactions, payment confirmation, fund transfers
8356. **Access Control**: Building entry codes, secure area access, temporary access codes
8367. **Device Pairing**: Bluetooth pairing codes, smart device setup, IoT device linking
8378. **Activation Codes**: Software licenses, product activation, subscription validation
838
839### Quick Decision Tree
840
841**User needs OTP/verification code input**
842 ├─ Numeric only?
843 │ ├─ Set `Type="OtpInputType.Number"`
844 │ └─ Use `Length="4"` or `Length="6"`
845 ├─ Need to hide input (PIN)?
846 │ ├─ Set `Type="OtpInputType.Password"`
847 │ └─ Apply security best practices
848 ├─ Alphanumeric codes?
849 │ ├─ Set `Type="OtpInputType.Text"`
850 │ ├─ Use `TextTransform="TextTransform.Uppercase"`
851 │ └─ Consider `Separator` for readability
852 ├─ Auto-submit when complete?
853 │ ├─ Listen to `ValueChanged` event
854 │ ├─ Check if `value.Length == Length`
855 │ └─ Call verification API automatically
856 ├─ Custom styling needed?
857 │ ├─ Outlined → `StylingMode="OtpInputStyle.Outlined"` (default)
858 │ ├─ Underlined → `StylingMode="OtpInputStyle.Underlined"`
859 │ └─ Filled → `StylingMode="OtpInputStyle.Filled"`
860 └─ Accessibility important?
861 ├─ Set `AriaLabels` array for screen readers
862 └─ Enable `AutoFocus` for keyboard users
863
864---
865
866## Rating
867
868Learn to implement Syncfusion Blazor Rating component for intuitive rating and feedback collection with configurable precision modes (full, half, quarter, exact), custom icons and templates, label and tooltip support, comprehensive event handling, and accessibility features. Perfect for product reviews, skill assessments, satisfaction surveys, quality ratings, and any scenario requiring user feedback through star ratings or custom iconography with keyboard navigation and form integration.
869
870### Documentation
871
872#### Getting Started
873📄 **Read:** [references/rating-getting-started.md](references/rating-getting-started.md)
874- Installation and NuGet package setup
875- Basic SfRating component setup
876- Namespace imports and service registration
877- CSS theme configuration
878- ItemsCount property for rating scale
879- Value binding and retrieval
880- Minimal working example
881- Basic 5-star rating implementation
882
883#### Precision and Values
884📄 **Read:** [references/rating-precision-and-values.md](references/rating-precision-and-values.md)
885- Precision property (Full, Half, Quarter, Exact)
886- Full precision for whole numbers only
887- Half precision for 0.5 increments
888- Quarter precision for 0.25 increments
889- Exact precision for decimal values
890- Min property for minimum rating value
891- AllowReset for clearing ratings
892- EnableSingleSelection for single-item mode
893- Value calculations and display
894
895#### Labels and Tooltips
896📄 **Read:** [references/rating-labels-and-tooltips.md](references/rating-labels-and-tooltips.md)
897- ShowLabel property for label display
898- LabelPosition (Top, Bottom, Left, Right)
899- LabelTemplate for custom label formatting
900- ShowTooltip property for hover tooltips
901- TooltipTemplate for custom tooltip content
902- Dynamic label updates based on value
903- Contextual feedback patterns
904
905#### Templates and Customization
906📄 **Read:** [references/rating-templates-customization.md](references/rating-templates-customization.md)
907- EmptyTemplate for unselected items
908- FullTemplate for selected items
909- RatingItemContext for template data
910- Custom icon implementation (hearts, thumbs, emojis)
911- SVG and icon font integration
912- CssClass for custom styling
913- EnableAnimation property
914- Theme customization and responsive design
915
916#### Events and States
917📄 **Read:** [references/rating-events-and-states.md](references/rating-events-and-states.md)
918- ValueChanged event for rating updates
919- OnItemHover event with RatingHoverEventArgs
920- Created lifecycle event
921- Form validation integration
922- ReadOnly state for display-only ratings
923- Disabled state management
924- Visible property control
925- Keyboard navigation support
926- Accessibility features and ARIA attributes
927
928### Quick Start Example
929
930```razor
931@using Syncfusion.Blazor.Inputs
932
933<div class="rating-container">
934 <label>Rate your experience:</label>
935 <SfRating @bind-Value="@userRating"
936 ItemsCount="5"
937 Precision="PrecisionType.Full"
938 ShowLabel="true">
939 </SfRating>
940
941 @if (userRating > 0)
942 {
943 <p>You rated: @userRating / 5 stars</p>
944 }
945</div>
946
947@code {
948 private double userRating = 0;
949}
950```
951
952### Common Patterns
953
954#### Pattern 1: Basic 5-Star Product Rating
955- Use default `ItemsCount="5"` for standard rating
956- Set `Precision="PrecisionType.Full"` for whole stars only
957- Enable `@bind-Value` for two-way data binding
958- Show `ShowLabel="true"` to display rating value
959- Position label with `LabelPosition="LabelPosition.Right"`
960- Use `ValueChanged` event for auto-submit
961
962#### Pattern 2: Half-Star Rating with Hover Feedback
963- Set `Precision="PrecisionType.Half"` for 0.5 increments
964- Enable `ShowTooltip="true"` for hover feedback
965- Use `OnItemHover` event for preview
966- Display average ratings with `ReadOnly="true"`
967- Show rating count in custom label template
968- Implement real-time feedback messages
969
970#### Pattern 3: Custom Icon Templates (Hearts, Thumbs, Emojis)
971- Define `EmptyTemplate` for unselected state
972- Define `FullTemplate` for selected state
973- Use `RatingItemContext` for item-specific rendering
974- Implement custom icons (♥, 👍, 😊, etc.)
975- Apply `CssClass` for custom colors and sizing
976- Enable `EnableAnimation="true"` for smooth transitions
977
978#### Pattern 4: Multi-Category Rating Form
979- Create multiple `SfRating` components
980- Different `ItemsCount` per category if needed
981- Combine with `EditForm` for validation
982- Calculate overall rating average
983- Track completion with event handlers
984- Enable submit only when all ratings complete
985
986### Key Props
987
988| Property | Default | Use When |
989|----------|---------|----------|
990| Value | 0 | Binding rating value (two-way with @bind-Value) |
991| ItemsCount | 5 | Setting number of rating items (stars) |
992| Precision | PrecisionType.Full | Defining rating granularity (Full, Half, Quarter, Exact) |
993| ShowLabel | false | Displaying rating value as text |
994| LabelPosition | LabelPosition.Right | Positioning label (Top, Bottom, Left, Right) |
995| ShowTooltip | false | Enabling hover tooltips |
996| AllowReset | true | Allowing users to clear their rating |
997| EnableSingleSelection | false | Single item selection mode (thumbs up/down) |
998| Min | null | Setting minimum rating value |
999| ReadOnly | false | Display-only mode for showing ratings |
1000| Disabled | false | Disabling all interactions |
1001| EnableAnimation | true | Enabling smooth transitions |
1002| Visible | true | Controlling component visibility |
1003| EmptyTemplate | null | Custom template for unselected items |
1004| FullTemplate | null | Custom template for selected items |
1005| LabelTemplate | null | Custom label content |
1006| TooltipTemplate | null | Custom tooltip content |
1007| CssClass | "" | Applying custom CSS classes |
1008
1009### Common Use Cases
1010
10111. **Product Reviews**: E-commerce ratings, marketplace feedback, customer reviews, product quality assessment
10122. **Service Quality**: Restaurant ratings, hotel reviews, delivery service feedback, support
1013
1014…(truncated)