From da3365536ef84e8a1a59d17598a7dcf9dee7d908 Mon Sep 17 00:00:00 2001 From: William Durand Date: Wed, 17 Aug 2016 15:00:56 +0200 Subject: [PATCH 1/8] Render task lists --- .../Preview/__tests__/Preview-test.js | 21 +++++++++++++++++++ app/components/Preview/presenter.jsx | 4 ++++ app/components/loaders/Preview.jsx | 1 + app/scss/components/_preview.scss | 12 +++++++++++ package.json | 5 +++-- 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/app/components/Preview/__tests__/Preview-test.js b/app/components/Preview/__tests__/Preview-test.js index 6656f4ac..1e667bf7 100644 --- a/app/components/Preview/__tests__/Preview-test.js +++ b/app/components/Preview/__tests__/Preview-test.js @@ -18,6 +18,7 @@ import mditAbbr from 'markdown-it-abbr'; import mditKatex from 'markdown-it-katex'; import mditContainer from 'markdown-it-container'; import mditClassy from 'markdown-it-classy'; +import mditTaskLists from 'markdown-it-task-lists'; // see: https://github.com/mochajs/mocha/issues/1847 const { before, describe, it, Promise } = global; @@ -46,6 +47,7 @@ describe('', () => { mditClassy, ], markdownItContainer: mditContainer, + markdownItTaskLists: mditTaskLists, hljs: hljs, emojione: emojione }); @@ -644,4 +646,23 @@ Annonce | Où | WM | Taille | Nb pièces | Etage | Balcon? | Cave/Gge/Parking | done(); }); }); + + it('supports task lists', (done) => { + const wrapper = mount( + + ); + + setTimeout(() => { + expect(wrapper.html()).to.contain( + '
  • item
  • ' + ); + + done(); + }); + }); }); diff --git a/app/components/Preview/presenter.jsx b/app/components/Preview/presenter.jsx index 83062e2c..003a63d2 100644 --- a/app/components/Preview/presenter.jsx +++ b/app/components/Preview/presenter.jsx @@ -57,6 +57,10 @@ class Preview extends Component { }, }); + this.markdownIt.use(deps.markdownItTaskLists, { + enabled: true, + }); + this.emojione = deps.emojione; this.emojione.ascii = true; this.emojione.sprites = true; diff --git a/app/components/loaders/Preview.jsx b/app/components/loaders/Preview.jsx index 563fb6e2..dc1e5275 100644 --- a/app/components/loaders/Preview.jsx +++ b/app/components/loaders/Preview.jsx @@ -23,6 +23,7 @@ export default () => new Promise(resolve => { require('markdown-it-classy'), ], markdownItContainer: require('markdown-it-container'), + markdownItTaskLists: require('markdown-it-task-lists'), emojione: require('emojione'), }); }); diff --git a/app/scss/components/_preview.scss b/app/scss/components/_preview.scss index d2df754d..f40a7ef1 100644 --- a/app/scss/components/_preview.scss +++ b/app/scss/components/_preview.scss @@ -136,5 +136,17 @@ bottom: 43px; } } + + .task-list { + list-style-type: none; + + input[type=checkbox] { + margin: 0; + } + } + + span > .task-list { + margin-left: 0; + } } } diff --git a/package.json b/package.json index 507b3be8..b4ff7d04 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,13 @@ "markdown-it-modify-token": "^1.0.2", "markdown-it-sub": "^1.0.0", "markdown-it-sup": "^1.0.0", + "markdown-it-task-lists": "^1.4.1", "mocha": "^2.4.5", "mocha-circleci-reporter": "0.0.2", "node-sass": "^3.4.2", "nyc": "^8.1.0", "offline-plugin": "github:willdurand/offline-plugin#monod", + "raven-js": "^3.4.1", "react": "^15.3.0", "react-addons-test-utils": "^15.3.0", "react-dom": "^15.3.0", @@ -98,8 +100,7 @@ "uuid": "^2.0.1", "webpack": "^1.12.14", "webpack-dev-server": "^1.14.1", - "webpack-merge": "^0.14.1", - "raven-js": "^3.4.1" + "webpack-merge": "^0.14.1" }, "dependencies": { "body-parser": "^1.15.0", From 8ad8cab096914ecede48ff9b04a7ef6bc3f1e02b Mon Sep 17 00:00:00 2001 From: William Durand Date: Wed, 17 Aug 2016 15:57:49 +0200 Subject: [PATCH 2/8] Allow to check task list items (documents module) --- app/modules/__tests__/documents-test.js | 95 +++++++++++++++++++++++++ app/modules/documents.js | 31 ++++++++ 2 files changed, 126 insertions(+) diff --git a/app/modules/__tests__/documents-test.js b/app/modules/__tests__/documents-test.js index a9d4a24f..841cdcf9 100644 --- a/app/modules/__tests__/documents-test.js +++ b/app/modules/__tests__/documents-test.js @@ -276,4 +276,99 @@ describe('modules/documents', () => { expect(triggeredActions[1].type).to.equal(actions.LOAD_DEFAULT); }); }); + + describe('toggleTaskListItem()', () => { + it('should check a task item in the current\’s document content', () => { + const doc = new Document({ + content: `Hello\n\n- [ ] item 1`, + }); + + const index = 0; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal( + 'Hello\n\n- [x] item 1' + ); + }); + + it('should uncheck a checked task item in the current\’s document content', () => { + const doc = new Document({ + content: `Hello\n\n- [x] item 1`, + }); + + const index = 0; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal( + 'Hello\n\n- [ ] item 1' + ); + }); + + it('should work with capital X', () => { + const doc = new Document({ + content: `Hello\n\n- [X] item 1`, + }); + + const index = 0; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal( + 'Hello\n\n- [ ] item 1' + ); + }); + + it('should deal with many checkboxes', () => { + const doc = new Document({ + content: `Hello: + +- [ ] a bigger project + - [ ] first subtask #1234 + - [x] follow up subtask #4321 + - [ ] final subtask cc @mention +- [ ] a separate task` + }); + + const index = 2; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal(`Hello: + +- [ ] a bigger project + - [ ] first subtask #1234 + - [ ] follow up subtask #4321 + - [ ] final subtask cc @mention +- [ ] a separate task` + ); + }); + + it('should deal with many checkboxes (2)', () => { + const doc = new Document({ + content: `Hello: + +- [ ] a bigger project + - [ ] first subtask #1234 + - [X] follow up subtask #4321 + - [ ] final subtask cc @mention + +- [ ] a separate task + - [ ] first subtask #1234 + - [X] follow up subtask #4321` + }); + + const index = 6; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal(`Hello: + +- [ ] a bigger project + - [ ] first subtask #1234 + - [X] follow up subtask #4321 + - [ ] final subtask cc @mention + +- [ ] a separate task + - [ ] first subtask #1234 + - [ ] follow up subtask #4321` + ); + }); + }); }); diff --git a/app/modules/documents.js b/app/modules/documents.js index c52f0902..75ad49ae 100644 --- a/app/modules/documents.js +++ b/app/modules/documents.js @@ -11,6 +11,7 @@ export const LOAD_SUCCESS = 'monod/documents/LOAD_SUCCESS'; export const UPDATE_TEMPLATE = 'monod/documents/UPDATE_TEMPLATE'; export const UPDATE_CONTENT = 'monod/documents/UPDATE_CONTENT'; export const UPDATE_CURRENT_DOCUMENT = 'monod/documents/UPDATE_CURRENT_DOCUMENT'; +export const TOGGLE_TASK_LIST_ITEM = 'monod/documents/TOGGLE_TASK_LIST_ITEM'; // Action Creators export function loadDefault() { @@ -108,6 +109,10 @@ export function serverUnreachable() { }; } +export function toggleTaskListItem(index) { + return { type: TOGGLE_TASK_LIST_ITEM, index }; +} + // Reducer const initialState = { current: new Document(), @@ -132,8 +137,34 @@ function doUpdateTemplate(state, action) { }; } +function doClickOnTask(state, action) { + const content = state.current.get('content'); + + let index = 0; + const updatedContent = content.replace(/\[[x| ]\] /gi, (match) => { + if (action.index !== index++) { + return match; + } + + if (/x/i.test(match)) { + return '[ ] '; + } + + return '[x] '; + }); + + return { + ...state, + current: state.current.set('content', updatedContent), + forceUpdate: true, + }; +} + export default function reducer(state = initialState, action = {}) { switch (action.type) { + case TOGGLE_TASK_LIST_ITEM: + return doClickOnTask(state, action); + case UPDATE_CURRENT_DOCUMENT: return { ...state, From ba6e175afb8d994126185e72decfe99099d80f86 Mon Sep 17 00:00:00 2001 From: William Durand Date: Wed, 17 Aug 2016 16:58:21 +0200 Subject: [PATCH 3/8] Update document's content on checkbox click --- .../Editor/__tests__/Editor-test.js | 11 +++ app/components/Editor/index.js | 12 +++- app/components/Editor/presenter.jsx | 2 + .../Preview/__tests__/Preview-test.js | 68 +++++++++++++++++-- app/components/Preview/presenter.jsx | 27 ++++++++ app/modules/documents.js | 4 +- 6 files changed, 117 insertions(+), 7 deletions(-) diff --git a/app/components/Editor/__tests__/Editor-test.js b/app/components/Editor/__tests__/Editor-test.js index ddcaed7d..01ee9f35 100644 --- a/app/components/Editor/__tests__/Editor-test.js +++ b/app/components/Editor/__tests__/Editor-test.js @@ -22,6 +22,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); expect(wrapper.find(Markdown)).to.have.length(1); @@ -35,6 +36,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); expect(wrapper.find(Preview)).to.have.length(1); @@ -50,6 +52,7 @@ describe('', () => { onUpdateContent={spy} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); const content = 'Hello, World'; @@ -67,6 +70,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); @@ -81,6 +85,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); @@ -95,6 +100,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); @@ -110,6 +116,7 @@ describe('', () => { onUpdateContent={spy} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); @@ -126,6 +133,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); const verticalHandlerWrapper = wrapper.find('VerticalHandler').shallow(); @@ -146,6 +154,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); const verticalHandlerWrapper = wrapper.find('VerticalHandler').shallow(); @@ -172,6 +181,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); const verticalHandlerWrapper = wrapper.find('VerticalHandler').shallow(); @@ -192,6 +202,7 @@ describe('', () => { onUpdateContent={() => {}} template={''} forceUpdate={false} + onClickCheckbox={() => {}} /> ); const verticalHandlerWrapper = wrapper.find('VerticalHandler').shallow(); diff --git a/app/components/Editor/index.js b/app/components/Editor/index.js index bf4c35c6..cd927182 100644 --- a/app/components/Editor/index.js +++ b/app/components/Editor/index.js @@ -1,6 +1,9 @@ import { connect } from 'react-redux'; import Editor from './presenter'; -import { updateContent } from '../../modules/documents'; +import { + updateContent, + toggleTaskListItem, +} from '../../modules/documents'; const mapStateToProps = (state) => { @@ -18,6 +21,13 @@ const mapDispatchToProps = (dispatch) => ({ onUpdateContent: (content) => { dispatch(updateContent(content)); }, + onClickCheckbox: (index) => { + const idx = parseInt(index, 10); + + if (!isNaN(idx)) { + dispatch(toggleTaskListItem(idx)); + } + }, }); export default connect(mapStateToProps, mapDispatchToProps)(Editor); diff --git a/app/components/Editor/presenter.jsx b/app/components/Editor/presenter.jsx index 5965e86f..ee22eb64 100644 --- a/app/components/Editor/presenter.jsx +++ b/app/components/Editor/presenter.jsx @@ -75,6 +75,7 @@ export default class Editor extends Component { content={this.props.content} position={this.state.position} template={this.props.template} + onClickCheckbox={this.props.onClickCheckbox} /> ); @@ -86,5 +87,6 @@ Editor.propTypes = { content: PropTypes.string.isRequired, template: PropTypes.string.isRequired, onUpdateContent: PropTypes.func.isRequired, + onClickCheckbox: PropTypes.func.isRequired, forceUpdate: PropTypes.bool.isRequired, }; diff --git a/app/components/Preview/__tests__/Preview-test.js b/app/components/Preview/__tests__/Preview-test.js index 1e667bf7..cea212ba 100644 --- a/app/components/Preview/__tests__/Preview-test.js +++ b/app/components/Preview/__tests__/Preview-test.js @@ -5,6 +5,7 @@ import emojione from 'emojione'; import hljs from 'highlight.js'; import mdit from 'markdown-it'; import katex from 'katex'; +import sinon from 'sinon'; // plugins loaded in the PreviewLoader, which we cannot use in the test suite // since it is tied to webpack's require feature... @@ -56,14 +57,25 @@ describe('', () => { it('renders a block with preview css class', () => { const wrapper = shallow( - + {}} + /> ); expect(wrapper.find('.preview')).to.have.length(1); }); it('renders a loading message', () => { - const wrapper = render(); + const wrapper = render( + {}} + />); expect(wrapper.text()).to.contain('Loading all the rendering stuff...'); }); @@ -75,6 +87,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -92,6 +105,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -109,6 +123,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -132,6 +147,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -151,6 +167,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -179,6 +196,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -213,6 +231,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -239,6 +258,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -264,6 +284,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -281,6 +302,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -301,6 +323,7 @@ describe('', () => { template={'letter'} position={0} previewLoader={previewLoader} + onClickCheckbox={() => {}} /> ); @@ -330,6 +353,7 @@ describe('', () => { template={''} position={0} previewLoader={previewLoader} + onClickCheckbox={() => {}} /> ); @@ -360,6 +384,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -378,6 +403,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -396,6 +422,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -413,6 +440,8 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} + onClickCheckbox={() => {}} /> ); @@ -430,6 +459,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -447,6 +477,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -464,6 +495,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -481,6 +513,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -498,6 +531,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -517,6 +551,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -534,6 +569,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -557,6 +593,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -578,6 +615,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -595,6 +633,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -612,6 +651,7 @@ describe('', () => { position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -636,6 +676,7 @@ Annonce | Où | WM | Taille | Nb pièces | Etage | Balcon? | Cave/Gge/Parking | position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); @@ -654,13 +695,30 @@ Annonce | Où | WM | Taille | Nb pièces | Etage | Balcon? | Cave/Gge/Parking | position={0} previewLoader={previewLoader} template={''} + onClickCheckbox={() => {}} /> ); setTimeout(() => { - expect(wrapper.html()).to.contain( - '
  • item
  • ' - ); + expect(wrapper.html()).to.contain('
  • '); + + done(); + }); + }); + + it('should add a data attribute to each task list item', (done) => { + const wrapper = mount( + {}} + /> + ); + + setTimeout(() => { + expect(wrapper.html()).to.contain('data-task-list-item-index="0"'); done(); }); diff --git a/app/components/Preview/presenter.jsx b/app/components/Preview/presenter.jsx index 003a63d2..3975a100 100644 --- a/app/components/Preview/presenter.jsx +++ b/app/components/Preview/presenter.jsx @@ -16,6 +16,7 @@ class Preview extends Component { this.requestAnimationId = false; this.setRenderedEl = this.setRenderedEl.bind(this); + this.onClickCheckbox = this.onClickCheckbox.bind(this); } componentWillMount() { @@ -69,6 +70,10 @@ class Preview extends Component { }); } + componentDidMount() { + this.$rendered.addEventListener('click', this.onClickCheckbox); + } + componentWillReceiveProps(nextProps) { if (!this.$rendered) { return; @@ -93,6 +98,27 @@ class Preview extends Component { return this.props.content !== nextProps.content || this.props.template !== nextProps.template; } + componentDidUpdate() { + const checkboxes = this.$rendered.querySelectorAll('.task-list-item-checkbox'); + + let index = 0; + [].forEach.call(checkboxes, (cb) => { + cb.setAttribute('data-task-list-item-index', index++); + }); + } + + componentWillUnmount() { + this.$rendered.removeEventListener('click', this.onClickCheckbox); + } + + onClickCheckbox(e) { + const target = e.target; + + if (target.hasAttribute('data-task-list-item-index')) { + this.props.onClickCheckbox(target.getAttribute('data-task-list-item-index')); + } + } + /** * A chunk is a logical group of tokens * We build chunks from token's level and nesting properties @@ -190,6 +216,7 @@ Preview.propTypes = { template: PropTypes.string.isRequired, position: PropTypes.number.isRequired, previewLoader: PropTypes.func.isRequired, + onClickCheckbox: PropTypes.func.isRequired, }; Preview.defaultProps = { diff --git a/app/modules/documents.js b/app/modules/documents.js index 75ad49ae..6b240f07 100644 --- a/app/modules/documents.js +++ b/app/modules/documents.js @@ -155,7 +155,9 @@ function doClickOnTask(state, action) { return { ...state, - current: state.current.set('content', updatedContent), + current: state + .current.set('content', updatedContent) + .set('last_modified_locally', Date.now()), forceUpdate: true, }; } From e1d39358876cb4f0e6a1561947ea6714b0746c94 Mon Sep 17 00:00:00 2001 From: William Durand Date: Wed, 17 Aug 2016 17:45:59 +0200 Subject: [PATCH 4/8] Remove duplicate test --- .../Editor/__tests__/Editor-test.js | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/app/components/Editor/__tests__/Editor-test.js b/app/components/Editor/__tests__/Editor-test.js index 01ee9f35..a2cf4a9f 100644 --- a/app/components/Editor/__tests__/Editor-test.js +++ b/app/components/Editor/__tests__/Editor-test.js @@ -42,26 +42,6 @@ describe('', () => { expect(wrapper.find(Preview)).to.have.length(1); }); - it('calls onUpdateContent() when text is entered in Markdown component', () => { - const spy = sinon.spy(); - - const wrapper = shallow( - {}} - /> - ); - const content = 'Hello, World'; - - wrapper.find('Markdown').simulate('change', content); - - expect(spy.calledOnce).to.be.true; - }); - it('renders a Loader component', () => { const wrapper = shallow( Date: Wed, 17 Aug 2016 17:46:32 +0200 Subject: [PATCH 5/8] Fix lint warnings --- app/components/Preview/__tests__/Preview-test.js | 2 -- app/modules/documents.js | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/components/Preview/__tests__/Preview-test.js b/app/components/Preview/__tests__/Preview-test.js index cea212ba..36ef2778 100644 --- a/app/components/Preview/__tests__/Preview-test.js +++ b/app/components/Preview/__tests__/Preview-test.js @@ -4,8 +4,6 @@ import { expect } from 'chai'; import emojione from 'emojione'; import hljs from 'highlight.js'; import mdit from 'markdown-it'; -import katex from 'katex'; -import sinon from 'sinon'; // plugins loaded in the PreviewLoader, which we cannot use in the test suite // since it is tied to webpack's require feature... diff --git a/app/modules/documents.js b/app/modules/documents.js index 6b240f07..b9dd2f8a 100644 --- a/app/modules/documents.js +++ b/app/modules/documents.js @@ -155,8 +155,8 @@ function doClickOnTask(state, action) { return { ...state, - current: state - .current.set('content', updatedContent) + current: state.current + .set('content', updatedContent) .set('last_modified_locally', Date.now()), forceUpdate: true, }; From 32ee39b850ba93e054b97aff276657dc87fe8934 Mon Sep 17 00:00:00 2001 From: William Durand Date: Wed, 17 Aug 2016 17:50:25 +0200 Subject: [PATCH 6/8] Do not update the current document for no reasons --- app/modules/__tests__/documents-test.js | 10 ++++++++++ app/modules/documents.js | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/app/modules/__tests__/documents-test.js b/app/modules/__tests__/documents-test.js index 841cdcf9..48c829c4 100644 --- a/app/modules/__tests__/documents-test.js +++ b/app/modules/__tests__/documents-test.js @@ -370,5 +370,15 @@ describe('modules/documents', () => { - [ ] follow up subtask #4321` ); }); + + it('should not change the current document if there is no task list item', () => { + const doc = new Document({ content: 'Hello' }); + + const index = 123; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal('Hello'); + expect(state.current.get('last_modified_locally')).to.be.null; + }); }); }); diff --git a/app/modules/documents.js b/app/modules/documents.js index b9dd2f8a..5eb3f842 100644 --- a/app/modules/documents.js +++ b/app/modules/documents.js @@ -153,6 +153,10 @@ function doClickOnTask(state, action) { return '[x] '; }); + if (content === updatedContent) { + return state; + } + return { ...state, current: state.current From 682ea9d6d1b939d09835f51284b9a49a1ee471b5 Mon Sep 17 00:00:00 2001 From: William Durand Date: Thu, 18 Aug 2016 10:55:41 +0200 Subject: [PATCH 7/8] Only toggle task list items --- app/modules/__tests__/documents-test.js | 10 ++++++++++ app/modules/documents.js | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/modules/__tests__/documents-test.js b/app/modules/__tests__/documents-test.js index 48c829c4..4d9e245a 100644 --- a/app/modules/__tests__/documents-test.js +++ b/app/modules/__tests__/documents-test.js @@ -380,5 +380,15 @@ describe('modules/documents', () => { expect(state.current.get('content')).to.equal('Hello'); expect(state.current.get('last_modified_locally')).to.be.null; }); + + it('should not do anything if it is not strictly a task list item', () => { + const doc = new Document({ content: '[ ] foo' }); + + const index = 0; + const state = reducer({ current: doc }, actions.toggleTaskListItem(index)); + + expect(state.current.get('content')).to.equal('[ ] foo'); + expect(state.current.get('last_modified_locally')).to.be.null; + }); }); }); diff --git a/app/modules/documents.js b/app/modules/documents.js index 5eb3f842..e66075bf 100644 --- a/app/modules/documents.js +++ b/app/modules/documents.js @@ -141,16 +141,16 @@ function doClickOnTask(state, action) { const content = state.current.get('content'); let index = 0; - const updatedContent = content.replace(/\[[x| ]\] /gi, (match) => { + const updatedContent = content.replace(/\- \[[x| ]\] /gi, (match) => { if (action.index !== index++) { return match; } if (/x/i.test(match)) { - return '[ ] '; + return '- [ ] '; } - return '[x] '; + return '- [x] '; }); if (content === updatedContent) { From b97cf842f19ebfceee38c090c19999af23d1c09d Mon Sep 17 00:00:00 2001 From: William Durand Date: Thu, 18 Aug 2016 11:01:56 +0200 Subject: [PATCH 8/8] Add doc --- doc/images/task-lists.gif | Bin 0 -> 181196 bytes doc/writing.md | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 doc/images/task-lists.gif diff --git a/doc/images/task-lists.gif b/doc/images/task-lists.gif new file mode 100644 index 0000000000000000000000000000000000000000..a070600424865fb12b7145ed5a5c82f718193ffb GIT binary patch literal 181196 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%0DpkLr!OF{4+4~mwy{g-rG1j1 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 literal 0 HcmV?d00001 diff --git a/doc/writing.md b/doc/writing.md index 0e7b1e98..de845ce1 100644 --- a/doc/writing.md +++ b/doc/writing.md @@ -33,6 +33,7 @@ extensions. * [Subscript](#subscript) * [Superscript](#superscript) * [Tables](#tables) +* [Task lists](#task-lists) ### Abbreviations @@ -174,6 +175,23 @@ Monod supports (data) tables: Note that it is possible to choose column alignment by specifying `:` either on the left, right or both sides of the horizontal separators. +### Task Lists + +Task lists are lists with items marked as either `[ ]` or `[x]` (incomplete or +complete). For example: + +``` +- [ ] a task list item + - [ ] a sub item +- [x] a task list item that is completed +``` + +This renders as a list of checkboxes. From here, you can either modify the +content of your Monod document, or directly check or uncheck the boxes in the +preview panel, and the text will automatically update: + +![](images/task-lists.gif) + ## YAML Front-Matter