'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var component_1 = require('../common/component');
var button_1 = require('../mixins/button');
var open_type_1 = require('../mixins/open-type');
var version_1 = require('../common/version');
var mixins = [button_1.button, open_type_1.openType];
if (version_1.canIUseFormFieldButton()) {
  mixins.push('wx://form-field-button');
}
component_1.VantComponent({
  mixins: mixins,
  classes: ['hover-class', 'loading-class'],
  data: {
    baseStyle: '',
  },
  props: {
    formType: String,
    icon: String,
    classPrefix: {
      type: String,
      value: 'van-icon',
    },
    plain: Boolean,
    block: Boolean,
    round: Boolean,
    square: Boolean,
    loading: Boolean,
    hairline: Boolean,
    disabled: Boolean,
    loadingText: String,
    customStyle: String,
    loadingType: {
      type: String,
      value: 'circular',
    },
    type: {
      type: String,
      value: 'default',
    },
    dataset: null,
    size: {
      type: String,
      value: 'normal',
    },
    loadingSize: {
      type: String,
      value: '20px',
    },
    color: {
      type: String,
      observer: function (color) {
        var style = '';
        if (color) {
          style += 'color: ' + (this.data.plain ? color : 'white') + ';';
          if (!this.data.plain) {
            // Use background instead of backgroundColor to make linear-gradient work
            style += 'background: ' + color + ';';
          }
          // hide border when color is linear-gradient
          if (color.indexOf('gradient') !== -1) {
            style += 'border: 0;';
          } else {
            style += 'border-color: ' + color + ';';
          }
        }
        if (style !== this.data.baseStyle) {
          this.setData({ baseStyle: style });
        }
      },
    },
  },
  methods: {
    onClick: function () {
      if (!this.data.loading) {
        this.$emit('click');
      }
    },
    noop: function () {},
  },
});
