import { computed, ref, defineComponent, } from 'vue'; import { useDynamicBlocks } from '../use-dynamic-blocks'; import { BlockDefinition } from '../types'; import { SbButton } from './Button'; import { SbModal } from './Modal'; import './BlockPicker.scss'; export const SbBlockPicker = defineComponent({ name: 'sb-block-picker', props: { onPickedBlock: { type: Function, default: () => {} }, }, setup(props) { const open = ref(false); const { customBlocks } = useDynamicBlocks(); const blockList = computed(() => Object.keys(customBlocks).map((key) => customBlocks[key])); const selectBlock = (block: BlockDefinition) => () => { open.value = false; props.onPickedBlock({ name: block.name, id: `${+(new Date())}`, data: block.getDefaultData(), }); }; return () => (
{ open.value = true; $event.stopPropagation(); }, }} >+ { open.value = false; }} {...{ onClick: ($event: MouseEvent) => $event.stopPropagation() }} > {...blockList.value.map((block: BlockDefinition) => ( selectBlock(block), }} >{block.name} ))}
); }, });