1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
| import { nextTick } from '../common/utils';
| import { VantComponent } from '../common/component';
| import { commonProps, inputProps, textareaProps } from './props';
| VantComponent({
| field: true,
| classes: ['input-class', 'right-icon-class', 'label-class'],
| props: Object.assign(
| Object.assign(
| Object.assign(Object.assign({}, commonProps), inputProps),
| textareaProps
| ),
| {
| size: String,
| icon: String,
| label: String,
| error: Boolean,
| center: Boolean,
| isLink: Boolean,
| leftIcon: String,
| rightIcon: String,
| autosize: null,
| required: Boolean,
| iconClass: String,
| clickable: Boolean,
| inputAlign: String,
| customStyle: String,
| errorMessage: String,
| arrowDirection: String,
| showWordLimit: Boolean,
| errorMessageAlign: String,
| readonly: {
| type: Boolean,
| observer: 'setShowClear',
| },
| clearable: {
| type: Boolean,
| observer: 'setShowClear',
| },
| border: {
| type: Boolean,
| value: true,
| },
| titleWidth: {
| type: String,
| value: '6.2em',
| },
| }
| ),
| data: {
| focused: false,
| innerValue: '',
| showClear: false,
| },
| created() {
| this.value = this.data.value;
| this.setData({ innerValue: this.value });
| },
| methods: {
| onInput(event) {
| const { value = '' } = event.detail || {};
| this.value = value;
| this.setShowClear();
| this.emitChange();
| },
| onFocus(event) {
| this.focused = true;
| this.setShowClear();
| this.$emit('focus', event.detail);
| },
| onBlur(event) {
| this.focused = false;
| this.setShowClear();
| this.$emit('blur', event.detail);
| },
| onClickIcon() {
| this.$emit('click-icon');
| },
| onClickInput(event) {
| this.$emit('click-input', event.detail);
| },
| onClear() {
| this.setData({ innerValue: '' });
| this.value = '';
| this.setShowClear();
| nextTick(() => {
| this.emitChange();
| this.$emit('clear', '');
| });
| },
| onConfirm(event) {
| const { value = '' } = event.detail || {};
| this.value = value;
| this.setShowClear();
| this.$emit('confirm', value);
| },
| setValue(value) {
| this.value = value;
| this.setShowClear();
| if (value === '') {
| this.setData({ innerValue: '' });
| }
| this.emitChange();
| },
| onLineChange(event) {
| this.$emit('linechange', event.detail);
| },
| onKeyboardHeightChange(event) {
| this.$emit('keyboardheightchange', event.detail);
| },
| emitChange() {
| this.setData({ value: this.value });
| nextTick(() => {
| this.$emit('input', this.value);
| this.$emit('change', this.value);
| });
| },
| setShowClear() {
| const { clearable, readonly } = this.data;
| const { focused, value } = this;
| this.setData({
| showClear: !!clearable && !!focused && !!value && !readonly,
| });
| },
| noop() {},
| },
| });
|
|