fix(share-popover): anchor popover to button via relative-positioned wrapper div
This commit is contained in:
@@ -1,66 +1,72 @@
|
||||
@namespace DeepDrftPublic.Client.Controls
|
||||
|
||||
<MudTooltip Text="Share">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Share"
|
||||
Size="Size.Large"
|
||||
Color="Color.Secondary"
|
||||
Disabled="@(!RendererInfo.IsInteractive)"
|
||||
OnClick="@Toggle"
|
||||
aria-label="@(IsReleaseMode ? "Share this release" : "Share this track")" />
|
||||
</MudTooltip>
|
||||
|
||||
@* Overlay is viewport-level; keep it outside the anchor wrapper so it doesn't
|
||||
inherit relative stacking context and still covers the full page. *@
|
||||
<MudOverlay Visible="@_open" OnClick="@Close" AutoClose="true" />
|
||||
|
||||
<MudPopover Open="@_open"
|
||||
Fixed="false"
|
||||
AnchorOrigin="Origin.BottomRight"
|
||||
TransformOrigin="Origin.TopRight"
|
||||
Class="deepdrft-share-popover">
|
||||
<MudStack Spacing="2" Class="deepdrft-share-popover-body">
|
||||
@* Wrap the trigger and popover in a relative-positioned container so MudPopover
|
||||
anchors to the button rather than the nearest positioned ancestor in the page. *@
|
||||
<div class="deepdrft-share-popover-anchor">
|
||||
<MudTooltip Text="Share">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Share"
|
||||
Size="Size.Large"
|
||||
Color="Color.Secondary"
|
||||
Disabled="@(!RendererInfo.IsInteractive)"
|
||||
OnClick="@Toggle"
|
||||
aria-label="@(IsReleaseMode ? "Share this release" : "Share this track")" />
|
||||
</MudTooltip>
|
||||
|
||||
<MudStack Row AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween">
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Link"
|
||||
Variant="Variant.Text"
|
||||
Color="Color.Primary"
|
||||
OnClick="@CopyLink">
|
||||
Copy link
|
||||
</MudButton>
|
||||
@if (_linkCopied)
|
||||
<MudPopover Open="@_open"
|
||||
Fixed="false"
|
||||
AnchorOrigin="Origin.BottomRight"
|
||||
TransformOrigin="Origin.TopRight"
|
||||
Class="deepdrft-share-popover">
|
||||
<MudStack Spacing="2" Class="deepdrft-share-popover-body">
|
||||
|
||||
<MudStack Row AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween">
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Link"
|
||||
Variant="Variant.Text"
|
||||
Color="Color.Primary"
|
||||
OnClick="@CopyLink">
|
||||
Copy link
|
||||
</MudButton>
|
||||
@if (_linkCopied)
|
||||
{
|
||||
<MudText Typo="Typo.caption" Color="Color.Success">Copied!</MudText>
|
||||
}
|
||||
</MudStack>
|
||||
|
||||
@* Embed is a single-track affordance only; a release page is not a single-track embed (§3b.3). *@
|
||||
@if (!IsReleaseMode)
|
||||
{
|
||||
<MudText Typo="Typo.caption" Color="Color.Success">Copied!</MudText>
|
||||
}
|
||||
</MudStack>
|
||||
<MudDivider />
|
||||
|
||||
@* Embed is a single-track affordance only; a release page is not a single-track embed (§3b.3). *@
|
||||
@if (!IsReleaseMode)
|
||||
{
|
||||
<MudDivider />
|
||||
<MudCheckBox @bind-Value="Embed" Color="Color.Primary" Label="Embed player" Dense="true" />
|
||||
|
||||
<MudCheckBox @bind-Value="Embed" Color="Color.Primary" Label="Embed player" Dense="true" />
|
||||
|
||||
@if (_embed)
|
||||
{
|
||||
<MudStack Row AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudTextField Value="@EmbedSnippet"
|
||||
T="string"
|
||||
ReadOnly="true"
|
||||
Variant="Variant.Outlined"
|
||||
Lines="3"
|
||||
Margin="Margin.Dense"
|
||||
Class="deepdrft-share-embed-field" />
|
||||
<MudStack AlignItems="AlignItems.Center" Spacing="0">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy"
|
||||
Color="Color.Primary"
|
||||
OnClick="@CopyEmbed"
|
||||
aria-label="Copy embed snippet" />
|
||||
@if (_embedCopied)
|
||||
{
|
||||
<MudText Typo="Typo.caption" Color="Color.Success">Copied!</MudText>
|
||||
}
|
||||
@if (_embed)
|
||||
{
|
||||
<MudStack Row AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudTextField Value="@EmbedSnippet"
|
||||
T="string"
|
||||
ReadOnly="true"
|
||||
Variant="Variant.Outlined"
|
||||
Lines="3"
|
||||
Margin="Margin.Dense"
|
||||
Class="deepdrft-share-embed-field" />
|
||||
<MudStack AlignItems="AlignItems.Center" Spacing="0">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy"
|
||||
Color="Color.Primary"
|
||||
OnClick="@CopyEmbed"
|
||||
aria-label="Copy embed snippet" />
|
||||
@if (_embedCopied)
|
||||
{
|
||||
<MudText Typo="Typo.caption" Color="Color.Success">Copied!</MudText>
|
||||
}
|
||||
</MudStack>
|
||||
</MudStack>
|
||||
</MudStack>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</MudStack>
|
||||
</MudPopover>
|
||||
</MudStack>
|
||||
</MudPopover>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user