55
55
</template >
56
56
57
57
<script setup>
58
- // const config = useRuntimeConfig()
59
- // const buttonStore = useZeroButtonStore()
58
+ const config = useRuntimeConfig ()
59
+ const buttonStore = useZeroButtonStore ()
60
60
// ======================================================================= Props
61
61
const props = defineProps ({
62
62
signupCard: {
@@ -69,18 +69,6 @@ const props = defineProps({
69
69
// ======================================================================== Data
70
70
const formSubmitted = ref (false )
71
71
const submitError = ref (false )
72
- // const fieldError = ref({
73
- // firstName: false,
74
- // lastName: false,
75
- // email: false,
76
- // organization: false,
77
- // country: false
78
- // })
79
- // const firstName = ref(false)
80
- // const lastName = ref(false)
81
- // const email = ref(false)
82
- // const organization = ref(false)
83
- // const country = ref(false)
84
72
85
73
// ==================================================================== Computed
86
74
const title = computed (() => props .signupCard .title )
@@ -97,76 +85,64 @@ const cardStyles = computed(() => {
97
85
})
98
86
99
87
const formId = computed (() => props .signupCard .signup_form_id )
100
-
101
88
const firstNameFieldScaffold = computed (() => props .signupCard .signup_form .first_name )
102
-
103
89
const lastNameFieldScaffold = computed (() => props .signupCard .signup_form .last_name )
104
-
105
90
const emailFieldScaffold = computed (() => props .signupCard .signup_form .email )
106
-
107
91
const orgFieldScaffold = computed (() => props .signupCard .signup_form .org )
108
-
109
92
const countryFieldScaffold = computed (() => props .signupCard .signup_form .country )
110
93
111
94
const submitButtonLabel = computed (() => formSubmitted .value ? ' Success' : ' Register' )
112
95
113
- // ===================================================================== Hooks
114
- onMounted (() => {
115
- console .log (' mounted' )
116
- })
117
-
118
96
// ===================================================================== Methdos
119
97
/**
120
98
* @method validateFormValues
121
99
*/
122
100
const validateFormValues = async () => {
123
101
const pass = await useValidateForm (formId .value )
124
- console .log (' pass ' , pass)
125
102
if (pass) {
126
- const formValues = useGetFormFields (formId .value )
127
- console .log (' formValues ' , formValues)
103
+ const formFields = useGetFormFields (formId .value )
104
+ const formValues = {}
105
+ formFields .forEach ((field ) => {
106
+ if (field .scaffold .type === ' input' ) {
107
+ formValues[field .scaffold .slug ] = field .value .trim ()
108
+ }
109
+ if (field .scaffold .type === ' select' ) {
110
+ formValues[field .scaffold .slug ] = field .scaffold .options [field .value [0 ]].label
111
+ }
112
+ })
113
+ return formValues
114
+ } else {
115
+ return false
128
116
}
129
117
}
130
118
/**
131
119
* @method submitForm
132
120
*/
133
121
const submitForm = async () => {
134
- console .log (' submmitting form' )
135
122
if (formSubmitted .value ) { return }
136
123
if (submitError .value ) { submitError .value = false }
137
- const values = await validateFormValues ()
138
- console .log (' values ' , values)
139
- // if (validateFormValues()) {
140
- // const body = {
141
- // records: [
142
- // {
143
- // fields: {
144
- // email: email.value.trim(),
145
- // firstname: firstName.value.trim(),
146
- // lastname: lastName.value.trim(),
147
- // company: organization.value.trim(),
148
- // country: country.value.label
149
- // }
150
- // }
151
- // ]
152
- // }
153
- // const headers = {
154
- // 'Content-Type': 'application/json',
155
- // 'Authorization': `Bearer ${config.public.airtableToken}`
156
- // }
157
-
158
- // await $fetch('https://api.airtable.com/v0/apphbQmrNLNNXiaqG/tblDUSr66nczukX9Y', {
159
- // method: 'POST',
160
- // body,
161
- // headers
162
- // }).then(() => {
163
- // formSubmitted.value = true
164
- // return
165
- // }).catch(() => {
166
- // submitError.value = true
167
- // })
168
- // }
169
- // buttonStore.set({id: 'signup-card-form', loading: false})
124
+ const fields = await validateFormValues ()
125
+ if (fields) {
126
+ const body = {
127
+ records: [{ fields }]
128
+ }
129
+ const headers = {
130
+ ' Content-Type' : ' application/json' ,
131
+ ' Authorization' : ` Bearer ${ config .public .airtableToken } `
132
+ }
133
+
134
+ await $fetch (' https://api.airtable.com/v0/apphbQmrNLNNXiaqG/tblDUSr66nczukX9Y' , {
135
+ method: ' POST' ,
136
+ body,
137
+ headers
138
+ }).then (() => {
139
+ formSubmitted .value = true
140
+ return
141
+ }).catch (() => {
142
+ submitError .value = true
143
+ })
144
+ }
145
+ buttonStore .setButton ({id: ' signup-card-form' , loading: false })
170
146
}
171
147
</script >
172
148
0 commit comments