Hi guys I am following documentation here: https://buefy.org/documentation/modal to learn how to build a login modal. The code below is copied from the link above.
<template>
<section>
<b-button
label="Launch component modal"
type="is-primary"
size="is-medium"
@click="isComponentModalActive = true" />
<b-modal
v-model="isComponentModalActive"
has-modal-card
trap-focus
:destroy-on-hide="false"
aria-role="dialog"
aria-label="Example Modal"
close-button-aria-label="Close"
aria-modal>
<template #default="props">
<modal-form v-bind="formProps"></modal-form>
</template>
</b-modal>
</section>
</template>
<script>
const ModalForm = {
props: ['email', 'password', 'canCancel'],
template: `
<form action="">
<div class="modal-card" style="width: auto">
<header class="modal-card-head">
<p class="modal-card-title">Login</p>
<button
type="button"
class="delete"
@click="$emit('close')"/>
</header>
<section class="modal-card-body">
<b-field label="Email">
<b-input
type="email"
:value="email"
placeholder="Your email"
required>
</b-input>
</b-field>
<b-field label="Password">
<b-input
type="password"
:value="password"
password-reveal
placeholder="Your password"
required>
</b-input>
</b-field>
<b-checkbox>Remember me</b-checkbox>
</section>
<footer class="modal-card-foot">
<b-button
label="Close"
@click="$emit('close')" />
<b-button
label="Login"
type="is-primary" />
</footer>
</div>
</form>
`
}
export default {
components: {
ModalForm
},
data() {
return {
isComponentModalActive: false,
formProps: {
email: '[email protected]',
password: 'testing'
}
}
},
methods: {
login(){
console.log("login!!!!!", this)
}
}
}
</script>
This example does not explains how can we get the email and password after Login button is clicked. How should the modal pass the login input values to the login() function as shown above?
Thanks to comment from Kissu, I have figured out the missing parts: setting a model, and add form submit handler to emit the model values.