@inject IJSRuntime JS @inject ISnackbar Snackbar @inject NavigationManager Navigation Ссылка для приглашения:
Копировать
@code { private MudIconButton? _buttonRef; private bool _popoverOpen; private string _shareUrl = ""; /// /// Ссылка для копирования. Если не указана, используется текущий URL страницы. /// [Parameter] public string ShareUrl { get; set; } = string.Empty; protected override void OnInitialized() { if (string.IsNullOrEmpty(ShareUrl)) ShareUrl = Navigation.Uri; } protected override void OnParametersSet() { if (!string.IsNullOrEmpty(ShareUrl)) _shareUrl = ShareUrl; } private async Task OpenPopover() { if (string.IsNullOrEmpty(ShareUrl)) { Snackbar.Add("Ссылка недоступна", Severity.Warning); return; } _shareUrl = ShareUrl; _popoverOpen = true; } private async Task CopyLink() { try { await JS.InvokeVoidAsync("navigator.clipboard.writeText", _shareUrl); Snackbar.Add("Ссылка скопирована в буфер обмена", Severity.Success); _popoverOpen = false; } catch (Exception ex) { Snackbar.Add($"Не удалось скопировать ссылку: {ex.Message}", Severity.Error); } } }