diff --git a/examples/Basic/Basic.vue b/examples/Basic/Basic.vue index de50e3b8..8173c483 100644 --- a/examples/Basic/Basic.vue +++ b/examples/Basic/Basic.vue @@ -28,7 +28,10 @@ const rfInstance = ref(null) const onElementsRemove = (elementsToRemove: Elements) => (elements.value = removeElements(elementsToRemove, elements.value as Elements)) const onConnect = (params: Edge | Connection) => (elements.value = addEdge(params, elements.value as Elements)) -const onLoad = (revueFlowInstance: OnLoadParams) => (rfInstance.value = revueFlowInstance) +const onLoad = (revueFlowInstance: OnLoadParams) => { + revueFlowInstance.fitView({ padding: 0.1 }) + rfInstance.value = revueFlowInstance +} const updatePos = () => { elements.value = elements.value.map((el: FlowElement) => { diff --git a/src/additional-components/Controls/Controls.vue b/src/additional-components/Controls/Controls.vue index bd8c4a8e..661b016d 100644 --- a/src/additional-components/Controls/Controls.vue +++ b/src/additional-components/Controls/Controls.vue @@ -14,10 +14,6 @@ export interface ControlProps extends HTMLAttributes { showFitView?: boolean showInteractive?: boolean fitViewParams?: FitViewParams - onZoomIn?: () => void - onZoomOut?: () => void - onFitView?: () => void - onInteractiveChange?: (interactiveStatus: boolean) => void } const props = withDefaults(defineProps(), { @@ -25,6 +21,8 @@ const props = withDefaults(defineProps(), { showFitView: true, showInteractive: true, }) +// todo define types for events +const emit = defineEmits(['zoom-in', 'zoom-out', 'fit-view', 'interaction-change']) const store = useStore() const { zoomIn, zoomOut, fitView } = useZoomPanHelper() @@ -34,22 +32,22 @@ const mapClasses = ['vue-flow__controls'] const onZoomInHandler = () => { zoomIn?.() - props.onZoomIn?.() + emit('zoom-in') } const onZoomOutHandler = () => { zoomOut?.() - props.onZoomOut?.() + emit('zoom-out') } const onFitViewHandler = () => { fitView?.(props.fitViewParams) - props.onFitView?.() + emit('fit-view') } const onInteractiveChangeHandler = () => { store.setInteractive?.(!isInteractive.value) - props.onInteractiveChange?.(!isInteractive.value) + emit('interaction-change', !isInteractive.value) }