diff --git a/gulpfile.js b/gulpfile.js index 520261c6..f1f5f67a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -203,6 +203,7 @@ gulp.task('scripts', ['jscs', 'jshint'], function() { 'src/icon-toggle/icon-toggle.js', 'src/menu/menu.js', 'src/progress/progress.js', + 'src/data-table/data-table.js', 'src/radio/radio.js', 'src/slider/slider.js', 'src/spinner/spinner.js', diff --git a/src/data-table/data-table.js b/src/data-table/data-table.js index 56133d9f..0a0daa1b 100644 --- a/src/data-table/data-table.js +++ b/src/data-table/data-table.js @@ -116,7 +116,9 @@ var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.classList.add('mdl-checkbox__input'); + if (row) { + checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED); checkbox.addEventListener('change', this.selectRow_(checkbox, row)); } else if (rows) { checkbox.addEventListener('change', this.selectRow_(checkbox, null, rows)); diff --git a/test/index.html b/test/index.html index 747c171a..8604bea4 100644 --- a/test/index.html +++ b/test/index.html @@ -44,6 +44,7 @@ + @@ -68,6 +69,7 @@ + diff --git a/test/unit/data-table.js b/test/unit/data-table.js new file mode 100644 index 00000000..f1eeb402 --- /dev/null +++ b/test/unit/data-table.js @@ -0,0 +1,62 @@ +/** + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var TABLE_TEMPLATE = '' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + + '
MaterialQuantityUnit price
Acrylic (Transparent)25$2.90
Plywood (Birch)50$1.25
'; + +describe('MaterialDataTable', function () { + + it('should be globally available', function () { + expect(MaterialDataTable).to.be.a('function'); + }); + + it('should upgrade successfully', function () { + var el = document.createElement('div'); + el.innerHTML = '' + TABLE_TEMPLATE; + + componentHandler.upgradeElement(el, 'MaterialDataTable'); + expect($(el)).to.have.data('upgraded', ',MaterialDataTable'); + }); + + it('should have is-checked class when the row has the is-selected class', function () { + var el = document.createElement('div'); + el.innerHTML = '' + TABLE_TEMPLATE; + document.body.appendChild(el); + table = document.querySelector('#data-table-test') + componentHandler.upgradeElement(table, 'MaterialDataTable'); + expect(table.querySelector('.second-row label').classList.contains('is-checked')).to.be.true; + }); + +});