6 changed files with 211 additions and 15 deletions
@ -0,0 +1,79 @@ |
|||||||
|
@inject ITooltipService TooltipService |
||||||
|
|
||||||
|
@implements IDisposable |
||||||
|
|
||||||
|
@if (Tooltip == null) |
||||||
|
{ |
||||||
|
<div>Add tooltip object...</div> |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
<div onclick="@Dismiss" class="tooltipContainer"> |
||||||
|
<div class="tooltip"> |
||||||
|
@Tooltip.Message |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
} |
||||||
|
|
||||||
|
<style> |
||||||
|
.toastContainer { |
||||||
|
border: 4px solid; |
||||||
|
border-radius: 4px; |
||||||
|
padding: 16px; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-items: stretch; |
||||||
|
width: 250px; |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
|
||||||
|
.@SeverityType.Warning.ToLower() { |
||||||
|
background-color: var(--severity-warning-color); |
||||||
|
border-color: var(--severity-warning-border-color); |
||||||
|
} |
||||||
|
|
||||||
|
.@SeverityType.Error.ToLower() { |
||||||
|
background-color: var(--severity-error-color); |
||||||
|
border-color: var(--severity-error-border-color); |
||||||
|
} |
||||||
|
|
||||||
|
.@SeverityType.Information.ToLower() { |
||||||
|
background-color: var(--severity-information-color); |
||||||
|
border-color: var(--severity-information-border-color); |
||||||
|
} |
||||||
|
|
||||||
|
.@SeverityType.Success.ToLower() { |
||||||
|
background-color: var(--severity-success-color); |
||||||
|
border-color: var(--severity-success-border-color); |
||||||
|
} |
||||||
|
|
||||||
|
.toastTitle { |
||||||
|
font-weight: 800; |
||||||
|
} |
||||||
|
|
||||||
|
</style> |
||||||
|
|
||||||
|
@code { |
||||||
|
[Parameter] public TooltipModel? Tooltip { get; set; } |
||||||
|
|
||||||
|
protected override void OnInitialized() |
||||||
|
{ |
||||||
|
base.OnInitialized(); |
||||||
|
TooltipService.Subscribe(OnUpdate); |
||||||
|
} |
||||||
|
|
||||||
|
void Dismiss() |
||||||
|
{ |
||||||
|
TooltipService.RemoveTooltip(Tooltip!); |
||||||
|
} |
||||||
|
|
||||||
|
void IDisposable.Dispose() |
||||||
|
{ |
||||||
|
TooltipService.Unsubscribe(OnUpdate); |
||||||
|
} |
||||||
|
|
||||||
|
void OnUpdate() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
@implements IDisposable; |
||||||
|
|
||||||
|
@inject ITooltipService TooltipService |
||||||
|
|
||||||
|
@if (TooltipService.HasTooltips()) |
||||||
|
{ |
||||||
|
<div class="tooltipsContainer"> |
||||||
|
@foreach (var tooltip in Tooltips) |
||||||
|
{ |
||||||
|
<TooltipComponent Tooltip="tooltip"/> |
||||||
|
} |
||||||
|
</div> |
||||||
|
} |
||||||
|
|
||||||
|
<style> |
||||||
|
.tooltipContainer { |
||||||
|
position: fixed; |
||||||
|
top: 64px; |
||||||
|
right: 64px; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
gap: 5px; |
||||||
|
} |
||||||
|
</style> |
||||||
|
|
||||||
|
|
||||||
|
@code { |
||||||
|
private List<TooltipModel> Tooltips => TooltipService.GetTooltips(); |
||||||
|
|
||||||
|
protected override void OnInitialized() |
||||||
|
{ |
||||||
|
base.OnInitialized(); |
||||||
|
TooltipService.Subscribe(OnUpdate); |
||||||
|
} |
||||||
|
|
||||||
|
void IDisposable.Dispose() |
||||||
|
{ |
||||||
|
TooltipService.Unsubscribe(OnUpdate); |
||||||
|
} |
||||||
|
|
||||||
|
void OnUpdate() |
||||||
|
{ |
||||||
|
StateHasChanged(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
namespace Model.Feedback; |
||||||
|
|
||||||
|
public class TooltipModel |
||||||
|
{ |
||||||
|
public string Message { get; set; } = "addMessage"; |
||||||
|
} |
||||||
@ -0,0 +1,54 @@ |
|||||||
|
using Model.Feedback; |
||||||
|
|
||||||
|
namespace Services.Website; |
||||||
|
|
||||||
|
public class TooltipService : ITooltipService |
||||||
|
{ |
||||||
|
private readonly List<TooltipModel> tooltips = new(); |
||||||
|
|
||||||
|
public void Subscribe(Action action) |
||||||
|
{ |
||||||
|
OnChange += action; |
||||||
|
} |
||||||
|
|
||||||
|
public void Unsubscribe(Action action) |
||||||
|
{ |
||||||
|
OnChange += action; |
||||||
|
} |
||||||
|
|
||||||
|
public void AddTooltip(TooltipModel tooltip) |
||||||
|
{ |
||||||
|
tooltips.Insert(0, tooltip); |
||||||
|
|
||||||
|
NotifyDataChanged(); |
||||||
|
} |
||||||
|
|
||||||
|
public void RemoveTooltip(TooltipModel tooltip) |
||||||
|
{ |
||||||
|
tooltips.Remove(tooltip); |
||||||
|
} |
||||||
|
|
||||||
|
public bool HasTooltips() |
||||||
|
{ |
||||||
|
return tooltips.Count > 0; |
||||||
|
} |
||||||
|
|
||||||
|
public List<TooltipModel> GetTooltips() |
||||||
|
{ |
||||||
|
return tooltips; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void ClearAllTooltips() |
||||||
|
{ |
||||||
|
tooltips.Clear(); |
||||||
|
NotifyDataChanged(); |
||||||
|
} |
||||||
|
|
||||||
|
private event Action OnChange = null!; |
||||||
|
|
||||||
|
private void NotifyDataChanged() |
||||||
|
{ |
||||||
|
OnChange(); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue