- |
+ |
|
@@ -193,15 +197,15 @@ export function CardSearch({
|
{c.name} |
{c.type_line} |
- {c.mana_value} |
-
+ | {c.mana_value} |
+
adjust(c.oracle_id, -1)}
onIncrement={() => adjust(c.oracle_id, 1)}
/>
|
-
+ |
{c.decks.map((d) => (
{d}
@@ -292,6 +296,7 @@ export function CardSearch({
setText(e.target.value)} placeholder="e.g. bolt" />
+
@@ -351,6 +356,13 @@ export function CardSearch({
/>
+
+
{hasActiveFilter && (
diff --git a/src/views/DeckView.tsx b/src/views/DeckView.tsx
index 4221354..3b1e26b 100644
--- a/src/views/DeckView.tsx
+++ b/src/views/DeckView.tsx
@@ -346,6 +346,11 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
const [filterQuery, setFilterQuery] = useState("");
const [dialog, setDialog] = useState (null);
const [dialogError, setDialogError] = useState(null);
+ // On narrow screens the deck list and the deck-building interface are
+ // separate "screens" (only one visible at a time) rather than stacked —
+ // this only matters below the .deck-layout stacking breakpoint; CSS keeps
+ // both panes visible side by side above it regardless of this flag.
+ const [mobileShowList, setMobileShowList] = useState(true);
const [libQuery, setLibQuery] = useState("");
const [libResults, setLibResults] = useState([]);
@@ -467,6 +472,7 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
setNewName("");
await loadDecks();
setSelected(d.id);
+ setMobileShowList(false);
}
async function exportDeck(d: Deck) {
@@ -497,6 +503,7 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
setDialogError(null);
await loadDecks();
setSelected(result.deck.id);
+ setMobileShowList(false);
} catch (err) {
setDialogError(friendlyDeckError(err));
}
@@ -638,7 +645,10 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
async function confirmDelete() {
if (dialog?.kind !== "delete") return;
await api.deleteDeck(dialog.deck.id);
- if (selected === dialog.deck.id) setSelected(null);
+ if (selected === dialog.deck.id) {
+ setSelected(null);
+ setMobileShowList(true);
+ }
setDialog(null);
await loadDecks();
}
@@ -765,14 +775,14 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
{entries.map((e) => (
- |
+ |
toggleCard(e.oracle_id)}
/>
|
-
+ |
|
@@ -783,7 +793,7 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
{e.name}
|
{e.type_line} |
-
+ |
setQty(e.oracle_id, e.quantity - 1)}
@@ -792,7 +802,7 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
pending={pendingRemoval.has(e.oracle_id)}
/>
|
- {e.quantity_owned} |
+ {e.quantity_owned} |
setMaybeboard(e, !e.is_maybeboard)} />
|
@@ -818,7 +828,7 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
}
return (
-
+
Decks
@@ -840,7 +850,10 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
setSelected(d.id)}
+ onClick={() => {
+ setSelected(d.id);
+ setMobileShowList(false);
+ }}
>
{d.name}
@@ -887,13 +900,22 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
-
+
{selected === null || !deck ? (
Select or create a deck.
) : (
<>
- {deck.name}
+
+
+ setMobileShowList(true)}
+ />
+
+ {deck.name}
+
+
@@ -600,6 +608,13 @@ export function LibraryBrowser({
/>
+
+
|