adds transition utility to the client sdk

This commit is contained in:
Keviin Åberg Kultalahti 2021-03-01 12:59:27 +01:00
parent bf1b249468
commit 0ce7da93a7
4 changed files with 27 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import {
builderStore, builderStore,
} from "./store" } from "./store"
import { styleable } from "./utils/styleable" import { styleable } from "./utils/styleable"
import transition from "./utils/transition"
import { linkable } from "./utils/linkable" import { linkable } from "./utils/linkable"
import Provider from "./components/Provider.svelte" import Provider from "./components/Provider.svelte"
import { ActionTypes } from "./constants" import { ActionTypes } from "./constants"
@ -19,6 +20,7 @@ export default {
screenStore, screenStore,
builderStore, builderStore,
styleable, styleable,
transition,
linkable, linkable,
Provider, Provider,
ActionTypes, ActionTypes,

View File

@ -0,0 +1,14 @@
import { fade, blur, slide, fly } from 'svelte/transition'
// Default options
const transitions = new Map([
["fade", { tn: fade, opt: {} }],
["blur", { tn: blur, opt: {} }],
["slide", { tn: slide, opt: {} }],
["fly", { tn: fly, opt: { y: 30 } }],
])
export default function transition(node, {type, options = {}}) {
const { tn, opt } = transitions.get(type) || {}
return tn ? tn(node, {...opt, ...options}) : fade(node, { duration: 0})
}

View File

@ -291,6 +291,13 @@
"type": "text", "type": "text",
"label": "URL", "label": "URL",
"key": "url" "key": "url"
},
{
"type": "select",
"key": "transitionType",
"label": "Transition",
"options": ["fade", "blur", "slide", "fly"],
"defaultValue": ""
} }
] ]
}, },

View File

@ -1,7 +1,7 @@
<script> <script>
import { getContext } from "svelte" import { getContext } from "svelte"
const { styleable } = getContext("sdk") const { styleable, transition } = getContext("sdk")
const component = getContext("component") const component = getContext("component")
export let className = "" export let className = ""
@ -9,6 +9,7 @@
export let description = "" export let description = ""
export let height export let height
export let width export let width
export let transitionType = ""
</script> </script>
<img <img
@ -17,4 +18,5 @@
class={className} class={className}
src={url} src={url}
alt={description} alt={description}
use:styleable={$component.styles} /> use:styleable={$component.styles}
in:transition={{type: transitionType}} />