From dbb7e5a64422891b5590b20911b45065e4e0b277 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 5 Feb 2017 01:58:25 +0100 Subject: Getting started on draggable columns --- .../components/features/ui/components/column.jsx | 30 +++++++++++++++++----- .../javascripts/components/features/ui/index.jsx | 4 ++- 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'app/assets/javascripts/components/features') diff --git a/app/assets/javascripts/components/features/ui/components/column.jsx b/app/assets/javascripts/components/features/ui/components/column.jsx index c382e108d..b33383428 100644 --- a/app/assets/javascripts/components/features/ui/components/column.jsx +++ b/app/assets/javascripts/components/features/ui/components/column.jsx @@ -1,5 +1,6 @@ -import ColumnHeader from './column_header'; +import ColumnHeader from './column_header'; import PureRenderMixin from 'react-addons-pure-render-mixin'; +import { DragSource } from 'react-dnd'; const easingOutQuint = (x, t, b, c, d) => c*((t=t/d-1)*t*t*t*t + 1) + b; @@ -36,9 +37,22 @@ const style = { flexDirection: 'column' }; +const columnSource = { + beginDrag (props) { + return {}; + } +}; + +const collect = (connect, monitor) => ({ + connectDragSource: connect.dragSource(), + isDragging: monitor.isDragging() +}); + const Column = React.createClass({ propTypes: { + connectDragSource: React.PropTypes.func.isRequired, + isDragging: React.PropTypes.bool.isRequired, heading: React.PropTypes.string, icon: React.PropTypes.string, children: React.PropTypes.node @@ -58,20 +72,22 @@ const Column = React.createClass({ }, render () { + const { heading, icon, children, connectDragSource, isDragging } = this.props; + let header = ''; - if (this.props.heading) { - header = ; + if (heading) { + header = ; } - return ( -
+ return connectDragSource( +
{header} - {this.props.children} + {children}
); } }); -export default Column; +export default DragSource('column', columnSource, collect)(Column); diff --git a/app/assets/javascripts/components/features/ui/index.jsx b/app/assets/javascripts/components/features/ui/index.jsx index da44434b1..de0c054ba 100644 --- a/app/assets/javascripts/components/features/ui/index.jsx +++ b/app/assets/javascripts/components/features/ui/index.jsx @@ -13,6 +13,8 @@ import { debounce } from 'react-decoration'; import { uploadCompose } from '../../actions/compose'; import { refreshTimeline } from '../../actions/timelines'; import { refreshNotifications } from '../../actions/notifications'; +import { DragDropContext } from 'react-dnd'; +import HTML5Backend from 'react-dnd-html5-backend'; const UI = React.createClass({ @@ -103,4 +105,4 @@ const UI = React.createClass({ }); -export default connect()(UI); +export default connect()(DragDropContext(HTML5Backend)(UI)); -- cgit