Fable.HauntedPlugins
1.0.0-beta-001
Suggested Alternatives
Additional Details
This Virtual components via Haunted for Lit 2.0 don't work as expected and will not be supported, please check newer releases of Fable.Lit
This is a prerelease version of Fable.HauntedPlugins.
The owner has unlisted this package.
This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Fable.HauntedPlugins --version 1.0.0-beta-001
NuGet\Install-Package Fable.HauntedPlugins -Version 1.0.0-beta-001
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="Fable.HauntedPlugins" Version="1.0.0-beta-001" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Fable.HauntedPlugins --version 1.0.0-beta-001
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Fable.HauntedPlugins, 1.0.0-beta-001"
#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 Fable.HauntedPlugins as a Cake Addin
#addin nuget:?package=Fable.HauntedPlugins&version=1.0.0-beta-001&prerelease
// Install Fable.HauntedPlugins as a Cake Tool
#tool nuget:?package=Fable.HauntedPlugins&version=1.0.0-beta-001&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Fable.Haunted
Too stringy? check out vscode-template-fsharp-highlight for html highlight in VSCode
Check the library in action here
module Main
open Browser.Types
open Lit
open Fable.Haunted
open Fable.Haunted.Types
type EventTarget with
member this.Value = (this :?> HTMLInputElement).value
type Msg =
| Increment
| Decrement
| Reset
let private inner_component
(props: {| sample: string
property: string option |})
=
html $"""<p>An inner component! {props.sample} - {props.property}</p>"""
// defineComponent registers a Custom Element so you don't need to actually
// call this function inside any component, you can use the component itself
defineComponent "inner-component" (Haunted.Component(inner_component, {| observedAttributes = [| "sample" |] |}))
/// Virtual Components don't have a tag by themselves
/// but they allow you to have state in them
[<VirtualComponent>]
let virtual_component (props: {| sample: string |}) =
let state, setState = Haunted.useState "I'm so virtual!"
html
$"""
<div>
<p>A virtual component can keep its own state</p>
<input value={state} @keyup={fun (ev: Event) -> ev.target.Value |> setState}>
<p>External message: {props.sample}</p>
<p>Internal message: {state}</p>
</div>"""
// by itself lit-html functions are stateless
let private not_a_component () =
html $"""<div>A standard Lit Template!</div>"""
// we can use haunted to add state to our components
let private app () =
let reducer: Reducer<int, Msg> =
fun state action ->
match action with
| Increment -> state + 1
| Decrement -> state - 1
| Reset -> 0
let state, dispatch = Haunted.useReducer (reducer, 0)
let log =
Haunted.useCallback ((fun x -> printfn "%s" x), [| state |])
log $"{state}"
html
$"""
<h1>Hello, World!</h1>
<inner-component sample="lol" .property="{10}"></inner-component>
{virtual_component {| sample = "Hi from above!" |}}
{not_a_component ()}
<p>Counter: {state}</p>
<button @click="{fun _ -> dispatch Increment}">Increment</button>
<button @click="{fun _ -> dispatch Decrement}">Decrement</button>
<button @click="{fun _ -> dispatch Reset}">Reset</button>
"""
defineComponent "fable-app" (Haunted.Component app)
Product | Versions 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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Fable.AST (>= 3.1.0)
- FSharp.Core (>= 5.0.0)
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 |
---|