Release notes 3.x
Archived version history of the Lagoon 3.x framework, from newest to oldest. Versions marked with ⚠ contain breaking changes. This page is no longer updated; current versions are listed on the Release notes page.
The version history for 1.x and 2.x has been removed from the documentation and remains available in the repository's git history.
Version 3.33
Version 3.33.1
New feature
- Added the
Languageproperty to theGridViewExportEventArgsclass to make it easier to change the culture during an export.
Bug fix
- Fixed dropdown menu display in the grid toolbar
Version 3.33.0
New features for grid exports
There was a refactoring of ExportProviders:
- Declarative server providers: A controller can now publish its own export providers via the
[ExportProvider<T>]attribute. These providers automatically appear in the list offered to the user, alongside providers declared at the application level. - New
QueryArgs.Exportproperty: The[Queryable]method called to return data during an export now has access to all parameters defined for the export (Culture/language, time zone, columns, ID of the selected export provider). - New
OnExport(GridViewExportEventArgs)event: On the grid side with `args.- SetExportArg
(...) . The value is read on the server side viaqueryArg.Export.GetExportArg() whenqueryArg.IsExportRequest` is true. - Other configuration properties:
ExportableColumns,VisibleExportList,IgnoreGroupNames,GroupNameWithTitle,GroupNameWithTitleFormat.
- SetExportArg
- New
ConfigureExportColumn(GridViewConfigureExportColumnEventArgs)event: which allows changing the configuration of a column specifically for export (Title, GroupName, DisplayFormat). - Export window improvements: The user can now choose between exporting all rows or only filtered rows ONLY if there is an active filter in the grid. They can now choose between exporting all columns or only visible columns ONLY if there are hidden columns.
- Export window customization: New
ExportOptionsContentparameter for the grid that accepts aRenderFragment<ExportOptionsContext>to inject custom content into the export modal (additional fields, business options). - Provider capabilities declarations:
IExportProviderDescriptionexposesSupportFilteredRowsandSupportDisplayedColumns(bothtrueby default) to indicate to the UI whether the provider knows how to export only filtered rows and/or displayed columns; the corresponding checkboxes in the export modal are hidden when the capability isfalse. - Import pipeline symmetric to export (
IImportColumn,ImportColumn,[ImportIgnore]), based on a common abstractionITableColumn.
Other new features
- Application culture: new
ApplicationCultureInfoclass (replacesLgCultureInfo) andWeekYearstructure ISO 8601. (OverrideOnInitCultureat initialization to customize theFormatWeekYearFuncproperty). - Grid visible columns: The
GetVisibleColumnsKeys()method allows you to retrieve the list of visible columns.
Bug fixes
- LgGridView
- Distinct behavior Validation Attribute vs IValidateableObject (TI44025).
- The "Total" row can go into edit mode when it should remain read-only (TI44097).
- Grid overflow when multiple filter selection on a concatenated column (TI44037).
- Invalid marker invisible in column with Dropdown in Add (TI44027)
- LgInputFile (TI44073)
- The download button triggers the download regardless of mode.
- Opening in a tab displays the file name in the tab title if possible.
- LgBigMessage/LgEmptyMessage: Icon not centered when insufficient width ().
Changes / migrations
IExportProvideris now split intoIExportProviderDescription(metadata) +IExportProvider(implementation). Any third-party consumer must align.- Typed export columns (
ExportDateColumn,ExportEnumColumn,ExportSelectColumn,ExportTagBoxColumn, …) are removed in favor of a singleExportColumn<TItem, TAtomicValue>. GridViewExportEventArgs.Optionsis marked[Obsolete]— the properties (CultureName,TimeZoneId,FileName, …) are moved to the event-args level.LgCultureInfois removed; replace withApplicationCultureInfo.- XLSX:
XlsxDocument/XlsxOptionsreplaced byXlsxExportDocument/XlsxExportOptions. - PDF:
ExportPdfOptionsmoved toLagoon.PDF/Export/.
Breaking changes
Signature of the SetCulture method
The LgApplicationBase class now manages a cache of immutable instances of ApplicationCultureInfo:
- The SetCulture(cultureName) method now takes only the name of a culture ("en-US", "fr-FR", ...) as a parameter.
- Culture customization is done mandatorily by overriding the OnInitCulture(culture) method in the main.cs file. Note: Changing the default culture is still done by overriding the GetDefaultLanguage method (the culture corresponding to the language being defined in Dico.xml). Example for PMSUI:
/// <summary>
/// Set Default Culture
/// </summary>
public override string GetDefaultLanguage()
{
return Constant.DEFAULT_LANGUAGE;
}
Custom ExportProvider, New signature of the SerializeToByteArrayAsync method (Manual Modification)
Example for AIM BEFORE:
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);
}
→ AFTER:
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;
}
}
→ BEFORE:
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);
}
→ AFTER:
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 (Auto modification by "lgn update")
- Fix Typo: XslxExportProvider → XlsxExportProvider
Deprecated
GridView parameter
A new OnExport parameter is available to customize grid exports. The following parameters are now marked as deprecated, as they can be configured through this method:
- ExportGroupName → args.IgnoreGroupNames
- ExportGroupNameTitleFormat→ args.GroupNameWithTitleFormat
- ExportableColumns → args.ExportableColumnKeys
- ExportFileName → args.FileName
Example:
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
New feature
- App.ReconnectAsync(): Added a parameter to specify whether the user identifier should be pre-filled or not.
Bug fixes
- LgWorkScheduler: Fixed row detection during task movement (+ row highlighting).
- Batch: Minor fixes for the "dump" command when using a MySQL database.
Version 3.32.2
Bug fixes
- Fixes for the "dump" command for entities with shared types.
Version 3.32.1
New features
- Added the SessionLifetime property in AuthenticationOptions to control how long the application can retrieve an AccessToken from the identity cookie (after expiration the user must re-authenticate)
Bug fixes
- Fixed the non-display of the third-level menu.
- Fixed claim recording during SignIn
- Fixed CSP configuration during forced re-authentication
Security ⚠
Update to .NET 8.0.27 (Release notes)
Version 3.32.0
New features
- Added handling of claim types named "given_name" and "family_name".
- Added a bindable Collapsed parameter to LgSplitContainer.
- Added ReconnectAsync and ValidateReconnectionAsync methods: See Support for forced OIDC reconnection.
- Enable tooltips for options in columns.
Bug fixes
- Changed the default "kind" of buttons in a grid toolbar (ButtonSize.Small). (TI43823)
- Issue with refreshing calculation rows.
- Row style issue when modifying a row when an LgGridView is in a modal window. (TI43847)
- Added scroll bar to LgSuggestBox (TI44095).
- LgSelectMultiple: CSS class propagation from LgOptionListItem (TI44083)
Security ⚠
Update to .NET 8.0.26 (Release notes)
Version 3.31 ⚠
Version 3.31.0
New features
- LgSplitContainer: Added the Reversed property to anchor HeadContent to the right or bottom.
- Added the ability to redirect the user to a page based on logout context. (See Redirect after logout article)
Security ⚠
- Update to .NET 8.0.25
- Fix for CVE-2026-26130
Version 3.30
Version 3.30.0
New feature
- Added LgGridTagBoxColumn
Version 3.29 ⚠
Version 3.29.0
New feature
- Added the dump command to the Batch application to export data.
- Export of anonymized data (See Data export / import).
Bug fixes
- Updated to .NET 8.0.24:
⚠ Fixes for Linux/macOS the CVE-2026-21218 | .NET Security Feature Bypass Vulnerability - Automatic closing of the context menu of a Leaflet marker.
- Fixed scrolling of the list of selected files for the InputFile component.
- Fixed invalid cell indicator issue. (TI43798 / TI43797).
- Fixed issue with updated information in cells (TI43640).
- Fixed focus loss issue in LgGridView (LgTagBox, LgGridSelectMultipleColumn) + ArgumentNullException when resetting (TI43794 / TI43795)
Version 3.28
Version 3.28.2
Bug fix
Fixed dump export for MySQL.
Version 3.28.1
Bug fixes
HtmlEditor: Fixed image paste when OnPasteHtml is defined.
Version 3.28.0
Bug fixes
- LgDocument: Error display when calling a controller (TI43769)
- LgGridView: Validation issue in cell edit mode (TI43640)
- LgSelect: Fixed MinSearchCharacter processing when deleting characters. (TI43750)
- Other minor fixes
Other
- Updated dependencies to .NET 8.0.23
Version 3.27
Version 3.27.0
New feature
- NEW COMPONENT: LgSplitContainer allowing two resizable zones side by side or one above the other. See:
::: warning Attention The LgSideTabContainer component now uses the LgSplitContainer component internally for its rendering. It is now possible for the user to resize the zones by default. If you want to return to the old behavior, you must set the Locked parameter to true*. :::
Bug fixes
- Minor style fixes.
Version 3.26 ⚠
Version 3.26.1
Bug fixes
- Fixed a minor error in the JavaScript console.
Version 3.26.0
New feature
- Added Lagoon.Helpers.Tools.SafeCombinePaths method to construct a file path ensuring it does not go above the target folder.
- LgInputFile: Added DownloadMode.NewTab option in the DownloadMode parameter. This option allows opening files in a new browser tab
Bug fixes
- Updated dependencies (Security update).
- Error during HTML export of LgWorkScheduler (TI43626)
- Restored grid scroll position to the top when changing pages or changing sort order. (TI43621)
- Preserved horizontal scroll position after grid data reload.
- Minor fix for multi-theme applications.
Version 3.25
Version 3.25.3
New feature
- Leaflet - Add click on each marker contained in a cluster group.
Bug fix
- PF - Removes the required attribute from the email property.
Version 3.25.2
New features
- Updated dependencies to .NET 8.0.20
- Added methods to configure the content of information recorded in the "LgTrackedChanges" table.
Version 3.25.1
New features
- Added logs from batch execution in the "Trace logs" page.
Bug fix
- Fixed the "UseLagoon" method for use in an AWS Lambda function.
Version 3.25.0
New features
- Added support for theme management. See documentation
Bug fix
- Fixed CorailAppLink to work in an unsecured HTTP context. (TI43490)
Version 3.24
Version 3.24.2
New feature
- Added Cluster Marker Group to Leaflet (TI43462)
Version 3.24.1
Bug fix
- GridView: Fixed edit in cell mode (GridEditMode.Cell) when only the ValueChanged parameter is used instead of the
@bind-valueparameter.
Version 3.24.0
New features
- HtmlEditor: Added the "OnPasteAsync" event (TI42272). Usage example:
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>Clipboard content replaced</b> !!!";
args.UseHtml = true;
return Task.CompletedTask;
}
- GridView: Allow deselecting all rows from the header column selection button. (TI42346)
Bug fixes
- GridView: DefaultPageSize can be set to 0 to select "All rows" in the paginator (TI42337).
- GridView: Custom content is visible in the totals row (TI43377)
- Other minor fixes
Version 3.23
Version 3.23.3 and 3.23.4
Bug fix
- Fixed support for the CanDownload property in the LgInputFile component (TI43419)
- Fixed the operation of OnChange and OnInput events in LgHtmlEditor (TI43396)
Version 3.23.2
Bug fix
- Error when adding to a grid with OnRowStateChanged on LgGridView
Version 3.23.1
Bug fix
- Error during grid export using a dropdown list column calling a controller with a Guid (TI43400)
Version 3.23.0
New features
- Added 'LgLogMenuItem" to allow access to the log journal having the "policy".
- Added the "OnRowStateChanged" event to detect when a row goes into edit mode.
Bug fixes
- Wrong translation of a field during a range error (TI42297)
- GridView: Header above the modal of a summary column (TI42364)
- WorkScheduler: Fixed size calculation.
- EditingState retrieval or evaluation issues (TI42299)
- RemoteTask was erroring during cancellation in certain cases. (TI40776)
- The default culture was not applied at console application startup (See Main.GetDefaultCulture method).
- The names used for the "TrackChange" module did not use the correct table and field names.
::: warning Attention The "EnableTrackedChange" and "TrackedChange" attributes no longer support the attribute for renaming a field or the table. You must use a Dico.xml key respecting the convention "tc.TableName" or "tc.TableName.FieldName".
:::
Version 3.22
Version 3.22.4
Bug fix
- WorkScheduler: Exclude invisible elements from overlap management.
- Tabs: Inability to close an invisible tab (TI40969)
Version 3.22.3
Bug fix
- Fixed WorkScheduler for elements on the same line overlapping, place elements in the 1st available group rather than the last processed group. Example Before:
After:
Version 3.22.2
Bug fixes
- LgWorkScheduler:
- Fixed a drag & drop issue from outside the component (LgWorkSchedulerDraggableItem)
- Fixed height issue on alternating timeline colors of the component
Version 3.22.1
New features
- LgWorkScheduler:
- Separate overlapping items on the same line into multiple lines
- Added "StateId" and "RestoreScrollPosition" properties to restore scroll position when a LoaderView is used to reload the component's data source
- Added Lagoon:Authentication:CertificateThumbprint and Lagoon:Authentication:CertificateFilePath parameters to configure the certificate to use for encryption and signing with OpenIddict.
- LgGridView - Calculation row: Allow adding a CssClass (TI42137)
Bug fixes
- Fix LgFrame height = 100% not working
- Fix - Encoding error on dictionary export (TI42263)
- LgSelect:
- LgSelect filter clears inputs on list refresh (TI40613)
- With SearchBox on mobile, opens and closes the list directly (TI42259)
- Error when manually uploading modified file LgInputFile (TI42211)
- [Oracle] [LgSettings] Field size to change (SubParam and Json) (TI42251)
- Fix LgProgress: SubProgress did not advance the parent Progress.
- 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: Issue with columns before DefaultFrozen
Version 3.22.0
Publication error, do not use...
Version 3.21 ⚠
Version 3.21.8
Bug fix
- LgInputRadio - Click issue on label to 'select' the radio input (TI42201) - (Fixed LgLabel: handling event onclick propagation based on usage context (for attribute or not))
Version 3.21.7
New feature
- ISmtp: Use Base64 encoding by default for email attachments
Version 3.21.6
New features
- With LgTrackedChange: automatic tracking of modifications to AspNetUser and AspNetUserRole tables (PierreFabre: Automatic tracking of SmallAppsUser and SmallAppsAccess tables (users and roles))
Bug fixes
- Fixed compilation error if Lagoon.UI.GridView is not installed (TI42213)
- Fixed "error LgSelect.dispose undefined => Remove unnecessary dispose" (TI40993)
- Fixed consideration of CssClass property for [LgTab] (TI41016)
- Fixed LgGridView - 100% height impossible if grid footer at top (ex: in PierreFabre projects)
Version 3.21.5
New features
- Added the ability to include an image in the email body using
where "MyImage.jpg" is the name of an attachment. - Added a parameter to the OnFilterChanged event of the grid to know the active filters.
Bug fixes
- Fixed the role ID for applications using LgApplicationTrackedChangeDbContext.
- Fixed the display of "policies" on the permissions page for applications not using enumerations.
Version 3.21.4
Bug fixes
- Fixed loading of notifications when opening the application
- Fixed division by zero in weighted grid average calculation.
- Disabled connection check for applications in offline mode.
Version 3.21.3
New feature
- Limit available export types in grids (TI40951)
Bug fixes
- Fixed a default profile management issue on the grid (TI42160)
- Fixed remote data source reset issue for the grid (TI42164)
Version 3.21.2
Bug fix
- Ctrl+F7 closes the current tab in the application (not Ctrl+X anymore).
Version 3.21.1
New features
- Keyboard shortcuts
- F5 reloads the current tab in the application (not the application anymore, use Ctrl+F5 for that)
- Ctrl+X closes the current tab in the application.
Bug fixes
- Unintended movements on a page (TI42172).
- Some grid grouping rows not updating (TI42179).
- Allow click event on a WorkScheduler task.
- Fixed offline URL for 'login-callback' outside Service Worker usage.
Version 3.21.0
New features
- Added Permissions page to Debug menu to:
- Verify permissions assigned to application URLs.
- Display the Roles/Policies matrix
- Added ShortcutKey parameter to LgButton to execute the button command with a keyboard shortcut of type Ctrl+Character or Alt+Character.
- Added "Min" and "Max" properties to LgGridDateColumn (TI42117)
- Added the ability to do weighted averages using the WeightExpression property (TI42135)
- Added SecureSocketMode parameter to SMTP configuration to specify SSL or TLS usage.
- Add GetGroups method as an extension for Claims type.
- Added GetUserId method to LgComponentBase.
- Added extension methods to ClaimsPrincipal type (GetId, GetFirstName, GetLastName, GetDisplayName, GetEmailAddress).
- Added EnumRoleManager service to convert role ID (Guid) to enumeration value and vice versa.
- LgWorkScheduler: New FocusTodayOnLoad option to focus on today's date on first load.
Bug fixes
- Use "Yes/No" when exporting boolean columns (Instead of "0/1"). (TI41089)
- Fixed column movement in GridView (TI40935 & TI42142)
- Fixed grid date filter that did not include hours from the last day (TI42136)
- Fixed grouping display for dropdown list type columns. (TI41092)
- Fixed numeric fields going to 0 when deleting the value when they are Nullable (TI42108)
Version 3.20 ⚠
::: warning Attention In some cases, the name of the executable generated when publishing the AppName.Batch.csproj project has been changed. The old executable name could have the pattern appname.batch.exe and has been fixed to appname.exe. If this name was used, for example in a scheduled task:
- Change the batch trigger to point to the renamed executable.
OR
- Change the AssemblyName property in the AppName.Batch.csproj file to keep the old name:
<PropertyGroup>
...
<AssemblyName>appname.batch</AssemblyName>
...
</PropertyGroup>
:::
Version 3.20.6
- Fixed "The application to execute does not exist" error when running the console application on Windows.
- Fixes to the LgSuggestBox component
- Fix for the disconnect button
- Updated to .NET 8.0.13
Version 3.20.5
- Fixed session loss when the application is not installed at the root (Using a subdirectory)
Version 3.20.4
- Fixed "NavigationAnchor" handling: Note that the separator is no longer '#' but '?'.
- Fixed to stop using the "/ping" URL which is reserved by AWS Gateway.
- Fixed to access HttpContext in the controller providing export grid data.
- Automatic adjustment for the date column to avoid "####" display during Excel export.
Version 3.20.3
- Fixed an issue with exports in LgGridView
Version 3.20.2
- Updated System.Linq.Dynamic.Core version to fix CVE-2024-51417
- Fixed "console" executable name during Linux-targeted publishes.
- Consolidated files in publications. (Removal of unnecessary files for lighter deliveries)
Version 3.20.1
- LgHtmlEditor - BUG on toolbar (TI41046)
- Copy.Paste error (TI40994)
Version 3.20.0
New features
- Message requesting reconnection when the server session has ended (TI40985, TI39130, TI39349, TI40390)
- WorkScheduler: Added the ability to define a CSS class to highlight certain dates
- WorkScheduler: Modification to use in meters/kilometers mode (Added a page to the showcase)
- Added "CorailAppLink" service to open a URL in a Corail application
- Added "LogFile" option to "Smtp" parameter to trace exchanges with the SMTP server.
- Added "/healthz" endpoint to know the application state and database connection.
- Added "OnConfigureHealthChecks" method to customize the result of the previous endpoint.
- New Lagoon.WebPush module to manage Web Push notifications.
Bug fixes
- Fixed an authentication issue when the application was opened from the JavaScript method "window.open".
- Fixed an error when at least one column filter is disabled
- Error after role selection (TI40765)
- Fixed differences between client export and server export.
- Updated dependencies.
Version 3.19.x
Version 3.19.3
New feature
- SAML: Allow having only a signature in the "response" node and none in the "assertion" node.
Version 3.19.2
New features
- Add Content-Security-Header to all requests to prevent Cross-Site-Scripting from SVG files.
- Updated versions of dependency packages.
Bug fixes
- Fixed the EULA window not closing anymore.
- Adjustments to the "Forgot password?" interface (TI40021)
- [LgGridView] Fixed column title not translated in CSV export (TI40809)
- [LgNumericBox] Fixed display issue of the zero value. (TI40943)
- Tab handling in sub-modals.
- SAML2: Fixed handling of SAML responses with multi-valued attributes and other minor fixes.
Version 3.19.1
Bug fixes
- Prevent a modal window from being hidden from a "Hide" event of the "DateTimePicker".
Version 3.19.0
Bug fixes
- TrackedChange: Modifications to allow indicating whether the entire model should be tracked, ignore properties, etc... (see the documentation)
- [LgGridView - LgGridColumn] - Issue when customizing column header: Loss of icon indicating sort and column resizing when using the HeaderCellContent RenderFragment - TI40910
- Notifications: Fixed notification loading (local / remote) with ability to specify remote or local loading
- LgGridView: [LgGridEnumColumn] Align dropdown in the middle (style) - TI39710
- (Airbus style):
- Fixed cell height of a row in edit mode (reduction of LgSelect height, etc.) - TI39374
- Wrong position of reset button in LgTextBox Multiline (in a modal) - TI40893
- LgModal: Various fixes
Version 3.18.x ⚠
Version 3.18.0
New features
- Track value modifications in the main database (documentation)
::: warning Attention The "dotnet ef migrations add TrackedChanges" command must be executed for Pierre-Fabre applications. :::
- WorkScheduler
- Added VirtualScrolling property on LgWorkScheduler component (support for large data sources)
- Added AllowResize property in IWorkSchedulerDraggableData interface to allow mouse resize of tasks (warning, breaking change)
- Added ShowDragIndicator property (display of an indicator during task resize or drag)
- Taken into account the ticket https://passerelle.desirade.fr/?p=Ticket~TI40745
- GridView - Individual line selection (TI40746)
- "About" window - Ability to add custom information (TI40709) (documentation → Configure the about page)
Bug fixes
- GridView: Issue with filter label display for columns containing dropdown lists
- GridView: Disappearance of page number in selector
- Translation of error message when password is lost (TI40021)
- Slider rendering bug (TI40622)
Version 3.17.X ⚠
::: warning Attention LGN must be at least version 3.1 to use this version. Run the dotnet tool update LGN -g command before running the lgn update command! :::
Version 3.17.5
Bug fixes
- Fix GridView export bugs
- Update referenced package versions.
Version 3.17.4
Bug fixes
- Fix GridView bug on iOS
Version 3.17.3
Bug fixes
- Updated index.html file to add the {BASE_HREF} bookmark.
- LgGridView and LgGridCommandColumn Z-Index issue (TI40682)
- [Slider] Fixed a bug in milestone display. (TI40622)
- [HomeButton] Home button unreadable (TI40533)
- [Password reset] Translation error (TI40615)
- [NumericBox] Arrow offset (TI40645)
- Removed encoding declaration in SAML request. (UTF-16 encoding interferes with some IdP)
- Update Puppeteer version to version 20 for .NET 8.
Version 3.17.2
New features
- Added "Destination" field (generally optional) in SAML2 authentication requests.
Version 3.17.1
Bug fix
- [LgGridView] Fix "IAsyncQueryProvider" error.
Version 3.17.0
New features
- Support for .NET 8.
- Added MinSearchCharacter parameter for LgGridSelectColumn, LgGridSelectMultipleColumn, LgGridEnumColumn and LgGridEnumMultipleColumn. (TI40437).
- Added global HideAlwaysResetButton parameter in selection column.
- [LgGridView] Added ExportCulture property to the gridview.
- Use in CSV export for numeric separator (TI40277).
- (ServiceWorker) Parallel downloads when fetching resources.
Bug fixes
- Resolved the issue of closing tabs with the X button. (TI40631)
- [LgNumericBox] Issue with handling unsigned numeric values (uint, ...). (TI40618)
- Updated PuppeteerSharp to version 18.1.0
Version 3.16.x
::: warning Attention LGN must be at least version 3.1 to use this version. Run the dotnet tool update LGN -g command before running the lgn update command! :::
Version 3.16.1
Bug fixes
- [LgGridSelectMultipleColumn] Fixed error message displayed if filter value no longer exists
Version 3.16.0
New features
- [LgGridTimeColumn] Added filtering on null value
- [LgGridTimeColumn] Added TimePicker
- Added service for Cloud storage management (AWS and Azure)
- [LgGridDateColumn] Added DateBoxKind parameter (TI40273)
Bug fixes
- [LgGridTimeColumn] Fixed sorting
- [LgDateBox] Fixed display of default selected value in week mode
- [PF] Fixed errors in user management (TI40373)
- [LgNumericBox and LgDateBox] Fixed translation issue not taken into account in error display (TI40446)
- [LgTab] Fixed issue with closing tabs with mouse wheel button (TI40327)
- [LgToggle] Fixed issue with component operation when in toolbar of LgGridView or LgFrame (TI40452)
- [LgGridSelectionColumn] Fixed line selection issue in line edit mode (TI39330)
- Fixed authentication error on password reset page
Version 3.15.x
::: warning Attention LGN must be at least version 3.1 to use this version. Run the dotnet tool update LGN -g command before running the lgn update command! :::
Version 3.15.0
- Replaced NuGet.Config file of the project with the new version securing the origin of Lagoon packages.
- Updated package references used
- 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 Note The "GridViewProfiles" table is no longer used in favor of the "LgSettings" table. You can add a migration to your project to remove it: dotnet ef migrations add DropGridViewProfiles
:::
Version 3.14.1
- (fix) [LgNumericBox] Error with a nullable value (TI40561)
- (fix) [LgInputRadioGroup] Display error
Version 3.14.0
New features
- LgGridView: Property to know if the grid is in "add" mode (or add/edit) (TI40029)
- [LgGridView] Add NewItemAsync method (TI39909)
- [LgYearBox] add DateTime type support (TI40081)
- [LgGridView] Add FiltersShowAllItems parameter
- [LgGridView] Shared profiles filter → Allow sharing a filter to a scope (list of users, roles, etc.) 'GridViewSharedProfileFilter' (TI39947)
Bug fixes
- LgSelect Fixed "ShowSearchBox"="false" that still showed the search area on first open.
- Issue with loading notifications (TI40288)
- [LgSelectMultiple] - Value hidden when using search filter (TI40228)
- [LgNumericBox] Fix numeric decimal round problem (TI40306)
- RemoteListDataSource<TValue, TItem>.Item always null (TI40347)
- [LgNumericBox] Display problem in edit (TI40303)
- [LgGridView] Fix filter availability issue depending on results in a grid (TI39527 & TI39323)
Version 3.13.x
Version 3.13.7
- Replaced use of ".well-known/openid-configuration" route with "well-known/openid-configuration" route. The dot at the beginning of folder name was causing issues with some reverse proxies.
Version 3.13.6
- Added CheckCertificateRevocation parameter in SMTP configuration. This allows disabling certificate revocation checking for SSL.
Version 3.13.5
- Fixed "Content-Security-Policy" configuration for applications published in "http://".
Version 3.13.4
- Fix LgTagBox style
- Added "OnConfigureForwardedHeaders" methods for customization.
Version 3.13.3
- Fix WorkScheduler HTML export
Version 3.13.2
- Fix WorkScheduler HTML export
- Fixes to AddClientWithCredential and AddClientWithCredentialAndCode methods
::: warning Breaking Change The scope parameter has been removed from these methods (unused since the move to OpenIddict). Do not add scope when calling the "/connect/token" endpoint :::
Version 3.13.1
- Fixed filters not working with MessagePack.
- Added App:AutoDisconnectTimeout entry in appSettings.json file to define the time (in minutes) after which the user should be disconnected:
- WorkScheduler: Function to export the current planning view to an HTML file (with scroll support)
- WorkScheduler: Translation of week prefix
- WorkScheduler: Added DatesHighlighted property to define a list of dates to highlight in the timeline and planning
Version 3.13.0
New features
- Activation of "Content-Security-Policy" and X-Content-Type-Options HTTP headers ::: warning Attention
- Inline scripts are now disabled by default.
- Images that are not sent by the application will also be blocked. See the following article for how to configure CSP or disable it temporarily:
:::
- [App.razor] - Integration of RCL component libraries and lazy assembly loading (TI40237)
Bug fixes
- [LgPager] Wrong page number displayed (TI40231)
- Display of full application version number (TI40191)
Version 3.12.x
Version 3.12.1
Bug fixes
- MaxFileSize not taken into account for logs (TI40097)
- [LgGridSelectMultipleColumn] Reload on each re-selection (TI40038)
Version 3.12.0
New features
- 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: If the title is not set, retrieve the Title from the viewmodel property (Display - Name annotation) (TI39554)
Bug fixes
- (fix) [LgWorkScheduler] Fix links when groupby is not defined
- [LgSelectMultiple] VisibleItemCount display issue (TI40096)
- LgGridSummaryColumn - Popup opening in GridEditMode.Row edit (TI40020) & (TI39958)
Version 3.11.x
Version 3.11.2
- Issue during V3.11.0 update (TI40087)
Version 3.11.1
- [LgWorkScheduler]
- (fix) - "Go to today" (scroll in planning to today's date) → non-functional link (TI40099)
- Added IWorkSchedulerLinkableData interface to define visual links between planning tasks (TI40039)
- Modification of IWorkSchedulerData interface
::: warning Attention The IWorkSchedulerData interface has been modified. If your application uses this interface you must add the IsVisible property (and set it to true by default to keep the behavior you had previously). Example
// An object implementing the IWorkSchedulerData interface
public class MyClass : IWorkSchedulerData
{
// Your current code
// ...
// The new property to add
public bool IsVisible { get; set; } = true;
}
:::
Version 3.11.0
New features
- [LgInputFile] & [LgFormTracker]: Does not detect LgInputFile modifications (addition of IFormTrackerComponentImplementation) (TI39234)
- [LgGridView]: Add loader during grid export (TI39948)
- Airbus: Added services to retrieve MobileSSO token
Bug fixes
- [LgMenuItem] Sub-menu at 3 levels - fix rendering bug (TI39106)
- [LgGridView]: Fix grouping level >1 → display of grouping value (TI40002) (TI39997)
- [LgGridView]: Filter bug → Unable to validate filter (TI39949)
- [LgNumericBox]: Style bug (TI39956)
- Fix handling for unhandled POST errors
Version 3.10.x
Version 3.10.1
Bug fixes
- LgHtmlEditor: JavaScript error (TI40004)
- LgSideTabContainer & LgTabContainer - The reload button of a tab was present even if ReloadEnabled=false on LgTabContainer or no OnReload subscription on LgTab.
- [LgInputRadioGroup] LgInputRadio colored in blue and square (checkbox appearance) (TI39915)
- [LgGridView] Cancel a grid load/loading (TI38927)
- LgWorkScheduler - fix missing async invoke on js side
- fix auth connect with IIS and disconnect without WebPush subscription
Version 3.10.0
New features
- [LgGridView] - Added GridView.Feature → Edit
- New column in LgGridView: LgGridTimeColumn
- [LgGridColumn] Assignment of default title to column with viewmodel DisplayName attribute (TI39554)
- LgFrame, LgGridView, added a renderfragment TitleContent to add content next to the title (TI39552)
- Tab navigation: List of 'open' pages → if content exceeds maximum dropdown size, close all button is always visible. (TI39322)
Bug fixes
- [LgSearchNavigation] - Issue on reload → error (TI39521)
- Mobile menu → "Hamburger": behavior issue (does not necessarily hide)
- [LgSummaryBox] Handle ReadOnly rendering & displayed field
- [LgGridView]
- [LgGridBooleanColumn] Error on cancel in row modification
- Column edit behavior issue (TI39572)
- Overlap issue of column titles when scrolling in a grid with frozen columns. (TI39964)
- [LgGridColorColumn] dropdown choice palette display issue (TI39515)
Version 3.9.x
Version 3.9.1
- Add config parameter HttpClientDefaultTimeout for the HttpClient's timeout (TI39918)
Version 3.9.0
New features
- [LgGridView]
- Added OnAfterAdd | OnAfterUpdate | OnAfterDelete events (TI39572)
- Add clear all filters public method (TI39708)
- Notification: Added RefreshNotifications public method → allows refreshing the notifications list on demand on client side in apps (allows updating the notifications list based on an external filter for example)
Bug fixes
- [LgSuggestBox] See all position (TI39854)
- [InputMask] mask does not appear (TI39792)
- [LgMenuItem] Style indentation issue (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)
- Height issue (TI39511)
- [LgWorkScheduler]
- Display issue in Timeline="WeekDay" (TI39825)
- Year timeline offset from December month (TI39737)
- [LgGridView]
- [LgGridSummaryColumn] Style problems (TI39691) (TI39685)
- Grouping formatting issue (TI39584)
- [ConditionFilter] Results contains preview (TI39776)
- zindex issue (TI39465)
- LgSelectColumn does not underline the field in error (TI39494)
- [LgSummaryBox and LgGridSummaryBox] ReadOnly mode
Version 3.8.X
::: warning Attention For performance reasons, data transfer with MessagePack is now enabled by default. You still have the option to use the old transfer mode by configuring the "DefaultAcceptHeader" parameter in the client application. In the "Main.cs" file, add the following line in the "OnConfigureBehavior" method: app.DefaultAcceptHeader = DefaultAcceptHeader.Json
:::
Version 3.8.3
- LgGridView display bug for edit icons (TI39869)
- LgCheckbox, The ConfirmationMessage property translates the content even if there is no # (TI39887)
- [LgSideTabContainer] Unable to switch tabs if binding OnActivateTab (TI39849)
- Refresh issue when tab navigation is disabled.
- Renamed "NavigationFragment" to "NavigationAnchor" to avoid confusion with "RenderFragment".
Version 3.8.2
- Added [component]
- Fixed random "Authorizng..." display.
Version 3.8.1
- [LgSelectBox] Fixed maximum height of dropdown list for Airbus and Pierre-Fabre (DropDownMaxHeight parameter).
- [LgSelectBox] Fixed scroll issue on first opening of dropdown list.
- [LgTextBox] Fixed null reference exception of input mask
- Added entry with mask to the demo
- [LgGridSelectMultipleColumn] Fixed Cancel
Version 3.8.0
New features
- [LgPage] Added the ability to navigate within a page by changing the URL (See "NavigationAnchor" and "OnFragmentChanged").
- [LgPage] Added the ability to replace the current page URL with a new one (See "UpdateMainPageUri").
- [LgSelect] Customize the number of items to display in the list (TI39393)
- [LgTextBox Multiline (textarea)]
- Crushed unreadable field (TI39705)
- Does not take the number of lines into account (TI39533) (Rows attribute with Min & MaxRows etc...)
- Allow resizing of "multiline" (TI39704)
- Allow changing the text of password reset rules (translation) (TI39518)
- [About Page] Ability to have the Lagoon Framework version (TI39253)
- LgGridSelectColumn / LgGridSelectMultipleColumn - Added support for "remote datasource" mode.
- [LgAirbusToolbarMenuSet] Ability to not display the Logout button (Parameter: "HideDisconnect" in "MenuConfiguration.razor") (TI39499)
- LgGridView allow manual row refresh (TI39338)
- LgGridSelectMultipleColumn
- LgSelect Ignore accents & case in search input (TI39508)
- Updated BackgroundTask to use service scope with the lifetime of the background task.
- Use of "AsNoTracking" for remote queries generated by the grid.
- Added generic LgPageLink.Create method to replace and encode route parameters.
Bug fixes
- [LgCheckBox] - Fix indeterminated state text (ReadOnly) (TI39357)
- [LgGridSelectMultipleColumn] - Fix GUID bug
- [LgGridView] Application of display format on grouping (TI39331)
- [LgGridView] Lock the action panel when the grid is in edit mode (TI39330)
- [LgSearchNavigation] Result box height (style) (TI39804)
- [LgMenuItem] Double navigation on element click.
Version 3.7.x
V3.7.4 (20/12/2023)
- Fixed SAML response signature validation (Added an attempt without ignoring XML file spaces)
V3.7.3 (13/12/2023)
- [LgWorkScheduler] Ability to scroll to a specific date (TI39735) + ability to scroll to a position
V3.7.2 (30/11/2023)
- [Auth] Added missing endpoint (config)
V3.7.1 (22/11/2023)
- Added support for "Scoped" services in console application.
- Ignore MFA when using SSO authentication. (Authentication was looping)
- Fixed an issue with OAuth URL configuration.
V3.7.0 (16/11/2023)
New features
- LgHTMLEditor: Added an option to not display the choice dialog when pasting from clipboard. (TI39259)
- [LgSelect] Customize the number of items to display in dropdown list - DropDownMaxHeight option (TI39393)
Bug fixes
- [Mobile render / Tabs] → 'Close' icon hidden
- [LgInputFile] Label of second LgInputFile smaller than first (TI39401)
- [LgGridView] Line breaks and display (TI38609)
- [LgGridView] GroupName displays before grid content (TI39434)
- [LgTab]: Fix reload tab management (TI39341)
- [LgNumericBox] Rounding handling (TI39208)
Version 3.6.x
V3.6.3 (03/11/2023)
- (fix) [LgSelect] list does not reset on filter X click (TI39419)
- fix(datebox-keyboard-support) Add option to disable keyboard support
- fix(auth-offline-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) Error loading pages that contain a LgGridView without 'Frozen' columns.
V3.6.0 (23/10/2023)
New features
- New LgGridView columns → LgGridSelectMultipleColumn & LgGridEnumListColumn (TI37099 & TI39041)
- [LgGridView] Add DisplaySuccessSaveMessage support to Add and Update row action (TI39082)
- [LgGridView] Add ResetButton on LgGridEnumColumn and LgGridSelectColumn (TI39041)
- [LgGridSelectionColumn] Allow selecting all rows including on other pages (TI39283) → parameter
- Allow displaying text in selection column header via dictionary key → GridViewSelectionColumnLblHeader (TI39282)
- [LgGridView][Export] Ability to specify the format of a column/cell for Excel export (TI39367)
Bug fixes
- [LgInputRadio] disabled property does not work (TI39245)
- [LgDateFilterEditor] Fixed date filter (TI39403)
- (fix) Display menu scrollable & not scrollable (TI39404 & TI39106)
- Path issue in log rotation on linux (TI39423)
- [Custom Template] - Style issue of account creation button (TI39228)
- [LgHtmlEditor] - Disabled bug (TI39095)
- Translation issue in some pages (signout & bigmessage component)
- GridView with an LgGridEditColumn: rendering bug if column contains 2 icons and column is reduced by user (TI39330)
- LgTextBox / LgSelect: If these components have an inputmask that you fill with a value. If you return to this field and reset the value, the inputmask keeps the filled value in memory (TI39458)
- LgNumericBox - button increment issue (suffix) (TI39326)
- [LgGridView] - Default frozen no longer freezes previous columns (TI39102)
- LgGridSelectionColumn: block row selection / deselection when it is in 'edit' mode. (TI39330)
Version 3.5.x
Version 3.5.2 (16/10/2023)
Bug fixes
- Translation not applied on role selection screen (TI39416)
- Issue on role selection page (TI39405)
Version 3.5.1 (11/10/2023)
Bug fixes
- [LgGridView in cell edit] - Issue retrieving value of a dropdown list → arg.Value always null (TI39358)
- Use of registered DataProtectionProvider instead of creating a new one (TI39413)
Version 3.5.0 (22/09/2023)
::: warning BREAKING CHANGE The AuthenticationStateProvider property has been removed from LgComponentBase. Follow the procedure below if you want to add it to one of your custom components. :::
Add AuthenticationStateProvider to a component
Insert the following code to restore access to the property.
/// <summary>
/// Used to retrieve current logged user
/// </summary>
[Inject]
public AuthenticationStateProvider AuthenticationStateProvider { get; set; }
::: warning BREAKING CHANGE The IWorkSchedulerData interface has been modified and applications using LgWorkScheduler will report errors after update. See below.
:::
Modification of IWorkSchedulerData for LgWorkScheduler
The From property which was not nullable is now. Everywhere in your code where you use the From property just add .Value (ex: if (obj.From == DateTime.Now) becomes if (obj.From.Value == DateTime.Now) and add the missing ? in the implementation)
The objective of this modification is to be able to add to LgWorkScheduler data source an element without having a task or milestones to display (add an empty line)
// example of modification to make:
public class PlanningData : IWorkSchedulerData
{
// Before: public DateTime From { get; set; }
public DateTime? From { get; set; }
// unchanged
public DateTime? To { get; set; }
public void Usage(DateTime date) {
// if (From.Years == date.Years) {
if (From.Value.Years == date.Years) {
// ...
}
}
}
New features
- Added automatic {BASE_HREF} replacement management in "index.html" file by relative URL extracted from public URL.
- The Http property from LgComponentBase will now automatically use an anonymous or authenticated connection based on the user's authentication state.
- New predefined constants for PolicyVisible and PolicyEdit usage: (Policies.Always / Policies.Never / Policies.AuthenticatedUser / Policies.AnonymousUser)
- Dynamic policies
- New LgCascadingPolicies component to define pre-validated policy names in the component context.
- New SetValidatedPolicies(Policies.MyPolicy) method to define pre-validated policy names in the page context. (To use in OnLoadAsync event) (Note: AuthorizeView component does not take these "policies" into account, use LgAuthorizeView instead)
- Optimization of LgAuthorizeView to use shared cache when evaluating PolicyVisible and PolicyEdit properties.
- LgWorkScheduler:
- Allow displaying lines even when empty
- Added Week/Day timeline handling
- [LgGridView]:
- Filters - Load list of possible values after entering X characters (TI38810)
Bug fixes
- LgMenuItem:
- scrollable - Sub-menu at 3 levels → fix display + open 3rd level on click instead of 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
Bug fixes
- [LgGridView] column resizing (TI39049)
- [Culture NumberDecimalSeparator] Validation issue (TI39258)
- Customization of Required error message on Integer (TI39255)
- [LgGridView] PaginationButtonCount not taken into account (TI39098)
Version 3.4.5
New features
- Added an option to customize log messages
Version 3.4.4
Bug fixes
- Display issues in LgSelect and LgSelectMultiple in read-only or disabled mode.
- Issue with SAML AsyncDescriptor.
Version 3.4.2
Bug fixes
- Authentication redirect issue if site is not at domain root. (404 /connect/authorize).
- Hide "Download preparation..." message in case of error and display error message.
Version 3.4.1
Bug fixes
- LgGridView → Cell in edit, deletion of 'mandatory' information displayed in cells
- LgSelect → Fixed error raising during field filter reset if MinSearchCharacter parameter was set
Version 3.4.0
New features
- LgSlider component → simple and multiple slider (Documentation)
- LgSelect & LgSelectMultiple → added remote datasource
- [LgGridView/LgSummaryBox] Add input mask and maxlength (TI38698)
- [LgGridView] Add edit refresh row mode (EditRefreshMode: Allows specifying how data will be refreshed after modification)
- LgGridView - LgSummaryColumn allow HtmlEditor instead of textarea (TI38904)
- Openiddict - Clear expired tokens (db)
- Sending emails in Daemon format (TI38960)
- Refactor themes scss & various fixes
- LgGridView - Allow canceling grid load via cancel button (TI38927)
- Autoresize of a textarea as you type (prop. height)
Bug fixes
- [LgGridView] Resize with same StateId (TI38779)
- [LgGridView] Profile list not scrollable (TI38874)
- [LgSideTab] Linked scroll between tabs (TI38926)
- LgGridView save scroll position (TI38777)
- LgGridView - Display row count in grid > 1000 with space (TI38932)
- [LgGridDateColumn] Incorrect display of null date (TI38939)
- [LgGridView] No filter summary display after page reload
- Display AuthenticationException in WindowsLogin page (TI38964)
- LgSelectMultiple - Bug filter remains active after LgSelectMultiple closing (TI38925)
- Problem with Excel export Date column with displayformat (Hour) (TI38829)
- fix position reset button
Version 3.3.x
Version 3.3.1
New features
- MessagePack taken into account in LgGridView (MessagePack must be manually activated)
- Upgrade PuppeteerSharp to v10.0.0
- LgTab: 'Refresh' icon on hover (TI38713)
Bug fixes
- Tooltip sometimes remains on page change (TI38890)
- [LgGridView] Error on column operations when value is nullable
- [LgSearchNavigation] Make dropdown disappear after click or enter (TI38803)
- [LgGridView] Issue with scroll preservation with frozen columns
Version 3.3.0
New features
- Added TryCloseAllTabs method → Attempt to close all open tabs (TI38804)
- LgGridView Memorizes Scroll Position (TI38777)
Bug fixes
- Fix LgMenuItem: AutoHide = true (prevented submenu display)
- PF - [Filters] Display issue with filter buttons depending on screen resolution (TI38766)
- LgInputFile - Reading deposited file content is corrupted (TI38913)
Version 3.2.x
New features
- Darken disabled input text in Airbus theme (TI36839)
- [LgModal] Allow modal to "exit" the screen. (TI38576): Add buttons to modal header when moving close to screen edge to 'unlock' / 'lock' modal lock on screen.
Bug fixes
- Display issue with filters with long text and scroll at beginning (TI38608)
- Filter error with long text when there are freeze columns (TI38599)
- [LgTimeBox] - Form validation enter key non-functional (TI37229)
- [LgGridView] Date cell remains active in cell edit mode
- LgFormTracker issue with LgTabContainer (TI38850)
- LgEditForm & button IsSubmit → no working indicator
- Lambda expression to choose a command/icon for lggridviewcolumn (TI38441)
- LgModal:
- Pop-up disappears when moved (Firefox) (TI38385)
- Drag & drop issue + content selection
Version 3.1.x
Version 3.1.0
New features
- MessagePack - Add Enumerable support
- [LgGridView]:
- Don't take accents into account in filters (option to enable) (TI38494)
- Add Exportable global option (LgGridView) + (Exportable = true Airbus template)
- LgSearchNavigation & LgSuggestBox: Don't take accents into account in filters (option to enable) (TI38814)
Bug fixes
- (fix) selected node style for Nestable
- DateTimeHelper: fix IsDayOff calculation
- Missing scroll in dropdown containing list of open tabs (TI38610)
- (fix) Using App.ShowSuccess call ShowWarning instead of ShowSuccess (TI38780)
- (fix) Open tabs no longer saved
- (fix) Language change (TI38808)
- [LgGridView]:
- Line breaks and display (TI38609 - TI38590)
- (fix) Profile loading
- (fix) Remote - Export not working
- [LgGridBooleanColumn] Focus issue with CheckBox (TI38611)
- Issue refreshing after modification (LgSelectMultiple & LgSelect) (TI38663)
- [LgGridEnumColumn] Export Nullable value (TI38640)
Version 3.0.x
Version 3.0.5
- Fixed display of error message for "LgRemoteException".
- Fixes to WorkScheduler.
Version 3.0.4
- Improvement and fix on WorkScheduler (TI38738 / TI38601)
Version 3.0.3
- (Fix) LgGridView - [Queryable] Fix error in controller with no 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
- Removal of .NET 3.1 support (End of Microsoft support since Dec. 2022)
- Change in structure for new projects Here :::
New features
- WebPush Notification
- Removal of OData
- Addition of MessagePack → improvement of performance for large data transport (+ serialization / deserialization).
- Error handling:
- Error contextualization to pages
- No more ShowException
- No more try catch in controllers
- UserException in Debug → message to user + error detail in displayed toastr
- Added IsLoading property in LgPage directly, no need to define it in a page anymore
- All input types: Have an "X" that removes input (TI37188)
- LgWorkScheduler
- Agenda Mode
- Review of schedule timeline
- Fix OnEmptyClick
- Fix OnItemClick
- Review of drag drop mode
- Agenda & Planning Mode
- Added single-level timeline option
- Added manual mode to define DragStep
- Created component for items dragged from outside component
- Agenda Mode
- LgTimeline: New component → Timeline representation
- [OpenIddict] Two sites on same DB (TI38677)
Bug fixes
- Fixed scss generation → existing variable override in themes is now possible.
- [LgFrame] Behavior difference (autoscroll) (TI38533)
- Cookie x-lang management
- [LgSearchNavigation] JavaScript error when special characters entered (TI38664)
- [LgTimeBox] - Bug if bound to timespan
- LgGridView - Button label refresh issue (TI38522)
lgn tool (version 3.x)
The entries below concern the lgn command-line tool, whose versioning is independent of the framework: these numbers do not correspond to the framework versions listed above.
Version 3.4.0
- Added "fix-charset" command which allows converting source files to UTF8 with BOM (to avoid issues during Linux publishing)
Version 3.3.3
- Updated "Entity Framework Core .NET Command-line Tools" if installed version is older than the one used in components.
- Disabled update of Lagoon components during "new" command (Application templates are now up-to-date).
Version 3.3.2
- Fix for "update" command when project TargetFramework contains the platform (Ex: "net6.0-windows7.0").
Version 3.3.1
- Fix for "update" command when executed under Linux.
Version 3.3.0
New feature
- Manage compilation of multiple SCSS files for theme features.
Version 3.2.1
- Fix for "update" command when all projects are already up to date.
Version 3.2.0
- Use "file scoped namespace" for automatically generated "IconNames" class.
- Fix on detected referenced packages.
Version 3.1.2
New features
- Added "lgn update --dotnet-fw" command to perform application migration from .NET 6 framework to .NET 8 framework.
Version 3.1.1
New features
- Added "lgn cots" command to extract COTS in JSON or CSV format from one or more projects (see "lgn cots -?" for options).
- Added "lgn cve" command to display known vulnerabilities for current project.
- Updated "lgn update" command to additionally to updating Lagoon package versions:
- Update minor versions of third-party packages.
- Search for vulnerabilities and reference fixed package version.
- Updated "lgn new" command to:
- Run update of packages referenced by application template.
- Run check for known vulnerabilities
- Generate first "InitialCreate" migration for EntityFramework.
Version 3.0.2
Bug fixes
- Issue loading arguments with "new" command.
- Random issue creating "_vroot" folder.
Version 3.0.1
Bug fixes
- Compilation issue in Linux environment.
- Connection issue in Linux environment.
Version 3.0.0
Update
Execute the command: dotnet tool update --global LGN
New features
- Added Azure authentication for "DESIRADE" and "INFOTEL" from "lgn connect" command
- Added "lgn install" (and "lgn uninstall") commands to facilitate Terser installation in deployment pipelines (for integrated JS compression of "js/main" folder)
- Added detection of solution directory to avoid partial solution update during "lgn update"
- Added "lgn clean" command to remove "bin", "obj" and "_vroot" folders from current folder and all subfolders.
- Added compatibility with .NET 8 runtime (End of .NET 3.1 Framework compatibility, still compatible with .NET 6 Framework)
Bug fixes
- Fixed SCSS generation for certain conditionally defined variables.
- Fixes for "lgn link" command for Lagoon contributors