Skip to content

Commit

Permalink
added outfit presenter for collection presentation
Browse files Browse the repository at this point in the history
  • Loading branch information
oleklukasiewicz committed Aug 17, 2024
1 parent 395a5c4 commit 15065a6
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 1 deletion.
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);
}
}
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>
17 changes: 16 additions & 1 deletion minerobe.client/src/routes/explore/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,20 @@
import { onMount } from "svelte";
import Menu from "$lib/components/base/Menu/Menu.svelte";
import Select from "$lib/components/base/Select/Select.svelte";
import OutfitPresenter from "$lib/components/outfit/OutfitPresenter/OutfitPresenter.svelte";
onMount(() => {});
import { appState } from "$data/cache";
import { GetStudioPackage } from "$src/api/wardrobe";
import { APP_STATE } from "$src/data/consts";
let testpackage = null;
let laoded = false;
onMount(async () => {
appState.subscribe(async (state) => {
if (state != APP_STATE.READY) return;
testpackage = await GetStudioPackage();
laoded = true;
});
});
const compare = (a, b) => {
return a?.value == b;
};
Expand Down Expand Up @@ -44,6 +56,9 @@
selectedItem={"item2"}
items={["item1", "item2", "item3"]}
></Select>
{#if laoded}
<OutfitPresenter item={testpackage} />
{/if}
</div>
</div>

Expand Down

0 comments on commit 15065a6

Please sign in to comment.