UNPKG

@ark-ui/vue

Version:

A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.

40 lines (37 loc) 1.45 kB
import { defineComponent, onMounted, computed, renderSlot } from 'vue'; import { RenderStrategyPropsProvider } from '../../utils/use-render-strategy.js'; import { useForwardExpose } from '../../utils/use-forward-expose.js'; import { useMenuContext, MenuProvider } from './use-menu-context.js'; import { useMenuMachineContext, MenuMachineProvider } from './use-menu-machine-context.js'; import { MenuTriggerItemProvider } from './use-menu-trigger-item-context.js'; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "menu-root-provider", props: { value: {}, lazyMount: { type: Boolean }, unmountOnExit: { type: Boolean }, asChild: { type: Boolean } }, setup(__props) { const props = __props; const { value: { machine, api } } = props; const parentApi = useMenuContext(); const parentMachine = useMenuMachineContext(); onMounted(() => { if (!parentMachine) return; parentApi.value.setChild(machine); api.value.setParent(parentMachine); }); MenuTriggerItemProvider(computed(() => parentApi.value.getTriggerItemProps(api.value))); MenuMachineProvider(machine); MenuProvider(api); RenderStrategyPropsProvider(computed(() => ({ lazyMount: props.lazyMount, unmountOnExit: props.unmountOnExit }))); useForwardExpose(); return (_ctx, _cache) => { return renderSlot(_ctx.$slots, "default"); }; } }); export { _sfc_main as default };