From 1bd127855ff3f08a134a135d625af51eedb4d320 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:05:27 +0200 Subject: [PATCH 01/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in EnumsNetDemoApp --- packages-demos/enums-net/Apps/EnumsNetDemoApp.cs | 2 +- packages-demos/enums-net/EnumsNetExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/enums-net/Apps/EnumsNetDemoApp.cs b/packages-demos/enums-net/Apps/EnumsNetDemoApp.cs index 02a54176..9950cd23 100644 --- a/packages-demos/enums-net/Apps/EnumsNetDemoApp.cs +++ b/packages-demos/enums-net/Apps/EnumsNetDemoApp.cs @@ -406,7 +406,7 @@ void RunFlagOperation(string operationName) | new Card( Layout.Vertical().Gap(2) | selectedDemo.ToSelectInput(new[] { "Enumeration", "StringFormatting", "FlagOperations", "Parsing" }.ToOptions()) - .Variant(SelectInputs.Toggle) + .Variant(SelectInputVariants.Toggle) | validationResult.Value) ); diff --git a/packages-demos/enums-net/EnumsNetExample.csproj b/packages-demos/enums-net/EnumsNetExample.csproj index 2adc8ce6..c7109aba 100644 --- a/packages-demos/enums-net/EnumsNetExample.csproj +++ b/packages-demos/enums-net/EnumsNetExample.csproj @@ -18,7 +18,7 @@ - + From 4b832d2b11642f646c5f9080ebfda12415a208e9 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:07:06 +0200 Subject: [PATCH 02/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in NodaTimeApp --- packages-demos/nodatime/Apps/NodaTimeApp.cs | 2 +- packages-demos/nodatime/NodaTimeExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/nodatime/Apps/NodaTimeApp.cs b/packages-demos/nodatime/Apps/NodaTimeApp.cs index c1f17848..de321f04 100644 --- a/packages-demos/nodatime/Apps/NodaTimeApp.cs +++ b/packages-demos/nodatime/Apps/NodaTimeApp.cs @@ -72,7 +72,7 @@ void UpdateTime(string tzId) // Ivy SearchSelect var tzSelect = tzState .ToSelectInput(tzOptions) - .Variant(SelectInputs.Select) + .Variant(SelectInputVariants.Select) .Placeholder("Search timezone...") .WithLabel("Timezone"); diff --git a/packages-demos/nodatime/NodaTimeExample.csproj b/packages-demos/nodatime/NodaTimeExample.csproj index f4b56548..fb3f9e07 100644 --- a/packages-demos/nodatime/NodaTimeExample.csproj +++ b/packages-demos/nodatime/NodaTimeExample.csproj @@ -14,7 +14,7 @@ - + From 74c01600a99b8fede77d51fc07abe8875eb6fe25 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:07:52 +0200 Subject: [PATCH 03/41] chore: update Ivy package reference to version 1.2.17 and modify event handler naming in CsvHelperApp --- packages-demos/csvhelper/Apps/CsvHelperApp.cs | 2 +- packages-demos/csvhelper/CsvHelperExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/csvhelper/Apps/CsvHelperApp.cs b/packages-demos/csvhelper/Apps/CsvHelperApp.cs index 652a45a9..030a1731 100644 --- a/packages-demos/csvhelper/Apps/CsvHelperApp.cs +++ b/packages-demos/csvhelper/Apps/CsvHelperApp.cs @@ -142,7 +142,7 @@ public class ProductModel .Icon(Icons.Plus) .Primary() .Width(Size.Full()) - .HandleClick(_ => isDialogOpen.Set(true)) + .OnClick(_ => isDialogOpen.Set(true)) | product.ToForm() .Remove(m => m.Id) diff --git a/packages-demos/csvhelper/CsvHelperExample.csproj b/packages-demos/csvhelper/CsvHelperExample.csproj index b42b89a3..f56f42cb 100644 --- a/packages-demos/csvhelper/CsvHelperExample.csproj +++ b/packages-demos/csvhelper/CsvHelperExample.csproj @@ -15,7 +15,7 @@ - + From 587a6db55f89b2f3d3f29ea8c78fb9c260cc48aa Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:08:37 +0200 Subject: [PATCH 04/41] chore: update Ivy package reference to version 1.2.17 and modify event handler naming in BarcodeLibApp --- packages-demos/barcodelib/Apps/BarcodeLibApp.cs | 4 ++-- packages-demos/barcodelib/BarcodelibExample.csproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages-demos/barcodelib/Apps/BarcodeLibApp.cs b/packages-demos/barcodelib/Apps/BarcodeLibApp.cs index e1d8dd46..217e36c9 100644 --- a/packages-demos/barcodelib/Apps/BarcodeLibApp.cs +++ b/packages-demos/barcodelib/Apps/BarcodeLibApp.cs @@ -54,9 +54,9 @@ private static readonly (string Label, Type Type)[] Symbologies = | typeDropDown | new Button(includeLabel.Value ? "Label: ON" : "Label: OFF") .Primary() - .HandleClick(() => includeLabel.Value = !includeLabel.Value) + .OnClick(() => includeLabel.Value = !includeLabel.Value) | new Button("Preview").Primary().Icon(Icons.Eye) - .HandleClick(() => + .OnClick(() => { if (string.IsNullOrWhiteSpace(text.Value)) { diff --git a/packages-demos/barcodelib/BarcodelibExample.csproj b/packages-demos/barcodelib/BarcodelibExample.csproj index dd206d32..b716c6dc 100644 --- a/packages-demos/barcodelib/BarcodelibExample.csproj +++ b/packages-demos/barcodelib/BarcodelibExample.csproj @@ -9,7 +9,7 @@ - + From 8fd5826c0f9dd6fb47a85233780282de655e37f3 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:10:07 +0200 Subject: [PATCH 05/41] chore: update Ivy package reference to version 1.2.17 and modify textarea input handling in ScribanApp --- packages-demos/scriban/Apps/ScribanApp.cs | 6 +++--- packages-demos/scriban/ScribanExample.csproj | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages-demos/scriban/Apps/ScribanApp.cs b/packages-demos/scriban/Apps/ScribanApp.cs index 8ebe200e..6a4f53f5 100644 --- a/packages-demos/scriban/Apps/ScribanApp.cs +++ b/packages-demos/scriban/Apps/ScribanApp.cs @@ -74,13 +74,13 @@ string GenerateOutput(string modelJson, string templateText, out string errorMsg var modelEditor = modelState.ToCodeInput().Language(Languages.Json).Height(Size.Fit()); var templateEditor = templateState.ToCodeInput().Language(Languages.Markdown).Height(Size.Fit()); var outputViewer = string.IsNullOrEmpty(outputState.Value) - ? outputState.ToTextAreaInput("Output will appear here after generation...").Disabled().Height(Size.Units(50)) - : outputState.ToTextAreaInput().Height(Size.Units(50)); + ? outputState.ToTextareaInput("Output will appear here after generation...").Disabled().Height(Size.Units(50)) + : outputState.ToTextareaInput().Height(Size.Units(50)); var generateBtn = new Button("Generate") .Primary() - .HandleClick(_ => + .OnClick(_ => { string error; var output = GenerateOutput(modelState.Value, templateState.Value, out error); diff --git a/packages-demos/scriban/ScribanExample.csproj b/packages-demos/scriban/ScribanExample.csproj index 11d18bd7..4b3c7839 100644 --- a/packages-demos/scriban/ScribanExample.csproj +++ b/packages-demos/scriban/ScribanExample.csproj @@ -15,7 +15,7 @@ - + From 570eedeb03cb37513bdfd45c5e17922c92f2a391 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:11:45 +0200 Subject: [PATCH 06/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in SmartFormatNetApp --- packages-demos/smartformat-net/Apps/SmartFormatNetApp.cs | 6 +++--- packages-demos/smartformat-net/SmartFormatNetExample.csproj | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages-demos/smartformat-net/Apps/SmartFormatNetApp.cs b/packages-demos/smartformat-net/Apps/SmartFormatNetApp.cs index 58b9f40e..a05c6e3a 100644 --- a/packages-demos/smartformat-net/Apps/SmartFormatNetApp.cs +++ b/packages-demos/smartformat-net/Apps/SmartFormatNetApp.cs @@ -67,7 +67,7 @@ void FormatString() | Text.Label("Examples") | selectedExampleIndex .ToSelectInput(exampleOptions) - .Variant(SelectInputs.Toggle) + .Variant(SelectInputVariants.Toggle) | Text.Label("Template") | templateInput @@ -83,8 +83,8 @@ void FormatString() .ShowCopyButton() .Height(Size.Fit()) - | new Button("Format String").HandleClick(new Action(FormatString)) - .HandleClick(new Action(FormatString)) + | new Button("Format String") + .OnClick(new Action(FormatString)) .Disabled(string.IsNullOrWhiteSpace(templateInput.Value) || string.IsNullOrWhiteSpace(jsonInput.Value)) .Width(Size.Full()) diff --git a/packages-demos/smartformat-net/SmartFormatNetExample.csproj b/packages-demos/smartformat-net/SmartFormatNetExample.csproj index eb259247..26b4438c 100644 --- a/packages-demos/smartformat-net/SmartFormatNetExample.csproj +++ b/packages-demos/smartformat-net/SmartFormatNetExample.csproj @@ -14,7 +14,7 @@ - + From 8c1b02dc70734699f782cd06e7edbfdf18b635b4 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:13:28 +0200 Subject: [PATCH 07/41] chore: update Ivy package reference to version 1.2.17 and refactor button event handlers in SnowflakeApp --- project-demos/snowflake/Apps/SnowflakeApps.cs | 14 +++++++------- project-demos/snowflake/SnowflakeExample.csproj | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/project-demos/snowflake/Apps/SnowflakeApps.cs b/project-demos/snowflake/Apps/SnowflakeApps.cs index 328ca769..d9cc2873 100644 --- a/project-demos/snowflake/Apps/SnowflakeApps.cs +++ b/project-demos/snowflake/Apps/SnowflakeApps.cs @@ -556,15 +556,15 @@ object BuildTabs(IState activeTab, bool isVerified) return Layout.Horizontal().Gap(2) | new Button("Settings").Icon(Icons.Settings) .Variant(activeTab.Value == 0 ? ButtonVariant.Primary : ButtonVariant.Outline) - .HandleClick(() => activeTab.Value = 0) + .OnClick(() => activeTab.Value = 0) | new Button("Database Explorer").Icon(Icons.Database) .Variant(activeTab.Value == 1 ? ButtonVariant.Primary : ButtonVariant.Outline) .Disabled(!isVerified) - .HandleClick(() => activeTab.Value = 1) + .OnClick(() => activeTab.Value = 1) | new Button("Brand Dashboard").Icon(Icons.ChartBar) .Variant(activeTab.Value == 2 ? ButtonVariant.Primary : ButtonVariant.Outline) .Disabled(!isVerified) - .HandleClick(() => activeTab.Value = 2); + .OnClick(() => activeTab.Value = 2); } object BuildSettingsTab( @@ -596,7 +596,7 @@ object BuildSettingsTab( ? new Button("Clear Credentials") .Icon(Icons.LogOut) .Variant(ButtonVariant.Secondary) - .HandleClick(_ => + .OnClick(_ => { account.Value = ""; user.Value = ""; @@ -609,7 +609,7 @@ object BuildSettingsTab( .Icon(Icons.Key) .Variant(ButtonVariant.Primary) .Disabled(isVerifying.Value) - .HandleClick(_ => + .OnClick(_ => { isDialogOpen.Value = true; verificationStatus.Value = null; @@ -1115,12 +1115,12 @@ private object BuildDataTabs(IState activeTab, TableInfo? tableInfo) var dataTab = new Button("Data") .Icon(Icons.Table) .Variant(activeTab.Value == 0 ? ButtonVariant.Primary : ButtonVariant.Outline) - .HandleClick(() => activeTab.Value = 0); + .OnClick(() => activeTab.Value = 0); var structureTab = new Button("Structure") .Icon(Icons.Layers) .Variant(activeTab.Value == 1 ? ButtonVariant.Primary : ButtonVariant.Outline) - .HandleClick(() => activeTab.Value = 1) + .OnClick(() => activeTab.Value = 1) .Disabled(tableInfo == null); return Layout.Horizontal().Gap(2) diff --git a/project-demos/snowflake/SnowflakeExample.csproj b/project-demos/snowflake/SnowflakeExample.csproj index a5eb331c..5ab6f681 100644 --- a/project-demos/snowflake/SnowflakeExample.csproj +++ b/project-demos/snowflake/SnowflakeExample.csproj @@ -16,7 +16,7 @@ - + From 0d362043bf75852d1f0c8d988789448f715085dd Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:19:44 +0200 Subject: [PATCH 08/41] chore: update Ivy package reference to version 1.2.17 and refactor button event handlers in SliplaneManage --- .../sliplane-manage/Apps/Views/DeployView.cs | 18 ++++---- .../Apps/Views/ProjectsView.cs | 46 +++++++++---------- .../sliplane-manage/Apps/Views/ServersView.cs | 2 +- .../Apps/Views/ServicesView.cs | 40 ++++++++-------- .../sliplane-manage/SliplaneManage.csproj | 2 +- 5 files changed, 54 insertions(+), 54 deletions(-) diff --git a/project-demos/sliplane-manage/Apps/Views/DeployView.cs b/project-demos/sliplane-manage/Apps/Views/DeployView.cs index 53352105..ab691cb6 100644 --- a/project-demos/sliplane-manage/Apps/Views/DeployView.cs +++ b/project-demos/sliplane-manage/Apps/Views/DeployView.cs @@ -185,7 +185,7 @@ await client.CreateServiceAsync(_apiToken, m.ProjectId, new TableCell(e.Key), new TableCell(e.Value ?? ""), new TableCell(new Button("Remove").Variant(ButtonVariant.Outline) - .HandleClick(_ => envList.Set(envList.Value.Where((_, j) => j != i).ToList()))) + .OnClick(_ => envList.Set(envList.Value.Where((_, j) => j != i).ToList()))) .Width(Size.Fit()))).ToArray(); object envTable = envDataRows.Length == 0 @@ -212,8 +212,8 @@ void SaveEnv() | addEnvKey.ToTextInput().Placeholder("Key (e.g. DATABASE_URL)") | addEnvValue.ToTextInput().Placeholder("Value")), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveEnv()), - new Button("Cancel").HandleClick(_ => showAddEnvDlg.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveEnv()), + new Button("Cancel").OnClick(_ => showAddEnvDlg.Set(false)) )).Width(Size.Units(220)); } @@ -239,8 +239,8 @@ void SaveVolume() | addVolumeId.ToSelectInput(volumeOptionsForDialog) | addMountPath.ToTextInput().Placeholder("Mount path (e.g. /data)")), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveVolume()), - new Button("Cancel").HandleClick(_ => showAddVolumeDlg.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveVolume()), + new Button("Cancel").OnClick(_ => showAddVolumeDlg.Set(false)) )).Width(Size.Units(220)); } @@ -254,7 +254,7 @@ void SaveVolume() Layout.Vertical() | envTable | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline) - .HandleClick(_ => showAddEnvDlg.Set(true))); + .OnClick(_ => showAddEnvDlg.Set(true))); var vols = serverVolumes.Value ?? new List(); var volItems = volumeMountsList.Value ?? new List<(string VolumeId, string MountPath)>(); @@ -270,7 +270,7 @@ void SaveVolume() new TableCell(volName), new TableCell(v.MountPath), new TableCell(new Button("Remove").Variant(ButtonVariant.Outline) - .HandleClick(_ => volumeMountsList.Set(volumeMountsList.Value.Where((_, j) => j != index).ToList()))) + .OnClick(_ => volumeMountsList.Set(volumeMountsList.Value.Where((_, j) => j != index).ToList()))) .Width(Size.Fit())); }).ToArray(); object volTableContent = volDataRows.Length == 0 @@ -282,11 +282,11 @@ void SaveVolume() Layout.Vertical() | volTableContent | new Button("Add volume").Icon(Icons.Plus).Variant(ButtonVariant.Outline) - .HandleClick(_ => showAddVolumeDlg.Set(true))); + .OnClick(_ => showAddVolumeDlg.Set(true))); var actionsRow = Layout.Horizontal() | new Button("Deploy").Icon(Icons.Rocket).Primary().Large().Loading(loading) - .HandleClick(async _ => await HandleDeploy()) + .OnClick(async _ => await HandleDeploy()) | validationView; var card = new Card( diff --git a/project-demos/sliplane-manage/Apps/Views/ProjectsView.cs b/project-demos/sliplane-manage/Apps/Views/ProjectsView.cs index fb708c06..87336ff6 100644 --- a/project-demos/sliplane-manage/Apps/Views/ProjectsView.cs +++ b/project-demos/sliplane-manage/Apps/Views/ProjectsView.cs @@ -292,7 +292,7 @@ async Task LoadProjectsAsync() | servicesRow; return new Card(body) - .HandleClick(_ => selectedProject.Set(p)); + .OnClick(_ => selectedProject.Set(p)); }) .ToArray(); @@ -398,7 +398,7 @@ async Task DeleteProjectAsync() MenuItem.Default(Icons.FileText, "Logs").Tag("logs"), MenuItem.Default(Icons.Calendar, "Events").Tag("events") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); @@ -447,12 +447,12 @@ async Task DeleteProjectAsync() body: new DialogBody(body), footer: new DialogFooter( new Button("Cancel") - .HandleClick(_ => selectedProject.Set((SliplaneProject?)null)) + .OnClick(_ => selectedProject.Set((SliplaneProject?)null)) .Secondary(), new Button("Create service") .Icon(Icons.Plus) .Primary() - .HandleClick(_ => createServiceSheetOpen.Set(true)), + .OnClick(_ => createServiceSheetOpen.Set(true)), new Button("Delete project", onClick: async _ => await DeleteProjectAsync()) .Icon(Icons.Trash) .Variant(ButtonVariant.Destructive) @@ -620,8 +620,8 @@ async Task DeleteAsync() var pauseLabel = isPausedStatus(full.Status) ? "Resume" : "Pause"; viewFooter = Layout.Horizontal() - | new Button("Edit").Icon(Icons.Pencil).Variant(ButtonVariant.Outline).HandleClick(_ => { selectedServiceForEdit.Set(full); editSheetOpen.Set(true); }) - | new Button(pauseLabel).Icon(isPausedStatus(full.Status) ? Icons.Play : Icons.Pause).Variant(ButtonVariant.Outline).Loading(viewSheetBusy.Value).HandleClick(async _ => await PauseUnpauseAsync()) + | new Button("Edit").Icon(Icons.Pencil).Variant(ButtonVariant.Outline).OnClick(_ => { selectedServiceForEdit.Set(full); editSheetOpen.Set(true); }) + | new Button(pauseLabel).Icon(isPausedStatus(full.Status) ? Icons.Play : Icons.Pause).Variant(ButtonVariant.Outline).Loading(viewSheetBusy.Value).OnClick(async _ => await PauseUnpauseAsync()) | new Button("Delete", onClick: async _ => await DeleteAsync()) .Icon(Icons.Trash).Variant(ButtonVariant.Destructive).Loading(viewSheetBusy.Value) .WithConfirm("Are you sure you want to delete this service?", "Delete service") @@ -668,7 +668,7 @@ async Task DeleteAsync() } } - var addProjectBtn = new Button("Add project").Icon(Icons.Plus).Large().Secondary().BorderRadius(BorderRadius.Full).HandleClick(_ => showAddProjectDialog.Set(true)); + var addProjectBtn = new Button("Add project").Icon(Icons.Plus).Large().Secondary().BorderRadius(BorderRadius.Full).OnClick(_ => showAddProjectDialog.Set(true)); var addProjectFloat = new FloatingPanel(addProjectBtn, Align.BottomRight).Offset(new Thickness(0, 0, 20, 10)); Dialog? addProjectDialog = null; @@ -711,8 +711,8 @@ async Task CreateProjectAsync() header: new DialogHeader("Add project"), body: new DialogBody(addProjectForm), footer: new DialogFooter( - new Button("Cancel").HandleClick(_ => showAddProjectDialog.Set(false)).Secondary(), - new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(addProjectBusy.Value).HandleClick(async _ => await CreateProjectAsync())) + new Button("Cancel").OnClick(_ => showAddProjectDialog.Set(false)).Secondary(), + new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(addProjectBusy.Value).OnClick(async _ => await CreateProjectAsync())) ).Width(Size.Units(120)); } @@ -904,7 +904,7 @@ void CloseSheet() return new TableRow( new TableCell(e.Key), new TableCell(e.Value ?? ""), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = envList.Value.Where((_, i) => i != index).ToList(); envList.Set(next); @@ -929,12 +929,12 @@ void CloseSheet() | healthcheck.ToTextInput().Placeholder("Health check path (e.g. /health)") | Text.H4("Environment variables") | envTableContent - | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddEnvDialog.Set(true)) + | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddEnvDialog.Set(true)) | (error.Value is { Length: > 0 } err ? (object)new Callout(err, variant: CalloutVariant.Error) : Layout.Vertical()); var footer = Layout.Horizontal() | new Button("Cancel", onClick: _ => CloseSheet()).Variant(ButtonVariant.Outline) - | new Button("Save").Icon(Icons.Check).Variant(ButtonVariant.Primary).Loading(busy.Value).HandleClick(async _ => await SaveAsync()); + | new Button("Save").Icon(Icons.Check).Variant(ButtonVariant.Primary).Loading(busy.Value).OnClick(async _ => await SaveAsync()); Dialog? addEnvDialog = null; if (showAddEnvDialog.Value) @@ -957,8 +957,8 @@ void SaveEnv() header: new DialogHeader("Add environment variable"), body: new DialogBody(envForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveEnv()), - new Button("Cancel").HandleClick(_ => showAddEnvDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveEnv()), + new Button("Cancel").OnClick(_ => showAddEnvDialog.Set(false)) )).Width(Size.Units(220)); } @@ -1134,7 +1134,7 @@ void CloseSheet() return new TableRow( new TableCell(e.Key), new TableCell(e.Value ?? ""), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = envList.Value.Where((_, i) => i != index).ToList(); envList.Set(next); @@ -1147,7 +1147,7 @@ void CloseSheet() var envSection = Layout.Vertical() | Text.H4("Environment variables") | envTableContent - | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddEnvDialog.Set(true)); + | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddEnvDialog.Set(true)); var vols = serverVolumes.Value ?? new List(); var volItems = volumeMountsList.Value ?? new List<(string VolumeId, string MountPath)>(); @@ -1163,7 +1163,7 @@ void CloseSheet() return new TableRow( new TableCell(volName), new TableCell(v.MountPath), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = volumeMountsList.Value.Where((_, i) => i != index).ToList(); volumeMountsList.Set(next); @@ -1176,7 +1176,7 @@ void CloseSheet() var volumesSection = Layout.Vertical() | Text.H4("Volumes (attach server volumes)") | volTableContent - | new Button("Add volume").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddVolumeDialog.Set(true)); + | new Button("Add volume").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddVolumeDialog.Set(true)); var errorBlock = error.Value is { Length: > 0 } err ? (object)new Callout(err, variant: CalloutVariant.Error) @@ -1193,7 +1193,7 @@ void CloseSheet() var footer = Layout.Horizontal() | new Button("Cancel", onClick: _ => CloseSheet()).Variant(ButtonVariant.Outline) - | new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(busy.Value).HandleClick(async _ => await CreateAsync()); + | new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(busy.Value).OnClick(async _ => await CreateAsync()); Dialog? addEnvDialog = null; if (showAddEnvDialog.Value) @@ -1216,8 +1216,8 @@ void SaveEnv() header: new DialogHeader("Add environment variable"), body: new DialogBody(envForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveEnv()), - new Button("Cancel").HandleClick(_ => showAddEnvDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveEnv()), + new Button("Cancel").OnClick(_ => showAddEnvDialog.Set(false)) )).Width(Size.Units(220)); } @@ -1242,8 +1242,8 @@ void SaveVolume() header: new DialogHeader("Add volume mount"), body: new DialogBody(volForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveVolume()), - new Button("Cancel").HandleClick(_ => showAddVolumeDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveVolume()), + new Button("Cancel").OnClick(_ => showAddVolumeDialog.Set(false)) )).Width(Size.Units(220)); } diff --git a/project-demos/sliplane-manage/Apps/Views/ServersView.cs b/project-demos/sliplane-manage/Apps/Views/ServersView.cs index b0977f4f..5cc3c2c7 100644 --- a/project-demos/sliplane-manage/Apps/Views/ServersView.cs +++ b/project-demos/sliplane-manage/Apps/Views/ServersView.cs @@ -164,7 +164,7 @@ async Task LoadServersAsync() | servicesRow | createdRow ) - .HandleClick(_ => showSheet(s)); + .OnClick(_ => showSheet(s)); }) .ToArray(); diff --git a/project-demos/sliplane-manage/Apps/Views/ServicesView.cs b/project-demos/sliplane-manage/Apps/Views/ServicesView.cs index 8e217025..ddf5bace 100644 --- a/project-demos/sliplane-manage/Apps/Views/ServicesView.cs +++ b/project-demos/sliplane-manage/Apps/Views/ServicesView.cs @@ -73,7 +73,7 @@ void ShowServiceSheet(string projectId, string projectName, SliplaneService svc) var headerRow = Layout.Horizontal() | Text.H2("Services"); - var addServiceBtn = new Button("Add service").Icon(Icons.Plus).HandleClick(_ => openCreateSheet()).Large().Secondary().BorderRadius(BorderRadius.Full); + var addServiceBtn = new Button("Add service").Icon(Icons.Plus).OnClick(_ => openCreateSheet()).Large().Secondary().BorderRadius(BorderRadius.Full); var addServiceFloat = new FloatingPanel(addServiceBtn, Align.BottomRight).Offset(new Thickness(0, 0, 20, 10)); object content; @@ -257,7 +257,7 @@ private static object[] BuildServiceCards( | statusRow | (openLinkRow ?? Layout.Vertical()); - return new Card(body).HandleClick(_ => showSheet(projectId, projectName, svc)); + return new Card(body).OnClick(_ => showSheet(projectId, projectName, svc)); }) .ToArray(); } @@ -372,8 +372,8 @@ async Task DeleteAsync() new EditServiceSheet(isOpen, _apiToken, projectId, projectName, service, _reloadCounter, _selection)); var footer = Layout.Horizontal() - | new Button("Edit").Icon(Icons.Pencil).Variant(ButtonVariant.Outline).HandleClick(_ => openEditSheet()) - | new Button(pauseLabel).Icon(isPaused ? Icons.Play : Icons.Pause).Variant(ButtonVariant.Outline).Loading(busy.Value).HandleClick(async _ => await PauseUnpauseAsync()) + | new Button("Edit").Icon(Icons.Pencil).Variant(ButtonVariant.Outline).OnClick(_ => openEditSheet()) + | new Button(pauseLabel).Icon(isPaused ? Icons.Play : Icons.Pause).Variant(ButtonVariant.Outline).Loading(busy.Value).OnClick(async _ => await PauseUnpauseAsync()) | new Button("Delete", onClick: async _ => await DeleteAsync()) .Icon(Icons.Trash).Variant(ButtonVariant.Destructive).Loading(busy.Value) .WithConfirm("Are you sure you want to delete this service?", "Delete service"); @@ -502,7 +502,7 @@ async Task SaveAsync() return new TableRow( new TableCell(e.Key), new TableCell(e.Value ?? ""), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = envList.Value.Where((_, i) => i != index).ToList(); envList.Set(next); @@ -527,12 +527,12 @@ async Task SaveAsync() | healthcheck.ToTextInput().Placeholder("Health check path (e.g. /health)") | Text.H4("Environment variables") | envTableContent - | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddEnvDialog.Set(true)) + | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddEnvDialog.Set(true)) | (error.Value is { Length: > 0 } err ? (object)new Callout(err, variant: CalloutVariant.Error) : Layout.Vertical()); var footer = Layout.Horizontal() - | new Button("Cancel").Variant(ButtonVariant.Outline).HandleClick(_ => _isOpen.Set(false)) - | new Button("Save").Icon(Icons.Check).Variant(ButtonVariant.Primary).Loading(busy.Value).HandleClick(async _ => await SaveAsync()); + | new Button("Cancel").Variant(ButtonVariant.Outline).OnClick(_ => _isOpen.Set(false)) + | new Button("Save").Icon(Icons.Check).Variant(ButtonVariant.Primary).Loading(busy.Value).OnClick(async _ => await SaveAsync()); Dialog? addEnvDialog = null; if (showAddEnvDialog.Value) @@ -555,8 +555,8 @@ void SaveEnv() header: new DialogHeader("Add environment variable"), body: new DialogBody(envForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveEnv()), - new Button("Cancel").HandleClick(_ => showAddEnvDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveEnv()), + new Button("Cancel").OnClick(_ => showAddEnvDialog.Set(false)) )).Width(Size.Units(220)); } @@ -772,7 +772,7 @@ async Task CreateAsync() return new TableRow( new TableCell(e.Key), new TableCell(e.Value ?? ""), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = envList.Value.Where((_, i) => i != index).ToList(); envList.Set(next); @@ -785,7 +785,7 @@ async Task CreateAsync() var envSection = Layout.Vertical() | Text.H4("Environment variables") | envTableContent - | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddEnvDialog.Set(true)); + | new Button("Add variable").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddEnvDialog.Set(true)); // Volumes: Table widget + Add button; dialog to add one mount var vols = serverVolumes.Value ?? new List(); @@ -802,7 +802,7 @@ async Task CreateAsync() return new TableRow( new TableCell(volName), new TableCell(v.MountPath), - new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).HandleClick(_ => + new TableCell(new Button("Remove").Variant(ButtonVariant.Outline).OnClick(_ => { var next = volumeMountsList.Value.Where((_, i) => i != index).ToList(); volumeMountsList.Set(next); @@ -815,7 +815,7 @@ async Task CreateAsync() var volumesSection = Layout.Vertical() | Text.H4("Volumes (attach server volumes)") | volTableContent - | new Button("Add volume").Icon(Icons.Plus).Variant(ButtonVariant.Outline).HandleClick(_ => showAddVolumeDialog.Set(true)); + | new Button("Add volume").Icon(Icons.Plus).Variant(ButtonVariant.Outline).OnClick(_ => showAddVolumeDialog.Set(true)); var errorBlock = error.Value is { Length: > 0 } err ? (object)new Callout(err, variant: CalloutVariant.Error) @@ -831,8 +831,8 @@ async Task CreateAsync() | errorBlock; var footer = Layout.Horizontal() - | new Button("Cancel").Variant(ButtonVariant.Outline).HandleClick(_ => _isOpen.Set(false)) - | new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(busy.Value).HandleClick(async _ => await CreateAsync()); + | new Button("Cancel").Variant(ButtonVariant.Outline).OnClick(_ => _isOpen.Set(false)) + | new Button("Create").Icon(Icons.Plus).Variant(ButtonVariant.Primary).Loading(busy.Value).OnClick(async _ => await CreateAsync()); // Dialog: Add environment variable Dialog? addEnvDialog = null; @@ -856,8 +856,8 @@ void SaveEnv() header: new DialogHeader("Add environment variable"), body: new DialogBody(envForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveEnv()), - new Button("Cancel").HandleClick(_ => showAddEnvDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveEnv()), + new Button("Cancel").OnClick(_ => showAddEnvDialog.Set(false)) )).Width(Size.Units(220)); } @@ -883,8 +883,8 @@ void SaveVolume() header: new DialogHeader("Add volume mount"), body: new DialogBody(volForm), footer: new DialogFooter( - new Button("Save").Variant(ButtonVariant.Primary).HandleClick(_ => SaveVolume()), - new Button("Cancel").HandleClick(_ => showAddVolumeDialog.Set(false)) + new Button("Save").Variant(ButtonVariant.Primary).OnClick(_ => SaveVolume()), + new Button("Cancel").OnClick(_ => showAddVolumeDialog.Set(false)) )).Width(Size.Units(220)); } diff --git a/project-demos/sliplane-manage/SliplaneManage.csproj b/project-demos/sliplane-manage/SliplaneManage.csproj index 26a4b994..69642414 100644 --- a/project-demos/sliplane-manage/SliplaneManage.csproj +++ b/project-demos/sliplane-manage/SliplaneManage.csproj @@ -16,7 +16,7 @@ - + From 6a039633ab54f81b62ed49e754a17be8b4f4ea08 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:20:48 +0200 Subject: [PATCH 09/41] chore: update Ivy package reference to version 1.2.17 and refactor button event handlers in GitHubWrappedApp and RepositoriesSlide --- project-demos/github-wrapped/Apps/GitHubWrappedApp.cs | 4 ++-- project-demos/github-wrapped/Apps/Views/RepositoriesSlide.cs | 2 +- project-demos/github-wrapped/GitHubWrapped.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/project-demos/github-wrapped/Apps/GitHubWrappedApp.cs b/project-demos/github-wrapped/Apps/GitHubWrappedApp.cs index 3009d9ba..18aae657 100644 --- a/project-demos/github-wrapped/Apps/GitHubWrappedApp.cs +++ b/project-demos/github-wrapped/Apps/GitHubWrappedApp.cs @@ -69,7 +69,7 @@ public class GitHubWrappedApp : ViewBase .Icon(Icons.ChevronLeft) .Variant(ButtonVariant.Outline) .Disabled(selectedIndex.Value == 0) - .HandleClick(() => + .OnClick(() => { selectedIndex.Set(Math.Max(0, selectedIndex.Value - 1)); })) @@ -78,7 +78,7 @@ public class GitHubWrappedApp : ViewBase ? BuildShareButton(stats.Value) : new Button(selectedIndex.Value == 0 ? "Start the recap" : "Show me more") .Icon(Icons.ChevronRight, Align.Right) - .HandleClick(() => + .OnClick(() => { selectedIndex.Set(Math.Min(stepperItems.Length - 1, selectedIndex.Value + 1)); })))), diff --git a/project-demos/github-wrapped/Apps/Views/RepositoriesSlide.cs b/project-demos/github-wrapped/Apps/Views/RepositoriesSlide.cs index 3bf6d0f8..345c88c3 100644 --- a/project-demos/github-wrapped/Apps/Views/RepositoriesSlide.cs +++ b/project-demos/github-wrapped/Apps/Views/RepositoriesSlide.cs @@ -160,7 +160,7 @@ private object BuildRepoList(IClientProvider client, int maxCommits) | Text.Block($"{repo.CommitCount} commits").Muted()) .Title($"{repo.Name}") .Icon(Icons.Folder) - .HandleClick(_ => client.OpenUrl(repo.HtmlUrl)); + .OnClick(_ => client.OpenUrl(repo.HtmlUrl)); }); // Arrange cards: first row with 2 cards, second row with 3 cards diff --git a/project-demos/github-wrapped/GitHubWrapped.csproj b/project-demos/github-wrapped/GitHubWrapped.csproj index f80a02c2..58fc0083 100644 --- a/project-demos/github-wrapped/GitHubWrapped.csproj +++ b/project-demos/github-wrapped/GitHubWrapped.csproj @@ -15,7 +15,7 @@ - + From 658c64ae1dbc9ce23681264d8929887aac66701e Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:21:32 +0200 Subject: [PATCH 10/41] chore: update Ivy package reference to version 1.2.17 and refactor button event handlers in TestAuthApp --- project-demos/auth-github-test/Apps/TestAuthApp.cs | 4 ++-- project-demos/auth-github-test/Auth.GitHub.Test.csproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/project-demos/auth-github-test/Apps/TestAuthApp.cs b/project-demos/auth-github-test/Apps/TestAuthApp.cs index 4d3bdb39..ab065cdc 100644 --- a/project-demos/auth-github-test/Apps/TestAuthApp.cs +++ b/project-demos/auth-github-test/Apps/TestAuthApp.cs @@ -94,7 +94,7 @@ private object BuildRepositoriesButton(List? repos, IState isS : $"Repositories ({count})"; return new Button(buttonText, variant: ButtonVariant.Outline) - .HandleClick(_ => isSheetOpen.Set(true)) + .OnClick(_ => isSheetOpen.Set(true)) .Disabled(count == 0) .Width(Size.Full()); } @@ -125,7 +125,7 @@ private object BuildRepositoriesButton(List? repos, IState isS | details; return new Card(content) - .HandleClick(_ => client.OpenUrl(repo.HtmlUrl)); + .OnClick(_ => client.OpenUrl(repo.HtmlUrl)); }); var content = Layout.Vertical().Gap(3) diff --git a/project-demos/auth-github-test/Auth.GitHub.Test.csproj b/project-demos/auth-github-test/Auth.GitHub.Test.csproj index f8d8cb61..7d2a8179 100644 --- a/project-demos/auth-github-test/Auth.GitHub.Test.csproj +++ b/project-demos/auth-github-test/Auth.GitHub.Test.csproj @@ -19,7 +19,7 @@ - + From 0445d2fadc6b91f25ccb29e0da054b64028951ea Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:23:37 +0200 Subject: [PATCH 11/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in RestSharpApp --- packages-demos/restsharp/Apps/RestsharpApp.cs | 2 +- packages-demos/restsharp/RestSharpExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/restsharp/Apps/RestsharpApp.cs b/packages-demos/restsharp/Apps/RestsharpApp.cs index d7ae0041..4835fe36 100644 --- a/packages-demos/restsharp/Apps/RestsharpApp.cs +++ b/packages-demos/restsharp/Apps/RestsharpApp.cs @@ -134,7 +134,7 @@ private static string BuildUrlWithResourceId(string? resourceId) => .ToArray() ), new TextInput(url, placeholder: "URL") - .Variant(TextInputs.Url) + .Variant(TextInputVariants.Url) }; if (RequiresResourceId(method.Value)) diff --git a/packages-demos/restsharp/RestSharpExample.csproj b/packages-demos/restsharp/RestSharpExample.csproj index 08a58a90..56186654 100644 --- a/packages-demos/restsharp/RestSharpExample.csproj +++ b/packages-demos/restsharp/RestSharpExample.csproj @@ -15,7 +15,7 @@ - + From 810040f4db74bd07ca60fb32c6d5a9a28174062a Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:24:42 +0200 Subject: [PATCH 12/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in DiffPlexApp --- packages-demos/diffplex/Apps/DiffPlexApp.cs | 4 ++-- packages-demos/diffplex/DiffPlexExample.csproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages-demos/diffplex/Apps/DiffPlexApp.cs b/packages-demos/diffplex/Apps/DiffPlexApp.cs index 3f3402a3..bbc5acac 100644 --- a/packages-demos/diffplex/Apps/DiffPlexApp.cs +++ b/packages-demos/diffplex/Apps/DiffPlexApp.cs @@ -45,8 +45,8 @@ void compareDiff() // Comparison controls var controls = Layout.Horizontal().Gap(3) - | ignoreWhitespace.ToBoolInput(variant: BoolInputs.Checkbox).Label("Ignore Whitespace") - | ignoreCase.ToBoolInput(variant: BoolInputs.Checkbox).Label("Ignore Case") + | ignoreWhitespace.ToBoolInput(variant: BoolInputVariants.Checkbox).Label("Ignore Whitespace") + | ignoreCase.ToBoolInput(variant: BoolInputVariants.Checkbox).Label("Ignore Case") | new Button("Compare Texts", onClick: compareDiff).Primary().Icon(Icons.GitCompare) | new Button("Clear", onClick: () => diffResult.Value = null).Variant(ButtonVariant.Secondary).Icon(Icons.X); diff --git a/packages-demos/diffplex/DiffPlexExample.csproj b/packages-demos/diffplex/DiffPlexExample.csproj index ec8f8ce6..6ac795c0 100644 --- a/packages-demos/diffplex/DiffPlexExample.csproj +++ b/packages-demos/diffplex/DiffPlexExample.csproj @@ -18,7 +18,7 @@ - + From 7ebf8703a5da56b5fc380d937d5169b9845338d8 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:26:11 +0200 Subject: [PATCH 13/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in FluentDateTimeApp --- .../fluentdatetime/Apps/FluentDateTimeApp.cs | 10 +++++----- .../fluentdatetime/FluentDateTimeExample.csproj | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages-demos/fluentdatetime/Apps/FluentDateTimeApp.cs b/packages-demos/fluentdatetime/Apps/FluentDateTimeApp.cs index d5a1faeb..aaebb93e 100644 --- a/packages-demos/fluentdatetime/Apps/FluentDateTimeApp.cs +++ b/packages-demos/fluentdatetime/Apps/FluentDateTimeApp.cs @@ -22,21 +22,21 @@ public class FluentDateTimeApp : ViewBase | Layout.Vertical() | Text.Label("Base Date & Time") | baseDateTime.ToDateTimeInput() - .Variant(DateTimeInputs.DateTime) + .Variant(DateTimeInputVariants.DateTime) | Text.Label("Operation") - | operation.ToSelectInput(Operations).Variant(SelectInputs.Select) + | operation.ToSelectInput(Operations).Variant(SelectInputVariants.Select) | Text.Label("Time Unit") - | unit.ToSelectInput(TimeUnits).Variant(SelectInputs.Select) + | unit.ToSelectInput(TimeUnits).Variant(SelectInputVariants.Select) | Text.Label("Amount") | new NumberInput(amount) .Min(1) .Max(9999) | (Layout.Horizontal().Gap(4) | new Button("Calculate") - .HandleClick(() => showResult.Set(true)) + .OnClick(() => showResult.Set(true)) | new Button("Clear") .Secondary() - .HandleClick(() => { + .OnClick(() => { showResult.Set(false); operation.Set("Add"); unit.Set("Days"); diff --git a/packages-demos/fluentdatetime/FluentDateTimeExample.csproj b/packages-demos/fluentdatetime/FluentDateTimeExample.csproj index 0a8baa56..4989b017 100644 --- a/packages-demos/fluentdatetime/FluentDateTimeExample.csproj +++ b/packages-demos/fluentdatetime/FluentDateTimeExample.csproj @@ -14,7 +14,7 @@ - + From 4a0546c71782cc8ae8adf9400d67bf20209f4052 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:28:12 +0200 Subject: [PATCH 14/41] chore: update Ivy package reference to version 1.2.17 and refactor button event handlers in LlmTornadoApp and AgentChatBlade --- project-demos/llm-tornado-ollama/Apps/AgentChatBlade.cs | 2 +- project-demos/llm-tornado-ollama/Apps/LlmTornadoApp.cs | 4 ++-- project-demos/llm-tornado-ollama/LlmTornadoExample.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/project-demos/llm-tornado-ollama/Apps/AgentChatBlade.cs b/project-demos/llm-tornado-ollama/Apps/AgentChatBlade.cs index a1825e95..5bc461d1 100644 --- a/project-demos/llm-tornado-ollama/Apps/AgentChatBlade.cs +++ b/project-demos/llm-tornado-ollama/Apps/AgentChatBlade.cs @@ -161,7 +161,7 @@ private string GetOperationSymbol(string operation) var instructionsDialog = _instructionsForm.ToForm() - .Builder(m => m.Instructions, m => m.ToTextAreaInput(placeholder: "Enter instructions for the agent...") + .Builder(m => m.Instructions, m => m.ToTextareaInput(placeholder: "Enter instructions for the agent...") .Height(Size.Units(100))) .Label(m => m.Instructions, "Agent Instructions") .ToDialog(_showSettings, diff --git a/project-demos/llm-tornado-ollama/Apps/LlmTornadoApp.cs b/project-demos/llm-tornado-ollama/Apps/LlmTornadoApp.cs index f3777819..583efe51 100644 --- a/project-demos/llm-tornado-ollama/Apps/LlmTornadoApp.cs +++ b/project-demos/llm-tornado-ollama/Apps/LlmTornadoApp.cs @@ -126,7 +126,7 @@ async Task LoadModels() | new Button("Try It") .Variant(ButtonVariant.Primary) .Disabled(selectedModel.Value == null) - .HandleClick(_ => blades.Push(this, new SimpleChatBlade(ollamaUrl.Value, selectedModel.Value ?? "llama3.2:1b"), "Simple Chat"))) + .OnClick(_ => blades.Push(this, new SimpleChatBlade(ollamaUrl.Value, selectedModel.Value ?? "llama3.2:1b"), "Simple Chat"))) ) | new Card( Layout.Horizontal().Gap(3) @@ -138,7 +138,7 @@ async Task LoadModels() | new Button("Try It") .Variant(ButtonVariant.Primary) .Disabled(selectedModel.Value == null) - .HandleClick(_ => blades.Push(this, new AgentChatBlade(ollamaUrl.Value, selectedModel.Value ?? "llama3.2:1b"), "Agent Chat"))) + .OnClick(_ => blades.Push(this, new AgentChatBlade(ollamaUrl.Value, selectedModel.Value ?? "llama3.2:1b"), "Agent Chat"))) ); return new Fragment() diff --git a/project-demos/llm-tornado-ollama/LlmTornadoExample.csproj b/project-demos/llm-tornado-ollama/LlmTornadoExample.csproj index d236a9d1..ec9d29ac 100644 --- a/project-demos/llm-tornado-ollama/LlmTornadoExample.csproj +++ b/project-demos/llm-tornado-ollama/LlmTornadoExample.csproj @@ -16,7 +16,7 @@ - + From 653be2cb76f93adf2d48c554023046afb271123b Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:28:58 +0200 Subject: [PATCH 15/41] chore: update Ivy package reference to version 1.2.17 and modify textarea input handling in OpperaiChatExample --- project-demos/opperai/Apps/OpperaiChatExample.cs | 2 +- project-demos/opperai/OpperaiExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project-demos/opperai/Apps/OpperaiChatExample.cs b/project-demos/opperai/Apps/OpperaiChatExample.cs index 93fbb8c7..8f84cf7c 100644 --- a/project-demos/opperai/Apps/OpperaiChatExample.cs +++ b/project-demos/opperai/Apps/OpperaiChatExample.cs @@ -320,7 +320,7 @@ 2. Sign up or log in to your [account](https://platform.opper.ai/settings/detail settingsForm.ToForm() .Builder(e => e.ApiKey, e => e.ToPasswordInput(placeholder: "Enter your Opper.ai API key...")) .Label(e => e.ApiKey, "API Key:") - .Builder(e => e.Instructions, e => e.ToTextAreaInput(placeholder: "Enter instructions for the AI assistant...").Height(Size.Units(30))) + .Builder(e => e.Instructions, e => e.ToTextareaInput(placeholder: "Enter instructions for the AI assistant...").Height(Size.Units(30))) .Label(e => e.Instructions, "Instructions:") .ToDialog(isSettingsDialogOpen, title: "API key/Settings", diff --git a/project-demos/opperai/OpperaiExample.csproj b/project-demos/opperai/OpperaiExample.csproj index 1a058bd7..11ffd86e 100644 --- a/project-demos/opperai/OpperaiExample.csproj +++ b/project-demos/opperai/OpperaiExample.csproj @@ -14,7 +14,7 @@ - + From 35356ff6b2103dba1a20f7064f32a1a87cef800f Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:30:12 +0200 Subject: [PATCH 16/41] chore: update Ivy package reference to version 1.2.17 and adjust textarea input handling in AgentChatBlade --- project-demos/llm-tornado-openai/Apps/AgentChatBlade.cs | 2 +- project-demos/llm-tornado-openai/Apps/LlmTornadoApp.cs | 4 ++-- project-demos/llm-tornado-openai/LlmTornadoExample.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/project-demos/llm-tornado-openai/Apps/AgentChatBlade.cs b/project-demos/llm-tornado-openai/Apps/AgentChatBlade.cs index 175551c8..f0ae1004 100644 --- a/project-demos/llm-tornado-openai/Apps/AgentChatBlade.cs +++ b/project-demos/llm-tornado-openai/Apps/AgentChatBlade.cs @@ -161,7 +161,7 @@ private string GetOperationSymbol(string operation) var instructionsDialog = _instructionsForm.ToForm() - .Builder(m => m.Instructions, m => m.ToTextAreaInput(placeholder: "Enter instructions for the agent...") + .Builder(m => m.Instructions, m => m.ToTextareaInput(placeholder: "Enter instructions for the agent...") .Height(Size.Units(100))) .Label(m => m.Instructions, "Agent Instructions") .ToDialog(_showSettings, diff --git a/project-demos/llm-tornado-openai/Apps/LlmTornadoApp.cs b/project-demos/llm-tornado-openai/Apps/LlmTornadoApp.cs index 78f996e5..b1c19e62 100644 --- a/project-demos/llm-tornado-openai/Apps/LlmTornadoApp.cs +++ b/project-demos/llm-tornado-openai/Apps/LlmTornadoApp.cs @@ -32,7 +32,7 @@ public class MainMenuBlade : ViewBase | new Button("Try It") .Variant(ButtonVariant.Primary) .Disabled(string.IsNullOrWhiteSpace(selectedModel.Value) || string.IsNullOrWhiteSpace(openAiApiKey.Value)) - .HandleClick(_ => blades.Push(this, new SimpleChatBlade(openAiApiKey.Value, selectedModel.Value), "Simple Chat"))) + .OnClick(_ => blades.Push(this, new SimpleChatBlade(openAiApiKey.Value, selectedModel.Value), "Simple Chat"))) ) | new Card( Layout.Horizontal().Gap(3) @@ -44,7 +44,7 @@ public class MainMenuBlade : ViewBase | new Button("Try It") .Variant(ButtonVariant.Primary) .Disabled(string.IsNullOrWhiteSpace(selectedModel.Value) || string.IsNullOrWhiteSpace(openAiApiKey.Value)) - .HandleClick(_ => blades.Push(this, new AgentChatBlade(openAiApiKey.Value, selectedModel.Value), "Agent Chat"))) + .OnClick(_ => blades.Push(this, new AgentChatBlade(openAiApiKey.Value, selectedModel.Value), "Agent Chat"))) ); return new Fragment() diff --git a/project-demos/llm-tornado-openai/LlmTornadoExample.csproj b/project-demos/llm-tornado-openai/LlmTornadoExample.csproj index 7a4ced8b..6f17e2cf 100644 --- a/project-demos/llm-tornado-openai/LlmTornadoExample.csproj +++ b/project-demos/llm-tornado-openai/LlmTornadoExample.csproj @@ -16,7 +16,7 @@ - + From f1a3278b29094cf3d6a6fcfe8af94b346a85cdb0 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:33:19 +0200 Subject: [PATCH 17/41] chore: update Ivy package reference to version 1.2.17 and standardize textarea input handling across various components --- .../Apps/Views/CallRecordsApp.CallRecordDetailsBlade.cs | 2 +- .../Apps/Views/CustomersApp.CustomerLeadsCreateDialog.cs | 2 +- .../Apps/Views/CustomersApp.CustomerMessagesEditSheet.cs | 2 +- .../autodealer-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/LeadsApp.LeadEditSheet.cs | 2 +- .../Apps/Views/LeadsApp.LeadMessagesCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/LeadsApp.LeadMessagesEditSheet.cs | 2 +- .../autodealer-crm/Apps/Views/LeadsApp.LeadTasksEditSheet.cs | 2 +- .../Apps/Views/MediaApp.MediumMessagesCreateDialog.cs | 2 +- .../Apps/Views/MediaApp.MediumMessagesEditSheet.cs | 2 +- .../Apps/Views/MessagesApp.MessageCreateDialog.cs | 2 +- .../Apps/Views/MessagesApp.MessageDetailsBlade.cs | 2 +- .../autodealer-crm/Apps/Views/MessagesApp.MessageEditSheet.cs | 2 +- .../autodealer-crm/Apps/Views/TasksApp.TaskCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/TasksApp.TaskDetailsBlade.cs | 2 +- .../autodealer-crm/Apps/Views/TasksApp.TaskEditSheet.cs | 2 +- .../autodealer-crm/Apps/Views/UsersApp.UserLeadsCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/UsersApp.UserLeadsEditSheet.cs | 2 +- .../Apps/Views/UsersApp.UserMessagesCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/UsersApp.UserMessagesEditSheet.cs | 2 +- .../autodealer-crm/Apps/Views/UsersApp.UserTasksCreateDialog.cs | 2 +- .../autodealer-crm/Apps/Views/UsersApp.UserTasksEditSheet.cs | 2 +- project-demos/autodealer-crm/AutodealerCrm.csproj | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/project-demos/autodealer-crm/Apps/Views/CallRecordsApp.CallRecordDetailsBlade.cs b/project-demos/autodealer-crm/Apps/Views/CallRecordsApp.CallRecordDetailsBlade.cs index a0b21bcb..f6bce1a0 100644 --- a/project-demos/autodealer-crm/Apps/Views/CallRecordsApp.CallRecordDetailsBlade.cs +++ b/project-demos/autodealer-crm/Apps/Views/CallRecordsApp.CallRecordDetailsBlade.cs @@ -66,7 +66,7 @@ public class CallRecordDetailsBlade(int callRecordId) : ViewBase Sentiment = callRecordValue.Sentiment ?? "N/A" } .ToDetails() - .MultiLine(e => e.RecordingUrl) + .Multiline(e => e.RecordingUrl) .RemoveEmpty() .Builder(e => e.Id, e => e.CopyToClipboard()), footer: Layout.Horizontal().Gap(2).Align(Align.Right) diff --git a/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerLeadsCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerLeadsCreateDialog.cs index fae28a4e..0f576fea 100644 --- a/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerLeadsCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerLeadsCreateDialog.cs @@ -25,7 +25,7 @@ private record LeadCreateRequest return lead .ToForm() - .Builder(e => e.Notes, e => e.ToTextAreaInput()) + .Builder(e => e.Notes, e => e.ToTextareaInput()) .Builder(e => e.SourceChannelId, e => e.ToAsyncSelectInput(QuerySourceChannels, LookupSourceChannel, placeholder: "Select Source Channel")) .Builder(e => e.LeadIntentId, e => e.ToAsyncSelectInput(QueryLeadIntents, LookupLeadIntent, placeholder: "Select Lead Intent")) .Builder(e => e.LeadStageId, e => e.ToAsyncSelectInput(QueryLeadStages, LookupLeadStage, placeholder: "Select Lead Stage")) diff --git a/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerMessagesEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerMessagesEditSheet.cs index 9bd33a8e..f4958293 100644 --- a/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerMessagesEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/CustomersApp.CustomerMessagesEditSheet.cs @@ -18,7 +18,7 @@ public class CustomerMessagesEditSheet(IState isOpen, RefreshToken refresh return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.MessageChannelId, e => e.ToAsyncSelectInput(QueryMessageChannels, LookupMessageChannel, placeholder: "Select Message Channel")) .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Message Direction")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) diff --git a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs index 320b47c9..6f7ad382 100644 --- a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs @@ -42,7 +42,7 @@ private record LeadCreateRequest .Builder(e => e.LeadStageId, e => e.ToAsyncSelectInput(QueryLeadStages, LookupLeadStage, placeholder: "Select Lead Stage")) .Builder(e => e.ManagerId, e => e.ToAsyncSelectInput(QueryManagers, LookupManager, placeholder: "Select Manager")) .Builder(e => e.Priority, e => e.ToNumberInput()) - .Builder(e => e.Notes, e => e.ToTextAreaInput()) + .Builder(e => e.Notes, e => e.ToTextareaInput()) .ToDialog(isOpen, title: "Create Lead", submitTitle: "Create"); } diff --git a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadEditSheet.cs index abdcf4ff..d56469f8 100644 --- a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadEditSheet.cs @@ -24,7 +24,7 @@ public class LeadEditSheet(IState isOpen, RefreshToken refreshToken, int l .Builder(e => e.LeadIntentId, e => e.ToAsyncSelectInput(QueryLeadIntents, LookupLeadIntent, placeholder: "Select Lead Intent")) .Builder(e => e.LeadStageId, e => e.ToAsyncSelectInput(QueryLeadStages, LookupLeadStage, placeholder: "Select Lead Stage")) .Builder(e => e.Priority, e => e.ToNumberInput()) - .Builder(e => e.Notes, e => e.ToTextAreaInput()) + .Builder(e => e.Notes, e => e.ToTextareaInput()) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) .ToSheet(isOpen, "Edit Lead"); } diff --git a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesCreateDialog.cs index 4da033c0..8dc5f7cb 100644 --- a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesCreateDialog.cs @@ -42,7 +42,7 @@ private record MessageCreateRequest .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Message Direction")) .Builder(e => e.MessageTypeId, e => e.ToAsyncSelectInput(QueryMessageTypes, LookupMessageType, placeholder: "Select Message Type")) .Builder(e => e.MediaId, e => e.ToAsyncSelectInput(QueryMedia, LookupMedia, placeholder: "Select Media")) - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.SentAt, e => e.ToDateTimeInput()) .ToDialog(isOpen, title: "Create Message", submitTitle: "Create"); } diff --git a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesEditSheet.cs index b0e69d6a..b70cf55b 100644 --- a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadMessagesEditSheet.cs @@ -18,7 +18,7 @@ public class LeadMessagesEditSheet(IState isOpen, RefreshToken refreshToke return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.MessageChannelId, e => e.ToAsyncSelectInput(QueryMessageChannels, LookupMessageChannel, placeholder: "Select Message Channel")) .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Message Direction")) .Builder(e => e.MessageTypeId, e => e.ToAsyncSelectInput(QueryMessageTypes, LookupMessageType, placeholder: "Select Message Type")) diff --git a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadTasksEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadTasksEditSheet.cs index f9d9614e..a40a20fd 100644 --- a/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadTasksEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/LeadsApp.LeadTasksEditSheet.cs @@ -19,7 +19,7 @@ public class LeadTasksEditSheet(IState isOpen, RefreshToken refreshToken, return task .ToForm() .Builder(e => e.Title, e => e.ToTextInput()) - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.DueDate, e => e.ToDateInput()) .Builder(e => e.Completed, e => e.ToNumberInput()) .Builder(e => e.ManagerId, e => e.ToAsyncSelectInput(QueryManagers, LookupManager, placeholder: "Select Manager")) diff --git a/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesCreateDialog.cs index 215a092e..7b5e3009 100644 --- a/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesCreateDialog.cs @@ -37,7 +37,7 @@ private record MessageCreateRequest return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.CustomerId, e => e.ToNumberInput()) .Builder(e => e.LeadId, e => e.ToNumberInput()) .Builder(e => e.MessageChannelId, e => e.ToNumberInput()) diff --git a/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesEditSheet.cs index 1c7c82d9..f0d4bf08 100644 --- a/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/MediaApp.MediumMessagesEditSheet.cs @@ -18,7 +18,7 @@ public class MediumMessagesEditSheet(IState isOpen, RefreshToken refreshTo return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.MessageChannelId, e => e.ToAsyncSelectInput(QueryMessageChannels, LookupMessageChannel, placeholder: "Select Message Channel")) .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Message Direction")) .Builder(e => e.MessageTypeId, e => e.ToAsyncSelectInput(QueryMessageTypes, LookupMessageType, placeholder: "Select Message Type")) diff --git a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageCreateDialog.cs index 1f614594..58122236 100644 --- a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageCreateDialog.cs @@ -38,7 +38,7 @@ private record MessageCreateRequest .Builder(e => e.MessageChannelId, e => e.ToNumberInput()) .Builder(e => e.MessageDirectionId, e => e.ToNumberInput()) .Builder(e => e.MessageTypeId, e => e.ToNumberInput()) - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.SentAt, e => e.ToDateTimeInput()) .ToDialog(isOpen, title: "Create Message", submitTitle: "Create"); } diff --git a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageDetailsBlade.cs b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageDetailsBlade.cs index 5b9863b9..dff1f3e3 100644 --- a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageDetailsBlade.cs +++ b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageDetailsBlade.cs @@ -68,7 +68,7 @@ public class MessageDetailsBlade(int messageId) : ViewBase SentAt = messageValue.SentAt } .ToDetails() - .MultiLine(e => e.Content) + .Multiline(e => e.Content) .RemoveEmpty() .Builder(e => e.Id, e => e.CopyToClipboard()), footer: Layout.Horizontal().Gap(2).Align(Align.Right) diff --git a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageEditSheet.cs index 843ce89b..4b6006da 100644 --- a/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/MessagesApp.MessageEditSheet.cs @@ -18,7 +18,7 @@ public class MessageEditSheet(IState isOpen, RefreshToken refreshToken, in return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.SentAt, e => e.ToDateTimeInput()) .Builder(e => e.CustomerId, e => e.ToAsyncSelectInput(QueryCustomers, LookupCustomer, placeholder: "Select Customer")) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(QueryLeads, LookupLead, placeholder: "Select Lead")) diff --git a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskCreateDialog.cs index 30d7bf46..6cbe5d32 100644 --- a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskCreateDialog.cs @@ -39,7 +39,7 @@ private record TaskCreateRequest .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(QueryLeads, LookupLead, placeholder: "Select Lead")) .Builder(e => e.ManagerId, e => e.ToAsyncSelectInput(QueryManagers, LookupManager, placeholder: "Select Manager")) .Builder(e => e.Title, e => e.ToTextInput()) - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.DueDate, e => e.ToDateTimeInput()) .Builder(e => e.Completed, e => e.ToFeedbackInput()) .ToDialog(isOpen, title: "Create Task", submitTitle: "Create"); diff --git a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskDetailsBlade.cs b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskDetailsBlade.cs index 05d59c04..a395685d 100644 --- a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskDetailsBlade.cs +++ b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskDetailsBlade.cs @@ -61,7 +61,7 @@ public class TaskDetailsBlade(int taskId) : ViewBase Completed = taskValue.Completed == true ? "Yes" : "No" } .ToDetails() - .MultiLine(e => e.Description) + .Multiline(e => e.Description) .RemoveEmpty(), footer: Layout.Horizontal().Gap(2).Align(Align.Right) | dropDown diff --git a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskEditSheet.cs index b7512689..5461fef1 100644 --- a/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/TasksApp.TaskEditSheet.cs @@ -19,7 +19,7 @@ public class TaskEditSheet(IState isOpen, RefreshToken refreshToken, int t return task .ToForm() .Builder(e => e.Title, e => e.ToTextInput()) - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.DueDate, e => e.ToDateInput()) .Builder(e => e.Completed, e => e.ToSwitchInput()) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(QueryLeads, LookupLead, placeholder: "Select Lead")) diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsCreateDialog.cs index 25683d76..b9b7eafb 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsCreateDialog.cs @@ -39,7 +39,7 @@ private record LeadCreateRequest .Builder(e => e.LeadIntentId, e => e.ToAsyncSelectInput(QueryLeadIntents, LookupLeadIntent, placeholder: "Select Lead Intent")) .Builder(e => e.LeadStageId, e => e.ToAsyncSelectInput(QueryLeadStages, LookupLeadStage, placeholder: "Select Lead Stage")) .Builder(e => e.Priority, e => e.ToNumberInput()) - .Builder(e => e.Notes, e => e.ToTextAreaInput()) + .Builder(e => e.Notes, e => e.ToTextareaInput()) .ToDialog(isOpen, title: "Create Lead", submitTitle: "Create"); } diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsEditSheet.cs index 15477b77..e135fadc 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserLeadsEditSheet.cs @@ -18,7 +18,7 @@ public class UserLeadsEditSheet(IState isOpen, RefreshToken refreshToken, return lead .ToForm() - .Builder(e => e.Notes, e => e.ToTextAreaInput()) + .Builder(e => e.Notes, e => e.ToTextareaInput()) .Builder(e => e.Priority, e => e.ToNumberInput()) .Builder(e => e.CustomerId, e => e.ToAsyncSelectInput(QueryCustomers, LookupCustomer, placeholder: "Select Customer")) .Builder(e => e.ManagerId, e => e.ToAsyncSelectInput(QueryManagers, LookupManager, placeholder: "Select Manager")) diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesCreateDialog.cs index 58fd9c54..e0dc788c 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesCreateDialog.cs @@ -41,7 +41,7 @@ private record MessageCreateRequest .Builder(e => e.MessageChannelId, e => e.ToAsyncSelectInput(QueryMessageChannels, LookupMessageChannel, placeholder: "Select Channel")) .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Direction")) .Builder(e => e.MessageTypeId, e => e.ToAsyncSelectInput(QueryMessageTypes, LookupMessageType, placeholder: "Select Type")) - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.MediaId, e => e.ToAsyncSelectInput(QueryMedia, LookupMedia, placeholder: "Select Media")) .Builder(e => e.SentAt, e => e.ToDateTimeInput()) .ToDialog(isOpen, title: "Create Message", submitTitle: "Create"); diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesEditSheet.cs index 05b37131..69b7dac6 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserMessagesEditSheet.cs @@ -18,7 +18,7 @@ public class UserMessagesEditSheet(IState isOpen, RefreshToken refreshToke return message .ToForm() - .Builder(e => e.Content, e => e.ToTextAreaInput()) + .Builder(e => e.Content, e => e.ToTextareaInput()) .Builder(e => e.SentAt, e => e.ToDateTimeInput()) .Builder(e => e.MessageChannelId, e => e.ToAsyncSelectInput(QueryMessageChannels, LookupMessageChannel, placeholder: "Select Message Channel")) .Builder(e => e.MessageDirectionId, e => e.ToAsyncSelectInput(QueryMessageDirections, LookupMessageDirection, placeholder: "Select Message Direction")) diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksCreateDialog.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksCreateDialog.cs index 5aff4dcf..c0023a8b 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksCreateDialog.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksCreateDialog.cs @@ -31,7 +31,7 @@ private record TaskCreateRequest return taskState .ToForm() .Builder(e => e.Title, e => e.ToTextInput()) - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.DueDate, e => e.ToDateInput()) .Builder(e => e.Completed, e => e.ToFeedbackInput()) .ToDialog(isOpen, title: "Create Task", submitTitle: "Create"); diff --git a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksEditSheet.cs b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksEditSheet.cs index e59c0556..fbb7fb5b 100644 --- a/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksEditSheet.cs +++ b/project-demos/autodealer-crm/Apps/Views/UsersApp.UserTasksEditSheet.cs @@ -19,7 +19,7 @@ public class UserTasksEditSheet(IState isOpen, RefreshToken refreshToken, return task .ToForm() .Builder(e => e.Title, e => e.ToTextInput()) - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.DueDate, e => e.ToDateInput()) .Builder(e => e.Completed, e => e.ToNumberInput()) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(QueryLeads, LookupLead, placeholder: "Select Lead")) diff --git a/project-demos/autodealer-crm/AutodealerCrm.csproj b/project-demos/autodealer-crm/AutodealerCrm.csproj index e5bc591a..dac9f7a2 100644 --- a/project-demos/autodealer-crm/AutodealerCrm.csproj +++ b/project-demos/autodealer-crm/AutodealerCrm.csproj @@ -13,7 +13,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive From 5ca4183ad6aa2731b25ce1e03658538a97ee2e8c Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:34:27 +0200 Subject: [PATCH 18/41] chore: update Ivy package reference to version 1.2.17 and standardize textarea input handling in AgentChatView and AgentSettingsView --- .../microsoft-agent-framework/MicrosoftAgentFramework.csproj | 2 +- project-demos/microsoft-agent-framework/Views/AgentChatView.cs | 2 +- .../microsoft-agent-framework/Views/AgentSettingsView.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/project-demos/microsoft-agent-framework/MicrosoftAgentFramework.csproj b/project-demos/microsoft-agent-framework/MicrosoftAgentFramework.csproj index 74181cbe..5d094aac 100644 --- a/project-demos/microsoft-agent-framework/MicrosoftAgentFramework.csproj +++ b/project-demos/microsoft-agent-framework/MicrosoftAgentFramework.csproj @@ -15,7 +15,7 @@ - + diff --git a/project-demos/microsoft-agent-framework/Views/AgentChatView.cs b/project-demos/microsoft-agent-framework/Views/AgentChatView.cs index e95f2769..e456b7d6 100644 --- a/project-demos/microsoft-agent-framework/Views/AgentChatView.cs +++ b/project-demos/microsoft-agent-framework/Views/AgentChatView.cs @@ -259,7 +259,7 @@ QueryResult[]> QueryModels(IViewContext context, string query) .Label(e => e.Description, "Description") .Builder(e => e.OllamaModel,e => modelState.ToAsyncSelectInput(QueryModels, LookupModel, placeholder: "Search models...")) .Label(e => e.OllamaModel, "Ollama Model") - .Builder(e => e.Instructions, e => e.ToTextAreaInput(placeholder: "Instructions for the AI agent...") + .Builder(e => e.Instructions, e => e.ToTextareaInput(placeholder: "Instructions for the AI agent...") .Height(Size.Units(50))) .Label(e => e.Instructions, "Instructions (System Prompt)") .ToDialog(isEditDialogOpen, diff --git a/project-demos/microsoft-agent-framework/Views/AgentSettingsView.cs b/project-demos/microsoft-agent-framework/Views/AgentSettingsView.cs index 7a69497e..e65642eb 100644 --- a/project-demos/microsoft-agent-framework/Views/AgentSettingsView.cs +++ b/project-demos/microsoft-agent-framework/Views/AgentSettingsView.cs @@ -153,7 +153,7 @@ void CancelEdit() | modelInput) | (Layout.Vertical().Gap(1) | Text.Block("Instructions (System Prompt)").Bold() - | instState.ToTextAreaInput(placeholder: "Instructions for the AI agent...") + | instState.ToTextareaInput(placeholder: "Instructions for the AI agent...") .Height(Size.Units(50)) .Disabled(isReadOnly)) | (Layout.Vertical().Gap(1) From 2ee802e4dabfa212a8b20edeb434aa8926e7e7b7 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:35:44 +0200 Subject: [PATCH 19/41] chore: update Ivy package reference to version 1.2.17 and standardize textarea input handling in StartupEditSheet and StartupDealsEditSheet --- .../crm-vc/Apps/Views/StartupsApp.StartupDealsEditSheet.cs | 2 +- .../crm-vc/Apps/Views/StartupsApp.StartupDetailsBlade.cs | 2 +- project-demos/crm-vc/Apps/Views/StartupsApp.StartupEditSheet.cs | 2 +- project-demos/crm-vc/Vc.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDealsEditSheet.cs b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDealsEditSheet.cs index 1162bbba..b5491e1f 100644 --- a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDealsEditSheet.cs +++ b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDealsEditSheet.cs @@ -27,7 +27,7 @@ public class StartupDealsEditSheet(IState isOpen, RefreshToken refreshToke return deal .ToForm() .Builder(e => e.Amount, e => e.ToMoneyInput().Currency("USD")) - .Builder(e => e.Round, e => e.ToTextAreaInput()) + .Builder(e => e.Round, e => e.ToTextareaInput()) .Builder(e => e.DealDate, e => e.ToDateInput()) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt, e => e.StartupId) .ToSheet(isOpen, "Edit Deal"); diff --git a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDetailsBlade.cs b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDetailsBlade.cs index a6af1e91..f1a0adc9 100644 --- a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDetailsBlade.cs +++ b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupDetailsBlade.cs @@ -55,7 +55,7 @@ void OnDelete() FoundedAt = startupValue.FoundedAt?.ToString("yyyy-MM-dd") }.ToDetails() .RemoveEmpty() - .MultiLine(e => e.Description) + .Multiline(e => e.Description) .Builder(e => e.Id, e => e.CopyToClipboard()), footer: Layout.Horizontal().Width(Size.Full()).Gap(1).Align(Align.Right) | dropDown diff --git a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupEditSheet.cs b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupEditSheet.cs index ce248a0a..8cfe366d 100644 --- a/project-demos/crm-vc/Apps/Views/StartupsApp.StartupEditSheet.cs +++ b/project-demos/crm-vc/Apps/Views/StartupsApp.StartupEditSheet.cs @@ -26,7 +26,7 @@ public class StartupEditSheet(IState isOpen, RefreshToken refreshToken, in return startup .ToForm() - .Builder(e => e.Description, e => e.ToTextAreaInput()) + .Builder(e => e.Description, e => e.ToTextareaInput()) .Builder(e => e.FoundedAt, e => e.ToDateInput()) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) .ToSheet(isOpen, "Edit Startup"); diff --git a/project-demos/crm-vc/Vc.csproj b/project-demos/crm-vc/Vc.csproj index 90679f15..3bfeb130 100644 --- a/project-demos/crm-vc/Vc.csproj +++ b/project-demos/crm-vc/Vc.csproj @@ -13,7 +13,7 @@ - + From eb75a2359f93c0d785bf940068c83163711dc99b Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:40:47 +0200 Subject: [PATCH 20/41] chore: update Ivy package reference to version 1.2.17 and standardize OnSubmit event handling across various components --- .../Apps/Views/CompaniesApp.CompanyContactsBlade.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyContactsCreateDialog.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyContactsEditSheet.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyCreateDialog.cs | 4 ++-- .../Apps/Views/CompaniesApp.CompanyDealsBlade.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyDealsCreateDialog.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyDealsEditSheet.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyEditSheet.cs | 4 ++-- .../Apps/Views/CompaniesApp.CompanyLeadsBlade.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyLeadsCreateDialog.cs | 2 +- .../Apps/Views/CompaniesApp.CompanyLeadsEditSheet.cs | 2 +- .../Apps/Views/ContactsApp.ContactCreateDialog.cs | 2 +- .../Apps/Views/ContactsApp.ContactDealsBlade.cs | 2 +- .../Apps/Views/ContactsApp.ContactDealsCreateDialog.cs | 2 +- .../Apps/Views/ContactsApp.ContactDealsEditSheet.cs | 2 +- .../showcase-crm/Apps/Views/ContactsApp.ContactEditSheet.cs | 2 +- .../Apps/Views/ContactsApp.ContactLeadsBlade.cs | 2 +- .../Apps/Views/ContactsApp.ContactLeadsCreateDialog.cs | 2 +- .../Apps/Views/ContactsApp.ContactLeadsEditSheet.cs | 2 +- .../showcase-crm/Apps/Views/DealsApp.DealCreateDialog.cs | 2 +- .../showcase-crm/Apps/Views/DealsApp.DealEditSheet.cs | 6 +++--- .../showcase-crm/Apps/Views/DealsApp.DealsKanbanBlade.cs | 4 ++-- .../showcase-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs | 2 +- .../showcase-crm/Apps/Views/LeadsApp.LeadDealsBlade.cs | 2 +- .../Apps/Views/LeadsApp.LeadDealsCreateDialog.cs | 2 +- .../showcase-crm/Apps/Views/LeadsApp.LeadDealsEditSheet.cs | 2 +- .../showcase-crm/Apps/Views/LeadsApp.LeadEditSheet.cs | 2 +- .../showcase-crm/Apps/Views/UsersApp.UserCreateDialog.cs | 2 +- .../showcase-crm/Apps/Views/UsersApp.UserEditSheet.cs | 2 +- project-demos/showcase-crm/ShowcaseCrm.csproj | 2 +- 30 files changed, 35 insertions(+), 35 deletions(-) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsBlade.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsBlade.cs index d00674c8..6e0804f1 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsBlade.cs @@ -65,7 +65,7 @@ private record ContactTableRecord(int Id, string FirstName, string LastName, str MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsCreateDialog.cs index 7c064b1f..0abd87a6 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsCreateDialog.cs @@ -24,7 +24,7 @@ private record ContactCreateRequest return contact .ToForm() - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Contact", submitTitle: "Create"); async Task OnSubmit(ContactCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsEditSheet.cs index ed5b7a18..c6cb59d8 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyContactsEditSheet.cs @@ -27,7 +27,7 @@ public class CompanyContactsEditSheet(IState isOpen, RefreshToken refreshT .Builder(e => e.Email, e => e.ToEmailInput()) .Builder(e => e.Phone, e => e.ToTelInput()) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Contact"); async Task OnSubmit(Contact? request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyCreateDialog.cs index b4dfb554..0ff40b9a 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyCreateDialog.cs @@ -22,10 +22,10 @@ private record CompanyCreateRequest return company .ToForm() .Builder(e => e.Name, e => e.ToTextInput()) - .Builder(e => e.Address, e => e.ToTextAreaInput()) + .Builder(e => e.Address, e => e.ToTextareaInput()) .Builder(e => e.Phone, e => e.ToTelInput()) .Builder(e => e.Website, e => e.ToUrlInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Company", submitTitle: "Create"); async Task OnSubmit(CompanyCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsBlade.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsBlade.cs index 2a214f0f..118a0015 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsBlade.cs @@ -76,7 +76,7 @@ private record DealTableRecord(int Id, string Contact, string Stage, string Amou MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsCreateDialog.cs index 3f9f3364..26981c08 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsCreateDialog.cs @@ -32,7 +32,7 @@ private record DealCreateRequest .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(UseLeadSearchForCompany, UseLeadLookup, placeholder: "Select Lead")) .Builder(e => e.Amount, e => e.ToMoneyInput().Currency("USD")) .Builder(e => e.CloseDate, e => e.ToDateInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Deal", submitTitle: "Create"); async Task OnSubmit(DealCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsEditSheet.cs index e0252a16..ffa08811 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyDealsEditSheet.cs @@ -28,7 +28,7 @@ public class CompanyDealsEditSheet(IState isOpen, RefreshToken refreshToke .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(UseLeadSearch, UseLeadLookup, placeholder: "Select Lead")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Deal"); async Task OnSubmit(Deal? request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyEditSheet.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyEditSheet.cs index aba5a84b..a35b864e 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyEditSheet.cs @@ -23,12 +23,12 @@ public class CompanyEditSheet(IState isOpen, RefreshToken refreshToken, in return companyQuery.Value .ToForm() .Builder(e => e.Name, e => e.ToTextInput()) - .Builder(e => e.Address, e => e.ToTextAreaInput()) + .Builder(e => e.Address, e => e.ToTextareaInput()) .Builder(e => e.Phone, e => e.ToTelInput()) .Builder(e => e.Website, e => e.ToUrlInput()) .Place(e => e.Name, e => e.Address, e => e.Phone, e => e.Website) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Company"); async Task OnSubmit(Company? request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsBlade.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsBlade.cs index ce6e09c9..b8d72c2c 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsBlade.cs @@ -71,7 +71,7 @@ private record LeadTableRecord(int Id, string Status, string Source, string Crea MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsCreateDialog.cs index c75dc491..a5370997 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsCreateDialog.cs @@ -18,7 +18,7 @@ private record LeadCreateRequest return lead .ToForm() .Builder(e => e.StatusId, e => e.ToAsyncSelectInput(UseLeadStatusSearch, UseLeadStatusLookup, placeholder: "Select Status")) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Lead", submitTitle: "Create"); async Task OnSubmit(LeadCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsEditSheet.cs index 95312d8c..83a289a4 100644 --- a/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/CompaniesApp.CompanyLeadsEditSheet.cs @@ -27,7 +27,7 @@ public class CompanyLeadsEditSheet(IState isOpen, RefreshToken refreshToke .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Lead"); async Task OnSubmit(Lead? request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactCreateDialog.cs index 68fe6c39..10bec042 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactCreateDialog.cs @@ -26,7 +26,7 @@ private record ContactCreateRequest return contact .ToForm() .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Contact", submitTitle: "Create"); async Task OnSubmit(ContactCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsBlade.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsBlade.cs index 39f56d35..08c5c852 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsBlade.cs @@ -76,7 +76,7 @@ private record DealTableRecord(int Id, string Company, string Stage, string Amou MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsCreateDialog.cs index cf679372..4cb77579 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsCreateDialog.cs @@ -28,7 +28,7 @@ private record DealCreateRequest .Builder(e => e.StageId, e => e.ToAsyncSelectInput(UseStageSearch, UseStageLookup, placeholder: "Select Stage")) .Builder(e => e.Amount, e => e.ToMoneyInput().Currency("USD")) .Builder(e => e.CloseDate, e => e.ToDateInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Deal", submitTitle: "Create"); async Task OnSubmit(DealCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsEditSheet.cs index b8176579..7622a9c3 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactDealsEditSheet.cs @@ -26,7 +26,7 @@ public class ContactDealsEditSheet(IState isOpen, RefreshToken refreshToke .Builder(e => e.CloseDate, e => e.ToDateInput()) .Builder(e => e.StageId, e => e.ToAsyncSelectInput(UseStageSearch, UseStageLookup, placeholder: "Select Stage")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Deal"); async Task OnSubmit(Deal? request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactEditSheet.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactEditSheet.cs index ce8f1969..803a16b3 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactEditSheet.cs @@ -28,7 +28,7 @@ public class ContactEditSheet(IState isOpen, RefreshToken refreshToken, in .Builder(e => e.Phone, e => e.ToTelInput()) .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Contact"); async Task OnSubmit(Contact? request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsBlade.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsBlade.cs index 54d68cc3..42f4309a 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsBlade.cs @@ -72,7 +72,7 @@ private record LeadTableRecord(int Id, string Status, string Source, string Crea MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsCreateDialog.cs index c6df07dc..0e4fe25c 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsCreateDialog.cs @@ -21,7 +21,7 @@ private record LeadCreateRequest .ToForm() .Builder(e => e.StatusId, e => e.ToAsyncSelectInput(UseStatusSearch, UseStatusLookup, placeholder: "Select Status")) .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Lead", submitTitle: "Create"); async Task OnSubmit(LeadCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsEditSheet.cs index feaaf3a1..8b911493 100644 --- a/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/ContactsApp.ContactLeadsEditSheet.cs @@ -27,7 +27,7 @@ public class ContactLeadsEditSheet(IState isOpen, RefreshToken refreshToke .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Lead"); async Task OnSubmit(Lead? request) diff --git a/project-demos/showcase-crm/Apps/Views/DealsApp.DealCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/DealsApp.DealCreateDialog.cs index 165fc0d0..ffebc23e 100644 --- a/project-demos/showcase-crm/Apps/Views/DealsApp.DealCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/DealsApp.DealCreateDialog.cs @@ -54,7 +54,7 @@ private record DealCreateRequest .Builder(e => e.Amount, e => e.ToMoneyInput().Currency("USD")) .Builder(e => e.CloseDate, e => e.ToDateInput()) .Builder(e => e.StageId, e => e.ToAsyncSelectInput(UseStageSearch, UseStageLookup, placeholder: "Select Stage")) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Deal", submitTitle: "Create"); async Task OnSubmit(DealCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/DealsApp.DealEditSheet.cs b/project-demos/showcase-crm/Apps/Views/DealsApp.DealEditSheet.cs index bf4150f7..06c6bbcb 100644 --- a/project-demos/showcase-crm/Apps/Views/DealsApp.DealEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/DealsApp.DealEditSheet.cs @@ -29,7 +29,7 @@ public class DealEditSheet(IState isOpen, RefreshToken refreshToken, int d .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(UseLeadSearch, UseLeadLookup, placeholder: "Select Lead")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit); + .OnSubmit(OnSubmit); var (onSubmit, formView, validationView, loading) = formBuilder.UseForm(Context); @@ -47,13 +47,13 @@ public class DealEditSheet(IState isOpen, RefreshToken refreshToken, int d var footer = Layout.Horizontal() | new Button("Save").Variant(ButtonVariant.Primary).Loading(loading).Disabled(loading) - .HandleClick(async _ => + .OnClick(async _ => { if (await onSubmit()) isOpen.Set(false); }) | deleteBtn - | new Button("Cancel").Variant(ButtonVariant.Outline).HandleClick(_ => isOpen.Set(false)) + | new Button("Cancel").Variant(ButtonVariant.Outline).OnClick(_ => isOpen.Set(false)) | validationView; var layout = new FooterLayout(footer, formView); diff --git a/project-demos/showcase-crm/Apps/Views/DealsApp.DealsKanbanBlade.cs b/project-demos/showcase-crm/Apps/Views/DealsApp.DealsKanbanBlade.cs index 04cf6043..034f9b4e 100644 --- a/project-demos/showcase-crm/Apps/Views/DealsApp.DealsKanbanBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/DealsApp.DealsKanbanBlade.cs @@ -76,7 +76,7 @@ private record DealTableRecord(int Id, string CompanyName, string ContactName, s MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); @@ -109,7 +109,7 @@ private record DealTableRecord(int Id, string CompanyName, string ContactName, s content: deal.ToDetails() .Remove(x => x.Id) ) - .HandleClick(() => showSheet(deal.Id))) + .OnClick(() => showSheet(deal.Id))) .ColumnOrder(d => StageOrder(d.StageDescription)) .Width(Size.Full()) .HandleMove(moveData => diff --git a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs index ede09e69..232685b7 100644 --- a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadCreateDialog.cs @@ -25,7 +25,7 @@ private record LeadCreateRequest .Builder(e => e.CompanyId, e => e.ToAsyncSelectInput(UseCompanySearch, UseCompanyLookup, placeholder: "Select Company")) .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Builder(e => e.Source, e => e.ToTextInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Lead", submitTitle: "Create"); async Task OnSubmit(LeadCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsBlade.cs b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsBlade.cs index 45681c1b..4b79bce4 100644 --- a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsBlade.cs +++ b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsBlade.cs @@ -80,7 +80,7 @@ private record DealTableRecord(int Id, string Company, string Contact, string St MenuItem.Default(Icons.Pencil, "edit").Tag("edit"), MenuItem.Default(Icons.Trash2, "delete").Tag("delete") ) - .HandleRowAction(e => + .OnRowAction(e => { var args = e.Value; var tag = args.Tag?.ToString(); diff --git a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsCreateDialog.cs index cb8db1d4..901ed510 100644 --- a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsCreateDialog.cs @@ -31,7 +31,7 @@ private record DealCreateRequest .Builder(e => e.StageId, e => e.ToAsyncSelectInput(UseStageSearch, UseStageLookup, placeholder: "Select Stage")) .Builder(e => e.Amount, e => e.ToMoneyInput().Currency("USD")) .Builder(e => e.CloseDate, e => e.ToDateInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create Deal", submitTitle: "Create"); async Task OnSubmit(DealCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsEditSheet.cs b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsEditSheet.cs index 5bf391f1..a5d2824c 100644 --- a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadDealsEditSheet.cs @@ -29,7 +29,7 @@ public class LeadDealsEditSheet(IState isOpen, RefreshToken refreshToken, .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Builder(e => e.LeadId, e => e.ToAsyncSelectInput(UseLeadSearch, UseLeadLookup, placeholder: "Select Lead")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Deal"); async Task OnSubmit(Deal? request) diff --git a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadEditSheet.cs b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadEditSheet.cs index 81b0ec53..9e54c87a 100644 --- a/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/LeadsApp.LeadEditSheet.cs @@ -31,7 +31,7 @@ public class LeadEditSheet(IState isOpen, RefreshToken refreshToken, int l .Builder(e => e.ContactId, e => e.ToAsyncSelectInput(UseContactSearch, UseContactLookup, placeholder: "Select Contact")) .Builder(e => e.StatusId, e => e.ToAsyncSelectInput(UseStatusSearch, UseStatusLookup, placeholder: "Select Status")) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit Lead"); async Task OnSubmit(Lead? request) diff --git a/project-demos/showcase-crm/Apps/Views/UsersApp.UserCreateDialog.cs b/project-demos/showcase-crm/Apps/Views/UsersApp.UserCreateDialog.cs index 1f57db6a..7e13b6ec 100644 --- a/project-demos/showcase-crm/Apps/Views/UsersApp.UserCreateDialog.cs +++ b/project-demos/showcase-crm/Apps/Views/UsersApp.UserCreateDialog.cs @@ -19,7 +19,7 @@ private record UserCreateRequest return user .ToForm() .Builder(e => e.Email, e => e.ToEmailInput()) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToDialog(isOpen, title: "Create User", submitTitle: "Create"); async Task OnSubmit(UserCreateRequest request) diff --git a/project-demos/showcase-crm/Apps/Views/UsersApp.UserEditSheet.cs b/project-demos/showcase-crm/Apps/Views/UsersApp.UserEditSheet.cs index cad50259..68cc6559 100644 --- a/project-demos/showcase-crm/Apps/Views/UsersApp.UserEditSheet.cs +++ b/project-demos/showcase-crm/Apps/Views/UsersApp.UserEditSheet.cs @@ -25,7 +25,7 @@ public class UserEditSheet(IState isOpen, RefreshToken refreshToken, int u .Builder(e => e.Name, e => e.ToTextInput()) .Builder(e => e.Email, e => e.ToEmailInput()) .Remove(e => e.Id, e => e.CreatedAt, e => e.UpdatedAt) - .HandleSubmit(OnSubmit) + .OnSubmit(OnSubmit) .ToSheet(isOpen, "Edit User"); async Task OnSubmit(User? request) diff --git a/project-demos/showcase-crm/ShowcaseCrm.csproj b/project-demos/showcase-crm/ShowcaseCrm.csproj index bc2a7858..c547a5c9 100644 --- a/project-demos/showcase-crm/ShowcaseCrm.csproj +++ b/project-demos/showcase-crm/ShowcaseCrm.csproj @@ -13,7 +13,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive From e1ec22f5982690549ca892a614e7aeead1ad69cd Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:49:40 +0200 Subject: [PATCH 21/41] chore: update Ivy package reference to version 1.2.17 and standardize OnLinkClick event handling in CourseTemplate --- project-demos/course-template/CourseTemplate.csproj | 2 +- project-demos/course-template/Helpers/Generator/Program.cs | 4 ++-- project-demos/course-template/Regenerate.ps1 | 2 +- project-demos/course-template/Regenerate.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/project-demos/course-template/CourseTemplate.csproj b/project-demos/course-template/CourseTemplate.csproj index cc8f2382..e29c9c54 100644 --- a/project-demos/course-template/CourseTemplate.csproj +++ b/project-demos/course-template/CourseTemplate.csproj @@ -13,7 +13,7 @@ - + diff --git a/project-demos/course-template/Helpers/Generator/Program.cs b/project-demos/course-template/Helpers/Generator/Program.cs index 5225b348..4db83958 100644 --- a/project-demos/course-template/Helpers/Generator/Program.cs +++ b/project-demos/course-template/Helpers/Generator/Program.cs @@ -173,7 +173,7 @@ static async Task ConvertMarkdownAsync(string name, string relativePath, string if (document.Any(e => e is not YamlFrontMatterBlock)) { codeBuilder.AppendTab(2).AppendLine("var appDescriptor = this.UseService();"); - codeBuilder.AppendTab(2).AppendLine("var onLinkClick = this.UseLinks();"); + codeBuilder.AppendTab(2).AppendLine("var OnLinkClick = this.UseLinks();"); codeBuilder.AppendTab(2).AppendLine("var article = new Article().ShowToc(true).ShowFooter(true)"); // Simplified markdown handling - just render everything as markdown @@ -190,7 +190,7 @@ static async Task ConvertMarkdownAsync(string name, string relativePath, string var content = contentBuilder.ToString().Trim(); if (!string.IsNullOrEmpty(content)) { - AppendAsMultiLineString(3, content, codeBuilder, "| new Markdown(", ").HandleLinkClick(onLinkClick)"); + AppendAsMultiLineString(3, content, codeBuilder, "| new Markdown(", ").OnLinkClick(OnLinkClick)"); } codeBuilder.AppendTab(3).AppendLine(";"); diff --git a/project-demos/course-template/Regenerate.ps1 b/project-demos/course-template/Regenerate.ps1 index e74361c5..7aba1e70 100644 --- a/project-demos/course-template/Regenerate.ps1 +++ b/project-demos/course-template/Regenerate.ps1 @@ -1,3 +1,3 @@ $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition Remove-Item -Path "${scriptDir}\Generated" -Recurse -Force -ErrorAction SilentlyContinue -dotnet run --project "${scriptDir}\Helpers\Generator\Generator.csproj" -- convert "${scriptDir}\Modules\*.md" "${scriptDir}\Generated" "${scriptDir}\course-template.csproj" \ No newline at end of file +dotnet run --project "${scriptDir}\Helpers\Generator\Generator.csproj" -- convert "${scriptDir}\Modules\*.md" "${scriptDir}\Generated" "${scriptDir}\CourseTemplate.csproj" \ No newline at end of file diff --git a/project-demos/course-template/Regenerate.sh b/project-demos/course-template/Regenerate.sh index 12c76fd5..964daf48 100644 --- a/project-demos/course-template/Regenerate.sh +++ b/project-demos/course-template/Regenerate.sh @@ -7,4 +7,4 @@ scriptDir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" rm -rf "${scriptDir}/Generated" # Run the dotnet command to regenerate files -dotnet run --project "${scriptDir}/Helpers/Generator/Generator.csproj" -- convert "${scriptDir}/Modules/*.md" "${scriptDir}/Generated" "${scriptDir}/course-template.csproj" \ No newline at end of file +dotnet run --project "${scriptDir}/Helpers/Generator/Generator.csproj" -- convert "${scriptDir}/Modules/*.md" "${scriptDir}/Generated" "${scriptDir}/CourseTemplate.csproj" \ No newline at end of file From 9fc957f93eae2a3016707fdcea60325865fa89e6 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:51:07 +0200 Subject: [PATCH 22/41] chore: update Ivy package reference to version 1.2.17 and fix variant naming in WorkbooksEditorApp --- packages-demos/closedxml/Apps/WorkbooksEditorApp.cs | 2 +- packages-demos/closedxml/ClosedXmlExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/closedxml/Apps/WorkbooksEditorApp.cs b/packages-demos/closedxml/Apps/WorkbooksEditorApp.cs index debece9c..d7326939 100644 --- a/packages-demos/closedxml/Apps/WorkbooksEditorApp.cs +++ b/packages-demos/closedxml/Apps/WorkbooksEditorApp.cs @@ -151,7 +151,7 @@ public class WorksheetEditor(DataTable table, string fileName, IBladeService bla Layout.Vertical().Gap(2) | Layout.Horizontal().Gap(2) | columnName.ToTextInput(placeholder: "Column name") - | selectedType.ToSelectInput(columnTypes.ToOptions()).Variant(SelectInputs.Select) + | selectedType.ToSelectInput(columnTypes.ToOptions()).Variant(SelectInputVariants.Select) | addColumnButton ).Title($"Add New Column"); diff --git a/packages-demos/closedxml/ClosedXmlExample.csproj b/packages-demos/closedxml/ClosedXmlExample.csproj index d6fbb26c..76434b9b 100644 --- a/packages-demos/closedxml/ClosedXmlExample.csproj +++ b/packages-demos/closedxml/ClosedXmlExample.csproj @@ -15,7 +15,7 @@ - + From 0405fa2f7b74fe0391669298b4794a911cebc4ff Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:51:46 +0200 Subject: [PATCH 23/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in MiniExcelApp --- packages-demos/miniexcel/Apps/MiniExcelApp.cs | 2 +- packages-demos/miniexcel/MiniExcelExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/miniexcel/Apps/MiniExcelApp.cs b/packages-demos/miniexcel/Apps/MiniExcelApp.cs index dcb8bb93..0bb061c2 100644 --- a/packages-demos/miniexcel/Apps/MiniExcelApp.cs +++ b/packages-demos/miniexcel/Apps/MiniExcelApp.cs @@ -148,7 +148,7 @@ void RefreshStudentData() | new Button("Delete") .Icon(Icons.Trash) .Destructive() - .HandleClick(onDelete) + .OnClick(onDelete) ) | alertView; } diff --git a/packages-demos/miniexcel/MiniExcelExample.csproj b/packages-demos/miniexcel/MiniExcelExample.csproj index 2e893e72..8a80a41b 100644 --- a/packages-demos/miniexcel/MiniExcelExample.csproj +++ b/packages-demos/miniexcel/MiniExcelExample.csproj @@ -15,7 +15,7 @@ - + From 0c0d7a102289bd9ab169d897df2d8883c9c0f072 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 14:52:45 +0200 Subject: [PATCH 24/41] chore: update Ivy package reference to version 1.2.17 and standardize boolean input variant naming in CronosApp --- packages-demos/cronos/Apps/CronosApp.cs | 2 +- packages-demos/cronos/CronosExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/cronos/Apps/CronosApp.cs b/packages-demos/cronos/Apps/CronosApp.cs index 12f3fed0..59d77e69 100644 --- a/packages-demos/cronos/Apps/CronosApp.cs +++ b/packages-demos/cronos/Apps/CronosApp.cs @@ -123,7 +123,7 @@ string GetDescription(CronScheduleType scheduleType) .WithLabel("Predefined Examples"), includeSeconds - .ToBoolInput(variant: BoolInputs.Checkbox) + .ToBoolInput(variant: BoolInputVariants.Checkbox) .Label("Include seconds"), new Button("Try parse", onClick: TryParseCron) diff --git a/packages-demos/cronos/CronosExample.csproj b/packages-demos/cronos/CronosExample.csproj index 3848506a..55b0bd4a 100644 --- a/packages-demos/cronos/CronosExample.csproj +++ b/packages-demos/cronos/CronosExample.csproj @@ -15,7 +15,7 @@ - + From 30a621e09ab22d71c1fd1fd0814567be78082e30 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 18:58:42 +0200 Subject: [PATCH 25/41] chore: update Microsoft.SemanticKernel package reference to version 1.71.0 and standardize textarea input handling in MicrosoftSemanticKernelApp --- .../Apps/MicrosoftSemanticKernelApp.cs | 4 ++-- .../MicrosoftSemanticKernelExample.csproj | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages-demos/microsoft-semantickernel/Apps/MicrosoftSemanticKernelApp.cs b/packages-demos/microsoft-semantickernel/Apps/MicrosoftSemanticKernelApp.cs index 9387c262..53254a07 100644 --- a/packages-demos/microsoft-semantickernel/Apps/MicrosoftSemanticKernelApp.cs +++ b/packages-demos/microsoft-semantickernel/Apps/MicrosoftSemanticKernelApp.cs @@ -69,8 +69,8 @@ public class MicrosoftSemanticKernelApp : ViewBase Layout.Vertical() | Text.H3("Input Text") | Text.Muted("Enter or paste your text here. The AI will extract action items from it.") - | notesFromMeeting.ToTextAreaInput().Height(Size.Units(80)) - | new Button("Update tasks").HandleClick(_ => triggerRefresh.Set(triggerRefresh.Value + 1)) + | notesFromMeeting.ToTextareaInput().Height(Size.Units(80)) + | new Button("Update tasks").OnClick(_ => triggerRefresh.Set(triggerRefresh.Value + 1)) | new Spacer() | Text.Block("This demo uses the Microsoft.SemanticKernel for intelligent text matching.") | Text.Markdown("Built with [Ivy Framework](https://github.com/Ivy-Interactive/Ivy-Framework) and [Microsoft.SemanticKernel](https://github.com/microsoft/semantic-kernel)") diff --git a/packages-demos/microsoft-semantickernel/MicrosoftSemanticKernelExample.csproj b/packages-demos/microsoft-semantickernel/MicrosoftSemanticKernelExample.csproj index ed0fe959..42df7cad 100644 --- a/packages-demos/microsoft-semantickernel/MicrosoftSemanticKernelExample.csproj +++ b/packages-demos/microsoft-semantickernel/MicrosoftSemanticKernelExample.csproj @@ -1,4 +1,4 @@ - + Exe @@ -18,8 +18,8 @@ - - + + From b516e3548b96dc9e1be98aabf3366c34ae54baea Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 18:59:57 +0200 Subject: [PATCH 26/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in EPPlusApp --- packages-demos/epplus/Apps/EPPlusApp.cs | 10 +++++----- packages-demos/epplus/EPPlusExample.csproj | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages-demos/epplus/Apps/EPPlusApp.cs b/packages-demos/epplus/Apps/EPPlusApp.cs index d98b08e5..6bce997f 100644 --- a/packages-demos/epplus/Apps/EPPlusApp.cs +++ b/packages-demos/epplus/Apps/EPPlusApp.cs @@ -59,23 +59,23 @@ private static void EnsureExcelFileExists(string filePath) ? new Button("Delete All Records") .Destructive() .Icon(Icons.Trash) - .HandleClick(_ => HandleDeleteAsync(booksState, filePath, client)) + .OnClick(_ => HandleDeleteAsync(booksState, filePath, client)) : new Button("Delete All Records") .Secondary() .Icon(Icons.Trash) - .HandleClick(_ => HandleDeleteAsync(booksState, filePath, client)) + .OnClick(_ => HandleDeleteAsync(booksState, filePath, client)) .Disabled(); var generateBtn = hasBooks ? new Button("Generate Excel") .Secondary() .Icon(Icons.FileText) - .HandleClick(_ => ExcelManipulation.WriteExcel(booksState)) + .OnClick(_ => ExcelManipulation.WriteExcel(booksState)) .Disabled() : new Button("Generate Excel") .Primary() .Icon(Icons.FileText) - .HandleClick(_ => ExcelManipulation.WriteExcel(booksState)); + .OnClick(_ => ExcelManipulation.WriteExcel(booksState)); var book = UseState(() => new Book()); var formBuilder = book.ToForm().Remove(x => x.ID) @@ -112,7 +112,7 @@ private static void EnsureExcelFileExists(string filePath) | new Button("Add Book") .Primary() .Icon(Icons.Plus) - .HandleClick(async _ => await HandleSubmitAsync(booksState, client, book, onSubmit)) + .OnClick(async _ => await HandleSubmitAsync(booksState, client, book, onSubmit)) .Loading(loading) .Disabled(loading) | validationView diff --git a/packages-demos/epplus/EPPlusExample.csproj b/packages-demos/epplus/EPPlusExample.csproj index 0e49547b..98499460 100644 --- a/packages-demos/epplus/EPPlusExample.csproj +++ b/packages-demos/epplus/EPPlusExample.csproj @@ -15,7 +15,7 @@ - + From 6bf66ea45c914e1c467f04b3556b7aefcce4a844 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:00:36 +0200 Subject: [PATCH 27/41] chore: update Ivy package reference to version 1.2.17 in SharpYamlExample project --- packages-demos/sharpyaml/Apps/SharpYamlApp.cs | 2 +- packages-demos/sharpyaml/SharpYamlExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/sharpyaml/Apps/SharpYamlApp.cs b/packages-demos/sharpyaml/Apps/SharpYamlApp.cs index d50229e6..d911f3df 100644 --- a/packages-demos/sharpyaml/Apps/SharpYamlApp.cs +++ b/packages-demos/sharpyaml/Apps/SharpYamlApp.cs @@ -104,7 +104,7 @@ string GenerateOutput(string modelJson, out string errorMsg) var convertBtn = new Button("Convert") .Primary() - .HandleClick(_ => + .OnClick(_ => { string error; var output = GenerateOutput(modelState.Value, out error); diff --git a/packages-demos/sharpyaml/SharpYamlExample.csproj b/packages-demos/sharpyaml/SharpYamlExample.csproj index 1c43ff6f..0275af4b 100644 --- a/packages-demos/sharpyaml/SharpYamlExample.csproj +++ b/packages-demos/sharpyaml/SharpYamlExample.csproj @@ -14,7 +14,7 @@ - + From 7524755057cf2896871c90ebd3a1c26499bcb14c Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:01:33 +0200 Subject: [PATCH 28/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in ShopifySharpApp --- packages-demos/shopifysharp/Apps/ShopifySharpApp.cs | 2 +- packages-demos/shopifysharp/ShopifySharpExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/shopifysharp/Apps/ShopifySharpApp.cs b/packages-demos/shopifysharp/Apps/ShopifySharpApp.cs index b66659ae..1cc83e10 100644 --- a/packages-demos/shopifysharp/Apps/ShopifySharpApp.cs +++ b/packages-demos/shopifysharp/Apps/ShopifySharpApp.cs @@ -206,7 +206,7 @@ object productCard(Product p) | Text.Label("Sort direction") | sortDirection.ToSelectInput(new[] { "ASC", "DESC" }.ToOptions()).Placeholder("Sort direction").Disabled(searchControlsDisabled) | Text.Label("Filter query") - | queryFilter.ToTextInput().Placeholder("Filter query (e.g. tag:'summer')").Variant(TextInputs.Search).Disabled(searchControlsDisabled) + | queryFilter.ToTextInput().Placeholder("Filter query (e.g. tag:'summer')").Variant(TextInputVariants.Search).Disabled(searchControlsDisabled) | new Button("Get Products", onClick: async _ => await LoadProducts()).Disabled(isLoading.Value).Width(Size.Full()) | Text.Block("This demo uses ShopifySharp library to fetch the full product catalog from your Shopify store.") | Text.Markdown("Built with [Ivy Framework](https://github.com/Ivy-Interactive/Ivy-Framework) and [ShopifySharp](https://github.com/nozzlegear/ShopifySharp)") diff --git a/packages-demos/shopifysharp/ShopifySharpExample.csproj b/packages-demos/shopifysharp/ShopifySharpExample.csproj index ed4e8f0a..3f7a5cad 100644 --- a/packages-demos/shopifysharp/ShopifySharpExample.csproj +++ b/packages-demos/shopifysharp/ShopifySharpExample.csproj @@ -14,7 +14,7 @@ - + From 72a827a6e9e80628723ca1a5f601a17cc718aabb Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:02:08 +0200 Subject: [PATCH 29/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in BarcodeApp --- packages-demos/aspose-barcode/Apps/BarcodeApp.cs | 2 +- packages-demos/aspose-barcode/AsposeBarCodeExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/aspose-barcode/Apps/BarcodeApp.cs b/packages-demos/aspose-barcode/Apps/BarcodeApp.cs index 56bc90c7..a5380b0a 100644 --- a/packages-demos/aspose-barcode/Apps/BarcodeApp.cs +++ b/packages-demos/aspose-barcode/Apps/BarcodeApp.cs @@ -68,7 +68,7 @@ private static byte[] GeneratePngBytes(string text, SymbologyEncodeType encodeTy | typeDropDown | sizeDropDown | new Button("Preview").Primary().Icon(Icons.Eye) - .HandleClick(() => + .OnClick(() => { if (string.IsNullOrWhiteSpace(text.Value)) { diff --git a/packages-demos/aspose-barcode/AsposeBarCodeExample.csproj b/packages-demos/aspose-barcode/AsposeBarCodeExample.csproj index ee59f84c..dae9bf47 100644 --- a/packages-demos/aspose-barcode/AsposeBarCodeExample.csproj +++ b/packages-demos/aspose-barcode/AsposeBarCodeExample.csproj @@ -16,7 +16,7 @@ - + From f4e46e737f1a092f642068b32a5285c678fb505f Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:02:59 +0200 Subject: [PATCH 30/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in NewtonsoftJsonApp --- packages-demos/newtonsoft-json/Apps/NewtonsoftJsonApp.cs | 4 ++-- packages-demos/newtonsoft-json/NewtonsoftJsonExample.csproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages-demos/newtonsoft-json/Apps/NewtonsoftJsonApp.cs b/packages-demos/newtonsoft-json/Apps/NewtonsoftJsonApp.cs index 165062f4..b15aac67 100644 --- a/packages-demos/newtonsoft-json/Apps/NewtonsoftJsonApp.cs +++ b/packages-demos/newtonsoft-json/Apps/NewtonsoftJsonApp.cs @@ -115,7 +115,7 @@ void DeserializeData() Layout.Vertical() | Text.H4("Source JSON") | Text.Muted("Edit sample JSON (add roles, tweak fields) then click Deserialize to load it here.") - | rawData.ToCodeInput(variant: CodeInputs.Default, language: Languages.Json).Height(Size.Fit()) + | rawData.ToCodeInput(variant: CodeInputVariants.Default, language: Languages.Json).Height(Size.Fit()) .Disabled(!isSerialized.Value) | new Button("Deserialize", _ => HandleButtonClick()) .Disabled(!isSerialized.Value) @@ -154,7 +154,7 @@ void DeserializeData() | Text.Label("Date created") | date.ToDateInput().Disabled(isSerialized.Value) | Text.Label("Roles") - | roles.ToSelectInput(availableRoles.Value.ToOptions()).Variant(SelectInputs.Toggle).Disabled(isSerialized.Value) + | roles.ToSelectInput(availableRoles.Value.ToOptions()).Variant(SelectInputVariants.Toggle).Disabled(isSerialized.Value) | new Button("Serialize", _ => HandleButtonClick()) .Disabled(isSerialized.Value) .Icon(Icons.ArrowLeft, Align.Left) diff --git a/packages-demos/newtonsoft-json/NewtonsoftJsonExample.csproj b/packages-demos/newtonsoft-json/NewtonsoftJsonExample.csproj index 091b0415..e2471de8 100644 --- a/packages-demos/newtonsoft-json/NewtonsoftJsonExample.csproj +++ b/packages-demos/newtonsoft-json/NewtonsoftJsonExample.csproj @@ -15,7 +15,7 @@ - + From ba6d2b61a8e055e76c8603cabf39a3fe3e7e2531 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:04:07 +0200 Subject: [PATCH 31/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in ProfileApp --- packages-demos/qrcoder/Apps/ProfileApp.cs | 2 +- packages-demos/qrcoder/QrCoderExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/qrcoder/Apps/ProfileApp.cs b/packages-demos/qrcoder/Apps/ProfileApp.cs index 3fda56db..beb1f893 100644 --- a/packages-demos/qrcoder/Apps/ProfileApp.cs +++ b/packages-demos/qrcoder/Apps/ProfileApp.cs @@ -70,7 +70,7 @@ async void HandleSubmit() | Text.Block("Fill in your information to create a shareable profile") | formView | Layout.Horizontal() - | new Button("Create Profile").HandleClick(new Action(HandleSubmit)) + | new Button("Create Profile").OnClick(new Action(HandleSubmit)) .Loading(loading).Disabled(loading) | validationView | Text.Block("This demo uses QRCoder library to generate vCard QR codes for contact sharing.") diff --git a/packages-demos/qrcoder/QrCoderExample.csproj b/packages-demos/qrcoder/QrCoderExample.csproj index 49184ef7..d8082d95 100644 --- a/packages-demos/qrcoder/QrCoderExample.csproj +++ b/packages-demos/qrcoder/QrCoderExample.csproj @@ -13,7 +13,7 @@ - + From fdb899a05b67e099000bf11bff43b3868bf5764f Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:04:50 +0200 Subject: [PATCH 32/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in FastMemberApp --- packages-demos/fastmember/Apps/FastMemberApp.cs | 2 +- packages-demos/fastmember/FastMemberExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/fastmember/Apps/FastMemberApp.cs b/packages-demos/fastmember/Apps/FastMemberApp.cs index afff8681..bd901b54 100644 --- a/packages-demos/fastmember/Apps/FastMemberApp.cs +++ b/packages-demos/fastmember/Apps/FastMemberApp.cs @@ -314,7 +314,7 @@ private static object BuildBenchmarkTab(Action showBenchmark, | Text.H3("Performance Benchmark") | Text.Muted("Compare FastMember performance with standard .NET Reflection API, Dynamic C#, and PropertyDescriptor") | new Button(benchmarkResultState.Value == null ? "Run Benchmark" : "Run Benchmark Again") - .HandleClick(_ => showBenchmark(runBenchmark())).Icon(Icons.Zap).Primary()); + .OnClick(_ => showBenchmark(runBenchmark())).Icon(Icons.Zap).Primary()); if (benchmarkResultState.Value == null) return buttonCard; diff --git a/packages-demos/fastmember/FastMemberExample.csproj b/packages-demos/fastmember/FastMemberExample.csproj index 8f87de85..9580ed27 100644 --- a/packages-demos/fastmember/FastMemberExample.csproj +++ b/packages-demos/fastmember/FastMemberExample.csproj @@ -16,7 +16,7 @@ - + From 194dd48dba3549e14b6d32ce3321453b688bd26c Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:05:58 +0200 Subject: [PATCH 33/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in NAudioApp --- packages-demos/naudio/Apps/NAudioApp.cs | 14 +++++++------- packages-demos/naudio/NAudioExample.csproj | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages-demos/naudio/Apps/NAudioApp.cs b/packages-demos/naudio/Apps/NAudioApp.cs index e9e5bcff..9b195071 100644 --- a/packages-demos/naudio/Apps/NAudioApp.cs +++ b/packages-demos/naudio/Apps/NAudioApp.cs @@ -112,13 +112,13 @@ public class NAudioApp : ViewBase | Text.Label("Wave Type") | waveType.ToSelectInput(typeof(SignalGeneratorType).ToOptions()) | Text.Label("Frequency (Hz)") - | new NumberInput(freq).Min(50).Max(1000).Variant(NumberInputs.Slider) + | new NumberInput(freq).Min(50).Max(1000).Variant(NumberInputVariants.Slider) | Text.Label("Duration (seconds)") - | new NumberInput(dur).Min(0.1).Max(600).Step(0.1).Variant(NumberInputs.Slider) + | new NumberInput(dur).Min(0.1).Max(600).Step(0.1).Variant(NumberInputVariants.Slider) | Text.Label("Volume") - | new NumberInput(vol).Min(0).Max(1).Step(0.01).Variant(NumberInputs.Slider) + | new NumberInput(vol).Min(0).Max(1).Step(0.01).Variant(NumberInputVariants.Slider) | (genError.Value != null ? new Callout(genError.Value, variant: CalloutVariant.Error) : null) - | new Button("Generate").Primary().Icon(Icons.Play).HandleClick(_ => + | new Button("Generate").Primary().Icon(Icons.Play).OnClick(_ => { try { @@ -156,11 +156,11 @@ public class NAudioApp : ViewBase ? new Callout("Upload a file first", variant: CalloutVariant.Warning) : Text.Muted($"Uploaded file ready ({uploadBytes.Value.Length / 1024} KB)")) | Text.Label("Generated Sound Volume") - | new NumberInput(mixGenVol).Min(0).Max(1).Step(0.01).Variant(NumberInputs.Slider) + | new NumberInput(mixGenVol).Min(0).Max(1).Step(0.01).Variant(NumberInputVariants.Slider) | Text.Label("Uploaded File Volume") - | new NumberInput(mixUploadVol).Min(0).Max(1).Step(0.01).Variant(NumberInputs.Slider) + | new NumberInput(mixUploadVol).Min(0).Max(1).Step(0.01).Variant(NumberInputVariants.Slider) | (mixError.Value != null ? new Callout(mixError.Value, variant: CalloutVariant.Error) : null) - | new Button("Mix").Primary().Icon(Icons.Layers).HandleClick(_ => + | new Button("Mix").Primary().Icon(Icons.Layers).OnClick(_ => { if (genBytes.Value == null || uploadBytes.Value == null) { mixError.Set("Both generated sound and uploaded file are required"); return; } diff --git a/packages-demos/naudio/NAudioExample.csproj b/packages-demos/naudio/NAudioExample.csproj index 17c5073f..23e612ab 100644 --- a/packages-demos/naudio/NAudioExample.csproj +++ b/packages-demos/naudio/NAudioExample.csproj @@ -15,7 +15,7 @@ - + From 7f50ad101bc9667db9bb749b9dfdbbc9e3e40819 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:08:05 +0200 Subject: [PATCH 34/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in YamlDotNetExample --- packages-demos/yamldotnet/Apps/DeserializationApp.cs | 2 +- packages-demos/yamldotnet/Apps/SerializationApp.cs | 2 +- packages-demos/yamldotnet/YamlDotNetExample.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages-demos/yamldotnet/Apps/DeserializationApp.cs b/packages-demos/yamldotnet/Apps/DeserializationApp.cs index eb6c9bb2..c9332e72 100644 --- a/packages-demos/yamldotnet/Apps/DeserializationApp.cs +++ b/packages-demos/yamldotnet/Apps/DeserializationApp.cs @@ -47,7 +47,7 @@ public class DeserializationApp : ViewBase // Convert Button | new Button("Deserialize to Person") - .HandleClick(() => DeserializeToPerson(yamlInput.Value, personOutput, errorMessage, resultOutput)) + .OnClick(() => DeserializeToPerson(yamlInput.Value, personOutput, errorMessage, resultOutput)) ) | Text.Block("This demo uses YamlDotNet library to deserialize YAML into Person objects.") diff --git a/packages-demos/yamldotnet/Apps/SerializationApp.cs b/packages-demos/yamldotnet/Apps/SerializationApp.cs index 1b91bcf3..b12e0dea 100644 --- a/packages-demos/yamldotnet/Apps/SerializationApp.cs +++ b/packages-demos/yamldotnet/Apps/SerializationApp.cs @@ -52,7 +52,7 @@ public class SerializationApp : ViewBase // Convert Button | new Button("Convert to YAML") - .HandleClick(() => ConvertToYaml(personCode.Value, yamlOutput, errorMessage, resultOutput)) + .OnClick(() => ConvertToYaml(personCode.Value, yamlOutput, errorMessage, resultOutput)) ) | Text.Block("This demo uses YamlDotNet library to serialize Person objects to YAML format.") diff --git a/packages-demos/yamldotnet/YamlDotNetExample.csproj b/packages-demos/yamldotnet/YamlDotNetExample.csproj index 0bab34ef..c453a748 100644 --- a/packages-demos/yamldotnet/YamlDotNetExample.csproj +++ b/packages-demos/yamldotnet/YamlDotNetExample.csproj @@ -13,7 +13,7 @@ - + From dfc35a2ce64173870d23091b38a2fdc69b9e31b0 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:10:11 +0200 Subject: [PATCH 35/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in MapsterApp --- packages-demos/mapster/Apps/MapsterApp.cs | 22 ++++++++------------ packages-demos/mapster/MapsterExample.csproj | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/packages-demos/mapster/Apps/MapsterApp.cs b/packages-demos/mapster/Apps/MapsterApp.cs index 235324e5..212c02f1 100644 --- a/packages-demos/mapster/Apps/MapsterApp.cs +++ b/packages-demos/mapster/Apps/MapsterApp.cs @@ -1,4 +1,4 @@ -namespace MapsterExample +namespace MapsterExample { [App(icon: Icons.PersonStanding, title: "Mapster")] public class MapsterApp : ViewBase @@ -41,43 +41,39 @@ public class MapsterApp : ViewBase // Person -> PersonDto var toDtoButton = new Button("Person -> PersonDto") - { - OnClick = async (evt) => + .OnClick(async _ => { try { var person = JsonSerializer.Deserialize(personJsonState.Value); var dto = person.Adapt(); - dtoJsonState.Value = ToPrettyJson(dto); + dtoJsonState.Set(ToPrettyJson(dto)); } catch (Exception ex) { - dtoJsonState.Value = $"{{ \"error\": \"{ex.Message}\" }}"; + dtoJsonState.Set($"{{ \"error\": \"{ex.Message}\" }}"); } await ValueTask.CompletedTask; - } - }; + }); // PersonDto -> Person var toPersonButton = new Button("PersonDto -> Person") - { - OnClick = async (evt) => + .OnClick(async _ => { try { var dto = JsonSerializer.Deserialize(dtoJsonState.Value); var person = dto.Adapt(); - personJsonState.Value = ToPrettyJson(person); + personJsonState.Set(ToPrettyJson(person)); } catch (Exception ex) { - personJsonState.Value = $"{{ \"error\": \"{ex.Message}\" }}"; + personJsonState.Set($"{{ \"error\": \"{ex.Message}\" }}"); } await ValueTask.CompletedTask; - } - }; + }); return Layout.Vertical() | new Card( diff --git a/packages-demos/mapster/MapsterExample.csproj b/packages-demos/mapster/MapsterExample.csproj index 0dd2c611..534ed80f 100644 --- a/packages-demos/mapster/MapsterExample.csproj +++ b/packages-demos/mapster/MapsterExample.csproj @@ -17,7 +17,7 @@ - + From 6b055449b4b0549778043ddab495f25d1d43af83 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:11:04 +0200 Subject: [PATCH 36/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in TimeZoneConverterApp --- packages-demos/timezonenames/Apps/TImeZoneConverterApp.cs | 6 +++--- .../timezonenames/TimeZoneConverterExample.csproj | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages-demos/timezonenames/Apps/TImeZoneConverterApp.cs b/packages-demos/timezonenames/Apps/TImeZoneConverterApp.cs index 29888f53..b4bc69bc 100644 --- a/packages-demos/timezonenames/Apps/TImeZoneConverterApp.cs +++ b/packages-demos/timezonenames/Apps/TImeZoneConverterApp.cs @@ -139,21 +139,21 @@ object BuildSearchContent() { "IANA" => Layout.Vertical().Gap(4) | ianaSearchTerm.ToTextInput(ianaZoneState.Value) - .Variant(TextInputs.Search) + .Variant(TextInputVariants.Search) .WithField() .Label("Search IANA Time Zones") | Layout.Vertical(new List(ianaListItems.ToArray())).Height(Size.Units(70)), "Windows" => Layout.Vertical().Gap(4) | windowsSearchTerm.ToTextInput(windowsZoneState.Value) - .Variant(TextInputs.Search) + .Variant(TextInputVariants.Search) .WithField() .Label("Search Windows Time Zones") | Layout.Vertical(new List(windowsListItems.ToArray())).Height(Size.Units(70)), "Rails" => Layout.Vertical().Gap(4) | railsSearchTerm.ToTextInput(railsZoneState.Value) - .Variant(TextInputs.Search) + .Variant(TextInputVariants.Search) .WithField() .Label("Search Rails Time Zones") | Layout.Vertical(new List(railsListItems.ToArray())).Height(Size.Units(70)), diff --git a/packages-demos/timezonenames/TimeZoneConverterExample.csproj b/packages-demos/timezonenames/TimeZoneConverterExample.csproj index 1ac38fa0..1c02d02c 100644 --- a/packages-demos/timezonenames/TimeZoneConverterExample.csproj +++ b/packages-demos/timezonenames/TimeZoneConverterExample.csproj @@ -14,7 +14,7 @@ - + From 3fd087048adc263b7861c6210a5afd1c349cf98b Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:12:08 +0200 Subject: [PATCH 37/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in TextGeneratorApp --- packages-demos/aspose-words/Apps/TextGeneratorApp.cs | 2 +- packages-demos/aspose-words/AsposeWordsExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/aspose-words/Apps/TextGeneratorApp.cs b/packages-demos/aspose-words/Apps/TextGeneratorApp.cs index b8558f39..63ff50bf 100644 --- a/packages-demos/aspose-words/Apps/TextGeneratorApp.cs +++ b/packages-demos/aspose-words/Apps/TextGeneratorApp.cs @@ -36,7 +36,7 @@ public class TextGeneratorApp : ViewBase Layout.Vertical().Gap(3).Padding(2) | Text.H2("Text to DOCX") | Text.Block("Enter your text below and generate a Word document instantly.") - | inputText.ToTextAreaInput(placeholder: "Type your text here...").Height(Size.Units(35)) + | inputText.ToTextareaInput(placeholder: "Type your text here...").Height(Size.Units(35)) | new Spacer() | (generatedDoc.Value == null && !isGenerating.Value ? new Button("Generate Document", _ => diff --git a/packages-demos/aspose-words/AsposeWordsExample.csproj b/packages-demos/aspose-words/AsposeWordsExample.csproj index 4e303cc0..e32bf143 100644 --- a/packages-demos/aspose-words/AsposeWordsExample.csproj +++ b/packages-demos/aspose-words/AsposeWordsExample.csproj @@ -15,7 +15,7 @@ - + From eac10b71758a4bdbf42a7d4e1bd098cd53f3094f Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:12:45 +0200 Subject: [PATCH 38/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in HtmlAgilityPackApp --- packages-demos/HtmlAgilityPack/Apps/HtmlAgilityPack.cs | 2 +- packages-demos/HtmlAgilityPack/HtmlAgilityPackExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/HtmlAgilityPack/Apps/HtmlAgilityPack.cs b/packages-demos/HtmlAgilityPack/Apps/HtmlAgilityPack.cs index 42b016a1..158dd7a8 100644 --- a/packages-demos/HtmlAgilityPack/Apps/HtmlAgilityPack.cs +++ b/packages-demos/HtmlAgilityPack/Apps/HtmlAgilityPack.cs @@ -263,7 +263,7 @@ public class HtmlAgilityPackApp : ViewBase | Text.Muted("HTML parser extracts website data: title, images, structure, links, and social media info") | urlState.ToSearchInput().WithLabel("Enter Site URL:") | dataTypesSelect.ToSelectInput(dataTypeOptions) - .Variant(SelectInputs.Toggle) + .Variant(SelectInputVariants.Toggle) .WithLabel("Select data to extract:") | new Button("Parse Site HTML", eventHandler).Loading(parsingState.Value) | (errorState.Value.Length > 0 ? Text.Block(errorState.Value) : null) diff --git a/packages-demos/HtmlAgilityPack/HtmlAgilityPackExample.csproj b/packages-demos/HtmlAgilityPack/HtmlAgilityPackExample.csproj index d1e04b1f..c69b533f 100644 --- a/packages-demos/HtmlAgilityPack/HtmlAgilityPackExample.csproj +++ b/packages-demos/HtmlAgilityPack/HtmlAgilityPackExample.csproj @@ -15,7 +15,7 @@ - + From 1dbaf7817e17425952e0608baa2f495fa0a4abd0 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:14:37 +0200 Subject: [PATCH 39/41] chore: update Magick.NET package reference to version 14.10.3 and standardize input variant naming in MagickNetApp --- packages-demos/magick-net-q16-anycpu/Apps/MagickNetApp.cs | 6 +++--- .../magick-net-q16-anycpu/MagickNetQ16AnyCpuExample.csproj | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages-demos/magick-net-q16-anycpu/Apps/MagickNetApp.cs b/packages-demos/magick-net-q16-anycpu/Apps/MagickNetApp.cs index c26de442..756ee5c0 100644 --- a/packages-demos/magick-net-q16-anycpu/Apps/MagickNetApp.cs +++ b/packages-demos/magick-net-q16-anycpu/Apps/MagickNetApp.cs @@ -248,7 +248,7 @@ public class MagickNetApp : ViewBase | new NumberInput(widthState) | Text.Block("Height:") | new NumberInput(heightState)) - | maintainAspectRatio.ToBoolInput(variant: BoolInputs.Checkbox).Label("Maintain aspect ratio") + | maintainAspectRatio.ToBoolInput(variant: BoolInputVariants.Checkbox).Label("Maintain aspect ratio") : selectedEffect.Value == "blur" ? Layout.Horizontal().Gap(4) | Text.Block("Blur Radius:") @@ -279,8 +279,8 @@ public class MagickNetApp : ViewBase | new NumberInput(rotation).Min(-360).Max(360).Step(1) : selectedEffect.Value == "flip" ? Layout.Vertical().Gap(2) - | flipHorizontal.ToBoolInput(variant: BoolInputs.Checkbox).Label("Flip horizontally") - | flipVertical.ToBoolInput(variant: BoolInputs.Checkbox).Label("Flip vertically") + | flipHorizontal.ToBoolInput(variant: BoolInputVariants.Checkbox).Label("Flip horizontally") + | flipVertical.ToBoolInput(variant: BoolInputVariants.Checkbox).Label("Flip vertically") : Text.Block("No additional parameters needed for this effect.")) // Output format | Text.H4("Output Format") diff --git a/packages-demos/magick-net-q16-anycpu/MagickNetQ16AnyCpuExample.csproj b/packages-demos/magick-net-q16-anycpu/MagickNetQ16AnyCpuExample.csproj index feaf2152..09a1f158 100644 --- a/packages-demos/magick-net-q16-anycpu/MagickNetQ16AnyCpuExample.csproj +++ b/packages-demos/magick-net-q16-anycpu/MagickNetQ16AnyCpuExample.csproj @@ -1,4 +1,4 @@ - + Exe @@ -15,8 +15,8 @@ - - + + \ No newline at end of file From ef0a277aba4a17816f9004d7a994ec74e1c3b9b2 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:15:56 +0200 Subject: [PATCH 40/41] chore: update Ivy package reference to version 1.2.17 and standardize input variant naming in FuzzySharpApp --- packages-demos/fuzzysharp/Apps/FuzzySharpApp.cs | 2 +- packages-demos/fuzzysharp/FuzzySharpExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/fuzzysharp/Apps/FuzzySharpApp.cs b/packages-demos/fuzzysharp/Apps/FuzzySharpApp.cs index b88e7dec..5d0b363e 100644 --- a/packages-demos/fuzzysharp/Apps/FuzzySharpApp.cs +++ b/packages-demos/fuzzysharp/Apps/FuzzySharpApp.cs @@ -61,7 +61,7 @@ public class FuzzySharpApp : ViewBase | Text.Muted("Intelligent search with typo tolerance") | new TextInput(searchTerm) .Placeholder("Try: 'aple', 'bana', 'berry'...") - .Variant(TextInputs.Search) + .Variant(TextInputVariants.Search) | new Spacer() | Text.Block("This demo uses the FuzzySharp NuGet package for intelligent text matching.") | Text.Markdown("Built with [Ivy Framework](https://github.com/Ivy-Interactive/Ivy-Framework) and [FuzzySharp](https://github.com/JakeBayer/FuzzySharp)") diff --git a/packages-demos/fuzzysharp/FuzzySharpExample.csproj b/packages-demos/fuzzysharp/FuzzySharpExample.csproj index 578c7a6d..ac4c2c41 100644 --- a/packages-demos/fuzzysharp/FuzzySharpExample.csproj +++ b/packages-demos/fuzzysharp/FuzzySharpExample.csproj @@ -16,7 +16,7 @@ - + From 5acaf0a35063bfbb5c2bdfd9e92cd07cdadc2386 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 7 Mar 2026 19:16:45 +0200 Subject: [PATCH 41/41] chore: update Ivy package reference to version 1.2.17 and standardize button click event handling in ImageToTextApp --- packages-demos/aspose-ocr/Apps/ImageToTextApp.cs | 2 +- packages-demos/aspose-ocr/AsposeOcrExample.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages-demos/aspose-ocr/Apps/ImageToTextApp.cs b/packages-demos/aspose-ocr/Apps/ImageToTextApp.cs index 62df8fd3..f31166e3 100644 --- a/packages-demos/aspose-ocr/Apps/ImageToTextApp.cs +++ b/packages-demos/aspose-ocr/Apps/ImageToTextApp.cs @@ -23,7 +23,7 @@ public class ImageToTextApp : ViewBase | (error.Value != null ? new Callout(error.Value, variant: CalloutVariant.Error) : null) | uploadedFile.ToFileInput(upload).Placeholder("Upload Image") | new Button("Recognize").Primary().Icon(Icons.Eye) - .HandleClick(() => + .OnClick(() => { if (error.Value == null && uploadedFile.Value != null) { diff --git a/packages-demos/aspose-ocr/AsposeOcrExample.csproj b/packages-demos/aspose-ocr/AsposeOcrExample.csproj index eaabd901..c7e84465 100644 --- a/packages-demos/aspose-ocr/AsposeOcrExample.csproj +++ b/packages-demos/aspose-ocr/AsposeOcrExample.csproj @@ -18,7 +18,7 @@ - +