Aller au contenu principal

LgNavigationBox

LgNavigationBox est une zone de recherche de navigation. Elle affiche une liste de pages (TPageLink : IPageLink) dans un menu déroulant, filtre les résultats à partir du texte saisi et navigue vers l'URI de l'élément choisi.

<LgNavigationBox Items="_items" Placeholder="#menuSearchSetAria" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgSuggestBoxBase<TPageLink> → LgTextBox → LgInputRenderBase<string> → LgInputBase<string> → LgAriaComponentBase → LgComponentBase
  • Interfaces : ILgDropDownComponent, IInputCommonProperties, ILgComponentPolicies, IInputBusy, ILgFocusableComponent
  • Package NuGet : Lagoon.UI
Données locales ou distantes

Items fournit une liste locale. ControllerUri permet de charger les résultats à distance avec le même filtrage textuel côté composant.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Liste locale de pages​

Pour une liste de pages connue côté client, fournissez Items. Le composant recherche dans le Title de chaque IPageLink et navigue vers Uri au clic ou à la validation clavier.

SearchPage.razor
@inherits LgPage

<LgNavigationBox Items="_items"
Label="#SearchPage"
Placeholder="#SearchNavigationPlaceholder"
MinSearchCharacter="1"
MaxItemsInView="8" />
SearchPage.razor.cs
public partial class SearchPage : LgPage
{
// Pages proposées dans la recherche locale ; les liens typés évitent les routes dupliquées.
private readonly List<LgPageLink> _items = new()
{
DashboardPage.Link(),
OrdersPage.Link(),
CustomersPage.Link(),
ReportsPage.Link()
};
}

Recherche distante avec ControllerUri​

Lorsque la liste dépend de droits ou de données serveur, utilisez ControllerUri. Le composant poste automatiquement une requête de données vers {ControllerUri}/$qd avec le texte saisi, la pagination et le filtre sur Title.

AppLayout.razor
@inherits LgComponentBase

<LgNavigationBox ControllerUri="api/navigation/pages"
Label="#Search"
Placeholder="#SearchNavigationPlaceholder"
MinSearchCharacter="2"
MaxItemsInView="10"
TextFilterCollation="CollationType.IgnoreCaseAndAccent" />

Contrat des endpoints​

ControllerUri pointe vers une action queryable. Le composant appelle {ControllerUri}/$qd en POST via le chargeur distant Lagoon ; l'action source reste exposée en GET et décorée avec [Queryable].

GET + POST $qd — Recherche de pages (ControllerUri)​

NavigationController.cs
[ApiController]
[Route("api/navigation")]
public class NavigationController : LgControllerBase
{
[HttpGet("pages")]
[Queryable]
public IQueryable<LgPageLink> GetPages()
{
// Construit la liste complète côté serveur afin d'appliquer les droits ou les règles métier avant filtrage.
List<LgPageLink> pages = new()
{
DashboardPage.Link(),
OrdersPage.Link(),
CustomersPage.Link(),
ReportsPage.Link()
};

// Retourne IQueryable pour laisser [Queryable] appliquer le texte recherché, la pagination et les tris.
return pages.AsQueryable();
}
}
Données locales ou distantes

Items est plus simple pour une liste statique. ControllerUri devient pertinent si la liste est volumineuse, dynamique ou filtrée par des droits calculés côté serveur.

Filtrage, collation et nombre de résultats​

FilterTextSearchMode, TextFilterCollation, MinSearchCharacter et MaxItemsInView permettent d'ajuster le comportement de recherche.

SearchPage.razor
@inherits LgPage

<LgNavigationBox Items="_items"
Placeholder="#SearchNavigationPlaceholder"
FilterTextSearchMode="FilterTextSearchMode.StartsWith"
TextFilterCollation="CollationType.IgnoreCaseAndAccent"
MinSearchCharacter="0"
MaxItemsInView="0" />
ParamètreEffet
MinSearchCharacter="0"Ouvre la recherche même sans saisie.
MaxItemsInView="0"Affiche tous les résultats disponibles.
FilterTextSearchModeChoisit Contains, StartsWith ou EndsWith.
TextFilterCollationGère la casse et les accents lors du filtrage.

Personnaliser le rendu des résultats​

ItemContent remplace le rendu par défaut. Si HighlightText est activé, ajoutez la classe highlightable sur l'élément qui contient le texte à surligner.

SearchPage.razor
@inherits LgPage

<LgNavigationBox Items="_items" HighlightText="true" Placeholder="#SearchNavigationPlaceholder">
<ItemContent Context="item">
<LgIcon IconName="@item.IconName" />
<span class="highlightable">@item.Title.CheckTranslate()</span>
</ItemContent>
</LgNavigationBox>

Sans ItemContent, le composant affiche automatiquement l'icône IconName et le titre traduit Title dans un LgHyperlink interne.

Propriétés​

