41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
|
|
// Styles
|
|
import "./VBottomSheet.css";
|
|
|
|
// Components
|
|
import { makeVDialogProps, VDialog } from "../VDialog/VDialog.mjs"; // Composables
|
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
|
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
export const makeVBottomSheetProps = propsFactory({
|
|
inset: Boolean,
|
|
...makeVDialogProps({
|
|
transition: 'bottom-sheet-transition'
|
|
})
|
|
}, 'VBottomSheet');
|
|
export const VBottomSheet = genericComponent()({
|
|
name: 'VBottomSheet',
|
|
props: makeVBottomSheetProps(),
|
|
emits: {
|
|
'update:modelValue': value => true
|
|
},
|
|
setup(props, _ref) {
|
|
let {
|
|
slots
|
|
} = _ref;
|
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
useRender(() => {
|
|
const dialogProps = VDialog.filterProps(props);
|
|
return _createVNode(VDialog, _mergeProps(dialogProps, {
|
|
"contentClass": ['v-bottom-sheet__content', props.contentClass],
|
|
"modelValue": isActive.value,
|
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
"class": ['v-bottom-sheet', {
|
|
'v-bottom-sheet--inset': props.inset
|
|
}, props.class],
|
|
"style": props.style
|
|
}), slots);
|
|
});
|
|
return {};
|
|
}
|
|
});
|
|
//# sourceMappingURL=VBottomSheet.mjs.map
|