budibase/packages/materialdesign-components/src/Common/Formfield.svelte

43 lines
971 B
Svelte
Raw Normal View History

<script>
2020-02-25 16:21:23 +01:00
import "@material/form-field/mdc-form-field.scss"
import ClassBuilder from "../ClassBuilder.js"
import { fieldStore } from "./FormfieldStore.js"
import { MDCFormField } from "@material/form-field"
import { onMount, onDestroy } from "svelte"
2020-02-25 16:21:23 +01:00
const cb = new ClassBuilder("form-field")
2020-02-25 16:21:23 +01:00
let store
const unsubscribe = fieldStore.subscribe(s => (store = s))
export let _bb
2020-02-25 16:21:23 +01:00
export let id = ""
export let label = ""
export let alignEnd = false
2020-02-25 16:21:23 +01:00
let formField = null
2020-03-05 15:59:08 +01:00
$: modifiers = { alignEnd }
$: props = { modifiers, extras: ["bbmd-form-field"] }
2020-03-05 15:59:08 +01:00
$: blockClasses = cb.build({ props })
onMount(() => {
2020-02-25 16:21:23 +01:00
if (!!formField) fieldStore.set(new MDCFormField(formField))
2020-03-05 15:59:08 +01:00
_bb.setContext("BBMD:field-element", fieldStore)
2020-02-25 16:21:23 +01:00
})
2020-02-25 16:21:23 +01:00
onDestroy(unsubscribe)
</script>
<div bind:this={formField} class={blockClasses}>
<slot />
<label for={id}>{label}</label>
</div>
<style>
.bbmd-form-field {
width: fit-content;
}
</style>