mirror of https://github.com/Budibase/budibase.git
31 changed files with 325 additions and 114 deletions
@ -0,0 +1,2 @@ |
|||
export { default as drag } from "./drag.js" |
|||
export { default as keyevents } from "./key-events.js" |
|||
@ -0,0 +1,41 @@ |
|||
//events: Array<{trigger: fn}>
|
|||
export default function(node, events = []) { |
|||
const ev = Object.entries(events) |
|||
let fns = [] |
|||
|
|||
for (let [trigger, fn] of ev) { |
|||
let f = addEvent(trigger, fn) |
|||
fns = [...fns, f] |
|||
} |
|||
|
|||
function _scaffold(trigger, fn) { |
|||
return () => { |
|||
let trig = parseInt(trigger) |
|||
if (trig) { |
|||
if (event.keyCode === trig) { |
|||
fn(event) |
|||
} |
|||
} else { |
|||
if (event.key === trigger) { |
|||
fn(event) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
function addEvent(trigger, fn) { |
|||
let f = _scaffold(trigger, fn) |
|||
node.addEventListener("keydown", f) |
|||
return f |
|||
} |
|||
|
|||
function removeEvents() { |
|||
fns.forEach(f => node.removeEventListener("keypress", f)) |
|||
} |
|||
|
|||
return { |
|||
destroy() { |
|||
removeEvents() |
|||
}, |
|||
} |
|||
} |
|||
@ -1,5 +1,5 @@ |
|||
<script> |
|||
import { buildStyle } from "./helpers.js" |
|||
import {buildStyle} from "../helpers.js" |
|||
import { fade } from "svelte/transition" |
|||
|
|||
export let backgroundSize = "10px" |
|||
@ -1,2 +1,2 @@ |
|||
import Colorpreview from "./Colorpreview.svelte" |
|||
import Colorpreview from "./components/Colorpreview.svelte" |
|||
export default Colorpreview |
|||
|
|||
@ -0,0 +1,52 @@ |
|||
<script> |
|||
import { onMount } from "svelte" |
|||
|
|||
export let _bb |
|||
export let model |
|||
|
|||
let headers = [] |
|||
let store = _bb.store |
|||
let target |
|||
|
|||
async function fetchFirstRecord() { |
|||
const FETCH_RECORDS_URL = `/api/views/all_${model}` |
|||
const response = await _bb.api.get(FETCH_RECORDS_URL) |
|||
if (response.status === 200) { |
|||
const allRecords = await response.json() |
|||
if (allRecords.length > 0) return allRecords[0] |
|||
} |
|||
} |
|||
|
|||
async function fetchData() { |
|||
const pathParts = window.location.pathname.split("/") |
|||
|
|||
let record |
|||
// if srcdoc, then we assume this is the builder preview |
|||
if(pathParts.length === 0 || pathParts[0] === "srcdoc") { |
|||
record = await fetchFirstRecord() |
|||
} else { |
|||
const id = pathParts[pathParts.length - 1] |
|||
const GET_RECORD_URL = `/api/${model}/records/${id}` |
|||
const response = await _bb.api.get(GET_RECORD_URL) |
|||
if (response.status === 200) { |
|||
record = await response.json() |
|||
} |
|||
} |
|||
|
|||
if (record) { |
|||
_bb.attachChildren(target, { |
|||
hydrate: false, |
|||
context: record, |
|||
}) |
|||
} else { |
|||
throw new Error("Failed to fetch record.", response) |
|||
} |
|||
} |
|||
|
|||
onMount(async () => { |
|||
await fetchData() |
|||
}) |
|||
</script> |
|||
|
|||
<section bind:this={target}> |
|||
</section> |
|||
Loading…
Reference in new issue