reka-ui
Version:
Vue port for Radix UI Primitives.
1 lines • 3.08 kB
Source Map (JSON)
{"version":3,"file":"CollapsibleRoot.cjs","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Ref, toRefs } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n open?: boolean\n /** When `true`, prevents the user from interacting with the collapsible. */\n disabled?: boolean\n /** When `true`, the element will be unmounted on closed state. */\n unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n /** Event handler called when the open state of the collapsible changes. */\n 'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n contentId: string\n disabled?: Ref<boolean>\n open: Ref<boolean>\n unmountOnHide: Ref<boolean>\n onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n open: undefined,\n defaultOpen: false,\n unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\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 { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n contentId: '',\n disabled,\n open,\n unmountOnHide,\n onOpenToggle: () => {\n open.value = !open.value\n },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"props.asChild\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :open=\"open\" />\n </Primitive>\n</template>\n"],"names":["createContext","useVModel","toRefs","useForwardExpose"],"mappings":";;;;;;;;AA6BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrEA,mCAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,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,EAAE,QAAA,EAAU,aAAc,EAAA,GAAIC,WAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;;;"}