Toutes les propriétés [Parameter] du composant, y compris celles héritées.

NomTypeDéfautDéclaré dansDescription
ControllerUristringnullLgSuggestBoxBase<TItem>URI du contrôleur utilisé pour charger les résultats à distance.
DropDownMaxHeightint-1LgSuggestBoxBase<TItem>Hauteur maximale du menu déroulant, en pixels. -1 utilise l'espace disponible.
FilterTextSearchModeFilterTextSearchModeFilterTextSearchMode.ContainsLgSuggestBoxBase<TItem>Mode de comparaison utilisé pour filtrer le texte recherché.
HighlightTextboolfalseLgSuggestBoxBase<TItem>Surligne le texte trouvé dans les résultats affichés.
ItemContentRenderFragment<TPageLink>nullLgSuggestBoxBase<TItem>Template personnalisé pour rendre un résultat.
ItemsIEnumerable<TPageLink>nullLgSuggestBoxBase<TItem>Source locale des pages proposées.
MaxItemsInViewint8LgSuggestBoxBase<TItem>Nombre maximum de résultats affichés. 0 affiche tous les résultats.
MinSearchCharacterint0LgSuggestBoxBase<TItem>Nombre minimal de caractères avant de lancer la recherche.
TextFilterCollationCollationType?nullLgSuggestBoxBase<TItem>Sensibilité à la casse et aux accents. Si null, la valeur de App.BehaviorConfiguration.TextFilterCollation.Value est utilisée à l'initialisation.
AllowResizeboolfalseLgTextBoxAutorise le redimensionnement lorsque TextMode vaut TextBoxMode.Multiline.
AutoCompleteboolfalseLgTextBoxActive l'autocomplétion du navigateur si true; sinon l'attribut autocomplete="off" est rendu.
AutoUnmaskboolfalseLgTextBoxRetourne la valeur sans le masque lorsque InputMask est utilisé.
ClearIncompleteboolfalseLgTextBoxVide la valeur si le masque de saisie est incomplet.
DataListList<string>nullLgTextBoxListe de valeurs utilisée pour rendre un datalist associé à l'entrée.
InputMaskstringnullLgTextBoxMasque de saisie appliqué au champ texte.
InputMaskKindInputMaskKindInputMaskKind.NoneLgTextBoxType de masque de saisie.
MaxLengthint?nullLgTextBoxNombre maximal de caractères. Si non défini, il est déduit de Container ou de l'attribut MaxLength du modèle, sinon 0.
MaxRowsint?nullLgTextBoxNombre maximal de lignes lorsque TextMode vaut TextBoxMode.Multiline.
MinRowsint?nullLgTextBoxNombre minimal de lignes lorsque TextMode vaut TextBoxMode.Multiline.
OnChangingAsyncFunc<ChangingEventArgs<string>, Task>nullLgTextBoxCallback appelé avant la modification de valeur ; il peut annuler le changement.
OnChangeDisabledboolfalseLgTextBoxDésactive le gestionnaire onchange natif du champ.
OnFocusEventCallback<FocusEventArgs>—LgTextBoxCallback déclenché lorsque le champ reçoit le focus.
OnInputEventCallback<ChangeEventArgs>—LgTextBoxCallback déclenché à la saisie (oninput).
OnKeyUpEventCallback<KeyboardEventArgs>—LgTextBoxCallback déclenché au relâchement d'une touche.
PlaceholderstringnullLgTextBoxPlaceholder du champ de recherche.
Rowsint?nullLgTextBoxNombre de lignes lorsque TextMode vaut TextBoxMode.Multiline.
TextModeTextBoxMode?nullLgTextBoxMode du champ texte. null rend un champ texte simple.
PrefixstringIconNames.All.SearchLgInputRenderBase<TValue>Préfixe affiché avant le champ. Le constructeur de LgNavigationBox le définit sur l'icône de recherche.
PrefixTypeInputLabelTypeInputLabelType.IconNameLgInputRenderBase<TValue>Type de rendu du préfixe.
SuffixstringnullLgInputRenderBase<TValue>Suffixe affiché après le champ.
SuffixTypeInputLabelTypeInputLabelType.TextLgInputRenderBase<TValue>Type de rendu du suffixe.
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgInputBase<TValue>Attributs HTML additionnels appliqués au conteneur principal (capture des valeurs non mappées).
AutoFocusboolfalseLgInputBase<TValue>Donne le focus au champ lors du premier rendu.
ConfirmationMessagestringnullLgInputBase<TValue>Message de confirmation affiché avant d'appliquer une nouvelle valeur.
ContainerIInputContainer<string>nullLgInputBase<TValue>Conteneur interne utilisé notamment par les cellules de LgGridView.
CssClassstringnullLgInputBase<TValue>Classes CSS additionnelles du groupe de formulaire.
DisabledboolfalseLgInputBase<TValue>Désactive le champ.
DisplayNamestringnullLgInputBase<TValue>Nom d'affichage utilisé dans les messages de validation et de parsing.
HideValidationMessageboolfalseLgInputBase<TValue>Masque les messages de validation inline.
LabelstringnullLgInputBase<TValue>Libellé du champ.
LabelContentRenderFragmentnullLgInputBase<TValue>Contenu personnalisé du libellé.
OnChangeEventCallback<ChangeEventArgs>—LgInputBase<TValue>Callback appelé après l'application d'une nouvelle valeur.
OnResetEventCallback<ChangeEventArgs>—LgInputBase<TValue>Callback appelé lorsque le bouton de réinitialisation remet la valeur à default.
PolicyEditstringnullLgInputBase<TValue>Policy requise pour éditer le champ.
PolicyVisiblestringnullLgInputBase<TValue>Policy requise pour afficher le champ.
ReadOnlyboolfalseLgInputBase<TValue>Rend le champ en lecture seule.
Requiredbool?nullLgInputBase<TValue>Indique si le champ est obligatoire. Si null, l'information est déduite de l'attribut [Required] du modèle.
ResetButtonbool?nullLgInputBase<TValue>Affiche le bouton de réinitialisation. Si null, la configuration applicative est utilisée.
ResetTextstringnullLgInputBase<TValue>Texte du bouton de réinitialisation ; la configuration applicative est utilisée si non défini.
ResetTextAriaLabelstringnullLgInputBase<TValue>Libellé ARIA du bouton de réinitialisation ; la configuration applicative est utilisée si non défini.
TooltipstringnullLgInputBase<TValue>Bulle d'aide du champ.
TooltipIsHtmlboolfalseLgInputBase<TValue>Indique si le contenu de Tooltip est au format HTML.
ValuestringnullLgInputBase<TValue>Valeur du champ, utilisable avec @bind-Value.
ValueChangedEventCallback<string>—LgInputBase<TValue>Callback de liaison bidirectionnelle de Value.
ValueExpressionExpression<Func<string>>nullLgInputBase<TValue>Expression identifiant la valeur liée, utilisée par la validation Blazor.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.
Paramètres en cascade

