index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));
  7. var _utils = require("../utils");
  8. var _functional = require("../utils/functional");
  9. var _router = require("../utils/router");
  10. var _loading = _interopRequireDefault(require("../loading"));
  11. var _use = (0, _utils.use)('button'),
  12. sfc = _use[0],
  13. bem = _use[1];
  14. function Button(h, props, slots, ctx) {
  15. var tag = props.tag,
  16. type = props.type,
  17. disabled = props.disabled,
  18. loading = props.loading,
  19. hairline = props.hairline,
  20. loadingText = props.loadingText;
  21. var onClick = function onClick(event) {
  22. if (!loading && !disabled) {
  23. (0, _functional.emit)(ctx, 'click', event);
  24. (0, _router.functionalRoute)(ctx);
  25. }
  26. };
  27. var onTouchstart = function onTouchstart(event) {
  28. (0, _functional.emit)(ctx, 'touchstart', event);
  29. };
  30. var classes = [bem([type, props.size, {
  31. loading: loading,
  32. disabled: disabled,
  33. hairline: hairline,
  34. block: props.block,
  35. plain: props.plain,
  36. round: props.round,
  37. square: props.square,
  38. 'bottom-action': props.bottomAction
  39. }]), {
  40. 'van-hairline--surround': hairline
  41. }];
  42. return h(tag, (0, _babelHelperVueJsxMergeProps["default"])([{
  43. "class": classes,
  44. "attrs": {
  45. "type": props.nativeType,
  46. "disabled": disabled
  47. },
  48. "on": {
  49. "click": onClick,
  50. "touchstart": onTouchstart
  51. }
  52. }, (0, _functional.inherit)(ctx)]), [loading ? [h(_loading["default"], {
  53. "attrs": {
  54. "size": props.loadingSize,
  55. "color": type === 'default' ? undefined : ''
  56. }
  57. }), loadingText && h("span", {
  58. "class": bem('loading-text')
  59. }, [loadingText])] : h("span", {
  60. "class": bem('text')
  61. }, [slots["default"] ? slots["default"]() : props.text])]);
  62. }
  63. Button.props = (0, _extends2["default"])({}, _router.routeProps, {
  64. text: String,
  65. block: Boolean,
  66. plain: Boolean,
  67. round: Boolean,
  68. square: Boolean,
  69. loading: Boolean,
  70. hairline: Boolean,
  71. disabled: Boolean,
  72. nativeType: String,
  73. loadingText: String,
  74. bottomAction: Boolean,
  75. tag: {
  76. type: String,
  77. "default": 'button'
  78. },
  79. type: {
  80. type: String,
  81. "default": 'default'
  82. },
  83. size: {
  84. type: String,
  85. "default": 'normal'
  86. },
  87. loadingSize: {
  88. type: String,
  89. "default": '20px'
  90. }
  91. });
  92. var _default = sfc(Button);
  93. exports["default"] = _default;