You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
3.3 KiB

3 months ago
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var index$1 = require('../../icon/index.js');
  5. var useButton = require('./use-button.js');
  6. var button = require('./button.js');
  7. var buttonCustom = require('./button-custom.js');
  8. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  9. var index = require('../../../hooks/use-namespace/index.js');
  10. const __default__ = vue.defineComponent({
  11. name: "ElButton"
  12. });
  13. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  14. ...__default__,
  15. props: button.buttonProps,
  16. emits: button.buttonEmits,
  17. setup(__props, { expose, emit }) {
  18. const props = __props;
  19. const buttonStyle = buttonCustom.useButtonCustomStyle(props);
  20. const ns = index.useNamespace("button");
  21. const { _ref, _size, _type, _disabled, _props, shouldAddSpace, handleClick } = useButton.useButton(props, emit);
  22. const buttonKls = vue.computed(() => [
  23. ns.b(),
  24. ns.m(_type.value),
  25. ns.m(_size.value),
  26. ns.is("disabled", _disabled.value),
  27. ns.is("loading", props.loading),
  28. ns.is("plain", props.plain),
  29. ns.is("round", props.round),
  30. ns.is("circle", props.circle),
  31. ns.is("text", props.text),
  32. ns.is("link", props.link),
  33. ns.is("has-bg", props.bg)
  34. ]);
  35. expose({
  36. ref: _ref,
  37. size: _size,
  38. type: _type,
  39. disabled: _disabled,
  40. shouldAddSpace
  41. });
  42. return (_ctx, _cache) => {
  43. return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), vue.mergeProps({
  44. ref_key: "_ref",
  45. ref: _ref
  46. }, vue.unref(_props), {
  47. class: vue.unref(buttonKls),
  48. style: vue.unref(buttonStyle),
  49. onClick: vue.unref(handleClick)
  50. }), {
  51. default: vue.withCtx(() => [
  52. _ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
  53. _ctx.$slots.loading ? vue.renderSlot(_ctx.$slots, "loading", { key: 0 }) : (vue.openBlock(), vue.createBlock(vue.unref(index$1.ElIcon), {
  54. key: 1,
  55. class: vue.normalizeClass(vue.unref(ns).is("loading"))
  56. }, {
  57. default: vue.withCtx(() => [
  58. (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.loadingIcon)))
  59. ]),
  60. _: 1
  61. }, 8, ["class"]))
  62. ], 64)) : _ctx.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.ElIcon), { key: 1 }, {
  63. default: vue.withCtx(() => [
  64. _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.renderSlot(_ctx.$slots, "icon", { key: 1 })
  65. ]),
  66. _: 3
  67. })) : vue.createCommentVNode("v-if", true),
  68. _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("span", {
  69. key: 2,
  70. class: vue.normalizeClass({ [vue.unref(ns).em("text", "expand")]: vue.unref(shouldAddSpace) })
  71. }, [
  72. vue.renderSlot(_ctx.$slots, "default")
  73. ], 2)) : vue.createCommentVNode("v-if", true)
  74. ]),
  75. _: 3
  76. }, 16, ["class", "style", "onClick"]);
  77. };
  78. }
  79. });
  80. var Button = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "button.vue"]]);
  81. exports["default"] = Button;
  82. //# sourceMappingURL=button2.js.map