diff --git a/packages/react/src/SelectionArea.tsx b/packages/react/src/SelectionArea.tsx index 9691dbe..c2ec7da 100644 --- a/packages/react/src/SelectionArea.tsx +++ b/packages/react/src/SelectionArea.tsx @@ -1,9 +1,9 @@ /* eslint-disable no-use-before-define */ import VanillaSelectionArea from '@viselect/vanilla'; import {SelectionEvents, SelectionOptions} from '@viselect/vanilla'; -import React, {createRef, useEffect, createContext, useContext, useState} from 'react'; +import React, {useEffect, createContext, useContext, useRef, useState} from 'react'; -export interface SelectionAreaProps extends Omit, 'boundaries'>, React.HTMLAttributes { +export interface SelectionAreaProps extends Partial, React.HTMLAttributes { id?: string; className?: string; onBeforeStart?: SelectionEvents['beforestart']; @@ -19,12 +19,12 @@ export const useSelection = () => useContext(SelectionContext); export const SelectionArea: React.FunctionComponent = props => { const [selectionState, setSelection] = useState(undefined); - const root = createRef(); + const root = useRef(null); useEffect(() => { /* eslint-disable @typescript-eslint/no-unused-vars */ - const {onBeforeStart, onBeforeDrag, onStart, onMove, onStop, ...opt} = props; - const areaBoundaries = root.current as HTMLElement; + const {boundaries, onBeforeStart, onBeforeDrag, onStart, onMove, onStop, ...opt} = props; + const areaBoundaries = boundaries ? boundaries : (root.current as HTMLElement); const selection = new VanillaSelectionArea({ boundaries: areaBoundaries, @@ -47,9 +47,13 @@ export const SelectionArea: React.FunctionComponent = props return ( -
- {props.children} -
+ {props.boundaries ? ( + props.children + ) : ( +
+ {props.children} +
+ )}
); };