style(adminui): group Raw modal button pairs, drop py-0 hack, use tree-twist
UI sweep task 4 (Shared/Raw). Markup-only; no behavior change. - Wrap the Cancel+primary modal-footer pairs in a Bootstrap btn-group across RawNameDialog, RawDriverTypeDialog, RawConfirmDialog, RawTagModal, RawManualTagEntryModal, RawCsvImportModal, RawBrowseModal and RawCsvExportModal (the last mixes a <button> with the download <a>, which is valid btn-group membership; the download attribute is unchanged). - RawBrowseModal: the rebirth confirm pair (Publish rebirth request + Cancel) becomes a btn-group btn-group-sm in place of the d-flex gap-2 wrapper. - RawCsvImportModal: drop the py-0 padding hack from the per-row remove button; .btn-sm sizing covers it. - RawTree: replace the expander's inline style="width:18px" (and the matching leaf placeholder) with the shared .tree-twist class. The CSV import all-or-nothing commit gating and RawTree's tree logic are untouched.
This commit is contained in:
@@ -180,7 +180,7 @@
|
|||||||
</text>
|
</text>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex gap-2 mt-2">
|
<div class="btn-group btn-group-sm mt-2" role="group">
|
||||||
<button type="button" class="btn btn-warning btn-sm"
|
<button type="button" class="btn btn-warning btn-sm"
|
||||||
disabled="@_rebirthBusy" @onclick="ConfirmRebirthAsync">
|
disabled="@_rebirthBusy" @onclick="ConfirmRebirthAsync">
|
||||||
@if (_rebirthBusy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
@if (_rebirthBusy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
||||||
@@ -236,12 +236,14 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-primary" @onclick="CommitAsync"
|
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
||||||
disabled="@(_busy || _selected.Count == 0)">
|
<button type="button" class="btn btn-primary" @onclick="CommitAsync"
|
||||||
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
disabled="@(_busy || _selected.Count == 0)">
|
||||||
Add @_selected.Count tag@(_selected.Count == 1 ? "" : "s")
|
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
||||||
</button>
|
Add @_selected.Count tag@(_selected.Count == 1 ? "" : "s")
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,11 +17,13 @@
|
|||||||
<p class="mb-0">@Message</p>
|
<p class="mb-0">@Message</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel" disabled="@_busy">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-danger" @onclick="Confirm" disabled="@_busy">
|
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel" disabled="@_busy">Cancel</button>
|
||||||
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
<button type="button" class="btn btn-danger" @onclick="Confirm" disabled="@_busy">
|
||||||
@ConfirmLabel
|
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
||||||
</button>
|
@ConfirmLabel
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -47,11 +47,13 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="Close">Close</button>
|
<div class="btn-group" role="group">
|
||||||
@if (!_loading && _error is null)
|
<button type="button" class="btn btn-outline-secondary" @onclick="Close">Close</button>
|
||||||
{
|
@if (!_loading && _error is null)
|
||||||
<a class="btn btn-primary" download="@_fileName" href="@_dataUri">Download CSV</a>
|
{
|
||||||
}
|
<a class="btn btn-primary" download="@_fileName" href="@_dataUri">Download CSV</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+13
-11
@@ -119,7 +119,7 @@
|
|||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button type="button" class="btn btn-sm btn-outline-danger py-0"
|
<button type="button" class="btn btn-sm btn-outline-danger"
|
||||||
title="Remove this row from the import"
|
title="Remove this row from the import"
|
||||||
@onclick="() => RemoveRow(row.RowNumber)">✕</button>
|
@onclick="() => RemoveRow(row.RowNumber)">✕</button>
|
||||||
</td>
|
</td>
|
||||||
@@ -144,16 +144,18 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="Close">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-primary"
|
<button type="button" class="btn btn-outline-secondary" @onclick="Close">Cancel</button>
|
||||||
disabled="@(!CanCommit || _committing)"
|
<button type="button" class="btn btn-primary"
|
||||||
@onclick="Commit">
|
disabled="@(!CanCommit || _committing)"
|
||||||
@if (_committing)
|
@onclick="Commit">
|
||||||
{
|
@if (_committing)
|
||||||
<span class="spinner-border spinner-border-sm"></span>
|
{
|
||||||
}
|
<span class="spinner-border spinner-border-sm"></span>
|
||||||
Commit @RemainingCount tag@(RemainingCount == 1 ? "" : "s")
|
}
|
||||||
</button>
|
Commit @RemainingCount tag@(RemainingCount == 1 ? "" : "s")
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+4
-2
@@ -37,8 +37,10 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-primary" @onclick="Submit">Create</button>
|
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-primary" @onclick="Submit">Create</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+7
-5
@@ -120,11 +120,13 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-primary" @onclick="CommitAsync" disabled="@_busy">
|
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
||||||
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
<button type="button" class="btn btn-primary" @onclick="CommitAsync" disabled="@_busy">
|
||||||
Create @_rows.Count tag@(_rows.Count == 1 ? "" : "s")
|
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
||||||
</button>
|
Create @_rows.Count tag@(_rows.Count == 1 ? "" : "s")
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -27,8 +27,10 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="button" class="btn btn-primary" @onclick="Submit">OK</button>
|
<button type="button" class="btn btn-outline-secondary" @onclick="Cancel">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-primary" @onclick="Submit">OK</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -98,11 +98,13 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
<div class="btn-group" role="group">
|
||||||
<button type="submit" class="btn btn-primary" disabled="@(_busy || _loadError is not null)">
|
<button type="button" class="btn btn-outline-secondary" @onclick="CloseAsync" disabled="@_busy">Cancel</button>
|
||||||
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
<button type="submit" class="btn btn-primary" disabled="@(_busy || _loadError is not null)">
|
||||||
Save changes
|
@if (_busy) { <span class="spinner-border spinner-border-sm me-1"></span> }
|
||||||
</button>
|
Save changes
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
</EditForm>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -173,14 +173,14 @@
|
|||||||
<div @key="node.Key" class="d-flex align-items-center gap-1 py-1" style="@indent">
|
<div @key="node.Key" class="d-flex align-items-center gap-1 py-1" style="@indent">
|
||||||
@if (hasExpander)
|
@if (hasExpander)
|
||||||
{
|
{
|
||||||
<button type="button" class="btn btn-sm btn-link p-0" style="width:18px"
|
<button type="button" class="btn btn-sm btn-link p-0 tree-twist"
|
||||||
@onclick="@(() => ToggleAsync(node))">
|
@onclick="@(() => ToggleAsync(node))">
|
||||||
@(node.Expanded ? "▼" : "▶")
|
@(node.Expanded ? "▼" : "▶")
|
||||||
</button>
|
</button>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<span style="width:18px"></span>
|
<span class="tree-twist"></span>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (items.Count > 0)
|
@if (items.Count > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user