UNPKG

ui-ingredients

Version:

Headless component library for Svelte powered by zag

43 lines (42 loc) 1.73 kB
import * as dialog from '@zag-js/dialog'; import { mergeProps, normalizeProps, useMachine } from '@zag-js/svelte'; import { getEnvironmentContext } from '../EnvironmentProvider/EnvironmentProviderContext.svelte.js'; import { getLocaleContext } from '../LocaleProvider/LocaleProviderContext.svelte.js'; import { parts } from './AlertDialog.anatomy.js'; export function createAlertDialog(props) { const locale = getLocaleContext(); const environment = getEnvironmentContext(); const service = useMachine(dialog.machine, () => ({ dir: locale?.().dir, role: 'alertdialog', getRootNode: environment?.().getRootNode, ...props(), })); return () => { const api = dialog.connect(service, normalizeProps); return { ...api, getBackdropProps() { return mergeProps(api.getBackdropProps(), parts.backdrop.attrs); }, getCloseTriggerProps() { return mergeProps(api.getCloseTriggerProps(), parts.closeTrigger.attrs); }, getContentProps() { return mergeProps(api.getContentProps(), parts.content.attrs); }, getDescriptionProps() { return mergeProps(api.getDescriptionProps(), parts.description.attrs); }, getPositionerProps() { return mergeProps(api.getPositionerProps(), parts.positioner.attrs); }, getTitleProps() { return mergeProps(api.getTitleProps(), parts.title.attrs); }, getTriggerProps() { return mergeProps(api.getTriggerProps(), parts.trigger.attrs); }, }; }; }