Skip to content
This repository was archived by the owner on Nov 1, 2017. It is now read-only.

Commit 7d6a0fe

Browse files
committed
Add itemIndex to enabled task list checkboxes
This nullifies the need to have item indexes in Ruby at all. ✨ //cc @josh
1 parent f67b7a7 commit 7d6a0fe

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

app/assets/javascripts/task_lists.coffee

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# <ul class="task-list">
1515
# <li class="task-list-item">
1616
# <label>
17-
# <input type="checkbox" class="js-task-list-item-checkbox" data-item-index="1" disabled />
17+
# <input type="checkbox" class="js-task-list-item-checkbox" disabled />
1818
# text
1919
# </label>
2020
# </li>
@@ -30,9 +30,8 @@
3030
#
3131
# TaskList Items SHOULD be an a list (`UL`/`OL`) element.
3232
#
33-
# Task list items MUST match `(input).task-list-item-checkbox`, MUST be
34-
# `disabled` by default and MUST define `data-item-index`. The Item's
35-
# contents SHOULD be wrapped in a `LABEL` element.
33+
# Task list items MUST match `(input).task-list-item-checkbox` and MUST be
34+
# `disabled` by default. The Item's contents SHOULD be wrapped in a `LABEL`.
3635
#
3736
# TaskLists MUST have a `(textarea).js-task-list-field` form element whose
3837
# `value` attribute is the source (Markdown) to be udpated. The source MUST
@@ -115,9 +114,12 @@ updateTaskListItem = (source, itemIndex, checked) ->
115114
# Enables task list items to trigger updates.
116115
enableTaskList = ($container) ->
117116
if $container.find('.js-task-list-field').length > 0
117+
index = 0
118118
$container.
119119
find('.task-list-item').addClass('enabled').
120120
find('.task-list-item-checkbox').attr('disabled', null)
121+
for item, i in $container.find('.task-list-item-checkbox')
122+
$(item).data('taskListItemIndex', i+1)
121123
$container.trigger 'tasklist:enabled'
122124

123125
disableTaskList = ($container) ->
@@ -131,7 +133,7 @@ disableTaskList = ($container) ->
131133
updateTaskList = ($item) ->
132134
$container = $item.closest '.js-task-list-container'
133135
$field = $container.find '.js-task-list-field'
134-
index = parseInt $item.attr('data-item-index')
136+
index = $item.data('taskListItemIndex')
135137
checked = $item.prop 'checked'
136138

137139
disableTaskList $container

test/functional/test_task_lists_behavior.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<ul class="task-list">
6969
<li class="task-list-item">
7070
<label>
71-
<input type="checkbox" class="task-list-item-checkbox" data-item-index="1" disabled />
71+
<input type="checkbox" class="task-list-item-checkbox" disabled />
7272
I'm a task list item
7373
</label>
7474
</li>

test/unit/test_events.coffee

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ module "TaskList events",
1313
class: 'task-list-item-checkbox'
1414
disabled: true
1515
checked: false
16-
"data-item-index": 1
1716

1817
@field = $ '<textarea>', class: 'js-task-list-field', "- [ ] text"
1918

test/unit/test_updates.coffee

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,13 @@ module "TaskList updates",
1414
class: 'task-list-item-checkbox'
1515
disabled: true
1616
checked: true # yup
17-
"data-item-index": 1
1817

1918
@incompleteItem = $ '<li>', class: 'task-list-item'
2019
@incompleteCheckbox = $ '<input>',
2120
type: 'checkbox'
2221
class: 'task-list-item-checkbox'
2322
disabled: true
2423
checked: false
25-
"data-item-index": 2
2624

2725
@field = $ '<textarea>', class: 'js-task-list-field', text: """
2826
- [x] complete

0 commit comments

Comments
 (0)