index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports["default"] = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _utils = require("../utils");
  7. var _icon = _interopRequireDefault(require("../icon"));
  8. var _info = _interopRequireDefault(require("../info"));
  9. var _router = require("../utils/router");
  10. var _use = (0, _utils.use)('tabbar-item'),
  11. sfc = _use[0],
  12. bem = _use[1];
  13. var _default = sfc({
  14. props: (0, _extends2["default"])({}, _router.routeProps, {
  15. icon: String,
  16. dot: Boolean,
  17. info: [String, Number]
  18. }),
  19. data: function data() {
  20. return {
  21. active: false
  22. };
  23. },
  24. beforeCreate: function beforeCreate() {
  25. this.$parent.items.push(this);
  26. },
  27. destroyed: function destroyed() {
  28. this.$parent.items.splice(this.$parent.items.indexOf(this), 1);
  29. },
  30. methods: {
  31. onClick: function onClick(event) {
  32. this.$parent.onChange(this.$parent.items.indexOf(this));
  33. this.$emit('click', event);
  34. (0, _router.route)(this.$router, this);
  35. }
  36. },
  37. render: function render(h) {
  38. var icon = this.icon,
  39. slots = this.slots,
  40. active = this.active;
  41. var style = active ? {
  42. color: this.$parent.activeColor
  43. } : null;
  44. return h("div", {
  45. "class": bem({
  46. active: active
  47. }),
  48. "style": style,
  49. "on": {
  50. "click": this.onClick
  51. }
  52. }, [h("div", {
  53. "class": bem('icon', {
  54. dot: this.dot
  55. })
  56. }, [slots('icon', {
  57. active: active
  58. }) || icon && h(_icon["default"], {
  59. "attrs": {
  60. "name": icon
  61. }
  62. }), h(_info["default"], {
  63. "attrs": {
  64. "info": this.info
  65. }
  66. })]), h("div", {
  67. "class": bem('text')
  68. }, [slots('default', {
  69. active: active
  70. })])]);
  71. }
  72. });
  73. exports["default"] = _default;