3.6 KiB
3.6 KiB
SbSlugEditor
A specialized input for editing URL slugs with auto-generation, validation, and preview capabilities.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Value | string? | null | The slug value (two-way bindable) |
| ValueChanged | EventCallback<string?> | - | Callback when value changes |
| BaseUrl | string? | null | Base URL to display before the slug |
| SourceText | string? | null | Source text to generate slug from (e.g., title) |
| ShowGenerateButton | bool | true | Whether to show generate button |
| ShowPreview | bool | true | Whether to show URL preview |
| AutoGenerate | bool | false | Whether to auto-generate when source changes |
| MinLength | int | 1 | Minimum slug length |
| MaxLength | int | 100 | Maximum slug length |
| ReservedSlugs | string[] | empty | Slugs that cannot be used |
| CheckAvailability | Func<string, Task<bool>>? | null | Async function to check if slug is available |
| Placeholder | string | "enter-slug-here" | Placeholder text |
| Disabled | bool | false | Whether the editor is disabled |
| ReadOnly | bool | false | Whether the editor is read-only |
| Error | bool | false | Whether there's a validation error |
| Class | string? | null | Additional CSS classes |
| Style | string? | null | Inline styles |
Events
| Event | Type | Description |
|---|---|---|
| ValueChanged | EventCallback<string?> | Fired when the slug value changes |
CSS Classes
sb-slug-editor- Base classsb-slug-editor__input-row- Input row containersb-slug-editor__base-url- Base URL displaysb-slug-editor__input-wrapper- Input wrappersb-slug-editor__input- Text inputsb-slug-editor__preview- Preview sectionsb-slug-editor__preview-label- Preview labelsb-slug-editor__preview-url- Full URL previewsb-slug-editor__error- Error messagesb-slug-editor__generate- Generate buttonsb-slug-editor--error- Error state
Slug Generation
The component automatically:
- Converts to lowercase
- Replaces spaces with hyphens
- Removes special characters
- Removes consecutive hyphens
- Trims hyphens from ends
Examples
Basic Usage
<SbSlugEditor @bind-Value="slug" />
With Base URL
<SbSlugEditor @bind-Value="pageSlug"
BaseUrl="https://example.com/pages/" />
Generate from Title
<SbTextField @bind-Value="articleTitle" Label="Title" />
<SbSlugEditor @bind-Value="articleSlug"
SourceText="@articleTitle"
BaseUrl="https://blog.example.com/" />
Auto-Generate Mode
<SbTextField @bind-Value="productName" Label="Product Name" />
<SbSlugEditor @bind-Value="productSlug"
SourceText="@productName"
AutoGenerate="true"
BaseUrl="/products/" />
With Availability Check
<SbSlugEditor @bind-Value="username"
BaseUrl="@("https://example.com/u/")"
CheckAvailability="CheckUsernameAvailable"
Placeholder="your-username" />
@code {
private async Task<bool> CheckUsernameAvailable(string slug)
{
return await UserService.IsUsernameAvailableAsync(slug);
}
}
With Reserved Slugs
<SbSlugEditor @bind-Value="pageSlug"
BaseUrl="/pages/"
ReservedSlugs="@(new[] { "admin", "api", "login", "register" })" />
With Length Constraints
<SbSlugEditor @bind-Value="shortCode"
MinLength="3"
MaxLength="20"
Placeholder="short-code" />