deckar01-task_list 1.0.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +5 -1
- data/README.md +48 -6
- data/app/assets/javascripts/task_list.coffee +174 -150
- data/bower.json +4 -5
- data/dist/.gitignore +2 -0
- data/dist/.npmignore +0 -0
- data/lib/task_list/version.rb +1 -1
- data/package.json +47 -0
- data/script/bootstrap +1 -5
- data/script/cibuild +1 -0
- data/script/testsuite +2 -4
- data/task_list.gemspec +6 -3
- data/test/functional/test_task_lists_behavior.html +3 -0
- data/test/unit/test_events.coffee +1 -0
- data/test/unit/test_updates.coffee +40 -39
- data/webpack.config.js +19 -0
- metadata +8 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16168d2e2bc478569084255a87377e170b782edf
|
4
|
+
data.tar.gz: 8ecf182028bd41b966ae878d4d0b0e8332706084
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f6afc42d012bfbf6971d2c15c736581bdbb26a748c3f02ca07300a631b4ba0a7c83b8f17887a1d0a1dede20981ea1a7fba19bb1083dda41fb2a694c6d8198d9
|
7
|
+
data.tar.gz: 12882ad6c387d696def4c2e5e79c933ae60320d438f7af6f093bd6ffe5f43f56e6c265743d20e7a0d4fa064bfe4e59be597dbd492f1515b65b56e5c9daa9a548
|
data/.travis.yml
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
language: ruby
|
2
2
|
sudo: false
|
3
|
-
install:
|
3
|
+
install:
|
4
|
+
- rm -rf ~/.nvm && git clone https://github.com/creationix/nvm.git ~/.nvm && (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) && source ~/.nvm/nvm.sh && nvm install $TRAVIS_NODE_VERSION
|
5
|
+
- ./script/bootstrap
|
4
6
|
script: ./script/cibuild
|
5
7
|
rvm:
|
6
8
|
- 1.9.3
|
7
9
|
- 2.0
|
8
10
|
- 2.1
|
9
11
|
- 2.2
|
12
|
+
env:
|
13
|
+
- TRAVIS_NODE_VERSION="7"
|
10
14
|
notifications:
|
11
15
|
email: false
|
data/README.md
CHANGED
@@ -4,9 +4,19 @@
|
|
4
4
|
|
5
5
|
[travis]: https://travis-ci.org/deckar01/task_list
|
6
6
|
|
7
|
-
This
|
8
|
-
|
9
|
-
|
7
|
+
This is a community fork of GitHub's archived [`task_list`][task_list] gem.
|
8
|
+
|
9
|
+
[task_list]: https://github.com/github-archive/task_list
|
10
|
+
|
11
|
+
```md
|
12
|
+
- [x] Get
|
13
|
+
- [x] More
|
14
|
+
- [ ] Done
|
15
|
+
```
|
16
|
+
|
17
|
+
> - [x] Get
|
18
|
+
> - [x] More
|
19
|
+
> - [ ] Done
|
10
20
|
|
11
21
|
## Components
|
12
22
|
|
@@ -64,6 +74,10 @@ Rendered HTML (the `<ul>` element below) should be contained in a `js-task-list-
|
|
64
74
|
Enable Task List updates with:
|
65
75
|
|
66
76
|
``` javascript
|
77
|
+
// Vanilla JS API
|
78
|
+
var container = document.querySelector('.js-task-list-container')
|
79
|
+
new TaskList(container)
|
80
|
+
// or jQuery API
|
67
81
|
$('.js-task-list-container').taskList('enable')
|
68
82
|
```
|
69
83
|
|
@@ -87,12 +101,16 @@ And then execute:
|
|
87
101
|
|
88
102
|
$ bundle
|
89
103
|
|
104
|
+
### Frontend: NPM / Yarn
|
105
|
+
|
106
|
+
For the frontend components, add `deckar01-task_list` to your npm dependencies config.
|
107
|
+
|
108
|
+
This is the preferred method for including the frontend assets in your application.
|
109
|
+
|
90
110
|
### Frontend: Bower
|
91
111
|
|
92
112
|
For the frontend components, add `deckar01-task_list` to your Bower dependencies config.
|
93
113
|
|
94
|
-
This is the preferred method for including the frontend assets in your application. Alternatively, for Rails methods using `Sprockets`, see below.
|
95
|
-
|
96
114
|
### Frontend: Rails 3+ Railtie method
|
97
115
|
|
98
116
|
``` ruby
|
@@ -120,7 +138,31 @@ to manage building your asset bundles.
|
|
120
138
|
|
121
139
|
### Dependencies
|
122
140
|
|
123
|
-
|
141
|
+
- Ruby >= 2.1.0
|
142
|
+
|
143
|
+
At a high level, the Ruby components integrate with the [`html-pipeline`](https://github.com/jch/html-pipeline) library. The frontend components are vanilla JavaScript and include a thin jQuery wrapper that supports the original plugin interface. The frontend components are written in CoffeeScript and need to be preprocessed for production use.
|
144
|
+
|
145
|
+
[A polyfill for custom events](https://github.com/krambuhl/custom-event-polyfill) must be included to support IE10 and below.
|
146
|
+
|
147
|
+
### Upgrading
|
148
|
+
|
149
|
+
#### 1.x to 2.x
|
150
|
+
|
151
|
+
The event interface no longer passes data directly to the callbacks arguments
|
152
|
+
list. Instead the CustomEvent API is used, which adds data to the
|
153
|
+
`event.detail` object.
|
154
|
+
|
155
|
+
```js
|
156
|
+
// 1.x interface
|
157
|
+
el.on('tasklist:changed', function(event, index, checked) {
|
158
|
+
console.log(index, checked)
|
159
|
+
})
|
160
|
+
|
161
|
+
// 2.x interface
|
162
|
+
el.on('tasklist:changed', function(event) {
|
163
|
+
console.log(event.detail.index, event.detail.checked)
|
164
|
+
})
|
165
|
+
```
|
124
166
|
|
125
167
|
## Testing and Development
|
126
168
|
|
@@ -1,11 +1,6 @@
|
|
1
1
|
# TaskList Behavior
|
2
2
|
#
|
3
|
-
#= provides
|
4
|
-
#= provides tasklist:disabled
|
5
|
-
#= provides tasklist:change
|
6
|
-
#= provides tasklist:changed
|
7
|
-
#
|
8
|
-
#= require jquery
|
3
|
+
#= provides TaskList
|
9
4
|
#
|
10
5
|
# Enables Task List update behavior.
|
11
6
|
#
|
@@ -39,8 +34,6 @@
|
|
39
34
|
# TaskList updates trigger `tasklist:change` events. If the change is
|
40
35
|
# successful, `tasklist:changed` is fired. The change can be canceled.
|
41
36
|
#
|
42
|
-
# jQuery is required.
|
43
|
-
#
|
44
37
|
# ### Methods
|
45
38
|
#
|
46
39
|
# `.taskList('enable')` or `.taskList()`
|
@@ -94,145 +87,176 @@
|
|
94
87
|
# Task list checkboxes are rendered as disabled by default because rendered
|
95
88
|
# user content is cached without regard for the viewer.
|
96
89
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
(
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
#
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
#
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
#
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
90
|
+
NodeArray = (nodeList) -> Array.prototype.slice.apply(nodeList)
|
91
|
+
|
92
|
+
closest = (el, className) ->
|
93
|
+
while el && !el.classList.contains className
|
94
|
+
el = el.parentNode
|
95
|
+
el
|
96
|
+
|
97
|
+
createEvent = (eventName, detail) ->
|
98
|
+
if typeof Event == 'function'
|
99
|
+
event = new Event eventName, {bubbles: true, cancelable: true}
|
100
|
+
event.detail = detail
|
101
|
+
else
|
102
|
+
event = document.createEvent 'CustomEvent'
|
103
|
+
event.initCustomEvent eventName, true, true, detail
|
104
|
+
event
|
105
|
+
|
106
|
+
class TaskList
|
107
|
+
constructor: (@el) ->
|
108
|
+
@container = closest @el, 'js-task-list-container'
|
109
|
+
@field = @container.querySelector '.js-task-list-field'
|
110
|
+
# When the task list item checkbox is updated, submit the change
|
111
|
+
@container.addEventListener 'change', (event) =>
|
112
|
+
if event.target.classList.contains 'task-list-item-checkbox'
|
113
|
+
@updateTaskList(event.target)
|
114
|
+
@.enable()
|
115
|
+
|
116
|
+
enable: ->
|
117
|
+
if @container.querySelectorAll('.js-task-list-field').length > 0
|
118
|
+
NodeArray(@container.querySelectorAll('.task-list-item')).
|
119
|
+
forEach (item) ->
|
120
|
+
item.classList.add('enabled')
|
121
|
+
NodeArray(@container.querySelectorAll('.task-list-item-checkbox')).
|
122
|
+
forEach (checkbox) ->
|
123
|
+
checkbox.disabled = false
|
124
|
+
@container.classList.add 'is-task-list-enabled'
|
125
|
+
event = createEvent 'tasklist:enabled'
|
126
|
+
@container.dispatchEvent event
|
127
|
+
|
128
|
+
disable: ->
|
129
|
+
NodeArray(@container.querySelectorAll('.task-list-item')).
|
130
|
+
forEach (item) ->
|
131
|
+
item.classList.remove('enabled')
|
132
|
+
NodeArray(@container.querySelectorAll('.task-list-item-checkbox')).
|
133
|
+
forEach (checkbox) ->
|
134
|
+
checkbox.disabled = true
|
135
|
+
@container.classList.remove('is-task-list-enabled')
|
136
|
+
event = createEvent 'tasklist:disabled'
|
137
|
+
@container.dispatchEvent event
|
138
|
+
|
139
|
+
# Updates the field value to reflect the state of item.
|
140
|
+
# Triggers the `tasklist:change` event before the value has changed, and fires
|
141
|
+
# a `tasklist:changed` event once the value has changed.
|
142
|
+
updateTaskList: (item) ->
|
143
|
+
checkboxes = @container.querySelectorAll('.task-list-item-checkbox')
|
144
|
+
index = 1 + NodeArray(checkboxes).indexOf item
|
145
|
+
|
146
|
+
changeEvent = createEvent 'tasklist:change',
|
147
|
+
index: index
|
148
|
+
checked: item.checked
|
149
|
+
@field.dispatchEvent changeEvent
|
150
|
+
|
151
|
+
unless changeEvent.defaultPrevented
|
152
|
+
@field.value = TaskList.updateSource(@field.value, index, item.checked)
|
153
|
+
changeEvent = createEvent 'change'
|
154
|
+
@field.dispatchEvent changeEvent
|
155
|
+
changedEvent = createEvent 'tasklist:changed',
|
156
|
+
index: index
|
157
|
+
checked: item.checked
|
158
|
+
@field.dispatchEvent changedEvent
|
159
|
+
|
160
|
+
# Static interface
|
161
|
+
|
162
|
+
@incomplete: "[ ]"
|
163
|
+
@complete: "[x]"
|
164
|
+
|
165
|
+
# Escapes the String for regular expression matching.
|
166
|
+
@escapePattern: (str) ->
|
167
|
+
str.
|
168
|
+
replace(/([\[\]])/g, "\\$1"). # escape square brackets
|
169
|
+
replace(/\s/, "\\s"). # match all white space
|
170
|
+
replace("x", "[xX]") # match all cases
|
171
|
+
|
172
|
+
@incompletePattern: ///
|
173
|
+
#{@escapePattern(@incomplete)}
|
174
|
+
///
|
175
|
+
@completePattern: ///
|
176
|
+
#{@escapePattern(@complete)}
|
177
|
+
///
|
178
|
+
|
179
|
+
# Pattern used to identify all task list items.
|
180
|
+
# Useful when you need iterate over all items.
|
181
|
+
@itemPattern: ///
|
182
|
+
^
|
183
|
+
(?: # prefix, consisting of
|
184
|
+
\s* # optional leading whitespace
|
185
|
+
(?:>\s*)* # zero or more blockquotes
|
186
|
+
(?:[-+*]|(?:\d+\.)) # list item indicator
|
187
|
+
)
|
188
|
+
\s* # optional whitespace prefix
|
189
|
+
( # checkbox
|
190
|
+
#{@escapePattern(@complete)}|
|
191
|
+
#{@escapePattern(@incomplete)}
|
192
|
+
)
|
193
|
+
\s+ # is followed by whitespace
|
194
|
+
(?!
|
195
|
+
\(.*?\) # is not part of a [foo](url) link
|
196
|
+
)
|
197
|
+
(?= # and is followed by zero or more links
|
198
|
+
(?:\[.*?\]\s*(?:\[.*?\]|\(.*?\))\s*)*
|
199
|
+
(?:[^\[]|$) # and either a non-link or the end of the string
|
200
|
+
)
|
201
|
+
///
|
202
|
+
|
203
|
+
# Used to skip checkbox markup inside of code fences.
|
204
|
+
# http://rubular.com/r/TfCDNsy8x4
|
205
|
+
@startFencesPattern: /^`{3}.*$/
|
206
|
+
@endFencesPattern: /^`{3}$/
|
207
|
+
|
208
|
+
# Used to filter out potential mismatches (items not in lists).
|
209
|
+
# http://rubular.com/r/OInl6CiePy
|
210
|
+
@itemsInParasPattern: ///
|
211
|
+
^
|
212
|
+
(
|
213
|
+
#{@escapePattern(@complete)}|
|
214
|
+
#{@escapePattern(@incomplete)}
|
215
|
+
)
|
216
|
+
.+
|
217
|
+
$
|
218
|
+
///g
|
219
|
+
|
220
|
+
# Given the source text, updates the appropriate task list item to match the
|
221
|
+
# given checked value.
|
222
|
+
#
|
223
|
+
# Returns the updated String text.
|
224
|
+
@updateSource: (source, itemIndex, checked) ->
|
225
|
+
clean = source.replace(/\r/g, '').
|
226
|
+
replace(@itemsInParasPattern, '').
|
227
|
+
split("\n")
|
228
|
+
index = 0
|
229
|
+
inCodeBlock = false
|
230
|
+
result = for line in source.split("\n")
|
231
|
+
if inCodeBlock
|
232
|
+
# Lines inside of a code block are ignored.
|
233
|
+
if line.match(@endFencesPattern)
|
234
|
+
# Stop ignoring lines once the code block is closed.
|
235
|
+
inCodeBlock = false
|
236
|
+
else if line.match(@startFencesPattern)
|
237
|
+
# Start ignoring lines inside a code block.
|
238
|
+
inCodeBlock = true
|
239
|
+
else if line in clean && line.match(@itemPattern)
|
240
|
+
index += 1
|
241
|
+
if index == itemIndex
|
242
|
+
line =
|
243
|
+
if checked
|
244
|
+
line.replace(@incompletePattern, @complete)
|
245
|
+
else
|
246
|
+
line.replace(@completePattern, @incomplete)
|
247
|
+
line
|
248
|
+
result.join("\n")
|
249
|
+
|
250
|
+
if typeof jQuery != 'undefined'
|
251
|
+
jQuery.fn.taskList = (method) ->
|
252
|
+
this.each (index, el) ->
|
253
|
+
taskList = jQuery(el).data('task-list')
|
254
|
+
if !taskList
|
255
|
+
taskList = new TaskList el
|
256
|
+
jQuery(el).data 'task-list', taskList
|
257
|
+
if !method || method == 'enable'
|
258
|
+
return
|
259
|
+
|
260
|
+
taskList[method || 'enable']()
|
261
|
+
|
262
|
+
module.exports = TaskList
|
data/bower.json
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "deckar01-task_list",
|
3
|
-
"version": "
|
3
|
+
"version": "2.0.0",
|
4
4
|
"description": "Markdown TaskList components",
|
5
5
|
"homepage": "https://github.com/deckar01/task_list",
|
6
|
-
"dependencies": {
|
7
|
-
"jquery": ">= 1.9.1"
|
8
|
-
},
|
9
6
|
"devDependencies": {
|
10
|
-
"
|
7
|
+
"jquery": ">= 1.9.1",
|
8
|
+
"qunit": "^1.0.0",
|
9
|
+
"rails-behaviors": "^0.8.4"
|
11
10
|
},
|
12
11
|
"main": [
|
13
12
|
"app/assets/javascripts/task_list.coffee",
|
data/dist/.gitignore
ADDED
data/dist/.npmignore
ADDED
File without changes
|
data/lib/task_list/version.rb
CHANGED
data/package.json
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
{
|
2
|
+
"name": "deckar01-task_list",
|
3
|
+
"version": "2.0.0",
|
4
|
+
"description": "Markdown TaskList components",
|
5
|
+
"main": "dist/task_list.js",
|
6
|
+
"directories": {
|
7
|
+
"test": "test"
|
8
|
+
},
|
9
|
+
"files": [
|
10
|
+
"dist"
|
11
|
+
],
|
12
|
+
"scripts": {
|
13
|
+
"test": "script/cibuild",
|
14
|
+
"qunit": "phantomjs test/run-qunit.coffee http://localhost:4018/test/index.html",
|
15
|
+
"lint": "coffeelint app/assets/javascripts/task_list.coffee",
|
16
|
+
"build:css": "node-sass -o dist/ app/assets/stylesheets/task_list.scss",
|
17
|
+
"build:js": "webpack",
|
18
|
+
"build": "npm run build:css && npm run build:js",
|
19
|
+
"prepublish": "npm run build"
|
20
|
+
},
|
21
|
+
"repository": {
|
22
|
+
"type": "git",
|
23
|
+
"url": "git+https://github.com/deckar01/task_list.git"
|
24
|
+
},
|
25
|
+
"keywords": [
|
26
|
+
"task",
|
27
|
+
"list",
|
28
|
+
"markdown",
|
29
|
+
"ruby",
|
30
|
+
"check"
|
31
|
+
],
|
32
|
+
"author": "Jared Deckard <jared.deckard@gmail.com>",
|
33
|
+
"license": "MIT",
|
34
|
+
"bugs": {
|
35
|
+
"url": "https://github.com/deckar01/task_list/issues"
|
36
|
+
},
|
37
|
+
"homepage": "https://github.com/deckar01/task_list#readme",
|
38
|
+
"devDependencies": {
|
39
|
+
"bower": "^1.8.0",
|
40
|
+
"coffee-loader": "^0.7.3",
|
41
|
+
"coffee-script": "^1.12.5",
|
42
|
+
"coffeelint": "^1.16.0",
|
43
|
+
"node-sass": "^4.5.2",
|
44
|
+
"phantomjs": "^1.9.19",
|
45
|
+
"webpack": "^2.5.1"
|
46
|
+
}
|
47
|
+
}
|
data/script/bootstrap
CHANGED
@@ -5,9 +5,5 @@ if ! bundle check 1>/dev/null 2>&1; then
|
|
5
5
|
bundle install --no-color --binstubs --path vendor/gems
|
6
6
|
fi
|
7
7
|
|
8
|
-
|
9
|
-
# npm install bower
|
10
|
-
npm install git://github.com/twitter/bower.git
|
11
|
-
fi
|
12
|
-
|
8
|
+
npm install
|
13
9
|
bower install --no-color
|
data/script/cibuild
CHANGED
data/script/testsuite
CHANGED
@@ -3,15 +3,13 @@
|
|
3
3
|
root = File.expand_path("../..", __FILE__)
|
4
4
|
Dir.chdir root
|
5
5
|
|
6
|
-
port = ARGV[0] || 4000
|
7
|
-
|
8
6
|
pid = fork do
|
9
7
|
$stderr.reopen "/dev/null" # silence WEBrick output
|
10
|
-
exec 'bundle', 'exec', 'rackup', '-p',
|
8
|
+
exec 'bundle', 'exec', 'rackup', '-p', '4018'
|
11
9
|
end
|
12
10
|
sleep 1
|
13
11
|
|
14
|
-
status = system('
|
12
|
+
status = system('npm', 'run', 'qunit')
|
15
13
|
|
16
14
|
Process.kill 'SIGINT', pid
|
17
15
|
Process.wait pid
|
data/task_list.gemspec
CHANGED
@@ -16,15 +16,18 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
-
gem.
|
20
|
-
|
19
|
+
gem.required_ruby_version = ">= 2.1.0"
|
20
|
+
|
21
|
+
gem.add_dependency "activesupport", "~> 4.0" if RUBY_VERSION < '2.2.2'
|
22
|
+
gem.add_dependency "nokogiri", "~> 1.6.0" if RUBY_VERSION < '2.1.0'
|
21
23
|
gem.add_dependency "html-pipeline"
|
22
24
|
|
23
25
|
gem.add_development_dependency "github-markdown"
|
24
26
|
gem.add_development_dependency "rake"
|
25
27
|
gem.add_development_dependency "coffee-script"
|
26
28
|
gem.add_development_dependency "json"
|
27
|
-
gem.add_development_dependency "rack"
|
29
|
+
gem.add_development_dependency "rack", "~> 1.0" if RUBY_VERSION < '2.2.2'
|
30
|
+
gem.add_development_dependency "rack" if RUBY_VERSION >= '2.2.2'
|
28
31
|
gem.add_development_dependency "sprockets"
|
29
32
|
gem.add_development_dependency "minitest", "~> 5.3.2"
|
30
33
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#= require jquery
|
1
2
|
#= require task_list
|
2
3
|
|
3
4
|
module "TaskList updates",
|
@@ -255,9 +256,9 @@ module "TaskList updates",
|
|
255
256
|
asyncTest "updates the source, marking the incomplete item as complete", ->
|
256
257
|
expect 3
|
257
258
|
|
258
|
-
@field.on 'tasklist:changed', (event
|
259
|
-
ok checked
|
260
|
-
equal index, @incompleteItem.expectedIndex
|
259
|
+
@field.on 'tasklist:changed', (event) =>
|
260
|
+
ok event.detail.checked
|
261
|
+
equal event.detail.index, @incompleteItem.expectedIndex
|
261
262
|
equal @field.val(), @changes.toIncomplete
|
262
263
|
|
263
264
|
setTimeout ->
|
@@ -269,9 +270,9 @@ asyncTest "updates the source, marking the incomplete item as complete", ->
|
|
269
270
|
asyncTest "updates the source, marking the complete item as incomplete", ->
|
270
271
|
expect 3
|
271
272
|
|
272
|
-
@field.on 'tasklist:changed', (event
|
273
|
-
ok !checked
|
274
|
-
equal index, @completeItem.expectedIndex
|
273
|
+
@field.on 'tasklist:changed', (event) =>
|
274
|
+
ok !event.detail.checked
|
275
|
+
equal event.detail.index, @completeItem.expectedIndex
|
275
276
|
equal @field.val(), @changes.toComplete
|
276
277
|
|
277
278
|
setTimeout ->
|
@@ -284,9 +285,9 @@ asyncTest "updates the source, marking the complete item as incomplete", ->
|
|
284
285
|
asyncTest "updates the source for items with non-breaking spaces", ->
|
285
286
|
expect 3
|
286
287
|
|
287
|
-
@field.on 'tasklist:changed', (event
|
288
|
-
ok checked
|
289
|
-
equal index, @incompleteNBSPItem.expectedIndex
|
288
|
+
@field.on 'tasklist:changed', (event) =>
|
289
|
+
ok event.detail.checked
|
290
|
+
equal event.detail.index, @incompleteNBSPItem.expectedIndex
|
290
291
|
equal @field.val(), @changes.toIncompleteNBSP
|
291
292
|
|
292
293
|
setTimeout ->
|
@@ -298,9 +299,9 @@ asyncTest "updates the source for items with non-breaking spaces", ->
|
|
298
299
|
asyncTest "updates the source of a quoted item, marking the incomplete item as complete", ->
|
299
300
|
expect 3
|
300
301
|
|
301
|
-
@field.on 'tasklist:changed', (event
|
302
|
-
ok checked
|
303
|
-
equal index, @quotedIncompleteItem.expectedIndex
|
302
|
+
@field.on 'tasklist:changed', (event) =>
|
303
|
+
ok event.detail.checked
|
304
|
+
equal event.detail.index, @quotedIncompleteItem.expectedIndex
|
304
305
|
equal @field.val(), @changes.toQuotedIncomplete
|
305
306
|
|
306
307
|
setTimeout ->
|
@@ -312,9 +313,9 @@ asyncTest "updates the source of a quoted item, marking the incomplete item as c
|
|
312
313
|
asyncTest "updates the source of a quoted item, marking the complete item as incomplete", ->
|
313
314
|
expect 3
|
314
315
|
|
315
|
-
@field.on 'tasklist:changed', (event
|
316
|
-
ok !checked
|
317
|
-
equal index, @quotedCompleteItem.expectedIndex
|
316
|
+
@field.on 'tasklist:changed', (event) =>
|
317
|
+
ok !event.detail.checked
|
318
|
+
equal event.detail.index, @quotedCompleteItem.expectedIndex
|
318
319
|
equal @field.val(), @changes.toQuotedComplete
|
319
320
|
|
320
321
|
setTimeout ->
|
@@ -326,9 +327,9 @@ asyncTest "updates the source of a quoted item, marking the complete item as inc
|
|
326
327
|
asyncTest "updates the source of a quoted quoted item, marking the incomplete item as complete", ->
|
327
328
|
expect 3
|
328
329
|
|
329
|
-
@field.on 'tasklist:changed', (event
|
330
|
-
ok checked
|
331
|
-
equal index, @innerIncompleteItem.expectedIndex
|
330
|
+
@field.on 'tasklist:changed', (event) =>
|
331
|
+
ok event.detail.checked
|
332
|
+
equal event.detail.index, @innerIncompleteItem.expectedIndex
|
332
333
|
equal @field.val(), @changes.toInnerIncomplete
|
333
334
|
|
334
335
|
setTimeout ->
|
@@ -340,9 +341,9 @@ asyncTest "updates the source of a quoted quoted item, marking the incomplete it
|
|
340
341
|
asyncTest "updates the source of a quoted quoted item, marking the complete item as incomplete", ->
|
341
342
|
expect 3
|
342
343
|
|
343
|
-
@field.on 'tasklist:changed', (event
|
344
|
-
ok !checked
|
345
|
-
equal index, @innerCompleteItem.expectedIndex
|
344
|
+
@field.on 'tasklist:changed', (event) =>
|
345
|
+
ok !event.detail.checked
|
346
|
+
equal event.detail.index, @innerCompleteItem.expectedIndex
|
346
347
|
equal @field.val(), @changes.toInnerComplete
|
347
348
|
|
348
349
|
setTimeout ->
|
@@ -354,9 +355,9 @@ asyncTest "updates the source of a quoted quoted item, marking the complete item
|
|
354
355
|
asyncTest "updates the source of an ordered list item, marking the incomplete item as complete", ->
|
355
356
|
expect 3
|
356
357
|
|
357
|
-
@field.on 'tasklist:changed', (event
|
358
|
-
ok checked
|
359
|
-
equal index, @orderedIncompleteItem.expectedIndex
|
358
|
+
@field.on 'tasklist:changed', (event) =>
|
359
|
+
ok event.detail.checked
|
360
|
+
equal event.detail.index, @orderedIncompleteItem.expectedIndex
|
360
361
|
equal @field.val(), @changes.toOrderedIncomplete
|
361
362
|
|
362
363
|
setTimeout ->
|
@@ -368,9 +369,9 @@ asyncTest "updates the source of an ordered list item, marking the incomplete it
|
|
368
369
|
asyncTest "updates the source of an ordered list item, marking the complete item as incomplete", ->
|
369
370
|
expect 3
|
370
371
|
|
371
|
-
@field.on 'tasklist:changed', (event
|
372
|
-
ok !checked
|
373
|
-
equal index, @orderedCompleteItem.expectedIndex
|
372
|
+
@field.on 'tasklist:changed', (event) =>
|
373
|
+
ok !event.detail.checked
|
374
|
+
equal event.detail.index, @orderedCompleteItem.expectedIndex
|
374
375
|
equal @field.val(), @changes.toOrderedComplete
|
375
376
|
|
376
377
|
setTimeout ->
|
@@ -430,9 +431,9 @@ asyncTest "update ignores items that look like Task List items but lack list pre
|
|
430
431
|
$('#qunit-fixture').append(container)
|
431
432
|
container.taskList()
|
432
433
|
|
433
|
-
field.on 'tasklist:changed', (event
|
434
|
-
ok checked
|
435
|
-
equal index, item2.expectedIndex
|
434
|
+
field.on 'tasklist:changed', (event) =>
|
435
|
+
ok event.detail.checked
|
436
|
+
equal event.detail.index, item2.expectedIndex
|
436
437
|
equal field.val(), changes
|
437
438
|
|
438
439
|
setTimeout ->
|
@@ -496,9 +497,9 @@ asyncTest "update ignores items that look like Task List items but are links", -
|
|
496
497
|
$('#qunit-fixture').append(container)
|
497
498
|
container.taskList()
|
498
499
|
|
499
|
-
field.on 'tasklist:changed', (event
|
500
|
-
ok checked
|
501
|
-
equal index, item2.expectedIndex
|
500
|
+
field.on 'tasklist:changed', (event) =>
|
501
|
+
ok event.detail.checked
|
502
|
+
equal event.detail.index, item2.expectedIndex
|
502
503
|
equal field.val(), changes
|
503
504
|
|
504
505
|
setTimeout ->
|
@@ -554,9 +555,9 @@ asyncTest "updates items followed by links", ->
|
|
554
555
|
$('#qunit-fixture').append(container)
|
555
556
|
container.taskList()
|
556
557
|
|
557
|
-
field.on 'tasklist:changed', (event
|
558
|
-
ok checked
|
559
|
-
equal index, item2.expectedIndex
|
558
|
+
field.on 'tasklist:changed', (event) =>
|
559
|
+
ok event.detail.checked
|
560
|
+
equal event.detail.index, item2.expectedIndex
|
560
561
|
equal field.val(), changes
|
561
562
|
|
562
563
|
setTimeout ->
|
@@ -621,9 +622,9 @@ asyncTest "doesn't update items inside code blocks", ->
|
|
621
622
|
$('#qunit-fixture').append(container)
|
622
623
|
container.taskList()
|
623
624
|
|
624
|
-
field.on 'tasklist:changed', (event
|
625
|
-
ok checked
|
626
|
-
equal index, item2.expectedIndex
|
625
|
+
field.on 'tasklist:changed', (event) =>
|
626
|
+
ok event.detail.checked
|
627
|
+
equal event.detail.index, item2.expectedIndex
|
627
628
|
equal field.val(), changes
|
628
629
|
|
629
630
|
setTimeout ->
|
data/webpack.config.js
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module.exports = {
|
2
|
+
entry: './app/assets/javascripts/task_list.coffee',
|
3
|
+
output: {
|
4
|
+
filename: 'dist/task_list.js',
|
5
|
+
libraryTarget: 'umd',
|
6
|
+
library: 'TaskList',
|
7
|
+
},
|
8
|
+
module: {
|
9
|
+
loaders: [
|
10
|
+
{
|
11
|
+
test: /\.coffee$/,
|
12
|
+
loader: 'coffee-loader'
|
13
|
+
}
|
14
|
+
]
|
15
|
+
},
|
16
|
+
resolve: {
|
17
|
+
extensions: ['.coffee', '.js']
|
18
|
+
}
|
19
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deckar01-task_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Deckard
|
@@ -9,36 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: rack
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '1.0'
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '1.0'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: activesupport
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '4.0'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '4.0'
|
42
14
|
- !ruby/object:Gem::Dependency
|
43
15
|
name: html-pipeline
|
44
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,11 +140,14 @@ files:
|
|
168
140
|
- app/assets/stylesheets/task_list.scss
|
169
141
|
- bower.json
|
170
142
|
- config.ru
|
143
|
+
- dist/.gitignore
|
144
|
+
- dist/.npmignore
|
171
145
|
- lib/task_list.rb
|
172
146
|
- lib/task_list/filter.rb
|
173
147
|
- lib/task_list/railtie.rb
|
174
148
|
- lib/task_list/summary.rb
|
175
149
|
- lib/task_list/version.rb
|
150
|
+
- package.json
|
176
151
|
- script/bootstrap
|
177
152
|
- script/cibuild
|
178
153
|
- script/testsuite
|
@@ -189,6 +164,7 @@ files:
|
|
189
164
|
- test/unit/test_updates.coffee
|
190
165
|
- test/units.coffee
|
191
166
|
- test/units.css
|
167
|
+
- webpack.config.js
|
192
168
|
homepage:
|
193
169
|
licenses: []
|
194
170
|
metadata: {}
|
@@ -200,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
200
176
|
requirements:
|
201
177
|
- - ">="
|
202
178
|
- !ruby/object:Gem::Version
|
203
|
-
version:
|
179
|
+
version: 2.1.0
|
204
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
181
|
requirements:
|
206
182
|
- - ">="
|
@@ -208,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
184
|
version: '0'
|
209
185
|
requirements: []
|
210
186
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
187
|
+
rubygems_version: 2.5.2
|
212
188
|
signing_key:
|
213
189
|
specification_version: 4
|
214
190
|
summary: Markdown TaskList components
|