LgNavigationBox consomme aussi des paramètres fournis automatiquement par des composants ancêtres : CascadedEditContext (EditContext), EditFormConfiguration (LgEditFormConfiguration), ParentAuthorizeView (LgAuthorizeView), InputBusyReference (InputBusyReference) et ContextProvider (IComponentContextProvider, hérité de LgComponentBase).

Événements​

ÉvénementTypeDescription
ValueChangedEventCallback<string>Callback généré par @bind-Value lorsque la valeur change.
OnChangeEventCallback<ChangeEventArgs>Déclenché après l'application d'une nouvelle valeur.
OnChangingAsyncFunc<ChangingEventArgs<string>, Task>Appelé avant le changement de valeur ; le changement peut être annulé.
OnFocusEventCallback<FocusEventArgs>Déclenché lorsque le champ reçoit le focus.
OnInputEventCallback<ChangeEventArgs>Déclenché pendant la saisie et utilisé par la recherche.
OnKeyUpEventCallback<KeyboardEventArgs>Déclenché au relâchement d'une touche.
OnResetEventCallback<ChangeEventArgs>Déclenché lorsque le bouton de réinitialisation remet la valeur à default.

Énumérations associées​

FilterTextSearchMode​

ValeurDescription
ContainsLe texte recherché est contenu dans la valeur.
StartsWithLa valeur commence par le texte recherché.
EndsWithLa valeur se termine par le texte recherché.

CollationType​

ValeurDescription
CaseSensitiveSensible à la casse et aux accents.
IgnoreCaseInsensible à la casse, sensible aux accents.
IgnoreCaseAndAccentInsensible à la casse et aux accents.

InputLabelType​

ValeurDescription
IconNameLe préfixe ou suffixe est un nom d'icône Lagoon.
TextLe préfixe ou suffixe est un texte simple.

InputMaskKind​

ValeurDescription
NoneAucun masque.
MaskMasque basé sur 9, a et *.
RegexMasque basé sur une expression régulière.
EmailMasque de saisie email.

TextBoxMode​

ValeurDescription
MultilineRend une zone de texte multiligne.
PasswordRend un champ mot de passe.

Accessibilité​

  • Renseignez Label, AriaLabel ou AriaLabelledBy pour nommer le champ de recherche.
  • Le constructeur configure un préfixe icône IconNames.All.Search; gardez un libellé accessible, car l'icône seule ne suffit pas.
  • Les attributs aria-required, aria-readonly, aria-invalid et aria-describedby sont gérés par la base d'entrée selon la validation et l'état du champ.

Composants liés​

  • LgHyperlink — composant utilisé pour rendre les résultats de navigation.
  • LgNavLink — lien de navigation avec état actif automatique.
  • LgButton — alternative pour déclencher une navigation depuis une action de bouton.