diff options
| author | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
| commit | 2ebdfe109bbff27b35a5e9ae208dabddd266191e (patch) | |
| tree | ed63233177008c7bef134606fbf0254754e91fb2 /src/components/right_panel.svelte | |
| parent | a7488d695b3f647d657f6b3482d5333e1e869771 (diff) | |
change project layout
Diffstat (limited to 'src/components/right_panel.svelte')
| -rw-r--r-- | src/components/right_panel.svelte | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/components/right_panel.svelte b/src/components/right_panel.svelte new file mode 100644 index 0000000..816687e --- /dev/null +++ b/src/components/right_panel.svelte @@ -0,0 +1,97 @@ +<script lang="js"> + import CardThumb from './card_thumb.svelte'; + import { changeInput, showingCards, onPrevPage, onNextPage } from '../search' + import { deckOps } from '../deck'; + + function onChange(event) { + changeInput(event.target.value); + } + + function onDrop(event) { + event.preventDefault(); + const data = JSON.parse(event.dataTransfer.getData('text')); + if (data.area === 'main' || data.area === 'side' || data.area === 'extra') { + deckOps.deleteCard(data.area, data.idx); + } + } +</script> + +<div class="right-panel" role="region" ondragover={(e)=>e.preventDefault()} ondrop={onDrop}> + <div class="search-bar"> + <input type="text" placeholder="搜索卡牌..." oninput={onChange}> + </div> + <div class="card-list"> + {#each $showingCards as card} + <div class="card-item"> + <div class="card-thumbnail"> + <CardThumb id={card.id} idx={-1} area="search" /> + </div> + <span>{card.name}</span> + </div> + {/each} + </div> + <div class="pagination"> + <button class="page-btn" onclick={onPrevPage}>上一页</button> + <button class="page-btn" onclick={onNextPage}>下一页</button> + </div> +</div> + + +<style> + +.right-panel { + width: 20%; + padding: 20px; + background-color: #f8f8f8; + display: flex; + flex-direction: column; +} + +.search-bar input { + width: 100%; + padding: 8px; + margin-bottom: 15px; + border: 1px solid #ddd; + border-radius: 4px; +} + +.card-list { + flex-grow: 1; + overflow-y: auto; + margin-bottom: 15px; +} + +.card-item { + display: flex; + align-items: center; + padding: 8px; + margin-bottom: 5px; + background-color: white; + border-radius: 4px; + cursor: pointer; +} + +.pagination { + display: flex; + gap: 10px; +} + +.page-btn { + flex: 1; + padding: 8px; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.card-thumbnail { + width: 50px; + height: 70px; + background-color: #eee; + margin-right: 10px; + border-radius: 3px; +} + +</style> |
