39 lines
1.8 KiB
Plaintext
39 lines
1.8 KiB
Plaintext
<article class="block-card">
|
|
<header class="block-header">
|
|
<div class="actions">
|
|
<span class="drag-handle" draggable="true" @ondragstart="() => OnDrag.InvokeAsync()" title="Перетащить блок">⠿</span>
|
|
<span class="block-number">@Number.ToString("00")</span>
|
|
<strong>Упражнение</strong>
|
|
</div>
|
|
<div class="actions">
|
|
<button title="Вверх" aria-label="Переместить вверх" disabled="@IsFirst" @onclick="() => OnMove.InvokeAsync(-1)">↑</button>
|
|
<button title="Вниз" aria-label="Переместить вниз" disabled="@IsLast" @onclick="() => OnMove.InvokeAsync(1)">↓</button>
|
|
<button @onclick="() => OnCopy.InvokeAsync()">Копия</button>
|
|
<button class="danger-text" @onclick="() => OnDelete.InvokeAsync()">Удалить</button>
|
|
</div>
|
|
</header>
|
|
<div class="exercise-columns"><ExerciseEditor Exercise="Block.Exercises[0]" OnChanged="OnChanged" /></div>
|
|
<footer class="block-footer">
|
|
<div class="actions">
|
|
<label class="rest-input">Подходов
|
|
<input type="number" min="1" step="1" @bind="Block.SetsCount" @bind:after="Changed" />
|
|
</label>
|
|
<label class="rest-input">Отдых, мин
|
|
<input type="number" min="0" step="any" @bind="Block.RestMinutes" @bind:after="Changed" />
|
|
</label>
|
|
</div>
|
|
</footer>
|
|
</article>
|
|
@code {
|
|
[Parameter, EditorRequired] public WorkoutBlock Block { get; set; } = null!;
|
|
[Parameter] public int Number { get; set; }
|
|
[Parameter] public bool IsFirst { get; set; }
|
|
[Parameter] public bool IsLast { get; set; }
|
|
[Parameter] public EventCallback OnChanged { get; set; }
|
|
[Parameter] public EventCallback<int> OnMove { get; set; }
|
|
[Parameter] public EventCallback OnCopy { get; set; }
|
|
[Parameter] public EventCallback OnDelete { get; set; }
|
|
[Parameter] public EventCallback OnDrag { get; set; }
|
|
private Task Changed() => OnChanged.InvokeAsync();
|
|
}
|