Skip to content

Releases

v4.29.1

Choose a tag to compare

@hakenr hakenr released this 15 Oct 15:34

What's Changed

Components

  • ‼️DictionaryStaticDataStore / StaticDataStore - IsLoaded now means "the store has data and the synchronous getters can be used", even if the data is stale (ShouldRefresh() / invalidation). Previously an expired store reported IsLoaded == false, which switched off IsLoaded render guards although the data was still available. No API change; Clear() and "before first load" still return false #1846
  • ‼️HxInputFile / HxInputFileCore - UploadAsync() no longer hangs forever when the component is disposed: disposing during an upload (e.g. navigating away) or calling it on an already-disposed component now cancels the returned task (TaskCanceledException); a second UploadAsync() while one is still in flight now throws InvalidOperationException #1579
  • HxInputFile / HxInputFileCore - fixed: disposing the component mid-upload now aborts the in-flight requests and no longer causes JS errors / unhandled promise rejections from callbacks to the disposed .NET reference #1578
  • HxInputFile / HxInputFileCore - fixed: an upload containing a file over MaxFileSize never completed (OnUploadCompleted did not fire, UploadAsync() never returned), and two consecutive oversized files caused a Maximum call stack size exceeded error #1574 #1575
  • HxGrid - fixed: a race in the progress-indicator delay timer could throw NullReferenceException on a thread-pool thread and terminate the process #1817

Packages

  • updated dependencies

Full Changelog: v4.28.1...v4.29.1

v4.28.1

Choose a tag to compare

@hakenr hakenr released this 09 Oct 12:56

What's Changed

Components

  • ‼️HxInputFile / HxInputFileCore - removed the FileCount property. It was never set and always returned 0, and on HxInputFile it threw NullReferenceException before the first render #1577
  • HxInputFile / HxInputFileCore - fixed: Settings.UploadHttpMethod and Defaults.UploadHttpMethod were ignored because the parameter's built-in "POST" default always took precedence. The usual Parameter → Settings → Defaults order now applies #1576
  • HxScrollspy - fixed: disposing the component before its ScrollSpy instance was initialized could throw a JS TypeError during disposal #1641
  • minor internal fixes

Full Changelog: v4.28.0...v4.28.1

v4.28.0

Choose a tag to compare

@hakenr hakenr released this 29 Sep 13:28

What's Changed

Components

  • ‼️HxInputDateRange - native DateOnlyRange support: the component is now generic (HxInputDateRange<TValue>) and binds directly to Havit.DateOnlyRange or Havit.DateTimeRange #1807
    • existing @bind-Value markup keeps working, because the type is inferred
    • breaking: explicit C# references (@ref fields, subclasses, render-tree code) must change to HxInputDateRange<DateTimeRange> (or <DateOnlyRange>), and consumers must rebuild
    • InputDateRangeSettings, InputDateRangePredefinedRangesItem and HxInputDateRange.Defaults are non-generic and shared by both range types; predefined ranges stay DateTimeRange-based and are converted internally for DateOnly bindings
  • HxInputDate / HxInputDateRange - fixed: a date picked from the calendar was reported as invalid for cultures whose short date pattern has a quoted literal (e.g. bg-BG d.MM.yyyy 'г'., tk-TM) #1806

Packages

  • Havit.Blazor.ApplicationInsights (v1.1.0) - telemetry calls made before the Application Insights JS SDK finishes loading are now held and replayed in order once it initializes, instead of hitting the snippet stubs (which could throw and shut down the circuit or drop telemetry); if the SDK never loads, calls are released after 15 s. The bootstrap script no longer uses eval(), so 'unsafe-eval' is no longer needed under CSP #1815
  • updated dependencies

Full Changelog: v4.27.0...v4.28.0

v4.27.0

Choose a tag to compare

@hakenr hakenr released this 15 Sep 10:18

What's Changed

