From d735ef8423110d720c74ce6ed771f588cd1e0883 Mon Sep 17 00:00:00 2001 From: Matt Oestreich <21092343+oze4@users.noreply.github.com> Date: Sun, 1 Aug 2021 14:40:43 -0500 Subject: [PATCH] chore: clean up how persisting row click events are handled --- __tests__/demo/demo-components/index.js | 16 +++++++++++----- src/components/m-table-body-row.js | 12 ++++++++---- src/utils/hooks/useDoubleClick.js | 5 +---- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/__tests__/demo/demo-components/index.js b/__tests__/demo/demo-components/index.js index e7bedb1d..6904e285 100644 --- a/__tests__/demo/demo-components/index.js +++ b/__tests__/demo/demo-components/index.js @@ -547,12 +547,18 @@ export function EventTargetErrorOnRowClick(props) { tableRef={tableRef} columns={cols} data={datas} - onSelectionChange={onRowSelectionChanged} - onRowClick={onRowClicked} + // onSelectionChange={onRowSelectionChanged} + // onRowClick={onRowClicked} components={{ - MTableBodyRow: (props, p2) => { - console.log({ props, p2 }); - return ; + Row: (props) => { + return ( + + ); } }} options={{ diff --git a/src/components/m-table-body-row.js b/src/components/m-table-body-row.js index 3e4530e7..7d5eafa5 100644 --- a/src/components/m-table-body-row.js +++ b/src/components/m-table-body-row.js @@ -56,8 +56,7 @@ export default function MTableBodyRow(props) { const onRowClickListener = useDoubleClick( onRowClick ? (e) => onClick(e, onRowClick) : undefined, - onDoubleRowClick ? (e) => onClick(e, onDoubleRowClick) : undefined, - persistEvents + onDoubleRowClick ? (e) => onClick(e, onDoubleRowClick) : undefined ); const getRenderColumns = () => { @@ -445,8 +444,13 @@ export default function MTableBodyRow(props) { { + if (persistEvents) { + event.persist(); + } + onRowClickListener(event); + }} + hover={onRowClick !== null || onDoubleRowClick !== null} style={getStyle(props.index, props.level)} > {renderColumns} diff --git a/src/utils/hooks/useDoubleClick.js b/src/utils/hooks/useDoubleClick.js index 28deea74..beacf870 100644 --- a/src/utils/hooks/useDoubleClick.js +++ b/src/utils/hooks/useDoubleClick.js @@ -1,6 +1,6 @@ import React from 'react'; -function useDoubleClick(singleCallback, dbCallback, persistEvents) { +function useDoubleClick(singleCallback, dbCallback) { const countRef = React.useRef(0); /** Refs for the timer **/ const timerRef = React.useRef(null); @@ -12,9 +12,6 @@ function useDoubleClick(singleCallback, dbCallback, persistEvents) { inputSingleCallbackRef.current = singleCallback; }); const onClick = React.useCallback((e) => { - if (persistEvents) { - e.persist(); - } const isDoubleClick = countRef.current + 1 === 2; const timerIsPresent = timerRef.current; if (timerIsPresent && isDoubleClick) {