Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
a6f944a
feat(upload): add FileUpload type and enhance file metadata
nielsbosma Oct 30, 2025
8b0dc82
feat(file-input): add progress and state to FileInput model
nielsbosma Oct 30, 2025
d9a8d11
feat(file-input): add clear handler support to FileInput
nielsbosma Oct 30, 2025
c91d207
refactor(file): remove LastModified from FileInput/FileBase
nielsbosma Oct 30, 2025
e673490
feat(file-input): add support for file delete event
nielsbosma Oct 30, 2025
550e25e
refactor(state): add atomic Set and Default methods
nielsbosma Oct 30, 2025
d3457ee
refactor(file-input): replace Clear with Delete and State with Status
nielsbosma Oct 30, 2025
deac00d
feat(upload): add cancellation support for file uploads
nielsbosma Oct 30, 2025
fed0600
refactor(file): replace FileInput with FileUpload model
nielsbosma Oct 30, 2025
77a0774
refactor(file-input): use Guid for FileUpload.Id and OnDelete
nielsbosma Oct 30, 2025
726aa19
refactor(docs): remove async keyword from UseUpload handlers
nielsbosma Oct 30, 2025
9798bde
feat(upload): add IUploadHandler for pluggable upload logic
nielsbosma Oct 30, 2025
5ac9e2f
feat(services): add MultiFileUploadHandler stub implementation
nielsbosma Oct 30, 2025
8003178
feat(upload): add detailed upload progress and logging
nielsbosma Oct 31, 2025
b58a399
feat(uploads): add generic FileUpload<T> and upload cancelation
nielsbosma Oct 31, 2025
17805b5
refactor(file-input): rename delete handlers to cancel
nielsbosma Oct 31, 2025
346fa58
feat(core): add per-session event dispatch queues
nielsbosma Oct 31, 2025
a2cc5e4
fix(file-input): handle undefined events in cancel handler
nielsbosma Oct 31, 2025
342d2eb
feat(upload): support multi-file state in MemoryStreamUploadHandler
nielsbosma Oct 31, 2025
2944ae0
fix(upload): improve file cancel logic and tab event handling
nielsbosma Oct 31, 2025
6b5e5a7
refactor(file-input): require UploadContext in ToFileInput
nielsbosma Nov 1, 2025
a15a9f5
feat(widgets): add upload context support to FileInput demos
nielsbosma Nov 1, 2025
aa842cf
Add ScaffoldColumnAttribute filtering to DataTable and Form builders
nielsbosma Nov 1, 2025
cdca471
feat(upload): improve progress reporting & update UI details
nielsbosma Nov 1, 2025
e9919b9
feat(file-upload): add max file size validation support
nielsbosma Nov 1, 2025
cd8ca0f
feat(upload): set file type and size limits on uploads
nielsbosma Nov 1, 2025
a036d59
Refactor event handling to support asynchronous invocation
nielsbosma Nov 1, 2025
cb82e5b
feat(upload): add file upload validation tab and logic
nielsbosma Nov 1, 2025
e01e09b
feat(upload): add max files support to file upload
nielsbosma Nov 2, 2025
51c558a
feat(upload): improve file input UX and validation settings
nielsbosma Nov 2, 2025
3f2eb0d
refactor(upload): generalize upload sinks and handler
nielsbosma Nov 2, 2025
b573c2b
refactor(upload): split handler into static factory and impl
nielsbosma Nov 2, 2025
cedaea0
fix(upload): rethrow OperationCanceledException after abort
nielsbosma Nov 3, 2025
b10104e
feat(forms,upload): improve file upload UX and error handling
nielsbosma Nov 3, 2025
4fe3178
refactor(upload): make UploadContext state non-nullable
nielsbosma Nov 3, 2025
63bbbed
fix(article): update nielsbosma title to Founder
nielsbosma Nov 3, 2025
4906927
fix(file-input): enforce maxFiles limit across uploads
nielsbosma Nov 3, 2025
45d1ad5
Enhance file upload handling and details representation in forms
nielsbosma Nov 3, 2025
472b930
refactor(forms): update input factory to accept view context
nielsbosma Nov 3, 2025
ea16b55
feat(docs,widgets): add chunked audio upload & enhance file upload docs
nielsbosma Nov 3, 2025
f60e73e
Merge branch 'main' into refactor/uploads
nielsbosma Nov 3, 2025
e986101
feat(forms): block form submission while file uploads are in progress
nielsbosma Nov 3, 2025
42ceb3c
fix(apphub): remove unnecessary async keyword from OnWidgetTreeChanged
nielsbosma Nov 3, 2025
3443e6c
test(ConvertJsonNodeTests): update JSON keys for file fields
nielsbosma Nov 3, 2025
0879a93
Update Ivy/Core/Hooks/State.cs
nielsbosma Nov 3, 2025
2d0acc7
Merge branch 'main' into refactor/uploads
nielsbosma Nov 3, 2025
333e592
Update Ivy/Core/EventDispatchQueue.cs
nielsbosma Nov 3, 2025
55b7036
Merge branch 'refactor/uploads' of https://github.com/Ivy-Interactive…
nielsbosma Nov 3, 2025
c753fa6
Replace Thread.Sleep with Task.Delay in event queue update coalescing…
Copilot Nov 3, 2025
ca061b5
Extract progress threshold as configurable parameter in MemoryStreamU…
Copilot Nov 3, 2025
5726fb2
Refactor file upload handlers and update labels for attachments
nielsbosma Nov 3, 2025
d4f98ec
fix(server): inject ivy-host meta tag for file uploads in dev mode
nielsbosma Nov 3, 2025
ed00b2e
fix(upload): add /upload to excluded paths to prevent routing interfe…
nielsbosma Nov 3, 2025
98a4a6b
Remove debug ivy-host meta tag injection from Server.cs
nielsbosma Nov 3, 2025
5344605
Remove delayed upload handler for file uploads
nielsbosma Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 0 additions & 43 deletions Ivy.Docs.Shared/Docs/01_Onboarding/02_Concepts/Prompts.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,49 +96,6 @@ public class RenameView : ViewBase
}
```

### File Selection Prompts

Handle file selection through dialogs with file inputs:

```csharp demo-tabs
public record UploadRequest
{
public IEnumerable<FileInput> Files { get; set; } = Array.Empty<FileInput>();
}

public class UploadView : ViewBase
{
public override object? Build()
{
var client = this.UseService<IClientProvider>();
var isOpen = this.UseState(false);
var uploadData = this.UseState(new UploadRequest());

this.UseEffect(() => {
if (!isOpen.Value && uploadData.Value.Files.Any())
{
// Files would be uploaded here
client.Toast($"Selected {uploadData.Value.Files.Count()} file(s)", "Success");
}
}, [isOpen]);

return Layout.Vertical(
new Button(
"Upload File",
onClick: _ => isOpen.Set(true)
),
isOpen.Value ? uploadData.ToForm()
.Builder(e => e.Files, e => e.ToFileInput().Accept(".pdf,.doc,.docx"))
.Label(e => e.Files, "Select Files:")
.ToDialog(isOpen,
title: "Upload Files",
submitTitle: "Upload"
) : null
);
}
}
```

### Custom Prompts

Create custom dialogs with multiple inputs:
Expand Down
Loading
Loading