fix textarea rows cols

This commit is contained in:
xuliangzhan
2021-10-04 20:43:20 +08:00
parent 731238b9b0
commit 8a19cf5ea2
4 changed files with 45 additions and 15 deletions

View File

@@ -16,6 +16,11 @@
<vxe-textarea v-model="demo1.value7" placeholder="禁用的" disabled></vxe-textarea>
<vxe-textarea v-model="demo1.value8" placeholder="显示字数统计" maxlength="100" show-word-count></vxe-textarea>
<vxe-textarea v-model="demo1.value9" placeholder="自适应文本高度" :autosize="{ minRows: 2, maxRows: 4 }"></vxe-textarea>
<vxe-textarea v-model="demo1.value10" placeholder="默认3行与40列" rows="3" cols="40"></vxe-textarea>
<vxe-textarea v-model="demo1.value11" placeholder="关闭调节元素" resize="none"></vxe-textarea>
<vxe-textarea v-model="demo1.value12" placeholder="可以调节元素的高度" resize="vertical"></vxe-textarea>
<vxe-textarea v-model="demo1.value13" placeholder="以调节元素的宽度" resize="horizontal"></vxe-textarea>
<vxe-textarea v-model="demo1.value14" placeholder="可以调节元素的宽度和高度" resize="both"></vxe-textarea>
</p>
<pre>
@@ -48,7 +53,12 @@ export default defineComponent({
value6: '',
value7: '',
value8: '',
value9: ''
value9: '',
value10: '',
value11: '',
value12: '',
value13: '',
value14: ''
})
return {
demo1,
@@ -67,6 +77,11 @@ export default defineComponent({
<vxe-textarea v-model="demo1.value7" placeholder="禁用的" disabled></vxe-textarea>
<vxe-textarea v-model="demo1.value8" placeholder="显示字数统计" maxlength="100" show-word-count></vxe-textarea>
<vxe-textarea v-model="demo1.value9" placeholder="自适应文本高度" :autosize="{ minRows: 2, maxRows: 4 }"></vxe-textarea>
<vxe-textarea v-model="demo1.value10" placeholder="默认3行与40列" rows="3" cols="40"></vxe-textarea>
<vxe-textarea v-model="demo1.value11" placeholder="关闭调节元素" resize="none"></vxe-textarea>
<vxe-textarea v-model="demo1.value12" placeholder="可以调节元素的高度" resize="vertical"></vxe-textarea>
<vxe-textarea v-model="demo1.value13" placeholder="以调节元素的宽度" resize="horizontal"></vxe-textarea>
<vxe-textarea v-model="demo1.value14" placeholder="可以调节元素的宽度和高度" resize="both"></vxe-textarea>
</p>
`,
`
@@ -83,7 +98,12 @@ export default defineComponent({
value6: '',
value7: '',
value8: '',
value9: ''
value9: '',
value10: '',
value11: '',
value12: '',
value13: '',
value14: ''
})
return {
demo1

View File

@@ -20,6 +20,7 @@ export default defineComponent({
placeholder: String as PropType<VxeTextareaPropTypes.Placeholder>,
maxlength: [String, Number] as PropType<VxeTextareaPropTypes.Maxlength>,
rows: { type: [String, Number] as PropType<VxeTextareaPropTypes.Rows>, default: 2 },
cols: { type: [String, Number] as PropType<VxeTextareaPropTypes.Cols>, default: null },
showWordCount: Boolean as PropType<VxeTextareaPropTypes.ShowWordCount>,
countMethod: Function as PropType<VxeTextareaPropTypes.CountMethod>,
autosize: [Boolean, Object] as PropType<VxeTextareaPropTypes.Autosize>,
@@ -202,7 +203,7 @@ export default defineComponent({
})
const renderVN = () => {
const { className, resize, placeholder, disabled, maxlength, autosize, showWordCount, countMethod } = props
const { className, resize, placeholder, disabled, maxlength, autosize, showWordCount, countMethod, rows, cols } = props
const { inputValue } = reactData
const vSize = computeSize.value
const isCountError = computeIsCountError.value
@@ -212,7 +213,9 @@ export default defineComponent({
class: ['vxe-textarea', className, {
[`size--${vSize}`]: vSize,
'is--autosize': autosize,
'is--disabled': disabled
'is--disabled': disabled,
'def--rows': !XEUtils.eqNull(rows),
'def--cols': !XEUtils.eqNull(cols)
}]
}, [
h('textarea', {
@@ -224,6 +227,8 @@ export default defineComponent({
maxlength,
readonly: props.readonly,
disabled,
rows,
cols,
style: resize ? {
resize
} : null,

View File

@@ -3,7 +3,12 @@
.vxe-textarea {
position: relative;
display: inline-block;
width: 100%;
&:not(.def--cols) {
width: 100%;
.vxe-textarea--inner {
width: 100%;
}
}
}
.vxe-textarea--inner {
@@ -15,6 +20,11 @@
line-height: inherit;
border: 1px solid $vxe-input-border-color;
background-color: $vxe-textarea-background-color;
display: block;
padding: 0.3em 0.6em;
&::placeholder {
color: $vxe-input-placeholder-color;
}
&:focus {
border: 1px solid $vxe-primary-color;
}
@@ -24,16 +34,6 @@
}
}
.vxe-textarea--inner {
width: 100%;
height: 100%;
display: block;
padding: 0.3em 0.6em;
&::placeholder {
color: $vxe-input-placeholder-color;
}
}
.vxe-textarea--inner,
.vxe-textarea--autosize {
line-height: $vxe-textarea-line-height;

5
types/textarea.d.ts vendored
View File

@@ -59,6 +59,10 @@ export type VxeTextareaProps = {
* 原生 rows 属性
*/
rows?: VxeTextareaPropTypes.Rows;
/**
* 原生 cols 属性
*/
cols?: VxeTextareaPropTypes.Cols;
/**
* 是否显示字数统计
*/
@@ -92,6 +96,7 @@ export namespace VxeTextareaPropTypes {
export type Placeholder = string;
export type Maxlength = string | number;
export type Rows = string | number;
export type Cols = string | number;
export type ShowWordCount = boolean;
export type CountMethod = (params: {
value: string;