Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split mvu and component #255

Merged
merged 51 commits into from
Nov 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
482b9bc
Split mvu and component
edgarfgp Jul 21, 2024
c80c53c
Animatable, Element, StyledElement
edgarfgp Jul 27, 2024
ba87082
Update ComponentViews
edgarfgp Jul 29, 2024
7ad8e14
.
edgarfgp Aug 4, 2024
210357b
More ComponentViews
edgarfgp Sep 24, 2024
dab70ec
More ComponentViews
edgarfgp Sep 25, 2024
8065959
More ComponentViews
edgarfgp Sep 26, 2024
15c58f8
MvuViews
edgarfgp Sep 28, 2024
8130e68
WIP
edgarfgp Sep 29, 2024
d961022
Playground finally compiling
edgarfgp Oct 26, 2024
7d054c0
format code
edgarfgp Oct 26, 2024
4fc7b93
Playground samples
edgarfgp Oct 26, 2024
cd96941
Clean up MvuViews
edgarfgp Oct 26, 2024
2908215
Update GalleryApp and Mvu views
edgarfgp Oct 27, 2024
e82ffe7
Update
edgarfgp Oct 27, 2024
724b1a3
Update ColorPicker control
edgarfgp Oct 28, 2024
b0060d4
Update DataGrid
edgarfgp Oct 28, 2024
f80d553
Use 3.0.0-pre7
edgarfgp Oct 28, 2024
e371dac
Update ItemRepeater
edgarfgp Oct 29, 2024
d6c2530
Update TreeDataGrid
edgarfgp Oct 29, 2024
6e91d73
RenderDemo working
edgarfgp Oct 31, 2024
264a493
ComponentViews + format
edgarfgp Oct 31, 2024
fe1925e
.
edgarfgp Nov 2, 2024
d07f4ea
.
edgarfgp Nov 2, 2024
ad1efb3
.
edgarfgp Nov 2, 2024
8566186
.
edgarfgp Nov 3, 2024
5f4ae40
.
edgarfgp Nov 3, 2024
02433a2
.
edgarfgp Nov 3, 2024
bc5c84c
.
edgarfgp Nov 3, 2024
534ed28
.
edgarfgp Nov 3, 2024
5690130
.
edgarfgp Nov 3, 2024
cd6f88e
format code
edgarfgp Nov 3, 2024
4855716
Merge branch 'main' into split-mvu-and-component
edgarfgp Nov 3, 2024
65f532f
Remove local Fabulous ref
edgarfgp Nov 3, 2024
b98229c
Component samples
edgarfgp Nov 3, 2024
200ffd5
.
edgarfgp Nov 4, 2024
f185463
.
edgarfgp Nov 4, 2024
eca7207
.
edgarfgp Nov 4, 2024
75ea5eb
.
edgarfgp Nov 4, 2024
13785e3
.
edgarfgp Nov 4, 2024
d79ace2
.
edgarfgp Nov 4, 2024
6fc5287
.
edgarfgp Nov 4, 2024
6855de2
.
edgarfgp Nov 4, 2024
ff40af8
format code
edgarfgp Nov 4, 2024
eb8860b
use Fabulous pre 8
edgarfgp Nov 7, 2024
f9040b2
.
edgarfgp Nov 7, 2024
1519870
.
edgarfgp Nov 7, 2024
5331255
.
edgarfgp Nov 8, 2024
33592d6
.
edgarfgp Nov 8, 2024
8ab0979
Fix RenderDemo
edgarfgp Nov 9, 2024
2082e92
Update FabulousAppBuilder
edgarfgp Nov 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Fabulous" Version="3.0.0-pre5" />
<PackageVersion Include="Fabulous" Version="3.0.0-pre9" />
<PackageVersion Include="FsCheck.NUnit" Version="2.16.4" />
<PackageVersion Include="FSharp.Core" Version="8.0.301" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
Expand Down
14 changes: 14 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorPicker.Components.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace Fabulous.Avalonia

