UNPKG

reka-ui

Version:

Vue port for Radix UI Primitives.

1 lines 3.32 kB
{"version":3,"file":"DialogRoot.cjs","sources":["../../src/Dialog/DialogRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext } from '@/shared'\n\nexport interface DialogRootProps {\n /** The controlled open state of the dialog. Can be binded as `v-model:open`. */\n open?: boolean\n /** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /**\n * The modality of the dialog When set to `true`, <br>\n * interaction with outside elements will be disabled and only dialog content will be visible to screen readers.\n */\n modal?: boolean\n}\n\nexport type DialogRootEmits = {\n /** Event handler called when the open state of the dialog changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface DialogRootContext {\n open: Readonly<Ref<boolean>>\n modal: Ref<boolean>\n openModal: () => void\n onOpenChange: (value: boolean) => void\n onOpenToggle: () => void\n triggerElement: Ref<HTMLElement | undefined>\n contentElement: Ref<HTMLElement | undefined>\n contentId: string\n titleId: string\n descriptionId: string\n}\n\nexport const [injectDialogRootContext, provideDialogRootContext]\n = createContext<DialogRootContext>('DialogRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DialogRootProps>(), {\n open: undefined,\n defaultOpen: false,\n modal: true,\n})\nconst emit = defineEmits<DialogRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst contentElement = ref<HTMLElement>()\nconst { modal } = toRefs(props)\n\nprovideDialogRootContext({\n open,\n modal,\n openModal: () => {\n open.value = true\n },\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n contentId: '',\n titleId: '',\n descriptionId: '',\n triggerElement,\n contentElement,\n})\n</script>\n\n<template>\n <slot :open=\"open\" />\n</template>\n"],"names":["createContext","useVModel","ref","toRefs"],"mappings":";;;;;;AAkCO,MAAM,CAAC,uBAAA,EAAyB,wBAAwB,CAAA,GAC3DA,mCAAiC,YAAY;;;;;;;;;;;;;AAWjD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiBC,OAAiB,EAAA;AACxC,IAAA,MAAM,iBAAiBA,OAAiB,EAAA;AACxC,IAAA,MAAM,EAAE,KAAA,EAAU,GAAAC,UAAA,CAAO,KAAK,CAAA;AAE9B,IAAyB,wBAAA,CAAA;AAAA,MACvB,IAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAW,MAAM;AACf,QAAA,IAAA,CAAK,KAAQ,GAAA,IAAA;AAAA,OACf;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,OAAS,EAAA,EAAA;AAAA,MACT,aAAe,EAAA,EAAA;AAAA,MACf,cAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;"}