Components

  • HxTreeView - new ExpandOnSelection parameter: selecting an item (by click or via SelectedItem) expands its children; selection never collapses an item. Default false, so current behavior is unchanged #1773 by @jakakordez 💕
  • HxGoogleTagManager - Static SSR / prerendering and enhanced navigation are now supported: the GTM script renders inline in SSR, a JS initializer pushes a virtual page view on enhancedload, and page views are deduplicated so rendering the tracker more than once is safe; new Nonce parameter for CSP scenarios and new EnableInitialPageViewTracking (default true) to suppress the duplicate announcement of the landing page #1769
  • HxGrid - RefreshDataAsync on an already-disposed grid is now a silent no-op instead of throwing InvalidOperationException (behavior introduced in v4.25.0). Disposal during in-flight async work — navigating away while OnInitializedAsync is still awaiting data — is a routine Blazor scenario the caller cannot reliably guard against #1783
  • HxTooltip - fixed: an empty-string Text rendered data-bs-title="", which made Bootstrap's tooltip initialization throw and could crash the Blazor circuit; setting the content later now also updates Bootstrap's internal config #1774
  • HxMarkdown - fixed: trailing # characters are preserved in ATX headings when not preceded by whitespace (e.g. # C#, # Issue #123); valid closing hash sequences are still stripped #1770 by @stfulldev 💕
  • HxSmartPasteButton - fixed: icon-only buttons no longer get spacing between the icon and the (empty) caption #1761 by @snowyukitty 💕
  • HxInputBase - fixed XML documentation of ValidationMessageMode to state the actual default (Floating) #1771

Packages

  • Havit.Blazor.Storage (v1.0.2) - dropped the Havit.Core dependency (replaced with BCL throw helpers), so the package no longer pulls a non-trimmable transitive closure into Blazor WebAssembly payloads #1794
  • updated dependencies

v4.26.1

Choose a tag to compare

@hakenr hakenr released this 29 Jul 13:38

What's Changed

  • HxEChart - fixed: a re-render during the chart's initial setup could crash with Cannot read properties of null (reading 'baseOption') — regression introduced in 4.25.1 #1745

Full Changelog: v4.26.0...v4.26.1

v4.26.0

Choose a tag to compare

@hakenr hakenr released this 29 Jul 10:42

What's Changed

  • HxEChart - new CssClass, AdditionalAttributes and Width parameters for styling the chart container; Height can now be omitted (empty or null) to let CSS/flex drive the height #1742
  • updated dependencies

Full Changelog: v4.25.1...v4.26.0

v4.25.1

Choose a tag to compare

@hakenr hakenr released this 28 Jul 14:44

What's Changed

  • HxEChart - improved rendering performance and memory footprint: chart options are no longer re-applied via JS interop when they haven't changed, and the full options JSON is no longer retained for the component's lifetime #1735
  • updated dependencies

Full Changelog: v4.25.0...v4.25.1

v4.25.0

Choose a tag to compare

@hakenr hakenr released this 19 Jun 18:32
04267f9

What's Changed

New Packages

  • Havit.Blazor.ApplicationInsights (v1.0.0) — new package: Blazor wrapper for the Application Insights JavaScript SDK; supports auto route tracking, custom telemetry initializers, and authenticated user context #1246
  • Havit.Blazor.Storage (v1.0.0) — new package: browser web storage (localStorage / sessionStorage) abstractions for Blazor #1417

Components

  • HxGridColumn - new FilterHeaderTemplate parameter for custom column header filter UI; new TabIndex parameter for accessibility #1386 by @optPrim3 💕
  • HxGrid - multi-select checkbox click target enlarged to the entire cell for easier selection #1412 by @Allegon 💕
  • HxGrid - RefreshDataAsync now throws InvalidOperationException when called on an already-disposed grid #1425
  • HxInputNumber - fixed: minus sign was lost when typing a negative number into an auto-selected value #1406

Accessibility

v4.24.3

Choose a tag to compare

@hakenr hakenr released this 13 May 08:56

What's Changed

  • updated dependencies

Full Changelog: v4.24.2...v4.24.3

v4.24.2

Choose a tag to compare

@hakenr hakenr released this 04 May 22:59

What's Changed

  • HxTabPanel - fix: restored pointer cursor on tab headers (regression from #1372) #1380
  • HxToast - fix: --hx-toast-container-margin changed to padding for correct positioning #1381 by @alexax578 💕

Full Changelog: v4.24.1...v4.24.2