12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <div class="field" :class="{ 'pt-3' : hasOffset }">
- <label :for="inputId" class="label" v-html="label"></label>
- <div class="control">
- <input
- :disabled="isDisabled"
- :id="inputId"
- :type="inputType"
- class="input"
- v-model="form[fieldName]"
- :placeholder="placeholder"
- v-bind="$attrs"
- v-on:change="$emit('field-changed', form[fieldName])"
- :maxlength="this.maxLength"
- />
- </div>
- <FieldError :form="form" :field="fieldName" />
- <p class="help" v-html="help" v-if="help"></p>
- </div>
- </template>
- <script>
- import { useIdGenerator } from '../../composables/helpers'
- export default {
- name: 'FormField',
- inheritAttrs: false,
- setup(props) {
- const { inputId } = useIdGenerator(props.inputType, props.fieldName)
- return { inputId }
- },
-
- data() {
- return {
- }
- },
- props: {
- label: {
- type: String,
- default: ''
- },
- fieldName: {
- type: String,
- default: '',
- required: true
- },
- inputType: {
- type: String,
- default: 'text'
- },
- form: {
- type: Object,
- required: true
- },
- placeholder: {
- type: String,
- default: ''
- },
- help: {
- type: String,
- default: ''
- },
- hasOffset: {
- type: Boolean,
- default: false
- },
- isDisabled: {
- type: Boolean,
- default: false
- },
- maxLength: {
- type: Number,
- default: null
- }
- }
- }
- </script>
|