@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
87 lines (84 loc) • 3.06 kB
JavaScript
import { defineComponent, inject, toRef, openBlock, createBlock, unref, normalizeClass, withCtx, renderSlot } from 'vue';
import '../../../hooks/index.mjs';
import '../../../tokens/index.mjs';
import '../../slot/index.mjs';
import '../../../utils/index.mjs';
import { popperTriggerProps } from './trigger.mjs';
import { whenTrigger } from './utils.mjs';
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
import { popperContextKey } from '../../../tokens/popper.mjs';
import { useForwardRef } from '../../../hooks/use-forward-ref/index.mjs';
import { composeEventHandlers } from '../../../utils/dom/event.mjs';
import { OnlyChild } from '../../slot/src/only-child.mjs';
const _sfc_main = defineComponent({
__name: "trigger",
props: popperTriggerProps,
setup(__props) {
const props = __props;
const ns = useNamespace("popper");
const { triggerRef, onOpen, onClose, onToggle } = inject(
popperContextKey,
void 0
);
useForwardRef(triggerRef);
const stopWhenControlledOrDisabled = () => {
if (props.disabled) {
return true;
}
};
const trigger = toRef(props, "trigger");
const onMouseenter = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "hover", onOpen)
);
const onMouseleave = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "hover", onClose)
);
const onClick = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "click", (e) => {
if (e.button === 0) {
onToggle(e);
}
})
);
const onFocus = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "focus", onOpen)
);
const onBlur = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "focus", onClose)
);
const onContextMenu = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger, "contextmenu", (e) => {
e.preventDefault();
onToggle(e);
})
);
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(OnlyChild), {
ref_key: "triggerRef",
ref: triggerRef,
class: normalizeClass(unref(ns).e("trigger")),
onMouseenter: unref(onMouseenter),
onMouseleave: unref(onMouseleave),
onClick: unref(onClick),
onFocus: unref(onFocus),
onBlur: unref(onBlur),
onContextmenu: unref(onContextMenu)
}, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["class", "onMouseenter", "onMouseleave", "onClick", "onFocus", "onBlur", "onContextmenu"]);
};
}
});
var popperTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/home/runner/work/vuesax-alpha/vuesax-alpha/packages/components/popper/src/trigger.vue"]]);
export { popperTrigger as default };
//# sourceMappingURL=trigger2.mjs.map