Aller au contenu principal

Notes de version 3.x

Historique archivé des notes de version du framework Lagoon 3.x, de la plus récente à la plus ancienne. Les versions marquées ⚠ contiennent des changements de rupture. Cette page n'est plus alimentée : les versions courantes sont listées sur la page Notes de version.

L'historique des versions 1.x et 2.x a été retiré de la documentation et reste consultable dans l'historique git du dépôt.

Version 3.33​

Version 3.33.1​

Nouveautée​

  • Ajout de la propriété Language à la classe GridViewExportEventArgs pour permettre de changer plus facilement la culture lors d'un export.

Correction​

  • Correction concernant l'affichage du menu déroulant dans la barre d'outils de la grille

Version 3.33.0​

Nouveautés concernant les exports dans la grille​

Il ya a eu un refactoring des ExportProviders :

  • Providers serveur déclaratifs : un contrôleur peut désormais publier ses propres providers d'export via l'attribut [ExportProvider<T>]. Ces providers apparaissent automatiquement dans la liste proposée à l'utilisateur, à côté des providers déclarés au niveau de l'application.
  • Nouvelle propriété QueryArgs.Export : La méthode [Queryable] appellée pour retourner les données lors d'un export a maintenant accès à tous les paramètres définis pour l'export (Culture/langue, fuseau horaire, colonnes, ID de l'export provider sélectionné).
  • Nouvel évènement OnExport(GridViewExportEventArgs) : Côté grille avec `args.
    • SetExportArg(...). La valeur est lue côté serveur via queryArg.Export.GetExportArg()quandqueryArg.IsExportRequest` est vrai.
    • Autres propriétés de configuration : ExportableColumns, VisibleExportList, IgnoreGroupNames, GroupNameWithTitle, GroupNameWithTitleFormat.
  • Nouvel évènement ConfigureExportColumn(GridViewConfigureExportColumnEventArgs) : qui permet de changer la configuration d'une colonne spécifiquement à l'export (Title, GroupName, DisplayFormat).
  • Amélioration de la fenêtre d'export : L'utilisateur peut maintenant choisir entre exporter toutes les lignes ou uniquement les ligne filtrées UNIQUEMENT s'il y a un filtre actif dans la grille. Il peut maintenant choisir entre exporter toutes les colonnes ou uniquement les colonnes visibles UNIQUEMENT s'il y a des colonnes masquées.
  • Personnalisation de la fenêtre d'export : Nouveau paramètre ExportOptionsContent pour la grille qui accepte un RenderFragment<ExportOptionsContext> pour injecter du contenu personnalisé dans la modale d'export (champs supplémentaires, options métier).
  • Capacités déclaratives par provider : IExportProviderDescription expose SupportFilteredRows et SupportDisplayedColumns (toutes deux true par défaut) pour signaler à l'UI si le provider sait n'exporter que les lignes filtrées et/ou les colonnes affichées ; les cases correspondantes de la modale d'export sont masquées quand la capacité est false.
  • Pipeline d'import symétrique à l'export (IImportColumn, ImportColumn, [ImportIgnore]), basé sur une abstraction commune ITableColumn.

Autres Nouveautés​

  • Culture applicative : nouvelle classe ApplicationCultureInfo (remplace LgCultureInfo) et structure WeekYear ISO 8601. (Surcharger OnInitCulture à l'initialisation pour personnaliser la propriété FormatWeekYearFunc).
  • Colonnes visibles de la grille : La méthode GetVisibleColumnsKeys() permet de récupérer la liste des colonnes visibles.

Corrections​

  • LgGridView
    • Comportement distinct Validation Attribute vs IValidateableOject (TI44025).
    • La ligne "Total" peut passer en mode éditable alors qu'elle devrait rester en lecture seule (TI44097).
    • Overflow de la grille lors de la sélection multiple de filtres sur une colonne concaténée (TI44037).
    • Marqueur invalide invisible dans colonne avec Dropdown en Add (TI44027)
  • LgInputFile (TI44073)
    • Le bouton télécharger lance le téléchargement quelque soit le mode.
    • L'ouverture dans un onglet affiche si possible le nom du fichier dans le titre de l'onglet.
  • **LgBigMessage/LgEmptyMessage : Icone pas centré lorsque largeur insuffisante ().

Changements / migrations​

  • IExportProvider est désormais scindé en IExportProviderDescription (métadonnée) + IExportProvider (implémentation). Tout consommateur tiers doit s'aligner.
  • Les colonnes d'export typées (ExportDateColumn, ExportEnumColumn, ExportSelectColumn, ExportTagBoxColumn, …) sont supprimées au profit d'une seule ExportColumn<TItem, TAtomicValue>.
  • GridViewExportEventArgs.Options est marqué [Obsolete] — les propriétés (CultureName, TimeZoneId, FileName, …) sont remontées au niveau de l'event-args.
  • LgCultureInfo est supprimé ; remplacer par ApplicationCultureInfo.
  • XLSX : XlsxDocument / XlsxOptions remplacés par XlsxExportDocument / XlsxExportOptions.
  • PDF : ExportPdfOptions déplacé dans Lagoon.PDF/Export/.

Breaking changes​

Signature de la méthode SetCulture​

La classe LgApplicationBase gèrent maintenant un cache des instances, non modifiables, de ApplicationCultureInfo :

  • La méthode SetCulture(cultureName) ne prend maintenant en paramètre que le nom d'une culture ("en-US", "fr-FR", ...).
  • La personnalisation d'une culture se fait obligatoirement par une surcharge de la méthode OnInitCulture(culture)" du fichier main.cs. Remarque: Le changement de la culture par défaut se fait toujours en surchargeant la méthode GetDefaultLanguage (La culture correspondant à la langue étant définie dans le Dico.xml). Exemple pour PMSUI :
/// <summary>
/// Set Default Culture
/// </summary>
public override string GetDefaultLanguage()
{
return Constant.DEFAULT_LANGUAGE;
}
Custom ExportProvider, Nouvelle signature de la méthode SerializeToByteArrayAsync (Modification Manuelle)​

Exemple pour AIM AVANT :

public override async Task<byte[]> SerializeToByteArrayAsync<T>(IEnumerable<T> items, ExportColumnCollection<T> exportColumns,CancellationToken cancellationToken)
{
List<VmTask> list = items.OfType<VmTask>().ToList();
ExportColumnCollection<VmTask> taskColumns = exportColumns as ExportColumnCollection<VmTask>;
// --- MODIFY VALUES ONLY FOR EXPORT ---
foreach (var t in list)
{
if (t.TaskOwnerSiglumId != null)
t.TaskOwnerName = $"{t.TaskOwnerSiglum}";
if (t.DispatcherSiglumId != null)
t.DispatcherName = $"{t.DispatcherUserSiglum}";
}
return await CsvDocument<VmTask>.SerializeToByteArrayAsync(list,taskColumns,Options,cancellationToken);
}

→ APRES :

public override Task<byte[]> SerializeToByteArrayAsync<T>(OnExportItemsEventArgs<T> args)
{
args.Items = ConsolidateItems(args.Items);
return base.SerializeToByteArrayAsync(args);
}

private static IEnumerable<T> ConsolidateItems<T>(IEnumerable<T> items)
{
foreach (T item in items)
{
if (item is VmTask task)
{
if (task.TaskOwnerSiglumId != null)
task.TaskOwnerName = $"{task.TaskOwnerSiglum}";
if (task.DispatcherSiglumId != null)
task.DispatcherName = $"{task.DispatcherUserSiglum}";
}
yield return item;
}
}

→ AVANT :

public override Task<byte[]> SerializeToByteArrayAsync<T>(IEnumerable<T> items, ExportColumnCollection<T> exportColumns, CancellationToken cancellationToken)
{
List<VmExercisePoItem> exercisePoItems = items.OfType<VmExercisePoItem>().ToList();
//add new item for the total line
decimal? total = exercisePoItems.Sum(e => e.Total);
exercisePoItems.Add(new VmExercisePoItem { Total = total });
ExportColumnCollection<VmExercisePoItem> exportColumnsPoItems = exportColumns as ExportColumnCollection<VmExercisePoItem>;
return CsvDocument<VmExercisePoItem>.SerializeToByteArrayAsync(exercisePoItems, exportColumnsPoItems, Options, cancellationToken);
}

→ APRES :

public override Task<byte[]> SerializeToByteArrayAsync<T>(OnExportItemsEventArgs<T> args)
{
args.Items = ConsolidateItems(args.Items);
return base.SerializeToByteArrayAsync(args);
}

private static IEnumerable<T> ConsolidateItems<T>(IEnumerable<T> items)
{
List<VmExercisePoItem> exercisePoItems = items.OfType<VmExercisePoItem>().ToList();
//add new item for the total line
decimal? total = exercisePoItems.Sum(e => e.Total);
exercisePoItems.Add(new VmExercisePoItem { Total = total });
return exercisePoItems.Cast<T>();
}
Small changes (Modification auto par "lgn update")​
  • Fix Typo: XslxExportProvider → XlsxExportProvider

Obsolètes​

Paramètre de la GridView​

Un nouveau paramètre OnExport est disponible permettant de personnaliser les exports de la grille. Les paramètres suivants sont maintenant marqués comme obsolètes, car configurable depuis cette méthode :

  • ExportGroupName → args.IgnoreGroupNames
  • ExportGroupNameTitleFormat→ args.GroupNameWithTitleFormat
  • ExportableColumns → args.ExportableColumnKeys
  • ExportFileName → args.FilleName

Exemple:

private const string LANGUAGE_FR = "fr";
private const string LANGUAGE_EN = "en";

private void OnExport(GridViewExportEventArgs args)
{
// Add custom settings to the export request
args.SetExportArg(_exportCustomSettings);
// Set the culture (detected from the language)
args.Language = _exportLanguage;
// Customize the columns to export
args.ExportableColumnKeys = new List<string> { nameof(VmContact.FirstName), nameof(VmContact.LastName) };
// Indicates whether to ignore column group names
args.IgnoreGroupNames = true;
// Indicates whether to concatenate the group name with the column title
args.GroupNameWithTitle = true;
// Set the column title format ({0} is the column title and {1} the group name)
args.GroupNameWithTitleFormat = "{1}>{0}";
// Set the file name for export
args.FileName = $"Export_{DateTime.Now:yyyyMMdd_HHmmss}";
}
<LgGridView ...>
<ExportOptionsContent Context="exportContext">
<div>
<LgInputRadioGroup Label="Language" @bind-Value="@_exportLanguage">
<Items>
<LgInputRadio Text="Auto" />
<LgInputRadio Value="LANGUAGE_FR" Text="Français" />
<LgInputRadio Value="LANGUAGE_EN" Text="English" />
</Items>
</LgInputRadioGroup>
</div>
</ExportOptionsContent>
...
</LgGridView>

Version 3.32 ⚠​

Version 3.32.3​

Nouveauté​

  • App.ReconnectAsync() : Ajout d'un paramètre pour spécifier si l'identifiant de l'utilisateur doit être pré-renseigné ou non.

Corrections​

  • LgWorkScheduler : Correction de la détection de la ligne lors du déplacement d'une tâche (+ mise en surbrillance de la ligne).
  • Batch: Corrections mineures pour la commande "dump" lors de l'utilisation d'une base de données MySQL.

Version 3.32.2​

Corrections​

  • Corrections sur la commande "dump" pour les entités avec des types partagés.

Version 3.32.1​

Nouveautés​

  • Ajout de la propriété SessionLifetime dans les AuthenticationOptions permettant de contrôler la durée pendant laquelle l'application peut récupérer un AccessToken depuis le cookie d'identité (après expiration l'utilisateur devra se ré-authentifier)

Corrections​

  • Correction du non affichage du menu de troisième niveau.
  • Correction sur l'enregistrement des claims lors du SignIn
  • Correction de la configuration CSP lors de la réauthentification forcée

Sécurité ⚠​

Mise à jour vers .NET 8.0.27 (Notes de publication)

Version 3.32.0​

Nouveautés​

  • Ajout de la gestion des types de claims nommés "given_name" et "family_name".
  • Ajout d'un paramètre « bindable » Collapsed à LgSplitContainer.
  • Ajoute des méthodes ReconnectAsync et ValidateReconnectionAsync: Voir Support de la reconnexion OIDC forcée.
  • Activer les infobulles pour les options dans les colonnes.

Corrections​

  • Changement du "kind" par défaut des boutons dans une barre d'outils de la grille (ButtonSize.Small). (TI43823)
  • Problème d'actualisation des lignes de calcul.
  • Problème de style de ligne lors de la modification d'une ligne lorsqu'un LgGridview se trouve dans une fenêtre modale. (TI43847)
  • Ajout de la barre de défilement dans la LgSuggestBox (TI44095).
  • LgSelectMultiple : propagation de la classe CSS depuis LgOptionListItem (TI44083)

Sécurité ⚠​

Mise à jour vers .NET 8.0.26 (Notes de publication)

Version 3.31 ⚠​

Versoin 3.31.0​

Nouveautés​

  • LgSplitContainer : Ajout de la propriété Reversed pour pouvoir ancrer le HeadContent à droite ou en bas.
  • Ajout de la possibilité de rediriger l'utilisateur vers une page en fonction du contexte de déconnexion. (Voir article Redirection après déconnexion )

Sécurité ⚠​

Version 3.30​

Version 3.30.0​

Nouveauté​

  • Ajout de la LgGridTagBoxColumn

Version 3.29 ⚠​

Version 3.29.0​

Nouveauté​

  • Ajout de la commande dump à l'application Batch permettant d'exporter les données.
  • Export de données anonymisées (Voir Export / Import de données).

Corrections​

  • Mise à jours vers .NET 8.0.24 :
    ⚠ Corrige pour Linux/macOS la CVE-2026-21218 | .NET Security Feature Bypass Vulnerability
  • Fermeture automatique de la fenêtre contextuelle d'un marqueur Leaflet.
  • Correction sur défilement de la liste des fichiers sélectionnés pour le composant InputFile.
  • Correction de problème d'indicateurs de cellules invalides. (TI43798 / TI43797).
  • Correction du problème lié aux informations mises à jour dans les cellules (TI43640).
  • Correction du problème de perte du focus dans LgGridView (LgTagBox, LgGridSelectMultipleColumn) + ArgumentNullException lorsqu'on reset (TI43794 / TI43795)

Version 3.28​

Version 3.28.2​

Correction​

Correction de l'export de dumps pour MySQL.

Version 3.28.1​

Corrections​

HtmlEditor : Correction du collage d'une image lorsque OnPasteHtml est défini.

Version 3.28.0​

Corrections​

  • LgDocument : Affichage des erreurs lors de l'appel à un contrôleur (TI43769)
  • LgGridView : Problème validation en édition par cellule (TI43640)
  • LgSelect : Correction du traitement MinSearchCharacter lors de l'effacement de caractères. (TI43750)
  • Autres corrections mineures

Autres​

  • Mise à jour des dépendances vers .NET 8.0.23

Version 3.27​

Version 3.27.0​

Nouveauté​

  • NOUVEAU COMPOSANT : LgSplitContainer permettant d'avoir deux zones redimentionnables l'une à côté de l'autre ou l'une au dessus de l'autre. Voir :

::: warning Attention Le composant LgSideTabContainer utilise maintenant le composant LgSplitContainer en interne pour sont rendu. Il est donc maintenant possible pour l'utilisateur de redimensionner les zones par défaut. Si vous souhaitez revenir à l'ancien comportement, il faudra passer le paramètre Locked à true*. :::

Corrections​

  • Corrections mineures de style.

Version 3.26 ⚠​

Version 3.26.1​

Corrections​

  • Correction d'une erreur mineure dans la console Javascript.

Version 3.26.0​

Nouveauté​

  • Ajout de la méthode Lagoon.Helpers.Tools.SafeCombinePaths permettant de construire un chemin de fichiers en s'assurant que celui-ci ne remontera pas au dessus du dossier cible.
  • LgInputFile : Ajout de l'option DownloadMode.NewTab dans le paramètre DownloadMode. Cette option permet d'ouvrir les fichiers dans un nouvel onglet du navigateur

Corrections​

  • Mise à jour des dépendances (Mise à jour de sécurité).
  • Erreur lors de l'export HTML du LgWorkScheduler (TI43626)
  • Restauration de la position du scroll de la grille en haut de page lorsque l'on change de page ou que l'on change le tri. (TI43621)
  • Conservation de la position horizontale après un rechargement des données de la grille.
  • Correction mineure pour les applications multi-thèmes.

Version 3.25​

Version 3.25.3​

Nouveauté​

  • Leaftlet - Ajouter un clic sur chaque marqueur contenu dans un groupe de clusters.

Correction​

  • PF - Removes the required attribute from the email property.

Version 3.25.2​

Nouveautés​

  • Mise à jour des dépendance vers .NET 8.0.20
  • Ajout de méthodes permettant de configurer le contenu des informations enregistrées dans la table "LgTrackedChanges".

Version 3.25.1​

Nouveautés​

  • Ajout des logs issus de l'exécution du batch dans la page "Journaux de trace".

Correction​

  • Correction la méthode "UseLagoon" pour une utilisation dans une fonction Lambda AWS.

Version 3.25.0​

Nouveautés​

  • Ajout du support de la gestion de thèmes. Voir documentation

Correction​

  • Correction du CorailAppLink pour qu'il fonctionne dans un contexte HTTP non sécurisé. (TI43490)

Version 3.24​

Version 3.24.2​

Nouveauté​

  • Ajout dans Leaflet du Cluster Marker Group (TI43462)

Version 3.24.1​

Correction​

  • GridView : Correction de l'édition en mode cellule (GridEditMode.Cell) lorsque seul le paramètre ValueChanged est utilisé à la place du paramètre @bind-value.

Version 3.24.0​

Nouveautés​

  • HtmlEditor : Ajout de l'évènement "OnPasteAsync" (TI42272). Exemple d'utilisation :
private static Task OnPasteAsync(HtmlEditorPasteEventArgs args)
{
Console.WriteLine($"Content to paste: {args.GetContent()}");
// Replace the pasted text with a custom HTML content
args.Html = "<b>Cliboard content replaced</b> !!!";
args.UseHtml = true;
return Task.CompletedTask;
}
  • GridView: Permettre de désélectionner toutes les lignes à partir du bouton de l'entête de la colonne de sélection. (TI42346)

Corrections​

  • GridView : DefaultPageSize peut être fixé à 0, pour sélectionner l'entrée « Toutes les lignes » dans le paginateur (TI42337).
  • GridView: Contenu personnalisé est visible dans la ligne des totaux (TI43377)
  • Autres corrections mineures

Version 3.23​

Version 3.23.3 et 3.23.4​

Correction​

  • Correction sur la prise en charge de la propriété CanDownload dans le composant LgInputFile (TI43419)
  • Correction du fonctionnement des évènements OnChange et OnInput dans la LgHtmlEditor (TI43396)

Version 3.23.2​

Correction​

  • Erreur lors de l'ajout dans une grille avec l'utilisation de OnRowStateChanged sur la LgGridView

Version 3.23.1​

Correction​

  • Erreur lors d'un export de grille utilisant une colonne liste déroulante appellant un contrôleur avec un Guid (TI43400)

Version 3.23.0​

Nouveautés​

  • Ajout du 'LgLogMenuItem" pour permettre l'accès au journal de log ayant la "policy".
  • Ajout de l'évènement "OnRowStateChanged" permettant de détecter le passe en edition d'une ligne.

Corrections​

  • Mauvaise traduction d'un champs lors d'une erreur de range (TI42297)
  • GridView : Header au dessus de la modale d'une summary column (TI42364)
  • WorkScheduler : Correction sur le calcul de la taille.
  • Problèmes de EditingState lors de sa récupération ou son évaluation (TI42299)
  • Le RemoteTask partait en erreur lors d'une annulation dans certains cas. (TI40776)
  • La culture par défaut n'était pas appliquée au démarrage de l'application console (Voir la méthode Main.GetDefaultCulture).
  • Les noms utilisés pour le module "TrackChange" n'utilisaient pas les bon noms de tables et de champs. ::: warning Attention Les attributs "EnableTrackedChange" et "TrackedChange" ne supportent plus l'attribut permettant de renommer un champ ou la table. Il faut utiliser une clé du Dico.xml respectant la convention "tc.TableName" ou "tc.TableName.FieldName".

:::

Version 3.22​

Version 3.22.4​

Correction​

  • WorkScheduler : Exclure les éléments invisibles de la gestion des chevauchements.
  • Onglets: Impossibilité de fermer un onglet invisible (TI40969)

Version 3.22.3​

Correction​

  • Correction WorkScheduler pour les éléments d'une même ligne se chevauchant, placer les éléments dans le 1er groupe disponible plutôt que dans le dernier groupe traité. Exemple Avant :

Après:

Version 3.22.2​

Corrections​

  • LgWorkscheduler :
    • Correction d'un problème de drag & drop depuis l'extérieur du composant (LgWorkSchedulerDraggableItem)
    • Correction de la hauteur sur l'alternance des couleurs de la timeline du composant

Version 3.22.1​

Nouveautés​

  • LgWorkscheduler :
    • Séparer les items se chevauchant d'une même ligne en plusieurs lignes
    • Ajout des propriétés "StateId" et "RestoreScrollPosition" pour restaurer la position du scroll lorsqu'un LoaderView est utilisé pour recharger la source de données du composant
  • Ajoutez les paramètres Lagoon:Authentication:CertificateThumbprint et Lagoon:Authentication:CertificateFilePath pour configurer le certificat à utiliser pour le chiffrement et la signature avec OpenIddict.
  • LgGridView - Ligne de calcul : Permettre l'ajout d'une CssClass (TI42137)

Corrections​

  • Fix LgFrame height = 100% not working
  • Fix - Erreur d'encodage sur l'export de dictionnaire (TI42263)
  • LgSelect :
    • Le filtre du LgSelect efface des inputs au refresh de la liste (TI40613)
    • Avec SearchBox sur mobile, ouvre et ferme directement la liste (TI42259)
  • Erreur quand upload manuel fichier modifié LgInputFile (TI42211)
  • [Oracle] [LgSettings] Taille de champ à changer (SubParam et Json) (TI42251)
  • Fix LgProgress : SubProgress ne faisait pas avancer le Progress parent.
  • Fix "Cannot scaffold C# literals of type 'Lagoon.Model.Models.TrackedChangeAttribute'. The provider should implement CoreTypeMapping.GenerateCodeLiteral to support using it at design time."
  • LgGridView : Problème sur les colonnes avant DefaultFrozen

Version 3.22.0​

Erreur de publication, ne pas utiliser...

Version 3.21 ⚠​

Version 3.21.8​

Correction​

  • LgInputRadio - Problème de click sur le label pour 'sélectionner' l'input radio (TI42201) - (Correction du LgLabel : gestion de la propagation de l'event onclick suivant le contexte d'utilisation (attribut for ou non))

Version 3.21.7​

Nouveauté​

  • ISmtp: Utilisation de l'encodage en Base64 par défaut pour les pièces jointes d'un mail

Version 3.21.6​

Nouveautés​

  • Dans le cas de l'utilisation du LgTrackedChange : suivi automatique des modification de la table AspNetUser et AspNetUserRole (PierreFabre : Suivi automatique des tables SmallAppsUser et SmallAppsAccess (utilisateur et rôles)

Corrections​

  • Correction concernant l’erreur de compilation si Lagoon.UI.Gridview n'est pas installé (TI42213)
  • Correction de "error LgSelect.dispose undefined => Remove unnecessary dispose" (TI40993)
  • Correction de la prise en compte pour les [LgTab] de la propriété CssClass (TI41016)
  • Correction de la LgGridView - Hauteur 100% impossible si Footer de grille en haut (ex: dans les projets PierreFabre)

Version 3.21.5​

Nouveautés​

  • Ajout de la possibilité d'inclure une image dans le corps d'un mail en utilisant où "MonImage.jpg" est le nom d'une pièce jointe.
  • Ajout d'un paramètre à l'évènement OnFilterChanged de la grille permettant de connaitre les filtres actifs.

Corrections​

  • Correction concernant l’identifiant du rôle pour les applications utilisant LgApplicationTrackedChangeDbContext.
  • Correction de l'affichage des "policies" sur la page des autorisations pour les applications qui n'utilisent pas d'énumération.

Version 3.21.4​

Corrections​

  • Correction de chargement des notifications à l'ouverture de l'application
  • Correction concernant la division par zéro dans le calcul des moyennes pondérées de la grille.
  • Désactivation de la vérification de connexion pour les applications en mode hors-ligne.

Version 3.21.3​

Nouveauté​

  • Limiter les types d'exports disponibles dans les grilles (TI40951)

Corrections​

  • Correction d'un problème gestion profil par défaut sur la grille (TI42160)
  • Correction du problème de réinitialisation de la source de données distante pour la grille (TI42164)

Version 3.21.2​

Correction​

  • Ctrl+F7 ferme l'onglet actif dans l'application (et non plus Ctrl+X).

Version 3.21.1​

Nouveautés​

  • Touches de raccourci
    • F5 recharge l'onglet actif dans l'application (et non plus l'application, utilisez Ctrl+F5 pour ça)
    • Ctrl+X ferme l'onglet actif dans l'application.

Corrections​

  • Déplacements involontaires dans une page (TI42172).
  • Certaines lignes de groupement de la grille ne se mettent pas à jour (TI42179).
  • Autoriser l'évènement clic sur une tâche du WorkScheduler.
  • Correction de l'URL hors-ligne de 'login-callback' hors de l'utilisation d'un Service Worker.

Version 3.21.0​

Nouveautés​

  • Ajout de la page Autorisations au menu Debug pour :
    • Vérifier les autorisations affectées aux URLs de l'application.
    • Afficher la matrice des Roles/Policies
  • Ajout du paramètre ShortcutKey au LgButton permettant d'exécuter la commande du bouton avec un raccourci clavier de type Ctrl+Caractère ou Alt+Caractère.
  • Ajout propriétés "Min" et "Max" sur LgGridDateColumn (TI42117)
  • Ajout de la possibilité de faire des moyennes pondérées en utilisant la propriété WeightExpression (TI42135)
  • Ajout du paramètre SecureSocketMode à la configuration du SMTP pour préciser l'utilisation du SSL ou du TLS.
  • Ajouter la méthode GetGroups comme extension pour le type Claims.
  • Ajouter la méthode GetUserId à LgComponentBase.
  • Ajout de méthodes d'extension au type ClaimsPrincipal (GetId, GetFirstName, GetLastName, GetDisplayName, GetEmailAddress).
  • Ajout du service EnumRoleManager pour convertir l'ID (Guid) du rôle en valeur d'énumération, et vice versa.
  • LgWorkScheduler: Nouvelle option FocusTodayOnLoad pour mettre le focus sur le jour en cours lors du premier chargement.

Corrections​

  • Utilisation de "Oui/Non" ou "Yes/No" lors de l'export des colonnes booléennes (A la place de "0/1"). (TI41089)
  • Correction de du déplacement des colonnes dans la GridView (TI40935 & TI42142)
  • Correction du filtre sur les dates d'une GridView qui n'incluait pas les heures de la dernière journée (TI42136)
  • Correction de l'affichage des regroupements pour les colonnes de type liste déroulante. (TI41092)
  • Correction de zone numériques qui se mettent à 0 lorsqu'on supprime la valeur alors qu'elles sont Nullable (TI42108)

Version 3.20 ⚠​

::: warning Attention Dans certains cas, le nom de l’exécutable généré lors de la publication du projet AppName.Batch.csproj a été modifié. L'ancien nom de l'exécutable pouvait avoir pour pattern appname.batch.exe et a été corrigé en appname.exe. Si ce nom était utilisé, par exemple dans une tâche planifiée, :

  • Modifier le déclencheur du batch pour faire pointer vers l'exécutable renommé.

SINON

  • Modifier la propriété AssemblyName dans le fichier AppName.Batch.csproj pour conserver l'ancien nom :
<PropertyGroup>
...
<AssemblyName>appname.batch</AssemblyName>
...
</PropertyGroup>

:::

Version 3.20.6​

  • Correction de l'erreur "The application to execute does not exists" lors de l'exécution de l'application console sous Windows.
  • Corrections sur le composant LgSuggestBox
  • Correction sur le bouton de déconnexion
  • Mise à jour vers .NET 8.0.13

Version 3.20.5​

  • Correction de la perte de session lorsque l'application n'est pas installée à la racine (Utilisation d'un sous répertoire)

Version 3.20.4​

  • Correction de la gestion du "NavigationAnchor": Attention le séparateur n'est plus le '#' mais le '?'.
  • Correction pour ne plus utiliser l'URL "/ping" qui est réservée par AWS Gateway.
  • Correction pour pouvoir accéder au HttpContext dans le contrôleur fournissant les données d'un export de la grille.
  • Ajustement automatique pour la colonne de date afin d'éviter l'affichage "####" lors d'un export Excel.

Version 3.20.3​

  • Correction d'un problème avec les exportations dans la LgGridview

Version 3.20.2​

  • Mise à jour de la version de System.Linq.Dynamic.Core pour corriger la CVE-2024-51417
  • Correction du nom de l'exécutable "console" lors des publications ciblant Linux.
  • Consolidation des fichiers présents dans les publications. (Suppression des fichiers inutiles pour des livraisons moins lourdes)

Version 3.20.1​

  • LgHtmlEditor - BUG sur le toolbar (TI41046)
  • Erreur Copier.Coller (TI40994)

Version 3.20.0​

Nouveautés​

  • Message demandant la reconnexion lorsque la session serveur est terminée (TI40985, TI39130, TI39349, TI40390)
  • WorkkScheduler: Ajout de la possibilité de définir une classe css pour mettre en valeur certaines dates
  • WorkScheduler: Modif pour utiliser en mode mètres / kilomètres (Ajout d'une page dans la vitrine)
  • Ajout du service "CorailAppLink" permettant d'ouvrir une URL dans une application Corail
  • Ajout d'une option "LogFile" au paramètre "Smtp" permettant de tracer les échanges avec le serveur SMTP.
  • Ajout d'un endpoint "/healthz" permerttant de connaitre l'état de l'application et de la connexion à la base de données.
  • Ajout de la méthode "OnConfigureHealthChecks" permettant de personnaliser le résultat du endpoint précédent.
  • Nouveau module Lagoon.WebPush pour gérer des notifications en Web Push.

Corrections​

  • Correction d'un problème d'authentification lors que l'application était ouverte à partir de la méthode javascript "window.open".
  • Correction d'une erreur lorsqu'au moins un filtre de colonne est désactivé
  • Erreur après le choix du rôle (TI40765)
  • Correction des différences entre l'export client et l'export serveur.
  • Mise à jour des dépendences.

Version 3.19.x​

Version 3.19.3​

Nouveauté​

  • SAML: Permet de n'avoir une signature que dans le nœud « response » et aucune dans le nœud « assertion ».

Version 3.19.2​

Nouveautés​

  • Add Content-Security-Header to all request to prevent Cross-Site-Scripting from SVG files.
  • Mise à jour des versions des packages des dépendances.

Corrections​

  • Correction du problème de la fenêtre de CGU qui ne se ferme plus.
  • Ajustements sur l'interface "Mot de passe oublié ?" (TI40021)
  • [LgGridview] Correction du titre de la colonne non traduit dans l'export CSV (TI40809)
  • [LgNumericBox] Correction du problème d'affichage de la valeur zéro. (TI40943)
  • Gestion de la tabulation dans les sous modales.
  • SAML2: Correction de la gestion des réponses SAML avec des attributs à valeurs multiples et autres corrections mineures.

Version 3.19.1​

Corrections​

  • Empêcher le masquage d'une fenêtre modale à partir d'un événement "Hide" du "DateTimePicker".

Version 3.19.0​

Corrections​

  • TrackedChange : modifications pour pouvoir indiquer si tout le model doit être historisé, ignorer des propriétés etc.. (voir la doc)
  • [LgGridView - LgGridColumn] - Problème lors de la customisation du header d'une colonne : Perte de l'icône indiquant le tri et le redimensionnement d'une colonne lors de l'utilisation du RenderFragment HeaderCellContent - TI40910
  • Notifications : Correction du chargement des notifications (local / remote) avec possiblité de spécifier le chargement en remote ou en local
  • LgGridView : [LgGridEnumColumn] Aligner le dropdown au milieu (style) - TI39710
  • (Airbus style) :
    • Correction de la des cellules d'une ligne en édition (diminution de la hauteur des LgSelect etc.) - TI39374
    • Mauvaise position du bouton reset dans LgTextBox Multiline (dans une modal) - TI40893
  • LgModal : Corrections diverses

Version 3.18.x ⚠​

Version 3.18.0​

Nouveautés​

  • Suivi de modification de valeurs dans la base de données principale (doc)

::: warning Attention La commande "dotnet ef migrations add TrackedChanges" doit être exécutée pour les applications Pierre-Fabre. :::

  • WorkScheduler
    • Ajout de la propriété VirtualScrolling sur le composant LgWorkScheduler (support de sources de données volumineuse)
    • Ajout de la propriété AllowResize dans l'interface IWorkSchedulerDraggableData pour permettre le resize du task a la souris (attention, breaking change)
    • Ajout de la propriété ShowDragIndicator (affichage d'un indicateur lors du resize ou drag d'une task)
    • Prise en compte du ticket https://passerelle.desirade.fr/?p=Ticket~TI40745
  • GridView - Sélection de ligne unitairement (TI40746)
  • Fenêtre "About" - Possibilité d'ajouter des informations personnalisées (TI40709) (doc -> Configurer la page about (à propos) )

Corrections​

  • GridView: Problème d'affichage des labels des filtres pour les colonnes contenant des listes déroulantes
  • GridView: Disparition du nombre de page dans le sélecteur
  • Traduction du message d'erreur lors de la perte de mot de passe (TI40021)
  • Bug de rendu du Slider (TI40622)

Version 3.17.X ⚠​

::: warning Attention LGN doit être au moins en version 3.1 pour pouvoir utiliser cette version. Lancer la commande dotnet tool update LGN -g avant de lancer la commande lgn update ! :::

Version 3.17.5​

Corrections​

  • Fix GridView export bugs
  • Update referenced package versions.

Version 3.17.4​

Corrections​

  • Fix GridView bug on iOS

Version 3.17.3​

Corrections​

  • Mettre à jour le fichier index.html pour ajouter le signet {BASE_HREF}.
  • Problème de Z-Index LgGridView et LgGridCommandColumn (TI40682)
  • [Slider] Correction d'un bug dans l'affichage des jalons. (TI40622)
  • [HomeButton] Bouton home illisible (TI40533)
  • [Password reset] Erreur de traduction (TI40615)
  • [NumericBox] Décalage des flèches (TI40645)
  • Suppression de la déclaration d'encodage dans la requête SAML. (L'encodage UTF-16 perturbe certains Idp)
  • Update Puppeteer version to version 20 for .NET 8.

Version 3.17.2​

Nouveautés​

  • Ajoute le champ "Destination" (généralement optionnel) dans les demandes d'authentification SAML2.

Version 3.17.1​

Correction​

  • [LgGridView] Fix "IAsyncQueryProvider" error.

Version 3.17.0​

Nouveautés​

  • Support du .NET 8.
  • Ajout du paramètre MinSearchCharacter pour LgGridSelectColumn, LgGridSelectMultipleColumn, LgGridEnumColumn et LgGridEnumMultipleColumn. (TI40437).
  • Ajout du paramètre global HideAlwaysResetButton dans la colonne de sélection.
  • [LgGridView] Ajout de la propriété ExportCulture a la gridview.
  • Utilisation dans l'export CSV pour le séparateur des numériques (TI40277).
  • (ServiceWorker) Téléchargements en parallèle lors de la récupération des ressources.

Corrections​

  • Résoudre le problème de fermeture des onglets avec la croix. (TI40631)
  • [LgNumericBox] Problème de gestion des valeurs numériques non signées (uint, ...). (TI40618)
  • Monter en version 18.1.0 de PuppeteerSharp

Version 3.16.x​

::: warning Attention LGN doit être au moins en version 3.1 pour pouvoir utiliser cette version. Lancer la commande dotnet tool update LGN -g avant de lancer la commande lgn update ! :::

Version 3.16.1​

Corrections​

  • [LgGridSelectMultipleColumn] Correction du message d'erreur s'affichant si la valeur du filtre n'existe plus

Version 3.16.0​

Nouveautés​

  • [LgGridTimeColumn] Ajout du filtrage sur la valeur nulle
  • [LgGridTimeColumn] Ajout du TimePicker
  • Ajout de service pour la gestion de stockage Cloud (AWS et Azure)
  • [LgGridDateColumn] Ajout du paramètre DateBoxKind (TI40273)

Corrections​

  • [LgGridTimeColumn] Correction du tri
  • [LgDateBox] Correction sur l'affichage de la valeur sélectionnée par défaut en mode semaine
  • [PF] Correction des erreurs dans la gestion des utilisateurs (TI40373)
  • [LgNumericBox et LgDateBox] Correction du problème de traduction non prisent en compte dans l'affichage des erreurs (TI40446)
  • [LgTab] Correction du problème de fermeture des onglets avec le bouton de la molette de la souris (TI40327)
  • [LgToggle] Correction du problème de fonctionnement du composant lorsqu'il est dans la toolbar d'une LgGridView ou d'une LgFrame (TI40452)
  • [LgGridSelectionColumn] Correction du problème de sélection d'une ligne en mode d'édition par ligne (TI39330)
  • Correction d'une erreur d'authentification sur la page de réinitialisation du mot de passe

Version 3.15.x​

::: warning Attention LGN doit être au moins en version 3.1 pour pouvoir utiliser cette version. Lancer la commande dotnet tool update LGN -g avant de lancer la commande lgn update ! :::

Version 3.15.0​

  • Remplacement du fichier NuGet.Config du projet par la nouvelle version sécurisant la provenance des paquets Lagoon.
  • Mise à jour des références de packages utilisés
    • ClosedXML 0.102.1 -> 0.102.3
    • McMaster.Extensions.Hosting.CommandLine 4.1.0 -> 4.1.1
    • MessagePack 2.5.140 -> 2.5.171
    • MessagePack.Annotations 2.5.140 -> 2.5.171
    • MessagePack.AspNetCoreMvcFormatter 2.5.140 -> 2.5.171
    • Microsoft.AspNetCore.Authorization 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.Components.Web 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.Components.WebAssembly 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.Components.WebAssembly.Authentication 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.SignalR.Client 6.0.25 -> 6.0.32
    • Microsoft.AspNetCore.SignalR.Protocols.MessagePack 6.0.25 -> 6.0.32
    • Microsoft.JSInterop.WebAssembly 6.0.25 -> 6.0.32
    • Newtonsoft.Json 10.0.3 -> 13.0.3
    • OpenIddict.AspNetCore 4.5.0 -> 4.10.1
    • OpenIddict.EntityFrameworkCore 4.5.0 -> 4.10.1
    • OpenIddict.Quartz 4.5.0 -> 4.10.1
    • Quartz.Extensions.Hosting 3.8.0 -> 3.11.0
    • Swashbuckle.AspNetCore 6.5 -> 6.6.2
    • System.IdentityModel.Tokens.Jwt 6.35.0 -> 6.36.0
    • System.Linq.Dynamic.Core 1.3.7 -> 1.4.3
    • System.Net.Http.Json 6.0.0 -> 6.0.1.
    • System.Text.Json 6.0.6 -> 6.0.9

Version 3.14.x​

::: tip Remarque La table "GridViewProfiles" n'est plus utilisée au profit de la table "LgSettings". Vous pouver ajouter une migration une migration à votre projet pour la supprimer : dotnet ef migrations add DropGridViewProfiles

:::

Version 3.14.1​

  • (fix) [LgNumericBox] Erreur avec une valeur nullable (TI40561)
  • (fix) [LgInputRadioGroup] Erreur à l'affichage

Version 3.14.0​

Nouveautés​

  • LgGridView : propriété pour savoir si la grille est en mode "ajout" (ou ajout/édition) (TI40029)
  • [LgGridView] Add NewItemAsync method (TI39909)
  • [LgYearBox] add Datetime type support (TI40081)
  • [LgGridView] Add FiltersShowAllItems parameter
  • [LgGridView] Shared profiles filter => Permettre de partager un filtre à périmètre (liste d'utilisateurs, de rôles, etc.) 'GridViewSharedProfileFilter' (TI39947)

Anomalies​

  • LgSelect Correction de "ShowSearchBox"="false" qui affichait quand même la zone de recherche lors de la première ouverture.
  • Problème de chargement des notifications (TI40288)
  • [LgSelectMultiple] - Valeur masquée en utilisant le filtre de recherche (TI40228)
  • [LgNumericBox] Fix numeric decimal round problem (TI40306)
  • RemoteListDataSource<TValue, TItem>.Item toujours null (TI40347)
  • [LgNumericBox] Display problem in edit (TI40303)
  • [LgGridView] fix problème de filtres disponibles ou non en fonction des résultats dans une grille (TI39527 & TI39323)

Version 3.13.x​

Version 3.13.7​

  • Remplacement de l'utilisation de la route ".well-known/openid-configuration" par la route "well-known/openid-configuration". Le point en début de nom de dossier posait problème à certains reverse proxy.

Version 3.13.6​

  • Ajout du paramètre CheckCertificateRevocation dans la configuration du SMTP. Celui-ci permet de désactiver la vérification de révocation du certificat SSL.

Version 3.13.5​

  • Corrige le paramétrage "Content-Security-Policy" pour les applications publiées en "http://".

Version 3.13.4​

  • Fix LgTagBox style
  • Ajout de méthodes "OnConfigureForwardedHeaders" pour permettre la personnalisation.

Version 3.13.3​

  • Fix WorkScheduler HTML export

Version 3.13.2​

  • Fix WorkScheduler HTML export
  • Corrections sur les méthodes AddClientWithCredential et AddClientWithCredentialAndCode

::: warning Breaking Change Le paramètre scope a été retiré de ces méthodes (non utilisé depuis le passage a OpenIddict). Ne pas ajouter de scope lors de l'appel à l'endpoint "/connect/token" :::

Version 3.13.1​

  • Correction des filtres ne fonctionnant pas avec MessagePack.
  • Ajout d'une clef App:AutoDisconnectTimeout dans le fichier appSettings.json pour définir le temps (en minutes) après lequel il faut déconnecter l'utilisateur:
  • WorkScheduler: Fonction permettant d'exporter la vue de la planification actuelle dans un fichier html (avec prise en charge du défilement)
  • WorkScheduler: Traduction du prefixe de semaine
  • WorkScheduler: Ajout de la propriété DatesHighlighted permettant de définir une liste de date a mettre en évidence dans la timeline et le planning

Version 3.13.0​

Nouveautés​

  • Activation des entêtes HTTP "Content-Security-Policy" et X-Content-Type-Options ::: warning Attention
  • Les scripts inline sont maintenant désactivés par défaut.
  • Les images qui ne sont pas envoyés par l'application seront également bloquées. Voir l'article suivant pour voir comment configurer les CSP, ou les désactivés temporairement :

:::

  • [App.razor] - Intégration des librairies de composants RCL et du lazy assembly loading (TI40237)

Anomalies​

  • [LgPager] Mauvais nombre de page affiché (TI40231)
  • Affichage du numéro de version complet de l'application (TI40191)

Version 3.12.x​

Version 3.12.1​

Anomalies​

  • MaxFileSize n'est pas pris en compte pour les logs (TI40097)
  • [LgGridSelectMultipleColumn] Rechargement à chaque re-selection (TI40038)

Version 3.12.0​

Nouveautés​

  • Notifications (TI39858) & (TI39957) :
    • LgNotificationMenuItem : Add menu parameter (ShowMenuDetail) => Show / Hide notification list into menu dropdown
    • LgNotificationMenuItem : Add menu Uri parameter to open a specific Uri instead of expand dropdown notification list from notification menu button
    • New public properties to get Notifications list (client notification service) => Notifications
  • LgGridColumn : Si le title n'est pas renseigné, alors récupérer le Title à partir de la propriete du viewmodel (annotation Display - Name) (TI39554)

Anomalies​

  • (fix) [LgWorkScheduler] Fix links when groupby is not definied
  • [LgSelectMultiple] VisibleItemCount soucis d'affichage (TI40096)
  • LgGridSummaryColumn - Ouverture pop-up en édition GridEditMode.Row (TI40020) & (TI39958)

Version 3.11.x​

Version 3.11.2​

  • Problème durant la mise à jour V3.11.0 (TI40087)

Version 3.11.1​

  • [LgWorkScheduler]
    • (fix) - "Go to today" (scroll dans le planning sur la date du jour) -> lien non fonctionnel (TI40099)
    • Ajout de l'interface IWorkSchedulerLinkableData permettant de définir des liens visuels entre les tâches du planning (TI40039)
    • Modification de l'interface IWorkSchedulerData

::: warning Attention L'interface **IWorkSchedulerData** a été modifiée. Si votre application utilise cette interface vous devrez ajouter la propriété IsVisible (et la mettre a true par défaut pour conserver le comportement que vous aviez précédemment. Exemple ``` cs // Un objet implémentant l'interface IWorkSchedulerData public class MyClass : IWorkSchedulerData { // Cotre code actuel // ...
// La nouvelle propriété a ajouter
public bool IsVisible { get; set; } = true;

}

:::


### Version 3.11.0

#### Nouveautés
- [LgInputFile] & [LgFormTracker] : Ne détecte pas les modifications de LgInputFile (ajout IFormTrackerComponentImplementation) (TI39234)
- [LgGridView] : Add loader during grid export (TI39948)
- Airbus : Ajout de services pour récupérer token MobileSSO

#### Anomalies
- [LgMenuItem] Sous menu à 3 niveaux - fix bug de rendu (TI39106)
- [LgGridView] : fix regroupement niveau >1 => affichage de la valeur du regroupement (TI40002) (TI39997)
- [LgGridView] : Bug de Filtrage => Impossible de valider le filtre (TI39949)
- [LgNumericBox] : Bug de style (TI39956)
- Fix handling for unhandled POST errors

## Version 3.10.x

### Version 3.10.1
#### Anomalies
- LgHtmlEditor : Erreur js (TI40004)
- LgSideTabContainer & LgTabContainer - Le bouton de rechargement d'un onglet était présent même si ReloadEnabled=false sur le LgTabContainer ou pas d'abonnement a OnReload sur un LgTab.
- [LgInputRadioGroup] LgInputRadio coloré en bleu et carré (apparence de checkbox) (TI39915)
- [LgGridView] Annuler un chargement/loading d'une grille(TI38927)
- LgWorkScheduler - fix missing async invoke on js side
- fix auth connect with IIS and disconnect without WebPush subscription

### Version 3.10.0
#### Nouveautés
- [LgGridView] - Ajout **Gridview.Feature => Edit**
- Nouvelle colonne dans la LgGridView : **LgGridTimeColumn**
- [LgGridColumn] Affectation d'un titre par défaut à la colonne avec l'attribut DisplayName du viewmodel (TI39554)
- LgFrame, LgGrivView, ajout d'un renderfragment **TitleContent** pour ajouter du contenu à côté du titre (TI39552)
- Navigation par onglet : Liste des pages 'ouvertes' => si le contenu dépasse la taille maximum du dropdown, le bouton closeall est toujour visible. (TI39322)
#### Anomalies
- [LgSearchNavigation] - Problème sur rechargement => erreur (TI39521)
- Menu Mobile -> "Hamburger" : problème de comportement (ne se masque pas forcément)
- [LgSummaryBox] Gérer le rendu ReadOnly & le champs affiché
- [LgGridView]
- [LgGridBooleanColumn] Erreur au cancel en modification d'une ligne
- Problème de comportement de la colonne d'édition (TI39572)
- Problème de supperposition de titre de colonnes lors du scroll dans une grille ayant des colonnes figées. (TI39964)
- [LgGridColorColumn] souci d'affichage de la palette des choix (TI39515)

## Version 3.9.x

### Version 3.9.1
- Add config parameter HttpClientDefaultTimeout for the HttpClient's timeout (TI39918)

### Version 3.9.0

#### Nouveautés
- [LgGridView]
- Ajout d'évènements OnAfterAdd | OnAfterUpdate | OnAfterDelete (TI39572)
- Add clear all filters public method (TI39708)
- Notification : Ajout d'une méthode public RefreshNotifications => permet de rafraichir la liste des notifications à la demande coté client dans les app (permet de mettre à jour la liste des notifs en fonction d'un filtres extérieur par exemple)
#### Anomalies
- [LgSuggestBox] See all position (TI39854)
- [InputMask] le masque n'apparaît pas (TI39792)
- [LgMenuItem] Problème style indentation (TI39106)
- [LgSelect]
- reload items when the inputmask is cleared. (TI39775)
- add focus on the input search when the user opens the dropdown (TI39760)
- [LgTextBox]
- InputMask (TI39763)
- Souci de hauteur (TI39511)
- [LgWorkScheduler]
- Problème d'affichage en TimeLine="WeekDay" (TI39825)
- Decalage du timeline annee par rapport au mois de décembre (TI39737)
- [LgGridView]
- [LgGridSummaryColumn] Style problems (TI39691) (TI39685)
- Problème de mise en forme des regroupements (TI39584)
- [ConditionFilter] Résultat contains preview (TI39776)
- problème de zindex (TI39465)
- LgSelectColumn ne souligne pas le champ en erreur (TI39494)
- [LgSummaryBox and LgGridSummaryBox] ReadOnly mode

## Version 3.8.X

::: warning Attention
Pour des raisons de performances, le transfert de données avec **MessagePack** est maintenant activé par défaut.
Vous avez toujours la possibilité d'utiliser l'ancien mode de transfert en configurant dans l'application client le paramètre "**DefaultAcceptHeader**".
Dans le fichier "**Main.cs**", ajouter la ligne suivante dans la méthode "**OnConfigureBehavior**" :
***app.DefaultAcceptHeader = DefaultAcceptHeader.Json***

:::
### Version 3.8.3
- LgGridView bug d'affichage des icones pour l'Edition (TI39869)
- LgCheckbox, La propriété ConfirmationMessage Traduit le contenu meme s'il n'y a pas un # (TI39887)
- [LgSideTabContainer] Impossible de changer d'onglet si on bind OnActivateTab (TI39849)
- Problème de rafraîchissement lorsque la navigation par onglet est désactivée.
- Renommage de "NavigationFragment" en "NavigationAnchor" pour éviter les confusions avec les "RenderFragment".

### Version 3.8.2
- Ajout du composant [)
- Correction de l'affichage aléatoire de "Authorizng...".

### Version 3.8.1
- [LgSelectBox] Correction de la hauteur maximale de la liste déroulante pour Airbus et Pierre-Fabre (paramètre DropDaownMaxHeight).
- [LgSelectBox] Correction d'un problème de défilement lors de la première ouverture de la liste déroulante.
- [LgTextBox] Correction de l'exception de référence nulle du masque de saisie
- Ajout d'une entrée avec masque dans la démo
- [LgGridSelectMultipleColumn] Correction de Cancel

### Version 3.8.0

#### Nouveautés
- [LgPage] Ajout de la possibilité de naviguer à l'intérieur d'une page en changeant l'URL (Voir "NavigationFragment" et "OnFragmentChanged").
- [LgPage] Ajout de la possibilité de remplacer l'URL de la page en cours par une nouvelle (Voir "UpdateMainPageUri").
- [LgSelect] Customiser le nombre d'items à afficher dans la liste (TI39393)
- [LgTextBox Multiline (textarea)]
- Champ écrasé ilisible (TI39705)
- Ne prend pas en compte le nombre de lignes (TI39533) (Rows attribute with Min & MaxRows etc...)
- Permettre le redimensionnement des "multiline" (TI39704)
- Permettre de modifier le texte des règles de la réinitialisation du mot de passe (traduction) (TI39518)
- [Page About] Possibilité d'avoir la version de Framework Lagoon (TI39253)
- LgGridSelectColumn / LgGridSelectMultipleColumn - Ajout du support du mode "remote datasource".
- [LgAirbusToolbarMenuSet] Possibilité de ne pas afficher le bouton Logout (Paramètre: "HideDisconnect" dans le "MenuConfiguration.razor") (TI39499)
- LgGridView permettre de rafraîchir manuellement une ligne (TI39338)
- LgGridSelectMultipleColumn
- LgSelect Ignorer les accents & la casse dans l'input de recherche (TI39508)
- Mise à jour de BackgroundTask pour utiliser service scope ayant la durée de vie de la tâche d'arrière-plan.
- Utilisation du "AsNoTracking" pour les requêtes distantes générées par la grille.
- Ajout de la méthode générique LgPageLink.Create pour remplacer et encoder les paramètres des "routes".

#### Anomalies
- [LgCheckBox] - Fix indeterminated state text (Readonly) (TI39357)
- [LgGridSelectMultipleColumn] - Fix GUID bug
- [LgGridView] Application du display format sur le regroupement (TI39331)
- [LgGridView] Verrouiller l'action panel lorsque la grille est en édition (TI39330)
- [LgSearchNavigation] Hauteur de la boîte de résultats (style) (TI39804)
- [LgMenuItem] Double navigation lors d'un clic sur un élément.

## Version 3.7.x

### V3.7.4 (20/12/2023)
- Correction de la validation de la signature de la réponse SAML (Ajout d'un essai sans ignorer les espaces du fichier XML)

### V3.7.3 (13/12/2023)
- [LgWorkScheduler] Pouvoir scroller à une date précise (TI39735) + pouvoir scroller à une position

### V3.7.2 (30/11/2023)
- [Auth] Ajout d'un endpoint manquant (config)

### V3.7.1 (22/11/2023)
- Ajout du support des services "Scoped" dans l'application console.
- Ignorer le MFA lorsqu'on utilise une authentification SSO. (L'authentification tournait en boucle)
- Correction d'un problème de configuration d'une URL pour OAuth.

### V3.7.0 (16/11/2023)

#### Nouveautés
- LgHTMLEditor : ajout d'une option pour ne pas afficher la boite de dialogue de choix lors d'un 'collage' à partir presse-papier. (TI39259)
- [LgSelect] Customiser le nombre d'items à afficher dans la dropdown list - Option DropDownMaxHeight (TI39393)

#### Anomalies
- [Mobile render / Tabs ] => Icon 'fermer' masqué
- [LgInputFile] Label du second LgInputFile plus petit que le premier (TI39401)
- [LgGridView] Retours à la ligne et affichage (TI38609)
- [LgGridView] GroupName s'affiche avant le contenu de la grille (TI39434)
- [LgTab] : Fix reload tab management (TI39341)
- [LgNumericBox] Gestion des arrondis (TI39208)

## Version 3.6.x

### V3.6.3 (03/11/2023)
- (fix) [[LgSelect] liste ne se réinitialise pas au clic sur la croix du filtre (TI39419)
- fix(datebox-keyboard-support) Add option to disable keyboard support
- fix(auth-offfline-mode)
- fix Checkbox readonly with IndeterminateState (TI39357)

### V3.6.2 (30/10/2023)
- (fix) [LgDateBox] readonly : use the correct format to display value (TI39400)
- (fix): [ExportColumnCollection] : constructors to get "exportValueAsString" parameter
- (fix) [LgGridView - LgSelectMultipleColumn] : filter problem in remote mode

### V3.6.1 (23/10/2023)
- (fix) Erreur au chargement des pages qui contient une LgGridView sans 'Frozen' colonnes.

### V3.6.0 (23/10/2023)
#### Nouveautés
- Nouvelles colonnes LgGridVIew => LgGridSelectMultipleColumn & LgGridEnumListColumn (TI37099 & TI39041)
- [LgGridView] Add DisplaySuccessSaveMessage support to Add and Update row action (TI39082)
- [LgGridView] Add ResetButton on LgGridEnumColumn and LgGridSelectColumn (TI39041)
- [LgGridSelectionColumn] Permettre de sélectionner toutes les lignes y compris sur les autres pages (TI39283) => parameter
- Permettre d'afficher du texte dans l'entête de colonne de sélection via une clé de dico => GridViewSelectionColumnLblHeader (TI39282)
- [LgGridView][Export] Possibilité de spécifier le format d'une colonne/cellule pour l'export Excel (TI39367)

#### Anomalies
- [LgInputRadio] Propriété disabled ne fonctionne pas (TI39245)
- [LgDateFilterEditor] Correction filtre date (TI39403)
- (fix) Display menu scrollable & not scrollable (TI39404 & TI39106)
- Problème de chemin dans la rotation des logs sous linux (TI39423)
- [Custom Template] - Problème de style du bouton de création de compte (TI39228)
- [LgHtmlEditor] - Bug Disabled (TI39095)
- Problème de traduction dans quelques pages (signout & bigmessage component)
- GridView avec une LgGridEditColumn : bug rendu si la colonne contient 2 icones et que la colonne est réduite par l'utilisateur (TI39330)
- LgTextBox / LgSelect : Si ces composants possède un inputmask que l'on renseigne une valeur. Si on revient sur ce champ et que l'on reset la valeur, l'inputmask garde en mémoire la valeur renseigné (TI39458)
- LgNumericBox - incrémentation bouton problème (suffix) (TI39326)
- [LgGridView] - Default frozen ne figent plus les colonnes précédentes (TI39102)
- LgGridSelectionColumn : bloquer la séléction / déseclection d'une ligne lorsque celle-ci est en 'édition'. (TI39330)

## Version 3.5.x

### Version 3.5.2 (16/10/2023)
#### Anomalies
- La traduction ne s'applique sur l'écran de sélection des rôles (TI39416)
- Soucis sur la page de sélection du rôle (TI39405)

### Version 3.5.1 (11/10/2023)
#### Anomalies
- [LgGridView en cell edit] - Problème de récupération de la valeur d'une liste déroulante => arg.Value toujours null (TI39358)
- Utilisation du DataProtectionProvider enregistré au lieu d'en créer un nouveau (TI39413)

### Version 3.5.0 (22/09/2023)

***

::: warning BREAKING CHANGE
La propriété **AuthenticationStateProvider** a été supprimée de **LgComponentBase**. Suivre la procédure suivante si vous souaitez l'ajouter à un de vos composants personnalisés.
:::
##### Ajouter AuthenticationStateProvider à un composant
Insérer le code suivant pour restaurer l'accès à la propriété.

///

/// Used to retrieve current logged user /// [Inject] public AuthenticationStateProvider AuthenticationStateProvider { get; set; }

<br />
::: warning BREAKING CHANGE
L'interface **IWorkSchedulerData** a été modifiée et les applications utilisant le LgWorkScheduler vont remonter des erreurs après mise à jour. Voir ci dessous.

:::

##### Modification IWorkSchedulerData pour le LgWorkScheduler
La propriété **From** qui n'était pas nullable l'est à présent. Partout dans votre code ou vous utilisez la propriété **From** il suffira d'ajouter **.Value** (ex if (**obj.From** == DateTime.Now) devient if (**obj.From.Value** == DateTime.Now) et d'ajouter le **?** manquant dans l'implementation

L'objectif de cette modification est de pouvoir ajouter dans la source de donnée du LgWorkScheduler un element sans pour autant avoir de tâche ou jalons a afficher (ajouter une ligne vide)
``` cs
// exemple de modification a faire :

public class PlanningData : IWorkSchedulerData
{

// Avant : public DateTime From { get; set; }
public DateTime? From { get; set; }

// inchangé
public DateTime? To { get; set; }

public void Utilisation(DateTime date) {
// if (From.Years == date.Years) {
if (From.Value.Years == date.Years) {
// ...
}
}

}

Nouveautés​

  • Ajout de la gestion du remplacement automatique de "{BASE_HREF}" dans le fichier "index.html" par l'URL relative extraite de l'URL publique.
  • La propriété Http issue de LgComponentBase utilisera automatiquement une connection anonyme ou authentifié en fonction de l'état d'authentification de l'utilisateur.
  • Nouvelles constantes prédéfinies pour l'utilisation des PolicyVisible et PolicyEdit : (Policies.Always / Policies.Never / Policies.AuthenticatedUser/ Policies.AnonymousUser)
  • Dynamic policies
    • Nouveau composant LgCascadingPolicies permettant de définir des noms de polices pré-validées dans le contexte du composant.
    • Nouvelle méthode SetValidatedPolicies(Policies.MyPolicy) permettant de définir des noms de polices pré-validées dans le contexte de la page. (A utiliser dans l'évènement OnLoadAsync) (Remarque : Le composant AuthorizeView ne prend pas en compte ces "policies", utiliser le LgAuthorizeView)
  • Optimisation du LgAuthorizeView pour utiliser un cache partagé lors de l'évaluation des propriétés PolicyVisible et PolicyVisible.
  • LgWorkscheduler :
    • Permet d'afficher les lignes même vide
    • Ajout de la gestion de la timeline Week / Day
  • [LgGridView] :
    • Filtres - Charger la liste des valeurs possible après la saisie de X caractères (TI38810)

Anomalies​

  • LgMenuItem :
    • scrollable - Sous menu à 3 niveaux => fix display + ouverture 3ème niveau au click au lieu du hover (TI39106)
    • Fix hyperlink open target uri twice (TI39246)
  • [LgGridView] :
    • Fix row edit not displayed after columns resize problem (TI39077)
    • Fix lines number display problem (TI39247)
    • LgGridSummaryColumn CanEdit problem (TI39217)
  • [LgTab] : Fix keeping scroll position problem (TI38926)
  • [LgSelectMultiple] : Fix reset button displayed with empty list problem (TI38697)

Version 3.4.x​

Version 3.4.6​

Anomalies​

  • [LgGridView] redimensionnement colonnes (TI39049)
  • [Culture NumberDecimalSeparator] Problème de validation (TI39258)
  • Customisation Message d'erreur Required sur Integer (TI39255)
  • [LgGridView] PaginationButtonCount non pris en compte (TI39098)

Version 3.4.5​

Nouveautés​

  • Ajout d'une option pour customiser les messages de logs

Version 3.4.4​

Anomalies​

  • Problèmes d'affichage dans la LgSelect et LgSelectMultiple en mode lecture seule ou désactivé.
  • Problème avec le SAML AsyncDescriptor.

Version 3.4.2​

Anomalies​

  • Problème de redirection de l'authentification si le site n'est pas à la racine du domaine. (404 /connect/authorize).
  • Masquer le message "Préparation du téléchargement..." en cas d'erreur et affichage du message d'erreur.

Version 3.4.1​

Anomalies​

  • LgGridView -> Cellule en edition, suppresion de l'information 'mandatory' qui s'affichait dans les cellules
  • LgSelect -> Correction de la levée d'erreur lors du reset du champs de recherche si le paramètre MinSearchCharacter était définit

Version 3.4.0​

Nouveautés​

  • Composant LgSlider => slider simple et multiple (Doc)
  • LgSelect & LgSelectMultiple=> ajout du remote datasource
  • [LgGridView/LgSummaryBox] Add input mask and maxlength (TI38698)
  • [LgGridView] Add edit refresh row mode (EditRefreshMode : Permet de spécifier comment les données seront rafraichies après une modification)
  • LgGridView - LgSummaryColumn permettre d'avoir un HtmlEditor à la place de la textarea (TI38904)
  • Openiddict - Clear expired tokens (db)
  • Envoi de mails au format Daemon (TI38960)
  • Refacto thèmes scss & fix divers
  • LgGridView - Permettre d'annuler le chargement d'une grille via un bouton cancel (TI38927)
  • Autoresize d'un textearea au fur et a mesure de la saisie (prop. height)

Anomalies​

  • [LgGridView] Resize avec le même StateId (TI38779)
  • [LgGridView] Liste des profils pas scrollables (TI38874)
  • [LgSideTab] Scroll lié entre les tabs (TI38926)
  • LgGridView sauvegarde du Scroll Position (TI38777)
  • LgGridView - Affichage du nombre de lignes dans une grille > 1000 avec un espace (TI38932)
  • [LgGridDateColumn] Mauvais affichage de la date null (TI38939)
  • [LgGridView] Pas d'affichage du résumé des filtres après rechargement de page
  • Afficher les AuthenticationException dans la page WindowsLogin (TI38964)
  • LgSelectMultiple - Bug le filtre reste actif après femeture du LgSelectMultiple (TI38925)
  • Pb Export Colonne Date avec displayformat (Heure) (TI38829)
  • fix position reset button

Version 3.3.x​

Version 3.3.1​

Nouveautés​

  • MessagePack pris en compte dans les LgGridView (MessagePack est à activer manuellement)
  • Upgrade PuppeteerSharp to v10.0.0
  • LgTab : Icône 'refresh' au hover (TI38713)

Anomalies​

  • Le tooltip reste parfois présent lors d'un changement de page (TI38890)
  • [LgGridView] Erreur sur les opérations de colonnes lorsque la valeur est nullable
  • [LgSearchNavigation] Faire disparaitre le dropdown après click ou enter (TI38803)
  • [LgGridView] Problème de conservation du scrolling avec des colonnes figées

Version 3.3.0​

Nouveautés​

  • Ajout d'une méthode TryCloseAllTabs => Tentative de fermeture de tous les onglets ouverts (TI38804)
  • LgGridView Memorise Scroll Position (TI38777)

Anomalies​

  • Fix LgMenuItem : AutoHide = true (empêchait l'affichage des sous-menus)
  • PF - [Filtres] Problème d'affichage des boutons des filtres selon résolution de l'écran (TI38766)
  • LgInputFile - La lecture du contenu du fichier déposé est corrompu (TI38913)

Version 3.2.x​

Nouveautés​

  • Foncé le texte des inputs disabled dans le thème Airbus (TI36839)
  • [LgModal] Permettre à la modal de "sortir" de l'écran. (TI38576) : Ajout de boutons dans le header de la modal lors du déplacement proche du bord de l'écran pour 'unlock' / 'lock' le verrou de la modal dans l'écran.

Anomalies​

  • Pb d'affichage sur les filtres avec texte long et scroll au début (TI38608)
  • erreur filtre avec texte long quand il y a des colonnes freeze (TI38599)
  • [LgTimeBox] - validation formulaire touche entrée non fonctionnelle (TI37229)
  • [LgGridView] Cellule date reste active en mode edition par cellule
  • LgFormTracker problème avec un LgTabContainer (TI38850)
  • LgEditForm & button IsSubmit => pas d'indicateur de travail
  • Lambda expression pour choisir une commande/icone pour une lggridviewcolumn (TI38441)
  • LgModal :
    • Le pop-up disparaît quand on le bouge (Firefox) (TI38385)
    • Problème drag & drop + sélection de contenu

Version 3.1.x​

Version 3.1.0​

Nouveautés​

  • MessagePack - Add Enumerable support
  • [LgGridView] :
    • Ne pas tenir compte des accents dans les filtres (option à activer) (TI38494)
    • Add Exportable global option (LgGridView) + (Exportable = true Airbus template)
  • LgSearchNavigation & LgSuggestBox : Ne pas tenir compte des accents dans les filtres (option à activer) (TI38814)

Anomalies​

  • (fix) selected node style for Neestable
  • DateTimeHelper : fix IsDayOff calculation
  • Scroll manquant dans le dropdown contenant la liste des onglets ouverts (TI38610)
  • (fix) Using App.ShowSuccess call ShowWarning instead of ShowSuccess (TI38780)
  • (fix) Les onglets ouverts ne sont plus sauvegardés
  • (fix) Changement de langue (TI38808)
  • [LgGridView] :
    • Retours à la ligne et affichage (TI38609 - TI38590)
    • (fix) Chargement des profils
    • (fix) Remote - L'export ne fonctionne pas
    • [LgGridBooleanColumn] problème de focus avec les CheckBox (TI38611)
    • Pb Rafraichissement après modification (LgSelectMultiple & LgSelect) (TI38663)
    • [LgGridEnumColumn] Export Valeur nullable (TI38640)

Version 3.0.x​

Version 3.0.5​

  • Correction de l'affichage du message d'erreur pour une "LgRemoteException".
  • Corrections sur le WorkScheduler.

Version 3.0.4​

  • Amélioration et correctif sur le WorkScheduler (TI38738 / TI38601)

Version 3.0.3​

  • (Fix) LgGridView - [Queryable] Fix error in controller with none queryargs argument

Version 3.0.2​

  • (Fix) LgGridView - [Queryable] Fix error query with calculated fields
  • (Fix) LgOpenIddictManager with strings.
  • (Fix) LgOpenIddictManager PostLogoutRedirectUris

Version 3.0.1​

  • (Fix) Update components (auto. replace)

Version 3.0.0​

::: warning Attention

  • Suppression du support .NET 3.1 (Fin du support Microsoft depuis Dec. 2022)
  • Changement de structure pour les nouveaux projets Ici :::

Nouveautés​

  • Notification WebPush
  • Suppression de OData
  • Ajout de MessagePack => amélioration des performances pour les transports de données importants (+ sérialisation / désérialisation).
  • Gestion des erreurs :
    • Contextualisation des erreurs aux pages
    • Plus de ShowException
    • Plus de try catch dans les controllers
    • UserException en Debug => message à l'utilisateur + détail de l'erreur dans le toastr affiché
  • Ajout d'une propriété IsLoading dans LgPage directement, plus besoin de la définir dans une page
  • Tous les types d'inputs : Avoir un "x" qui supprime la saisie (TI37188)
  • LgWorkScheduler
    • Mode Agenda
      • Revue de la timeline des horaires
      • Fix OnEmptyClick
      • Fix OnItemClick
      • Revue du mode drag drop
    • Mode Agenda & Planning
      • Ajout d'une option pour la Timeline sur un seul niveau
      • Ajout d'un mode manuel pour définir un DragStep
      • Création d'un composant pour les items dragué depuis l'extérieur du composant
  • LgTimeline : Nouveau composant -> Représentation sous forme de frise
  • [OpenIddict] Deux sites sur le même DB (TI38677)

Anomalies​

  • Correction de la génération des scss =>la surcharge des variables existantes dans les thèmes est désormais possible.
  • [LgFrame] Différence de comportement (autoscroll) (TI38533)
  • Gestion du cookie x-lang
  • [LgSearchNavigation] Erreur JS lorsque des caractères spéciaux sont entrés (TI38664)
  • [LgTimeBox] - Bug si bindé sur timespan
  • LgGridView - Pb refresh label du bouton ajouter (TI38522)

Outil lgn (versions 3.x)​

Les entrées ci-dessous concernent l'outil en ligne de commande lgn, dont le versionnement est indépendant de celui du framework : ces numéros ne correspondent pas aux versions du framework listées ci-dessus.

Version 3.4.0​

  • Ajout de la commande "fix-charset" qui permet de passer les fichiers sources en UTF8 avec BOM (pour éviter les problèmes lors des publications Linux)

Version 3.3.3​

  • Mise à jour de "Entity Framework Core .NET Command-line Tools" si la version installée est antérieure à celle utilisée dans les composants.
  • Désactivation de la mise à jour des composants Lagoon lors de la commande "new" (Les modèle d'application sont maintenant à jour).

Version 3.3.2​

  • Correction pour la commande "update" lorsque le TargetFramework d'un projet contient la plateforme (Ex: "net6.0-windows7.0").

Version 3.3.1​

  • Correction de la commande "update" lorsqu'elle est exécutée sous Linux.

Version 3.3.0​

Nouveauté​

  • Gérer la compilation de plusieurs fichiers SCSS pour les fonctionnalités du thème.

Version 3.2.1​

  • Correction de la commande "update" lorsque tout les projets sont déjà à jour.

Version 3.2.0​

  • Utiliser un "file scoped namespace" pour la classe « IconNames » générée automatiquement.
  • Correction sur la détection des paquets référencés.

Version 3.1.2​

Nouveautés​

  • Ajout de la commande "lgn update --dotnet-fw" permettant d'effectuer une migration de l'application du framework .NET 6 au framework .NET 8.

Version 3.1.1​

Nouveautés​

  • Ajout de la commande "lgn cots" permettant d'extraire les COTS, au format JSON ou CSV, d'un ou plusieurs projets (voir "lgn cots -?" pour voir les options).
  • ajout de la commande "lgn cve" permettant d'afficher les vulnérabilités connues pour le projet en cours.
  • Mise à jour de la commande "lgn update" pour en plus de mettre à jour les versions des packages Lagoon :
    • Mettre à jour les versions mineures des packages tiers.
    • Rechercher les vulnérabilités et référencer la version corrigée du package.
  • Mise à jour de la commande "lgn new" pour :
    • Lancer une mise à jour des packages référencés par le template d'application.
    • Lancer une vérification des vulnérabilités connues
    • Générer une première migration "InitialCreate" pour EntityFramework.

Version 3.0.2​

Corrections​

  • Problème de chargement des arguments avec la commande "new".
  • Problème aléatoire de création du dossier "_vroot".

Version 3.0.1​

Corrections​

  • Problème de compilation dans l'environnement Linux.
  • Problème de connection dans l'environnement Linux.

Version 3.0.0​

Mise à jour​

Excécuter la commande: dotnet tool update --global LGN

Nouveautées​

  • Ajout de l'authentification Azure pour "DESIRADE" et "INFOTEL" à partir de la commande "lgn connect"
  • Ajout des commandes "lgn install" (et "lgn uninstall") pour faciliter l'installation de terser dans les pipeline de déploiements (pour la compression JS intégrée du dossier "js/main")
  • Ajout d'une détection du répertoire de la solution pour éviter les mise à jour partielle de la solution lors d'un "lgn update"
  • Ajout de la commande "lgn clean" pour supprimer les dossiers "bin", "obj" et "_vroot" à partir du dossier courant et dans tous les sous dossiers.
  • Ajout de la compatibilité avec le runtime .NET 8 (Fin de la compatibilité avec le Framework .NET 3.1, toujours compatible avec le Framework .NET 6)

Corrections​

  • Correction de la génération SCSS pour certaines variables définies conditionnellement.
  • Corrections de la commande "lgn link" pour les contributeurs Lagoon