| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | import { createNamespace } from '../utils';import { BORDER_TOP_BOTTOM } from '../utils/constant';import { callInterceptor } from '../utils/interceptor';import { ParentMixin } from '../mixins/relation';var _createNamespace = createNamespace('tabbar'),    createComponent = _createNamespace[0],    bem = _createNamespace[1];export default createComponent({  mixins: [ParentMixin('vanTabbar')],  props: {    route: Boolean,    zIndex: [Number, String],    placeholder: Boolean,    activeColor: String,    beforeChange: Function,    inactiveColor: String,    value: {      type: [Number, String],      default: 0    },    border: {      type: Boolean,      default: true    },    fixed: {      type: Boolean,      default: true    },    safeAreaInsetBottom: {      type: Boolean,      default: null    }  },  data: function data() {    return {      height: null    };  },  computed: {    fit: function fit() {      if (this.safeAreaInsetBottom !== null) {        return this.safeAreaInsetBottom;      } // enable safe-area-inset-bottom by default when fixed      return this.fixed;    }  },  watch: {    value: 'setActiveItem',    children: 'setActiveItem'  },  mounted: function mounted() {    var _this = this;    if (this.placeholder && this.fixed) {      var setHeight = function setHeight() {        _this.height = _this.$refs.tabbar.getBoundingClientRect().height;      };      setHeight(); // https://github.com/vant-ui/vant/issues/10131      setTimeout(setHeight, 100);    }  },  methods: {    setActiveItem: function setActiveItem() {      var _this2 = this;      this.children.forEach(function (item, index) {        item.nameMatched = item.name === _this2.value || index === _this2.value;      });    },    triggerChange: function triggerChange(active, afterChange) {      var _this3 = this;      callInterceptor({        interceptor: this.beforeChange,        args: [active],        done: function done() {          _this3.$emit('input', active);          _this3.$emit('change', active);          afterChange();        }      });    },    genTabbar: function genTabbar() {      var _ref;      var h = this.$createElement;      return h("div", {        "ref": "tabbar",        "style": {          zIndex: this.zIndex        },        "class": [(_ref = {}, _ref[BORDER_TOP_BOTTOM] = this.border, _ref), bem({          unfit: !this.fit,          fixed: this.fixed        })]      }, [this.slots()]);    }  },  render: function render() {    var h = arguments[0];    if (this.placeholder && this.fixed) {      return h("div", {        "class": bem('placeholder'),        "style": {          height: this.height + "px"        }      }, [this.genTabbar()]);    }    return this.genTabbar();  }});
 |