CurrieTechnologies.Razor.PageVisibility 0.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package CurrieTechnologies.Razor.PageVisibility --version 0.1.0                
NuGet\Install-Package CurrieTechnologies.Razor.PageVisibility -Version 0.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CurrieTechnologies.Razor.PageVisibility" Version="0.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CurrieTechnologies.Razor.PageVisibility --version 0.1.0                
#r "nuget: CurrieTechnologies.Razor.PageVisibility, 0.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CurrieTechnologies.Razor.PageVisibility as a Cake Addin
#addin nuget:?package=CurrieTechnologies.Razor.PageVisibility&version=0.1.0

// Install CurrieTechnologies.Razor.PageVisibility as a Cake Tool
#tool nuget:?package=CurrieTechnologies.Razor.PageVisibility&version=0.1.0                

CurrieTechnologies.Razor.PageVisibility

This package provides Blazor applications with access to the browser's Page Visibility API

This package is for Server-side Blazor only. For Client-side Blazor use CurrieTechnologies.Blazor.PageVisibility

Usage

  1. In your Blazor app, add the CurrieTechnologies.Razor.PageVisibility NuGet package

    Install-Package CurrieTechnologies.Razor.PageVisibility
    
  2. In your Blazor app's Startup.cs, register the 'PageVisibilityService'.

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddPageVisibility();
        ...
    }
    
  3. Add this script tag in your root html file (Likely _Host.cshtml), right under the <script src="_framework/blazor.server.js"></script> tag.

<script src="_content/currietechnologiesrazorpagevisibility/pagevisibility.js"></script>
  1. Now you can inject the PageVisibilityService into any Blazor page and use it like this:

    @inject PageVisibilityService visibility
    
    <div>
      <ul>
        @foreach (var vs in viewStates)
        {
          <li>@vs</li>
        }
      </ul>
      @if (listenerId != Guid.Empty)
      {
        <button @onclick="@HandleUnsubscibe">Unsubscribe</button>
      }
      else
      {
        <button @onclick="@(async () => listenerId = await visibility.OnVisibilityChangeAsync(OnVisibilityChange, this))">
          Resubscribe
        </button>
      }
    
    </div>
    
    @code {
      private List<string> viewStates = new List<string>();
      private Guid listenerId = Guid.Empty;
    
      protected override async Task OnInitAsync()
      {
        viewStates.Add(await visibility.GetVisibilityStateAsync());
    
        listenerId = await visibility.OnVisibilityChangeAsync(OnVisibilityChange, this);
    
        await base.OnInitAsync();
      }
    
      Task OnVisibilityChange(VisibilityInfo visibilityInfo)
      {
        viewStates.Add(visibilityInfo.VisibilityState);
        return Task.CompletedTask;
      }
    
      async Task HandleUnsubscibe()
      {
        await visibility.RemoveVisibilityChangeCallbackAsync(listenerId);
        listenerId = Guid.Empty;
      }
    }
    
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 is compatible.  netcoreapp3.1 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 6,103 9/23/2019
0.4.0 307 9/5/2019
0.3.0 302 8/13/2019
0.2.0 296 7/24/2019
0.1.0 539 6/14/2019

Initila Release