"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var utils_1 = require("../common/utils"); var component_1 = require("../common/component"); var props_1 = require("./props"); (0, component_1.VantComponent)({ field: true, classes: ['input-class', 'right-icon-class', 'label-class'], props: __assign(__assign(__assign(__assign({}, props_1.commonProps), props_1.inputProps), props_1.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', }, extraEventParams: { type: Boolean, value: false, } }), data: { focused: false, innerValue: '', showClear: false, }, created: function () { this.value = this.data.value; this.setData({ innerValue: this.value }); }, methods: { formatValue: function (value) { var maxlength = this.data.maxlength; if (maxlength !== -1 && value.length > maxlength) { return value.slice(0, maxlength); } return value; }, onInput: function (event) { var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; var formatValue = this.formatValue(value); this.value = formatValue; this.setShowClear(); return this.emitChange(__assign(__assign({}, event.detail), { value: formatValue })); }, onFocus: function (event) { this.focused = true; this.setShowClear(); this.$emit('focus', event.detail); }, onBlur: function (event) { this.focused = false; this.setShowClear(); this.$emit('blur', event.detail); }, onClickIcon: function () { this.$emit('click-icon'); }, onClickInput: function (event) { this.$emit('click-input', event.detail); }, onClear: function () { var _this = this; this.setData({ innerValue: '' }); this.value = ''; this.setShowClear(); (0, utils_1.nextTick)(function () { _this.emitChange({ value: '' }); _this.$emit('clear', ''); }); }, onConfirm: function (event) { var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; this.value = value; this.setShowClear(); this.$emit('confirm', value); }, setValue: function (value) { this.value = value; this.setShowClear(); if (value === '') { this.setData({ innerValue: '' }); } this.emitChange({ value: value }); }, onLineChange: function (event) { this.$emit('linechange', event.detail); }, onKeyboardHeightChange: function (event) { this.$emit('keyboardheightchange', event.detail); }, emitChange: function (detail) { var extraEventParams = this.data.extraEventParams; this.setData({ value: detail.value }); var result; var data = extraEventParams ? __assign(__assign({}, detail), { callback: function (data) { result = data; } }) : detail.value; this.$emit('input', data); this.$emit('change', data); return result; }, setShowClear: function () { var _a = this.data, clearable = _a.clearable, readonly = _a.readonly, clearTrigger = _a.clearTrigger; var _b = this, focused = _b.focused, value = _b.value; var showClear = false; if (clearable && !readonly) { var hasValue = !!value; var trigger = clearTrigger === 'always' || (clearTrigger === 'focus' && focused); showClear = hasValue && trigger; } this.setData({ showClear: showClear }); }, noop: function () { }, }, });