isSelected per file-table-item
This commit is contained in:
parent
a26469efc9
commit
a654423557
5 changed files with 26 additions and 2 deletions
|
@ -1,7 +1,14 @@
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
import { computed } from '@ember/object';
|
||||||
|
|
||||||
const defaultFile = {};
|
const defaultFile = {};
|
||||||
|
const defaultSelectedFilePaths = [];
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
file: defaultFile,
|
file: defaultFile,
|
||||||
|
selectedFilePaths: defaultSelectedFilePaths,
|
||||||
|
|
||||||
|
isSelected: computed('file.path', 'selectedFilePaths', function() {
|
||||||
|
return this.selectedFilePaths.includes(this.file.path);
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
|
||||||
const defaultFiles = [];
|
const defaultFiles = [];
|
||||||
|
const defaultSelectedFilePaths = [];
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
files: defaultFiles,
|
files: defaultFiles,
|
||||||
|
selectedFilePaths: defaultSelectedFilePaths,
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<tr data-test-id="file-table-item">
|
<tr data-test-id="file-table-item">
|
||||||
<td data-test-id="file-table-item-selected">
|
<td data-test-id="file-table-item-selected">
|
||||||
|
{{if isSelected "Selected"}}
|
||||||
</td>
|
</td>
|
||||||
<td data-test-id="file-table-item-name">
|
<td data-test-id="file-table-item-name">
|
||||||
{{file.name}}
|
{{file.name}}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#each files as | file |}}
|
{{#each files as | file |}}
|
||||||
{{file-table-item file=file selected=selected}}
|
{{file-table-item file=file selectedFilePaths=selectedFilePaths}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
|
@ -44,4 +44,18 @@ module('Integration | Component | file-table-item', function(hooks) {
|
||||||
assert.equal(find('[data-test-id=file-table-item-status]').textContent.trim(), 'available', 'Renders correct status text');
|
assert.equal(find('[data-test-id=file-table-item-status]').textContent.trim(), 'available', 'Renders correct status text');
|
||||||
assert.equal(find('[data-test-id=file-table-status-icon]').classList.contains('file-table-item-status-available'), true, 'Status icon has expected class');
|
assert.equal(find('[data-test-id=file-table-status-icon]').classList.contains('file-table-item-status-available'), true, 'Status icon has expected class');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('it handles toggling selected status based on incoming selectedFilePaths', async function(assert) {
|
||||||
|
this.set('file', genericFile());
|
||||||
|
this.set('selectedFilePaths', []);
|
||||||
|
await render(hbs`{{file-table-item file=file selectedFilePaths=selectedFilePaths}}`);
|
||||||
|
|
||||||
|
assert.equal(find('[data-test-id=file-table-item-selected]').textContent.trim(), '', 'Not selected by default');
|
||||||
|
|
||||||
|
this.set('selectedFilePaths', [this.file.path]);
|
||||||
|
assert.equal(find('[data-test-id=file-table-item-selected]').textContent.trim(), 'Selected', 'Not selected by default');
|
||||||
|
|
||||||
|
this.set('selectedFilePaths', []);
|
||||||
|
assert.equal(find('[data-test-id=file-table-item-selected]').textContent.trim(), '', 'No longer selected');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue