Skip to content
Merged
Changes from 1 commit
Commits
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
Next Next commit
Update resource endpoints to always display at least one endpoint inline
  • Loading branch information
JamesNK committed Jul 10, 2024
commit 283e39c195d6ad5033a219eb9c8aa0db6bcf6ce6
Original file line number Diff line number Diff line change
@@ -1,80 +1,83 @@
@using Aspire.Dashboard.Model
@namespace Aspire.Dashboard.Components

@if (DisplayedEndpoints.Count == 1)
@if (DisplayedEndpoints.Count > 0)
{
var displayedEndpoint = DisplayedEndpoints[0];
if (displayedEndpoint.Url != null)
{
<a href="@displayedEndpoint.Url" target="_blank">@displayedEndpoint.Text</a>
}
else
{
@displayedEndpoint.Text
}
}
else
{
<FluentOverflow Class="endpoint-overflow">
<ChildContent>
@for (var i = 0; i < DisplayedEndpoints.Count; i++)
<div style="display: grid; grid-template-columns: minmax(0px, max-content) minmax(min-content, auto)">
<div style="text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
@WriteEndpoint(DisplayedEndpoints[0])
@if (DisplayedEndpoints.Count > 1)
{
var displayedEndpoint = DisplayedEndpoints[i];
var isLast = i == DisplayedEndpoints.Count - 1;

<FluentOverflowItem Data="displayedEndpoint">
@if (displayedEndpoint.Url != null)
{
<a href="@displayedEndpoint.Url" target="_blank">@displayedEndpoint.Text</a>
}
else
{
@displayedEndpoint.Text
}
@if (!isLast)
{
<span>,</span>
}
</FluentOverflowItem>
}
</ChildContent>
<MoreButtonTemplate Context="overflow">
<FluentButton Appearance="Appearance.Accent" OnClick="() => _popoverVisible = !_popoverVisible" Class="endpoint-button">
@($"+{overflow.ItemsOverflow.Count()}")
</FluentButton>
</MoreButtonTemplate>
<OverflowTemplate Context="overflow">
@{
var items = overflow.ItemsOverflow.ToList();
<span>,&nbsp;</span>
}
<FluentPopover AnchorId="@overflow.IdMoreButton" @bind-Open="_popoverVisible" VerticalThreshold="200" AutoFocus="false">
<Header>
Endpoints
</Header>
<Body>
<div class="endpoint-popup">
@foreach (var item in items)
</div>
<div>
@if (DisplayedEndpoints.Count > 1)
{
<FluentOverflow Class="endpoint-overflow">
<ChildContent>
@for (var i = 1; i < DisplayedEndpoints.Count; i++)
{
var d = (DisplayedEndpoint)item.Data!;
<div class="endpoint-link">
@if (d.Url != null)
{
<a href="@d.Url" target="_blank" title="@d.Text">@d.Text</a>
}
else
var displayedEndpoint = DisplayedEndpoints[i];
var isLast = i == DisplayedEndpoints.Count - 1;

<FluentOverflowItem Data="displayedEndpoint">
@WriteEndpoint(displayedEndpoint)

@if (!isLast)
{
<span title="@d.Text">@d.Text</span>
<span>,</span>
}
</div>
</FluentOverflowItem>
}
</div>
</Body>
</FluentPopover>
</OverflowTemplate>
</FluentOverflow>
</ChildContent>
<MoreButtonTemplate Context="overflow">
<FluentButton Appearance="Appearance.Accent" OnClick="() => _popoverVisible = !_popoverVisible" Class="endpoint-button">
@($"+{overflow.ItemsOverflow.Count()}")
</FluentButton>
</MoreButtonTemplate>
<OverflowTemplate Context="overflow">
@{
var items = overflow.ItemsOverflow.ToList();
}
<FluentPopover AnchorId="@overflow.IdMoreButton" @bind-Open="_popoverVisible" VerticalThreshold="200" AutoFocus="false">
<Header>
Endpoints
</Header>
<Body>
<div class="endpoint-popup">
@foreach (var item in items)
{
var d = (DisplayedEndpoint)item.Data!;
<div class="endpoint-link">
@WriteEndpoint(d)
</div>
}
</div>
</Body>
</FluentPopover>
</OverflowTemplate>
</FluentOverflow>
}
</div>
</div>
}

@if (!string.IsNullOrEmpty(AdditionalMessage))
{
<div>@AdditionalMessage</div>
}

@code {
RenderFragment WriteEndpoint(DisplayedEndpoint displayedEndpoint)
{
if (displayedEndpoint.Url != null)
{
return @<a href="@displayedEndpoint.Url" target="_blank">@displayedEndpoint.Text</a>;
}
else
{
return @<span title="@displayedEndpoint.Text">@displayedEndpoint.Text</span>;
}
}
}