|
@@ -2,6 +2,9 @@
|
|
|
|
|
|
@code {
|
|
@code {
|
|
[Parameter, Required] public KeyValuePair<Guid, string>? Playlist { get; set; }
|
|
[Parameter, Required] public KeyValuePair<Guid, string>? Playlist { get; set; }
|
|
|
|
+ [Parameter, Required] public int ListItemIndex { get; set; }
|
|
|
|
+ [Parameter, Required] public int ListItemCount { get; set; }
|
|
|
|
+
|
|
[Parameter] public EventCallback<Guid> EditPlaylist { get; set; } = EventCallback<Guid>.Empty;
|
|
[Parameter] public EventCallback<Guid> EditPlaylist { get; set; } = EventCallback<Guid>.Empty;
|
|
[Parameter] public EventCallback<Guid> DeletePlaylist { get; set; } = EventCallback<Guid>.Empty;
|
|
[Parameter] public EventCallback<Guid> DeletePlaylist { get; set; } = EventCallback<Guid>.Empty;
|
|
|
|
|
|
@@ -38,6 +41,29 @@
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</td>
|
|
<td>
|
|
<td>
|
|
|
|
+ @if (ListItemCount > 1)
|
|
|
|
+ {
|
|
|
|
+ var isFirst = ListItemIndex == 0;
|
|
|
|
+ var isLast = ListItemIndex == ListItemCount - 1;
|
|
|
|
+
|
|
|
|
+ <div class="dropstart">
|
|
|
|
+ <button type="button" class="btn btn-primary p-2" data-bs-toggle="dropdown">
|
|
|
|
+ <i class="bi bi-arrow-down-up"></i>
|
|
|
|
+ </button>
|
|
|
|
+ <div class="dropdown-menu text-end p-1 text-nowrap" style="width: initial;min-width: initial;transform: translateY(-10);">
|
|
|
|
+ <button class="btn btn-primary p-2" disabled="@isFirst" @onclick="()=>PlaylistHelper.ListMoveUp(ListItemIndex)">
|
|
|
|
+ <i class="bi bi-arrow-bar-up"></i>
|
|
|
|
+ Up
|
|
|
|
+ </button>
|
|
|
|
+ <button class="btn btn-primary p-2" disabled="@isLast" @onclick="()=>PlaylistHelper.ListMoveDown(ListItemIndex)">
|
|
|
|
+ <i class="bi bi-arrow-bar-down"></i>
|
|
|
|
+ Down
|
|
|
|
+ </button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ }
|
|
|
|
+ </td>
|
|
|
|
+ <td>
|
|
<button type="button" class="btn btn-primary p-2" @onclick="()=>DownloadPlaylist(Playlist.Value.Key)">
|
|
<button type="button" class="btn btn-primary p-2" @onclick="()=>DownloadPlaylist(Playlist.Value.Key)">
|
|
<i class="bi bi-download"></i>
|
|
<i class="bi bi-download"></i>
|
|
</button>
|
|
</button>
|
|
@@ -47,8 +73,7 @@
|
|
<i class="bi bi-pencil-square"></i>
|
|
<i class="bi bi-pencil-square"></i>
|
|
</button>
|
|
</button>
|
|
</td>
|
|
</td>
|
|
- <td class="align-middle text-nowrap">
|
|
|
|
-
|
|
|
|
|
|
+ <td>
|
|
<button type="button" class="btn btn-danger p-2" @onclick="()=>DeletePlaylist.InvokeAsync(Playlist.Value.Key)">
|
|
<button type="button" class="btn btn-danger p-2" @onclick="()=>DeletePlaylist.InvokeAsync(Playlist.Value.Key)">
|
|
<i class="bi bi-trash"></i>
|
|
<i class="bi bi-trash"></i>
|
|
</button>
|
|
</button>
|
|
@@ -70,9 +95,10 @@
|
|
{
|
|
{
|
|
var uri = new Uri(item.item);
|
|
var uri = new Uri(item.item);
|
|
var paths = uri.AbsolutePath.Split('/').Skip(2).ToArray();
|
|
var paths = uri.AbsolutePath.Split('/').Skip(2).ToArray();
|
|
|
|
+
|
|
<tr>
|
|
<tr>
|
|
<td><img src="blazor-192.png" style="height:50px" /></td>
|
|
<td><img src="blazor-192.png" style="height:50px" /></td>
|
|
- <td colspan="5" class="align-middle w-100">
|
|
|
|
|
|
+ <td colspan="6" class="align-middle w-100">
|
|
<div class="text-nowrap">- broken reference -</div>
|
|
<div class="text-nowrap">- broken reference -</div>
|
|
@foreach (var p in paths)
|
|
@foreach (var p in paths)
|
|
{
|
|
{
|
|
@@ -96,7 +122,7 @@
|
|
{
|
|
{
|
|
<tr>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
- <td colspan="6" class="align-middle w-100">
|
|
|
|
|
|
+ <td colspan="7" class="align-middle w-100">
|
|
<div class="text-nowrap">- empty -</div>
|
|
<div class="text-nowrap">- empty -</div>
|
|
</td>
|
|
</td>
|
|
</tr>
|
|
</tr>
|