You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FormInput.vue 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template lang="pug">
  2. .form-input
  3. span(style='text-align:center;') {{ parsedPrompt.start }}
  4. br
  5. br
  6. span(style='text-align:center;') {{ parsedPrompt.mid }}
  7. input(v-if="question.survey_stage !== 'image' && question.survey_stage !== 'blurb' && question.survey_stage !== 'password'" :placeholder='question.placeholder' type='text' v-model='input')
  8. input.pass(v-else-if="question.survey_stage === 'password'" :placeholder='question.placeholder' type='password' v-model='input' style="-webkit-text-security: circle")
  9. w-button.ma1.grow(v-else-if="question.survey_stage === 'image'" @click="submitImage") UPLOAD IMAGE
  10. textarea(v-else-if="question.survey_stage === 'blurb'" rows="4" cols="50" v-model='input' :placeholder="`${question.placeholder}`")
  11. span(style='text-align:center;') {{ parsedPrompt.end }}
  12. w-button.ma1.grow(@click="handleSubmit({ question, input })") NEXT
  13. </template>
  14. <script>
  15. export default {
  16. name: 'FormInput',
  17. props: {
  18. question: {
  19. required: true,
  20. type: Object,
  21. },
  22. },
  23. emits: ['update-answers'],
  24. data: () => ({
  25. input: null,
  26. parsedPrompt: {},
  27. }),
  28. created() {
  29. const parsedPromptArr = this.question.response_key_prompt.split('[break]')
  30. this.parsedPrompt.start = parsedPromptArr[0]
  31. this.parsedPrompt.mid = parsedPromptArr[1]
  32. this.parsedPrompt.end = parsedPromptArr[2]
  33. },
  34. methods: {
  35. handleSubmit(answerInfo) {
  36. this.$emit('update-answers', answerInfo)
  37. },
  38. submitImage() {
  39. let payload = {
  40. question: this.question,
  41. input: 'placeholder for image',
  42. }
  43. this.$emit('update-answers', payload)
  44. },
  45. },
  46. }
  47. </script>
  48. <style>
  49. .form-input,
  50. input[placeholder],
  51. textarea[placeholder] {
  52. text-align: center;
  53. }
  54. input {
  55. border: 0;
  56. outline: 0;
  57. background: transparent;
  58. border-bottom: 1px solid black;
  59. }
  60. </style>