schlechtenburg/packages/core/lib/components/Modal.tsx

42 lines
785 B
TypeScript
Raw Normal View History

2020-05-27 13:57:57 +00:00
import {
defineComponent,
computed,
2020-12-27 21:32:43 +00:00
} from 'vue';
2020-05-27 13:57:57 +00:00
import './Modal.scss';
2020-12-30 13:34:23 +00:00
export const SbModal = defineComponent({
2020-05-27 13:57:57 +00:00
name: 'sb-modal',
props: {
open: {
type: Boolean,
default: false,
},
2021-02-22 18:13:37 +00:00
onClose: { type: Function, default: () => {} },
2020-05-27 13:57:57 +00:00
},
2021-03-08 15:29:35 +00:00
setup(props, context) {
2020-05-27 13:57:57 +00:00
const classes = computed(() => ({
'sb-modal': true,
'sb-modal_open': props.open,
}));
return () => (
<div class={classes.value}>
<div
class="sb-modal__overlay"
onClick={($event: MouseEvent) => {
$event.stopPropagation();
2021-02-22 18:13:37 +00:00
props.onClose();
2020-05-27 13:57:57 +00:00
}}
>
<div class="sb-modal__content">
2021-03-08 15:29:35 +00:00
{context.slots.default?.()}
2020-05-27 13:57:57 +00:00
</div>
</div>
</div>
);
},
});