+ TODO: Enter analyzed content here! ++
TODO: Enter analyzed content here!
- @if (FileContentRecognized != null)
- {
- @((MarkupString)SanitizeHTML(FileContentRecognized))
- }
-
-
+ @if (FileContentRecognized != null)
+ {
+ @((MarkupString)SanitizeHTML(FileContentRecognized))
+ }
+
+- TODO: Enter analyzed content here! --
@if (FileContentRecognized != null)
{
diff --git a/AudioCuesheetEditor/Shared/Import/Importprofiles.razor b/AudioCuesheetEditor/Shared/Import/Importprofiles.razor
index 742dc52a..5933864f 100644
--- a/AudioCuesheetEditor/Shared/Import/Importprofiles.razor
+++ b/AudioCuesheetEditor/Shared/Import/Importprofiles.razor
@@ -24,13 +24,14 @@ along with Foobar. If not, see
@if (importOptions != null)
{
-
+
@foreach (var profile in importOptions.ImportProfiles)
{
@profile.Name
}
-
+
@_localizer["Delete selected profile"]
@@ -45,7 +46,7 @@ along with Foobar. If not, see
-
+
diff --git a/AudioCuesheetEditor/Shared/Inputs/TextField.razor b/AudioCuesheetEditor/Shared/Inputs/TextField.razor
index 7e4f1534..ee96b6f4 100644
--- a/AudioCuesheetEditor/Shared/Inputs/TextField.razor
+++ b/AudioCuesheetEditor/Shared/Inputs/TextField.razor
@@ -20,7 +20,7 @@ along with Foobar. If not, see
@inject IStringLocalizer _localizer
@inject IFileInputManager _fileInputManager
-
+
From f6c1359b9a8f5717b945f98c9d13825973c8d0eb Mon Sep 17 00:00:00 2001
From: Sven <40752681+NeoCoderMatrix86@users.noreply.github.com>
Date: Mon, 19 Jan 2026 15:47:22 +0100
Subject: [PATCH 21/64] move basics to top razor
---
AudioCuesheetEditor/App.razor | 12 +++++++++++-
AudioCuesheetEditor/Shared/Layouts/MainLayout.razor | 10 ----------
.../Shared/Layouts/MainLayoutWithoutMenu.razor | 10 ----------
3 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/AudioCuesheetEditor/App.razor b/AudioCuesheetEditor/App.razor
index 6fd3ed1b..cc065a26 100644
--- a/AudioCuesheetEditor/App.razor
+++ b/AudioCuesheetEditor/App.razor
@@ -1,4 +1,14 @@
-
+@* Required *@
+
+
+
+@* Needed for dialogs *@
+
+
+@* Needed for snackbars *@
+
+
+
diff --git a/AudioCuesheetEditor/Shared/Layouts/MainLayout.razor b/AudioCuesheetEditor/Shared/Layouts/MainLayout.razor
index 41971df2..ba89985e 100644
--- a/AudioCuesheetEditor/Shared/Layouts/MainLayout.razor
+++ b/AudioCuesheetEditor/Shared/Layouts/MainLayout.razor
@@ -22,16 +22,6 @@ along with Foobar. If not, see
@inject IStringLocalizer _localizer
@inject IJSRuntime _jsRuntime
-@* Required *@
-
-
-
-@* Needed for dialogs *@
-
-
-@* Needed for snackbars *@
-
-
diff --git a/AudioCuesheetEditor/Shared/Layouts/MainLayoutWithoutMenu.razor b/AudioCuesheetEditor/Shared/Layouts/MainLayoutWithoutMenu.razor
index c3af3813..8791ef1c 100644
--- a/AudioCuesheetEditor/Shared/Layouts/MainLayoutWithoutMenu.razor
+++ b/AudioCuesheetEditor/Shared/Layouts/MainLayoutWithoutMenu.razor
@@ -22,16 +22,6 @@ along with Foobar. If not, see
@inject IStringLocalizer _localizer
@inject IJSRuntime _jsRuntime
-@* Required *@
-
-
-
-@* Needed for dialogs *@
-
-
-@* Needed for snackbars *@
-
-
From 2d68e7f1280c4a6ef929f0f1d77d7383bce727d2 Mon Sep 17 00:00:00 2001
From: Sven <40752681+NeoCoderMatrix86@users.noreply.github.com>
Date: Wed, 21 Jan 2026 10:04:44 +0100
Subject: [PATCH 22/64] add basic dropping of files
---
AudioCuesheetEditor/App.razor | 4 +-
.../Shared/Inputs/FileDropOverlay.razor | 101 ++++++++++++++++++
AudioCuesheetEditor/wwwroot/css/app.css | 10 ++
AudioCuesheetEditor/wwwroot/index.html | 1 +
.../wwwroot/scripts/globalFileDrag.js | 70 ++++++++++++
5 files changed, 185 insertions(+), 1 deletion(-)
create mode 100644 AudioCuesheetEditor/Shared/Inputs/FileDropOverlay.razor
create mode 100644 AudioCuesheetEditor/wwwroot/scripts/globalFileDrag.js
diff --git a/AudioCuesheetEditor/App.razor b/AudioCuesheetEditor/App.razor
index cc065a26..9b89a2a6 100644
--- a/AudioCuesheetEditor/App.razor
+++ b/AudioCuesheetEditor/App.razor
@@ -8,6 +8,8 @@
@* Needed for snackbars *@
+
+
@@ -19,4 +21,4 @@
Sorry, there's nothing at this address.
-
+
\ No newline at end of file
diff --git a/AudioCuesheetEditor/Shared/Inputs/FileDropOverlay.razor b/AudioCuesheetEditor/Shared/Inputs/FileDropOverlay.razor
new file mode 100644
index 00000000..f9b3c432
--- /dev/null
+++ b/AudioCuesheetEditor/Shared/Inputs/FileDropOverlay.razor
@@ -0,0 +1,101 @@
+
+@inherits BaseLocalizedComponent
+
+@implements IAsyncDisposable
+
+@inject IJSRuntime _jsRuntime
+@inject IStringLocalizer _localizer
+
+
+
+
+
+
+
+ @_localizer["Drop files here to upload"]
+
+
+
+
+
+
+@code {
+ //TODO: localization
+
+ private DotNetObjectReference? _dotNetRef;
+ private bool _showOverlay;
+ private bool _disposed;
+ private const string DefaultDragClass = "d-flex align-center justify-center position-relative";
+ private string _dragClass = DefaultDragClass;
+
+ protected override async Task OnInitializedAsync()
+ {
+ _dotNetRef = DotNetObjectReference.Create(this);
+ await _jsRuntime.InvokeVoidAsync("globalFileDrag.register", _dotNetRef);
+ }
+
+ [JSInvokable("OnGlobalDragEnter")]
+ public Task OnGlobalDragEnterAsync()
+ {
+ if (!_showOverlay)
+ {
+ _showOverlay = true;
+ StateHasChanged();
+ }
+ return Task.CompletedTask;
+ }
+
+ [JSInvokable("OnGlobalDragLeave")]
+ public Task OnGlobalDragLeaveAsync()
+ {
+ if (_showOverlay)
+ {
+ _showOverlay = false;
+ ClearDragClass();
+ StateHasChanged();
+ }
+ return Task.CompletedTask;
+ }
+
+ async Task OnInputFileChanged(InputFileChangeEventArgs e)
+ {
+ //TODO: send files to a service or an event
+
+ ClearDragClass();
+ _showOverlay = false;
+ await _jsRuntime.InvokeVoidAsync("globalFileDrag.reset", _dotNetRef);
+ StateHasChanged();
+ }
+
+ void SetDragClass() => _dragClass = $"{DefaultDragClass} mud-border-primary";
+
+ void ClearDragClass() => _dragClass = DefaultDragClass;
+
+ public async ValueTask DisposeAsync()
+ {
+ if (_disposed)
+ {
+ return;
+ }
+
+ _disposed = true;
+ await _jsRuntime.InvokeVoidAsync("globalFileDrag.unregister");
+ _dotNetRef?.Dispose();
+ }
+}
diff --git a/AudioCuesheetEditor/wwwroot/css/app.css b/AudioCuesheetEditor/wwwroot/css/app.css
index 33d6bb99..f72131ce 100644
--- a/AudioCuesheetEditor/wwwroot/css/app.css
+++ b/AudioCuesheetEditor/wwwroot/css/app.css
@@ -51,4 +51,14 @@ a, .btn-link {
.blazor-error-boundary::after {
content: "An error has occurred."
+}
+
+.file-upload-input {
+ position: absolute;
+ inset: 0;
+ width: 100vw;
+ height: 100vh;
+ opacity: 0;
+ cursor: pointer;
+ z-index: 10;
}
\ No newline at end of file
diff --git a/AudioCuesheetEditor/wwwroot/index.html b/AudioCuesheetEditor/wwwroot/index.html
index 89c2fd6c..0f4b486f 100644
--- a/AudioCuesheetEditor/wwwroot/index.html
+++ b/AudioCuesheetEditor/wwwroot/index.html
@@ -57,6 +57,7 @@
+