open Avalonia.Media
open Fabulous
open Fabulous.Avalonia

[<AutoOpen>]
module ComponentColorPickerBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorPicker widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPicker(color: Color, fn: Color -> unit) =
WidgetBuilder<'msg, IFabColorPicker>(ColorPicker.WidgetKey, ComponentColorView.ColorChanged.WithValue(ComponentValueEventData.create color fn))
15 changes: 15 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorPicker.Mvu.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace Fabulous.Avalonia

open Avalonia.Media
open Fabulous
open Fabulous.Avalonia


[<AutoOpen>]
module MvuColorPickerBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorPicker widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPicker(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorPicker>(ColorPicker.WidgetKey, MvuColorView.ColorChanged.WithValue(ValueEventData.create color fn))
8 changes: 1 addition & 7 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorPicker.fs
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,9 @@ module ColorPickerBuilders =

/// <summary>Creates a ColorPicker widget.</summary>
/// <param name="color">The Color value.</param>
static member ColorPicker<'msg>(color: Color) =
static member ColorPicker(color: Color) =
WidgetBuilder<'msg, IFabColorPicker>(ColorPicker.WidgetKey, AttributesBundle(StackList.one(ColorView.Color.WithValue(color)), ValueNone, ValueNone))

/// <summary>Creates a ColorPicker widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPicker(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorPicker>(ColorPicker.WidgetKey, ColorView.ColorChanged.WithValue(ValueEventData.create color fn))

type ColorPickerModifiers =
/// <summary>Link a ViewRef to access the direct ColorPicker control instance</summary>
/// <param name="this">Current widget</param>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Fabulous.Avalonia

open Avalonia.Controls
open Avalonia.Controls.Primitives
open Fabulous
open Fabulous.Avalonia

module ComponentColorPreviewer =
let ColorChanged =
Attributes.defineEventNoDispatch "ColorPreviewer_ColorChanged" (fun target -> (target :?> ColorPreviewer).ColorChanged)

[<AutoOpen>]
module ComponentColorPreviewerBuilders =
type Fabulous.Avalonia.View with

/// <summary>Creates a ColorPreviewer widget.</summary>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPreviewer(fn: ColorChangedEventArgs -> unit) =
WidgetBuilder<'msg, IFabColorPreviewer>(ColorPreviewer.WidgetKey, ComponentColorPreviewer.ColorChanged.WithValue(fn))
18 changes: 18 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorPreviewer.Mvu.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace Fabulous.Avalonia

open Avalonia.Controls
open Avalonia.Controls.Primitives
open Fabulous
open Fabulous.Avalonia

module MvuColorPreviewer =
let ColorChanged =
Attributes.defineEvent "ColorPreviewer_ColorChanged" (fun target -> (target :?> ColorPreviewer).ColorChanged)

[<AutoOpen>]
module MvuColorPreviewerBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorPreviewer widget.</summary>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPreviewer(fn: ColorChangedEventArgs -> 'msg) =
WidgetBuilder<'msg, IFabColorPreviewer>(ColorPreviewer.WidgetKey, MvuColorPreviewer.ColorChanged.WithValue(fn))
12 changes: 2 additions & 10 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorPreviewer.fs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
namespace Fabulous.Avalonia

open System.Runtime.CompilerServices
open Avalonia.Controls
open Avalonia.Controls.Primitives
open Avalonia.Media
open Fabulous
Expand All @@ -20,9 +19,6 @@ module ColorPreviewer =
let IsAccentColorsVisible =
Attributes.defineAvaloniaPropertyWithEquality ColorPreviewer.IsAccentColorsVisibleProperty

let ColorChanged =
Attributes.defineEvent "ColorPreviewer_ColorChanged" (fun target -> (target :?> ColorPreviewer).ColorChanged)

[<AutoOpen>]
module ColorPreviewerBuilders =
type Fabulous.Avalonia.View with
Expand All @@ -31,10 +27,6 @@ module ColorPreviewerBuilders =
static member ColorPreviewer() =
WidgetBuilder<'msg, IFabColorPreviewer>(ColorPreviewer.WidgetKey, AttributesBundle(StackList.empty(), ValueNone, ValueNone))

/// <summary>Creates a ColorPreviewer widget.</summary>
/// <param name="fn">Raised when the color changes.</param>
static member ColorPreviewer(fn: ColorChangedEventArgs -> 'msg) =
WidgetBuilder<'msg, IFabColorPreviewer>(ColorPreviewer.WidgetKey, ColorPreviewer.ColorChanged.WithValue(fn))

type ColorPreviewerModifiers =
/// <summary>Link a ViewRef to access the direct ColorSlider control instance</summary>
Expand All @@ -48,12 +40,12 @@ type ColorPreviewerModifiers =
/// <param name="this">Current widget.</param>
/// <param name="value">The HsvColor value.</param>
[<Extension>]
static member inline hsvColor(this: WidgetBuilder<'msg, IFabColorPreviewer>, value: HsvColor) =
static member inline hsvColor(this: WidgetBuilder<'msg, #IFabColorPreviewer>, value: HsvColor) =
this.AddScalar(ColorPreviewer.HsvColor.WithValue(value))

/// <summary>Set the IsAccentColorsVisible property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The IsAccentColorsVisible value.</param>
[<Extension>]
static member inline isAccentColorsVisible(this: WidgetBuilder<'msg, IFabColorPreviewer>, value: bool) =
static member inline isAccentColorsVisible(this: WidgetBuilder<'msg, #IFabColorPreviewer>, value: bool) =
this.AddScalar(ColorPreviewer.IsAccentColorsVisible.WithValue(value))
19 changes: 19 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorSlider.Components.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Fabulous.Avalonia

open Avalonia.Controls.Primitives
open Avalonia.Media
open Fabulous
open Fabulous.Avalonia

module ComponentColorSlider =
let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEventNoDispatch' "ColorSlider_ColorChanged" ColorSlider.ColorProperty

[<AutoOpen>]
module ComponentColorSliderBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorSlider widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSlider(color: Color, fn: Color -> unit) =
WidgetBuilder<'msg, IFabColorSlider>(ColorSlider.WidgetKey, ComponentColorSlider.ColorChanged.WithValue(ComponentValueEventData.create color fn))
20 changes: 20 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorSlider.Mvu.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace Fabulous.Avalonia

open Avalonia.Controls.Primitives
open Avalonia.Media
open Fabulous
open Fabulous.Avalonia
open Fabulous.StackAllocatedCollections.StackList

module MvuColorSlider =
let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEvent' "ColorSlider_ColorChanged" ColorSlider.ColorProperty

[<AutoOpen>]
module MvuColorSliderBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorSlider widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSlider(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorSlider>(ColorSlider.WidgetKey, MvuColorSlider.ColorChanged.WithValue(ValueEventData.create color fn))
21 changes: 6 additions & 15 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorSlider.fs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ module ColorSlider =
let IsRoundingEnabled =
Attributes.defineAvaloniaPropertyWithEquality ColorSlider.IsRoundingEnabledProperty

let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEvent' "ColorSlider_ColorChanged" ColorSlider.ColorProperty

[<AutoOpen>]
module ColorSliderBuilders =
type Fabulous.Avalonia.View with
Expand All @@ -53,12 +50,6 @@ module ColorSliderBuilders =
AttributesBundle(StackList.one(ColorSlider.Color.WithValue(color)), ValueNone, ValueNone)
)

/// <summary>Creates a ColorSlider widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSlider(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorSlider>(ColorSlider.WidgetKey, ColorSlider.ColorChanged.WithValue(ValueEventData.create color fn))

type ColorSliderModifiers =
/// <summary>Link a ViewRef to access the direct ColorSlider control instance</summary>
/// <param name="this">Current widget</param>
Expand All @@ -71,40 +62,40 @@ type ColorSliderModifiers =
/// <param name="this">Current widget.</param>
/// <param name="value">The Components value.</param>
[<Extension>]
static member inline colorComponent(this: WidgetBuilder<'msg, IFabColorSlider>, value: ColorComponent) =
static member inline colorComponent(this: WidgetBuilder<'msg, #IFabColorSlider>, value: ColorComponent) =
this.AddScalar(ColorSlider.ColorComponent.WithValue(value))

/// <summary>Set the ColorModel property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The Components value.</param>
[<Extension>]
static member inline colorModel(this: WidgetBuilder<'msg, IFabColorSlider>, value: ColorModel) =
static member inline colorModel(this: WidgetBuilder<'msg, #IFabColorSlider>, value: ColorModel) =
this.AddScalar(ColorSlider.ColorModel.WithValue(value))

/// <summary>Set the HsvColor property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The HsvColor value.</param>
[<Extension>]
static member inline hsvColor(this: WidgetBuilder<'msg, IFabColorSlider>, value: HsvColor) =
static member inline hsvColor(this: WidgetBuilder<'msg, #IFabColorSlider>, value: HsvColor) =
this.AddScalar(ColorSlider.HsvColor.WithValue(value))

/// <summary>Set the IsAlphaVisible property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The IsAlphaVisible value.</param>
[<Extension>]
static member inline isAlphaVisible(this: WidgetBuilder<'msg, IFabColorSlider>, value: bool) =
static member inline isAlphaVisible(this: WidgetBuilder<'msg, #IFabColorSlider>, value: bool) =
this.AddScalar(ColorSlider.IsAlphaVisible.WithValue(value))

/// <summary>Set the IsPerceptive property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The IsPerceptive value.</param>
[<Extension>]
static member inline isPerceptive(this: WidgetBuilder<'msg, IFabColorSlider>, value: bool) =
static member inline isPerceptive(this: WidgetBuilder<'msg, #IFabColorSlider>, value: bool) =
this.AddScalar(ColorSlider.IsPerceptive.WithValue(value))

/// <summary>Set the IsRoundingEnabled property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The IsRoundingEnabled value.</param>
[<Extension>]
static member inline isRoundingEnabled(this: WidgetBuilder<'msg, IFabColorSlider>, value: bool) =
static member inline isRoundingEnabled(this: WidgetBuilder<'msg, #IFabColorSlider>, value: bool) =
this.AddScalar(ColorSlider.IsRoundingEnabled.WithValue(value))
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Fabulous.Avalonia

open Avalonia.Controls.Primitives
open Avalonia.Media
open Fabulous
open Fabulous.Avalonia

module ComponentColorSpectrum =
let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEventNoDispatch' "ColorSpectrum_ColorChanged" ColorSpectrum.ColorProperty

[<AutoOpen>]
module ComponentColorSpectrumBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorSpectrum widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSpectrum(color: Color, fn: Color -> unit) =
WidgetBuilder<'msg, IFabColorSpectrum>(
ColorSpectrum.WidgetKey,
ComponentColorSpectrum.ColorChanged.WithValue(ComponentValueEventData.create color fn)
)
19 changes: 19 additions & 0 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorSpectrum.Mvu.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Fabulous.Avalonia

open Avalonia.Controls.Primitives
open Avalonia.Media
open Fabulous
open Fabulous.Avalonia

module MvuColorSpectrum =
let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEvent' "ColorSpectrum_ColorChanged" ColorSpectrum.ColorProperty

[<AutoOpen>]
module MvuColorSpectrumBuilders =
type Fabulous.Avalonia.View with
/// <summary>Creates a ColorSpectrum widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSpectrum(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorSpectrum>(ColorSpectrum.WidgetKey, MvuColorSpectrum.ColorChanged.WithValue(ValueEventData.create color fn))
27 changes: 9 additions & 18 deletions extensions/Fabulous.Avalonia.ColorPicker/ColorSpectrum.fs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ module ColorSpectrum =
let Shape =
Attributes.defineAvaloniaPropertyWithEquality ColorSpectrum.ShapeProperty

let ColorChanged =
Attributes.defineAvaloniaPropertyWithChangedEvent' "ColorSpectrum_ColorChanged" ColorSpectrum.ColorProperty

[<AutoOpen>]
module ColorSpectrumBuilders =
type Fabulous.Avalonia.View with
Expand All @@ -57,18 +54,12 @@ module ColorSpectrumBuilders =

/// <summary>Creates a ColorSpectrum widget.</summary>
/// <param name="color">The Color value.</param>
static member ColorSpectrum<'msg>(color: Color) =
static member ColorSpectrum(color: Color) =
WidgetBuilder<'msg, IFabColorSpectrum>(
ColorSpectrum.WidgetKey,
AttributesBundle(StackList.one(ColorSpectrum.Color.WithValue(color)), ValueNone, ValueNone)
)

/// <summary>Creates a ColorSpectrum widget.</summary>
/// <param name="color">The Color value.</param>
/// <param name="fn">Raised when the color changes.</param>
static member ColorSpectrum(color: Color, fn: Color -> 'msg) =
WidgetBuilder<'msg, IFabColorSpectrum>(ColorSpectrum.WidgetKey, ColorSpectrum.ColorChanged.WithValue(ValueEventData.create color fn))

type ColorSpectrumModifiers =
/// <summary>Link a ViewRef to access the direct ColorSpectrum control instance</summary>
/// <param name="this">Current widget</param>
Expand All @@ -81,21 +72,21 @@ type ColorSpectrumModifiers =
/// <param name="this">Current widget.</param>
/// <param name="value">The Components value.</param>
[<Extension>]
static member inline components(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: ColorSpectrumComponents) =
static member inline components(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: ColorSpectrumComponents) =
this.AddScalar(ColorSpectrum.Components.WithValue(value))

/// <summary>Set the HsvColor property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The HsvColor value.</param>
[<Extension>]
static member inline hsvColor(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: HsvColor) =
static member inline hsvColor(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: HsvColor) =
this.AddScalar(ColorSpectrum.HsvColor.WithValue(value))

/// <summary>Set the MaxHue property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The MaxHue value.</param>
[<Extension>]
static member inline maxHue(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: int) =
static member inline maxHue(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: int) =
this.AddScalar(ColorSpectrum.MaxHue.WithValue(value))

/// <summary>Set the MaxSaturation property.</summary>
Expand All @@ -109,33 +100,33 @@ type ColorSpectrumModifiers =
/// <param name="this">Current widget.</param>
/// <param name="value">The MaxValue value.</param>
[<Extension>]
static member inline maxValue(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: int) =
static member inline maxValue(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: int) =
this.AddScalar(ColorSpectrum.MaxValue.WithValue(value))

/// <summary>Set the MinHue property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The MinHue value.</param>
[<Extension>]
static member inline minHue(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: int) =
static member inline minHue(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: int) =
this.AddScalar(ColorSpectrum.MinHue.WithValue(value))

/// <summary>Set the MinSaturation property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The MinSaturation value.</param>
[<Extension>]
static member inline minSaturation(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: int) =
static member inline minSaturation(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: int) =
this.AddScalar(ColorSpectrum.MinSaturation.WithValue(value))

/// <summary>Set the MinValue property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The MinValue value.</param>
[<Extension>]
static member inline minValue(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: int) =
static member inline minValue(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: int) =
this.AddScalar(ColorSpectrum.MinValue.WithValue(value))

/// <summary>Set the Shape property.</summary>
/// <param name="this">Current widget.</param>
/// <param name="value">The Shape value.</param>
[<Extension>]
static member inline shape(this: WidgetBuilder<'msg, IFabColorSpectrum>, value: ColorSpectrumShape) =
static member inline shape(this: WidgetBuilder<'msg, #IFabColorSpectrum>, value: ColorSpectrumShape) =
this.AddScalar(ColorSpectrum.Shape.WithValue(value))
Loading