From 9a7e983e9a076b326879e9354d9b89028198e738 Mon Sep 17 00:00:00 2001 From: Abhas Bhattacharya Date: Sat, 7 Apr 2018 14:06:35 +0530 Subject: [PATCH] Add DraggableNode component --- .../DraggableNode/DraggableNode.tsx | 25 +++++++++++++++++++ src/Components/DraggableNode/index.ts | 1 + 2 files changed, 26 insertions(+) create mode 100644 src/Components/DraggableNode/DraggableNode.tsx create mode 100644 src/Components/DraggableNode/index.ts diff --git a/src/Components/DraggableNode/DraggableNode.tsx b/src/Components/DraggableNode/DraggableNode.tsx new file mode 100644 index 0000000..0165f03 --- /dev/null +++ b/src/Components/DraggableNode/DraggableNode.tsx @@ -0,0 +1,25 @@ +import * as React from 'react'; + +interface OnClickProps { + onClick(event: React.MouseEvent): void; +} + +export class DraggableNode extends React.Component { + getModifiedChildrenWithAddedClickHandler(): React.ReactElement[] { + return React.Children.map(this.props.children, (eachChild) => { + // tslint:disable-next-line:no-console + return React.cloneElement( + eachChild as React.ReactElement, + { + onClick: function (event: React.MouseEvent) { + // tslint:disable-next-line:no-console + console.log(arguments); + } + }); + }); + } + + render() { + return this.getModifiedChildrenWithAddedClickHandler(); + } +} \ No newline at end of file diff --git a/src/Components/DraggableNode/index.ts b/src/Components/DraggableNode/index.ts new file mode 100644 index 0000000..2dd88b6 --- /dev/null +++ b/src/Components/DraggableNode/index.ts @@ -0,0 +1 @@ +export { DraggableNode } from './DraggableNode'; \ No newline at end of file