import { defineComponent, shallowRef, onMounted, createVNode } from 'vue';
import '../../../utils/index.mjs';
import { KeyCode } from '../../../utils/KeyCode.mjs';

const inlineStyle = {
  border: 0,
  background: "transparent",
  padding: 0,
  lineHeight: "inherit",
  display: "inline-block"
};
const TransButton = /* @__PURE__ */ defineComponent({
  compatConfig: {
    MODE: 3
  },
  name: "TransButton",
  inheritAttrs: false,
  props: {
    noStyle: {
      type: Boolean,
      default: void 0
    },
    onClick: Function,
    disabled: {
      type: Boolean,
      default: void 0
    },
    autofocus: {
      type: Boolean,
      default: void 0
    }
  },
  setup(props, {
    slots,
    emit,
    attrs,
    expose
  }) {
    const domRef = shallowRef();
    const onKeyDown = (event) => {
      const {
        keyCode
      } = event;
      if (keyCode === KeyCode.ENTER)
        event.preventDefault();
    };
    const onKeyUp = (event) => {
      const {
        keyCode
      } = event;
      if (keyCode === KeyCode.ENTER)
        emit("click", event);
    };
    const onClick = (e) => {
      emit("click", e);
    };
    const focus = () => {
      if (domRef.value)
        domRef.value.focus();
    };
    const blur = () => {
      if (domRef.value)
        domRef.value.blur();
    };
    onMounted(() => {
      if (props.autofocus)
        focus();
    });
    expose({
      focus,
      blur
    });
    return () => {
      var _a;
      const {
        noStyle,
        disabled,
        ...restProps
      } = props;
      let mergedStyle = {};
      if (!noStyle) {
        mergedStyle = {
          ...inlineStyle
        };
      }
      if (disabled)
        mergedStyle.pointerEvents = "none";
      return createVNode("div", {
        "role": "button",
        "tabindex": 0,
        "ref": domRef,
        ...restProps,
        ...attrs,
        "onClick": onClick,
        "onKeydown": onKeyDown,
        "onKeyup": onKeyUp,
        "style": {
          ...mergedStyle,
          ...attrs.style || {}
        }
      }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
    };
  }
});

export { TransButton };
//# sourceMappingURL=transButton.mjs.map
