// input/input.js
import rules from '../behaviors/rules';

Component({
  /**
   * 组件的属性列表
   */
  options: {
    multipleSlots: true,
  },
  behaviors: ['wx://form-field', rules],
  externalClasses: ['l-class', 'l-label-class','l-error-text','l-error-text-class'],
  properties: {
    // 表单标题(label)的文本
    label: {
      type: String,
      value: ''
    },
    // 是否隐藏label
    hideLabel:{
      type: Boolean,
      value: false
    },
    // 是否自定义label部分
    labelCustom: {
      type: Boolean,
      value: false
    },
    // 是否显示下划线
    showRow: {
      type: Boolean,
      value: true
    },
    // 是否必选
    required: {
      type: Boolean,
      value: false
    },
    // 占位文本
    placeholder: {
      type: String,
      value: ''
    },
    // 输入框类型
    type: {
      type: String,
      value: 'text'
    },
    // 输入框的值
    value: {
      type: String,
      value: ''
    },
    // 是否需要冒号
    colon: {
      type: Boolean,
      value: false
    },
    // 获取焦点
    focus: {
      type: Boolean,
      value: false
    },
    // 是否显示清除按钮
    clear: {
      type: Boolean,
      value: false
    },
    // 最大输入长度
    maxlength: {
      type: Number,
      value: 140
    },
    // 表单项的宽度,单位rpx
    width: {
      type: Number,
      value: 750
    },
    // 表单项标题部分的宽度,单位rpx
    labelWidth: {
      type: Number,
      value: 200
    },
    // label标题的显示位置 left top right
    labelLayout: {
      type: String,
      value: 'left'
    },
    // 是否禁用
    disabled: {
      type: Boolean,
      value: false
    },
    // 占位文字的样式  
    placeholderStyle: {
      type: String,
      value: ''
    },
  },

  /**
   * 组件的初始数据
   */
  data: {

  },
  attached() {
    this.initRules();
  },
  /**
   * 组件的方法列表
   */
  methods: {

    handleInputChange(event) {
      const {
        detail = {}
      } = event;
      const {
        value = ''
      } = detail;

      this.setData({
        value
      });

      this.triggerEvent('lininput', event.detail);
    },

    handleInputFocus(event) {
      this.triggerEvent('linfocus', event.detail);
    },

    handleInputBlur(event) {
      this.validatorData({
        value: event.detail.value
      });
      this.triggerEvent('linblur', event.detail);
    },
    handleInputConfirm(event) {
      const {
        detail = {}
      } = event;
      const {
        value = ''
      } = detail;

      this.setData({
        value
      });

      this.triggerEvent('linconfirm', event.detail);
    },
    onClearTap(event) {
      this.setData({
        value: ''
      });
      this.triggerEvent('linclear', event.detail);
    },
  }
});