diff --git a/package.json b/package.json index 6338bd7ed..265e111c3 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "redux-actions": "^2.6.1", "redux-logger": "^3.0.6", "trello-smooth-dnd": "1.0.0", - "uuid": "^3.3.2" + "uuid": "^8.3.2" }, "devDependencies": { "@babel/cli": "7.1.2", diff --git a/src/components/NewLaneForm.js b/src/components/NewLaneForm.js index 5b10ead8b..08dea2c48 100644 --- a/src/components/NewLaneForm.js +++ b/src/components/NewLaneForm.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { LaneTitle, NewLaneButtons, Section } from 'rt/styles/Base' import { AddButton, CancelButton } from 'rt/styles/Elements' import NewLaneTitleEditor from 'rt/widgets/NewLaneTitleEditor' -import uuidv1 from 'uuid/v1' +import {v1 as uuidv1} from 'uuid' class NewLane extends Component { handleSubmit = () => { diff --git a/src/controllers/Board.js b/src/controllers/Board.js index 4e5c06673..a5508208d 100644 --- a/src/controllers/Board.js +++ b/src/controllers/Board.js @@ -3,7 +3,7 @@ import {Provider} from 'react-redux' import classNames from 'classnames' import {applyMiddleware, createStore} from 'redux' import logger from 'redux-logger' -import uuidv1 from 'uuid/v1' +import {v1 as uuidv1} from 'uuid' import BoardContainer from './BoardContainer' import createTranslate from 'rt/helpers/createTranslate' import boardReducer from 'rt/reducers/BoardReducer' diff --git a/src/controllers/BoardContainer.js b/src/controllers/BoardContainer.js index 7603b8940..f749ef88d 100644 --- a/src/controllers/BoardContainer.js +++ b/src/controllers/BoardContainer.js @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import pick from 'lodash/pick' import isEqual from 'lodash/isEqual' import Lane from './Lane' -import { PopoverWrapper } from 'react-popopo' +import {PopoverWrapper} from 'react-popopo' import * as boardActions from 'rt/actions/BoardActions' import * as laneActions from 'rt/actions/LaneActions' @@ -170,16 +170,8 @@ class BoardContainer extends Component { return ( - this.getLaneDetails(index)} - groupName={this.groupName}> - {reducerData.lanes.map((lane, index) => { +
+ {reducerData.lanes.filter(l => l.immoveable).map((lane, index) => { const {id, droppable, ...otherProps} = lane const laneToRender = ( ) - return draggable && laneDraggable ? {laneToRender} : laneToRender + return draggable && laneDraggable && !lane.immoveable ? + {laneToRender} : laneToRender })} - + this.getLaneDetails(index)} + groupName={this.groupName}> + {reducerData.lanes.map((lane, index) => { + const {id, droppable, ...otherProps} = lane + const laneToRender = ( + + ) + + if (lane.immoveable) { + return
+ } + + return draggable && laneDraggable ? + {laneToRender} : laneToRender + })} + +
{canAddLanes && ( - {editable && !addLaneMode ? : ( + {editable && !addLaneMode ? : ( addLaneMode && )} @@ -254,17 +284,27 @@ BoardContainer.propTypes = { } BoardContainer.defaultProps = { - t: v=>v, - onDataChange: () => {}, - handleDragStart: () => {}, - handleDragEnd: () => {}, - handleLaneDragStart: () => {}, - handleLaneDragEnd: () => {}, - onCardUpdate: () => {}, - onLaneAdd: () => {}, - onLaneDelete: () => {}, - onCardMoveAcrossLanes: () => {}, - onLaneUpdate: () => {}, + t: v => v, + onDataChange: () => { + }, + handleDragStart: () => { + }, + handleDragEnd: () => { + }, + handleLaneDragStart: () => { + }, + handleLaneDragEnd: () => { + }, + onCardUpdate: () => { + }, + onLaneAdd: () => { + }, + onLaneDelete: () => { + }, + onCardMoveAcrossLanes: () => { + }, + onLaneUpdate: () => { + }, editable: false, canAddLanes: false, hideCardDeleteIcon: false, diff --git a/src/controllers/Lane.js b/src/controllers/Lane.js index 3a8303a81..13deced72 100644 --- a/src/controllers/Lane.js +++ b/src/controllers/Lane.js @@ -6,7 +6,7 @@ import {connect} from 'react-redux' import isEqual from 'lodash/isEqual' import cloneDeep from 'lodash/cloneDeep' import pick from 'lodash/pick' -import uuidv1 from 'uuid/v1' +import {v1 as uuidv1} from 'uuid' import Container from 'rt/dnd/Container' import Draggable from 'rt/dnd/Draggable' @@ -270,7 +270,7 @@ class Lane extends Component { {this.renderHeader({id, cards, ...otherProps})} {this.renderDragContainer(isDraggingOver)} {loading && } - {showFooter && } + {showFooter && } ) } diff --git a/stories/CustomLaneFooter.story.js b/stories/CustomLaneFooter.story.js index 7fbf3b27a..531be2c20 100644 --- a/stories/CustomLaneFooter.story.js +++ b/stories/CustomLaneFooter.story.js @@ -5,7 +5,7 @@ import Board from '../src' const data = require('./data/collapsible.json') -const LaneFooter = ({onClick, collapsed}) =>
{collapsed ? 'click to expand' : 'click to collapse'}
+const LaneFooter = ({onClick, collapsed, cards}) =>
{collapsed ? 'click to expand' : 'click to collapse'} {cards.length} card{cards.length > 1 && 's'}
storiesOf('Custom Components', module). add('LaneFooter', () => ) diff --git a/stories/RestrictedLanes.story.js b/stories/RestrictedLanes.story.js index 60e5297f9..94c57ad38 100644 --- a/stories/RestrictedLanes.story.js +++ b/stories/RestrictedLanes.story.js @@ -20,3 +20,14 @@ storiesOf('Drag-n-Drop', module).add( }, {info: 'Use props to disable dragging lanes but enable card dragging'} ) + +storiesOf('Drag-n-Drop', module).add( + 'Immoveable lane', + () => { + const dataCopy = JSON.parse(JSON.stringify(data)) + dataCopy.lanes[0].immoveable = true + dataCopy.lanes[0].title = 'Immoveable' + return + }, + {info: 'Use props to disable dragging lanes but enable card dragging'} +) diff --git a/tests/__snapshots__/Storyshots.test.js.snap b/tests/__snapshots__/Storyshots.test.js.snap index 259ffaedb..611d7a241 100644 --- a/tests/__snapshots__/Storyshots.test.js.snap +++ b/tests/__snapshots__/Storyshots.test.js.snap @@ -114,32 +114,40 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - loading.. - -
-
-
-
-
+ + loading.. + + +
+
+
+ +
@@ -585,864 +593,872 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
-
- - Double Click Here - - - 20/70 + Double Click Here - -
-
-
-
-
-
+ +
+
+
+
+
- - Buy milk - - - 15 mins - + + Buy milk + + + 15 mins + +
+ +
+
- + 2 Gallons of milk at the Deli store
- -
- 2 Gallons of milk at the Deli store -
-
-
-
-
+
+
-
- - Dispose Garbage - - - 10 mins - + + Dispose Garbage + + + 10 mins + +
+ +
+
- + Sort out recyclable and waste as needed
- -
- Sort out recyclable and waste as needed -
-
-
-
-
+
+
-
- - Write Blog - - +
- 30 mins - + + Write Blog + + + 30 mins + +
+ +
+
- + Can AI make memes?
-
-
- Can AI make memes? -
- -
-
-
+
+
-
- - Pay Rent - - - 5 mins - + + Pay Rent + + + 5 mins + +
+ +
+
- + Transfer to bank account
- -
- Transfer to bank account -
- + +
-
-
+ +
+
+
+
+
- -
- -
-
-
-
- - Work In Progress - - - 10/20 + Work In Progress - -
-
-
-
-
-
+ +
+
+
+
+
- - Clean House - - - 30 mins - + + Clean House + + + 30 mins + +
+ +
+
- + Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses
- -
- Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses -
-
+
+
-
-
- -
- - -
-
+ +
+ + +
-
- - Blocked - - - 0/0 + Blocked - -
-
-
-
- -
-
-
+ + 0/0 + + + +
+
+
+
+
+
-
- - Completed - - - 2/5 + Completed - -
-
-
-
-
-
+ +
+
+
+
+
- - Practice Meditation - - - 15 mins - + + Practice Meditation + + + 15 mins + +
+ +
+
- + Use Headspace app
- -
- Use Headspace app -
-
-
-
-
+
+
-
- - Maintain Daily Journal - - - 15 mins - + + Maintain Daily Journal + + + 15 mins + +
+ +
+
- + Use Spreadsheet for now
- -
- Use Spreadsheet for now -
-
+ +
-
-
+ +
+ +
+
+
- -
- - -
-
-
- - Repeat - - - 1/1 + Repeat - -
-
-
-
-
-
+ +
+
+
+
+
- - Morning Jog - - - 30 mins - + + Morning Jog + + + 30 mins + +
+ +
+
- + Track using fitbit
- -
- Track using fitbit -
-
+
+
-
-
+ +
+ + +
+
- -
- - -
-
-
- - Archived - - - 1/1 + Archived - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Trekking - - - 300 mins - -
- -
- -
- Completed 10km on cycle -
-
-
+ Go Trekking + + + 300 mins + +
+ +
+ +
+ Completed 10km on cycle +
+
+
+
-
-
+ +
+ + +
+
- -
- - -
-
-
- - Archived2 - - - 1/1 + Archived2 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Jogging - - - 300 mins - + + Go Jogging + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
-
-
+ +
+ + +
+
- -
- - -
-
-
- - Archived3 - - - 1/1 + Archived3 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Cycling - - - 300 mins - -
- + Go Cycling + + + 300 mins + +
+ +
+ +
+ Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
-
-
- -
- +
+ +
+ + @@ -1712,189 +1728,197 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
-
- - Planned Tasks - -
-
-
-
-
+ +
+
+
-
- - Card1 - - - - + + Card1 + + + + +
+ +
+
- + foo card
- -
- foo card -
-
-
-
-
+
+
-
- - Card2 - - - - + + Card2 + + + + +
+ +
+
- + bar card
- -
- bar card -
- + +
-
-
-
-
-
+
+
-
- - Executing - -
-
-
-
+ -
+ +
+
+
-
- - Card3 - - - - + + Card3 + + + + +
+ +
+
- + foobar card
- -
- foobar card -
-
+ +
-
- + +
@@ -2356,777 +2380,785 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Disallowed adding card - - - 20/70 + Disallowed adding card - -
-
-
-
-
-
+ +
+
+
+
+
- - Buy milk - - - 15 mins - + + Buy milk + + + 15 mins + +
+ +
+
- + 2 Gallons of milk at the Deli store
- -
- 2 Gallons of milk at the Deli store -
-
-
-
-
+
+
-
- - Dispose Garbage - - - 10 mins - -
- -
-
-
- Sort out recyclable and waste as needed -
-
-
-
-
+ + 10 mins + +
+ +
+ +
+ Sort out recyclable and waste as needed +
+
+
+
-
- - Write Blog - - - 30 mins - + + Write Blog + + + 30 mins + +
+ +
+
- + Can AI make memes?
- -
- Can AI make memes? -
- -
-
-
+
+
-
- - Pay Rent - - - 5 mins - + + Pay Rent + + + 5 mins + +
+ +
+
- + Transfer to bank account
- -
- Transfer to bank account -
- + +
-
- -
+
-
- - Work In Progress - - - 10/20 + Work In Progress - -
-
-
-
-
-
+ +
+
+
+
+
- - Clean House - - - 30 mins - + + Clean House + + + 30 mins + +
+ +
+
- + Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses
- -
- Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses -
-
+
+
- -
-
+
-
- - Blocked - - - 0/0 + Blocked - -
-
-
-
-
-
+ + 0/0 + + + +
+
+
+
+
-
- - Completed - - - 2/5 + Completed - -
-
-
-
-
-
+ +
+
+
+
+
- - Practice Meditation - - - 15 mins - + + Practice Meditation + + + 15 mins + +
+ +
+
- + Use Headspace app
- -
- Use Headspace app -
-
-
-
-
+
+
-
- - Maintain Daily Journal - - - 15 mins - + + Maintain Daily Journal + + + 15 mins + +
+ +
+
- + Use Spreadsheet for now
- -
- Use Spreadsheet for now -
-
+ +
- -
-
+
-
- - Repeat - - - 1/1 + Repeat - -
-
-
-
-
-
+ +
+
+
+
+
- - Morning Jog - - - 30 mins - + + Morning Jog + + + 30 mins + +
+ +
+
- + Track using fitbit
- -
- Track using fitbit -
-
+
+
- -
-
+
-
- - Archived - - - 1/1 + Archived - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Trekking - - - 300 mins - + + Go Trekking + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
-
+
-
- - Archived2 - - - 1/1 + Archived2 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Jogging - - - 300 mins - + + Go Jogging + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
-
+
-
- - Archived3 - - - 1/1 + Archived3 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Cycling - - - 300 mins - + + Go Cycling + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
+
+ @@ -3518,648 +3550,656 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Lane1 - -
-
-
-
-
+ +
+
+
-
- - Card1 - - - - + + Card1 + + + + +
+ +
+
- + Description for #1
- -
- Description for #1 -
-
-
-
-
+
+
-
- - Card2 - - - - + + Card2 + + + + +
+ +
+
- + Description for #2
- -
- Description for #2 -
- -
-
-
+
+
-
- - Card3 - - - - + + Card3 + + + + +
+ +
+
- + Description for #3
- -
- Description for #3 -
- -
-
-
+
+
-
- - Card4 - - - - + + Card4 + + + + +
+ +
+
- + Description for #4
- -
- Description for #4 -
- -
-
-
+
+
-
- - Card5 - - - - + + Card5 + + + + +
+ +
+
- + Description for #5
- -
- Description for #5 -
- -
-
-
+
+
-
- - Card6 - - - - + + Card6 + + + + +
+ +
+
- + Description for #6
- -
- Description for #6 -
- -
-
-
+
+
-
- - Card7 - - - - + + Card7 + + + + +
+ +
+
- + Description for #7
- -
- Description for #7 -
- -
-
-
+
+
-
- - Card8 - - - - + + Card8 + + + + +
+ +
+
- + Description for #8
- -
- Description for #8 -
- -
-
-
+
+
-
- - Card9 - - - - + + Card9 + + + + +
+ +
+
- + Description for #9
- -
- Description for #9 -
- -
-
-
+
+
-
- - Card10 - - - - + + Card10 + + + + +
+ +
+
- + Description for #10
- -
- Description for #10 -
- -
-
-
+
+
-
- - Card11 - - - - + + Card11 + + + + +
+ +
+
- + Description for #11
- -
- Description for #11 -
- -
-
-
+
+
-
- - Card12 - - - - + + Card12 + + + + +
+ +
+
- + Description for #12
- -
- Description for #12 -
- -
-
-
+
+
-
- - Card13 - - - - + + Card13 + + + + +
+ +
+
- + Description for #13
- -
- Description for #13 -
- -
-
-
+
+
-
- - Card14 - - - - + + Card14 + + + + +
+ +
+
- + Description for #14
- -
- Description for #14 -
- -
-
-
+
+
-
- - Card15 - - - - + + Card15 + + + + +
+ +
+
- + Description for #15
- -
- Description for #15 -
- + +
-
-
+
+ @@ -4560,777 +4600,785 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Disallowed adding card - - - 20/70 + Disallowed adding card - -
-
-
-
-
+ -
+ +
+
+
+
+
- - Buy milk - - - 15 mins - + + Buy milk + + + 15 mins + +
+ +
+
- + 2 Gallons of milk at the Deli store
- -
- 2 Gallons of milk at the Deli store -
-
-
-
-
+
+
-
- - Dispose Garbage - - - 10 mins - + + Dispose Garbage + + + 10 mins + +
+ +
+
- + Sort out recyclable and waste as needed
- -
- Sort out recyclable and waste as needed -
-
-
-
-
+
+
-
- - Write Blog - - - 30 mins - + + Write Blog + + + 30 mins + +
+ +
+
- + Can AI make memes?
- -
- Can AI make memes? -
- -
-
-
+
+
-
- - Pay Rent - - - 5 mins - -
- + + Pay Rent + + + 5 mins + +
+ +
+
+
+ Transfer to bank account
- -
- Transfer to bank account -
- + +
-
-
-
+
-
- - Work In Progress - - - 10/20 + Work In Progress - -
-
-
-
-
-
+ +
+
+
+
+
- - Clean House - - - 30 mins - + + Clean House + + + 30 mins + +
+ +
+
- + Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses
- -
- Soap wash and polish floor. Polish windows and doors. Scrap all broken glasses -
-
+
+
- -
-
+
-
- - Blocked - - - 0/0 + Blocked - -
-
-
-
-
-
+ + 0/0 + + + +
+
+
+
+
-
- - Completed - - - 2/5 + Completed - -
-
-
-
-
-
+ +
+
+
+
+
- - Practice Meditation - - - 15 mins - + + Practice Meditation + + + 15 mins + +
+ +
+
- + Use Headspace app
- -
- Use Headspace app -
-
-
-
-
+
+
-
- - Maintain Daily Journal - - - 15 mins - + + Maintain Daily Journal + + + 15 mins + +
+ +
+
- + Use Spreadsheet for now
- -
- Use Spreadsheet for now -
-
+ +
- -
-
+
-
- - Repeat - - - 1/1 + Repeat - -
-
-
-
-
-
+ +
+
+
+
+
- - Morning Jog - - - 30 mins - + + Morning Jog + + + 30 mins + +
+ +
+
- + Track using fitbit
- -
- Track using fitbit -
-
+
+
- -
-
+
-
- - Archived - - - 1/1 + Archived - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Trekking - - - 300 mins - + + Go Trekking + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
-
+
-
- - Archived2 - - - 1/1 + Archived2 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Jogging - - - 300 mins - + + Go Jogging + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
-
+
-
- - Archived3 - - - 1/1 + Archived3 - -
-
-
-
-
-
+ +
+
+
+
+
- - Go Cycling - - - 300 mins - + + Go Cycling + + + 300 mins + +
+ +
+
- + Completed 10km on cycle
- -
- Completed 10km on cycle -
-
+
+
- -
+
+ @@ -5655,648 +5703,656 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Lane1 - -
-
-
-
-
+ +
+
+
-
- - Card1 - - - - + + Card1 + + + + +
+ +
+
- + Description for #1
- -
- Description for #1 -
-
-
-
-
+
+
-
- - Card2 - - - - + + Card2 + + + + +
+ +
+
- + Description for #2
- -
- Description for #2 -
- -
-
-
+
+
-
- - Card3 - - - - + + Card3 + + + + +
+ +
+
- + Description for #3
- -
- Description for #3 -
- -
-
-
+
+
-
- - Card4 - - - - + + Card4 + + + + +
+ +
+
- + Description for #4
- -
- Description for #4 -
- -
-
-
+
+
-
- - Card5 - - - - + + Card5 + + + + +
+ +
+
- + Description for #5
- -
- Description for #5 -
- -
-
-
+
+
-
- - Card6 - - - - + + Card6 + + + + +
+ +
+
- + Description for #6
- -
- Description for #6 -
- -
-
-
+
+
-
- - Card7 - - - - + + Card7 + + + + +
+ +
+
- + Description for #7
- -
- Description for #7 -
- -
-
-
+
+
-
- - Card8 - - - - + + Card8 + + + + +
+ +
+
- + Description for #8
- -
- Description for #8 -
- -
-
-
+
+
-
- - Card9 - - - - + + Card9 + + + + +
+ +
+
- + Description for #9
- -
- Description for #9 -
- -
-
-
+
+
-
- - Card10 - - - - + + Card10 + + + + +
+ +
+
- + Description for #10
- -
- Description for #10 -
- -
-
-
+
+
-
- - Card11 - - - - + + Card11 + + + + +
+ +
+
- + Description for #11
- -
- Description for #11 -
- -
-
-
+
+
-
- - Card12 - - - - + + Card12 + + + + +
+ +
+
- + Description for #12
- -
- Description for #12 -
- -
-
-
+
+
-
- - Card13 - - - - + + Card13 + + + + +
+ +
+
- + Description for #13
- -
- Description for #13 -
- -
-
-
+
+
-
- - Card14 - - +
- - + + Card14 + + + + +
+ +
+
- + Description for #14
-
-
- Description for #14 -
- -
-
-
+
+
-
- - Card15 - - - - + + Card15 + + + + +
+ +
+
- + Description for #15
- -
- Description for #15 -
- + +
-
-
+
+ @@ -6583,207 +6639,215 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Sorted Lane - - - 20/70 + Sorted Lane - -
-
-
-
-
-
+ +
+
+
+
+
- - Buy milk - - - 2017-12-01 - + + Buy milk + + + 2017-12-01 + +
+ +
+
- + 2 Gallons of milk at the Deli store
- -
- 2 Gallons of milk at the Deli store -
-
-
-
-
+
+
-
- - Dispose Garbage - - +
- 2017-11-01 - + + Dispose Garbage + + + 2017-11-01 + +
+ +
+
- + Sort out recyclable and waste as needed
-
-
- Sort out recyclable and waste as needed -
-
-
-
-
+
+
-
- - Write Blog - - - 2017-10-01 - + + Write Blog + + + 2017-10-01 + +
+ +
+
- + Can AI make memes?
- -
- Can AI make memes? -
- -
-
-
+
+
-
- - Pay Rent - - - 2017-09-01 - + + Pay Rent + + + 2017-09-01 + +
+ +
+
- + Transfer to bank account
- -
- Transfer to bank account -
- + +
-
-
+
+ @@ -7070,207 +7134,215 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Sorted Lane - - - 20/70 + Sorted Lane - -
-
-
-
-
-
- - Pay Rent - - + +
+
+
+
+
+
- 2017-09-01 - + + Pay Rent + + + 2017-09-01 + +
+ +
+
- + Transfer to bank account
- -
- Transfer to bank account -
-
-
-
-
+
+
-
- - Write Blog - - - 2017-10-01 - + + Write Blog + + + 2017-10-01 + +
+ +
+
- + Can AI make memes?
- -
- Can AI make memes? -
-
-
-
-
+
+
-
- - Dispose Garbage - - - 2017-11-01 - + + Dispose Garbage + + + 2017-11-01 + +
+ +
+
- + Sort out recyclable and waste as needed
- -
- Sort out recyclable and waste as needed -
- -
-
-
+
+
-
- - Buy milk - - - 2017-12-01 - + + Buy milk + + + 2017-12-01 + +
+ +
+
- + 2 Gallons of milk at the Deli store
- -
- 2 Gallons of milk at the Deli store -
- + +
-
-
+
+ @@ -7577,183 +7649,191 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Planned Tasks - -
-
-
-
-
+ +
+
+
-
- - Card1 - - - - + + Card1 + + + + +
+ +
+
- + foo card
- -
- foo card -
-
- - High - - - Tech Debt - - + High + + - Very long tag that is - - + Tech Debt + + - One more - -
-
-
-
-
+ Very long tag that is + + + One more + +
+ +
+
-
- - Card2 - - + Card2 + + + + +
+ +
+
+
- - + bar card +
- + Low +
- -
- bar card -
-
- - Low - -
- + +
- -
+ + @@ -8181,59 +8261,115 @@ Array [ onClick={[Function]} onTouchEnd={[Function]} > -
-
-
+
+
- - Double Click Here - - - 20/70 + Double Click Here - -
-
-
-
-
-
+ +
+
+
+
+
- + +