-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added outfit presenter for collection presentation
- Loading branch information
1 parent
395a5c4
commit 15065a6
Showing
3 changed files
with
88 additions
and
1 deletion.
There are no files selected for viewing
9 changes: 9 additions & 0 deletions
9
minerobe.client/src/lib/components/outfit/OutfitPresenter/OutfitPresenter.scss
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.outfit-presenter { | ||
aspect-ratio: 1; | ||
min-width: 60px; | ||
max-width: 60px; | ||
transition: box-shadow var(--time); | ||
&.dragging { | ||
box-shadow: inset 0px 0px 0px 5px var(--color-accent); | ||
} | ||
} |
63 changes: 63 additions & 0 deletions
63
minerobe.client/src/lib/components/outfit/OutfitPresenter/OutfitPresenter.svelte
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
<script lang="ts"> | ||
import OutfitPackageSnapshotRender from "$lib/components/render/OutfitPackageSnapshotRender.svelte"; | ||
import { defaultRenderer } from "$src/data/cache"; | ||
import { MODEL_TYPE } from "$src/data/consts"; | ||
import { | ||
CreateDefaultRenderProvider, | ||
type RenderProvider, | ||
} from "$src/data/render"; | ||
import type { OutfitPackage } from "$src/model/package"; | ||
import { onMount } from "svelte"; | ||
export let item: OutfitPackage = null; | ||
export let readonly: boolean = false; | ||
export let renderProvider: RenderProvider = null; | ||
onMount(async () => { | ||
if (renderProvider == null) { | ||
const defaultRender = await CreateDefaultRenderProvider($defaultRenderer); | ||
renderProvider = | ||
item.model === MODEL_TYPE.ALEX | ||
? defaultRender.alex | ||
: defaultRender.steve; | ||
} | ||
}); | ||
let isDragging = false; | ||
//drop support | ||
const handleRenderDrop = (e) => { | ||
isDragging = false; | ||
}; | ||
const handleRenderDragOver = (e) => { | ||
isDragging = true; | ||
e.preventDefault(); | ||
}; | ||
const handleRenderDragEnter = (e) => { | ||
isDragging = true; | ||
e.preventDefault(); | ||
}; | ||
const handleRenderDragLeave = (e) => { | ||
isDragging = false; | ||
e.preventDefault(); | ||
}; | ||
</script> | ||
|
||
<!-- svelte-ignore a11y-no-static-element-interactions --> | ||
<div | ||
class="outfit-presenter" | ||
class:dragging={isDragging && !readonly} | ||
on:drop={handleRenderDrop} | ||
on:dragover={handleRenderDragOver} | ||
on:dragenter={handleRenderDragEnter} | ||
on:dragleave={handleRenderDragLeave} | ||
> | ||
{#if renderProvider != null && item != null} | ||
<OutfitPackageSnapshotRender {renderProvider} {item}/> | ||
{:else} | ||
<div class="loading">Loading...</div> | ||
{/if} | ||
</div> | ||
|
||
<style lang="scss"> | ||
@import "OutfitPresenter.scss"; | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters