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
| 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',
| }, clearTrigger: {
| type: String,
| value: 'focus',
| }, border: {
| type: Boolean,
| value: true,
| }, titleWidth: {
| type: String,
| value: '6.2em',
| }, clearIcon: {
| type: String,
| value: 'clear',
| } }),
| 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, clearTrigger } = this.data;
| const { focused, value } = this;
| let showClear = false;
| if (clearable && !readonly) {
| const hasValue = !!value;
| const trigger = clearTrigger === 'always' || (clearTrigger === 'focus' && focused);
| showClear = hasValue && trigger;
| }
| this.setData({ showClear });
| },
| noop() { },
| },
| });
|
|