Request body UI added. Top level objects expanded by default.

This commit is contained in:
Alexander Shabarshov 2025-02-26 12:22:14 +00:00
parent c182db2b64
commit 959fef4418
7 changed files with 79 additions and 10 deletions

View File

@ -0,0 +1,26 @@
@using Microsoft.OpenApi.Models
@if (Value != null)
{
<div class="mt-body">
<div class="mt-header-text">@Key</div>
<SchemaControl Value="@Value.Schema" Collapsed="false"/>
<div class="p-body">
<ExampleControl Value="@Value.Example" />
@if (Value.Examples.Count > 0)
{
foreach (var (n, v) in Value.Examples)
{
<ExampleControl Example="@v" Name="@n" />
}
}
</div>
</div>
}
@code {
[Parameter]
public string? Key { get; set; }
[Parameter]
public OpenApiMediaType? Value { get; set; }
}

View File

@ -49,6 +49,7 @@
}
<ParametersControl Value="@Value.Parameters"/>
<RequestBodyControl Value="@Value.RequestBody"/>
<ResponsesControl Value="@Value.Responses" />
}
</div>

View File

@ -0,0 +1,20 @@
@using Microsoft.OpenApi.Models
@if (Value != null)
{
<div class="request">
<div class="rb-title">Request body</div>
<div class="rb-body">
<MarkdownControl Value="@Value.Description" />
@foreach ( var media in Value.Content)
{
<MediaTypeControl Key="@media.Key" Value="@media.Value" />
}
</div>
</div>
}
@code {
[Parameter]
public OpenApiRequestBody? Value { get; set; }
}

View File

@ -26,7 +26,7 @@
</div>
<div class="p-body">
<SchemaControl Value="@val.Schema" />
<SchemaControl Value="@val.Schema" Collapsed="false" />
@if (val.Content.Count > 0)
{
@ -36,7 +36,7 @@
<tr>
<td>@k</td>
<td>
<SchemaControl Value="@v.Schema" />
<SchemaControl Value="@v.Schema" Collapsed="false" />
@if (v.Encoding.Count > 0)
{
<table class="r-encoding">
@ -91,7 +91,7 @@
{
<div class="p-name">@key</div>
<div class="p-body">
<SchemaControl Value="@val.Schema"/>
<SchemaControl Value="@val.Schema" Collapsed="false" />
</div>
}

View File

@ -6,7 +6,7 @@
<td>
@if (Value.Type == "array")
{
<Expander HeaderClass="s-type" Class="s-bg-odd" Title="@ArrayText">
<Expander HeaderClass="s-type" Class="s-bg-odd" Title="@ArrayText" Collapsed="@Collapsed">
<div class="s-nested">
<SchemaControl Value="@Value.Items" />
</div>
@ -14,7 +14,7 @@
}
else if (Value.Type == "object")
{
<Expander HeaderClass="s-type" Class="s-bg-odd" Title="@ObjectText">
<Expander HeaderClass="s-type" Class="s-bg-odd" Title="@ObjectText" Collapsed="@Collapsed">
<div class="s-props s-nested">
<table class="schema">
@foreach (var p in Value.Properties)
@ -63,6 +63,8 @@
public string? Title { get; set; }
[Parameter]
public bool Required { get; set; }
[Parameter]
public bool Collapsed { get; set; } = true;
private string TitleText => (string.IsNullOrWhiteSpace(Title) ? Value?.Title : Title) ?? "";
@ -74,11 +76,10 @@
return "";
var nullable = Value.Nullable ? "?" : "";
var itemsType = $"{Value.Items?.Type ?? "-string-"}{nullable}";
if (Value.MinItems != null || Value.MaxItems != null)
return $"{itemsType} [{(Value.MinItems == null ? "" : Value.MinItems.Value)}..{(Value.MaxItems == null ? "" : Value.MaxItems.Value)}]";
return $"{itemsType} []";
return $"array{nullable} [{(Value.MinItems == null ? "" : Value.MinItems.Value)}..{(Value.MaxItems == null ? "" : Value.MaxItems.Value)}]";
return $"array{nullable} []";
}
}

View File

@ -3,7 +3,7 @@
@if ( ResolvedValue != null )
{
<table class="schema">
<SchemaChildControl Value="@ResolvedValue" Title="@Title" Required="@Required" />
<SchemaChildControl Value="@ResolvedValue" Title="@Title" Required="@Required" Collapsed="@Collapsed"/>
</table>
}
@ -15,6 +15,8 @@
public string? Title { get; set; }
[Parameter]
public bool Required { get; set; }
[Parameter]
public bool Collapsed { get; set; } = true;
[CascadingParameter]
public OpenApiDocument? Api { get; set; }

View File

@ -224,7 +224,26 @@
}
.r-encoding{}
.schema {}
.request {
}
.rb-body {
}
.rb-title {
font-weight: bold;
}
.mt-body {
margin-left: 20px;
}
.mt-header-text {
color: var(--oa-fg-1);
font-weight: bold;
}
.schema {
}
.s-additional-props {}
.s-props {}
.s-title {