Skip to content

Commit a9f57c4

Browse files
committed
feat(field-textarea): add textarea field
1 parent f7f39b2 commit a9f57c4

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

src/fields/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import FieldRadio from '@/fields/input/FieldRadio.vue'
77
import FieldColor from '@/fields/input/FieldColor.vue'
88
import FieldNumber from '@/fields/input/FieldNumber.vue'
99
import FieldSwitch from '@/fields/input/FieldSwitch.vue'
10+
import FieldTextarea from '@/fields/input/FieldTextarea.vue'
1011

1112
import FieldSubmit from '@/fields/buttons/FieldSubmit.vue'
1213
import FieldReset from '@/fields/buttons/FieldReset.vue'
@@ -15,7 +16,7 @@ import FieldButton from '@/fields/buttons/FieldButton.vue'
1516

1617
const fieldComponents = [
1718
FieldText, FieldCheckBox, FieldPassword, FieldSelect, FieldSelectNative, FieldRadio, FieldColor, FieldNumber,
18-
FieldSubmit, FieldReset, FieldButton, FieldSwitch
19+
FieldSubmit, FieldReset, FieldButton, FieldSwitch, FieldTextarea
1920
]
2021

2122
export default {

src/fields/input/FieldTextarea.vue

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<template>
2+
<textarea
3+
:id="id"
4+
:style="field.resizable ? '' : 'resize: none;'"
5+
class="field-textarea"
6+
:name="field.name"
7+
:required="isRequired"
8+
:readonly="isReadOnly"
9+
:disabled="isDisabled"
10+
:maxlength="field.maxLength"
11+
:placeholder="field.placeholder"
12+
:value="currentModelValue"
13+
@input="onFieldValueChanged"
14+
@blur="onBlur"
15+
/>
16+
</template>
17+
18+
<script>
19+
import { abstractField } from '@/mixins'
20+
21+
export default {
22+
name: 'FieldTextarea',
23+
mixins: [ abstractField ]
24+
}
25+
</script>

src/scss/themes/basic.scss

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ $input-padding: .3rem .4rem;
88

99
.vue-form-generator {
1010

11-
input:not([type='checkbox'],[type='submit'],[type='radio'],[type='color'],[type='reset']) {
11+
input:not(
12+
[type='checkbox'],
13+
[type='submit'],
14+
[type='radio'],
15+
[type='color'],
16+
[type='reset']),
17+
textarea {
1218
width: 100%;
1319
padding: $input-padding;
1420
border-radius: 3px;
@@ -100,6 +106,14 @@ $input-padding: .3rem .4rem;
100106
}
101107
}
102108

109+
/** Textarea field */
110+
.field-textarea {
111+
&:focus {
112+
border: none;
113+
outline: none;
114+
}
115+
}
116+
103117
.field-reset {
104118
border-radius: 3px;
105119
}

0 commit comments

Comments
 (0)