Select all checkbox icon class for status
This commit is contained in:
		
							parent
							
								
									d6d9569e8d
								
							
						
					
					
						commit
						98fe4f1afc
					
				
					 3 changed files with 25 additions and 1 deletions
				
			
		| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import Component from '@ember/component';
 | 
					import Component from '@ember/component';
 | 
				
			||||||
import { set } from '@ember/object';
 | 
					import { set, computed } from '@ember/object';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const defaultFiles = [];
 | 
					const defaultFiles = [];
 | 
				
			||||||
const defaultSelectedFilePaths = [];
 | 
					const defaultSelectedFilePaths = [];
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,11 @@ const defaultSelectedFilePaths = [];
 | 
				
			||||||
export default Component.extend({
 | 
					export default Component.extend({
 | 
				
			||||||
  files: defaultFiles,
 | 
					  files: defaultFiles,
 | 
				
			||||||
  selectedFilePaths: defaultSelectedFilePaths,
 | 
					  selectedFilePaths: defaultSelectedFilePaths,
 | 
				
			||||||
 | 
					  selectAllStatus: computed('selectedFilePaths.[]', 'files.[]', function() {
 | 
				
			||||||
 | 
					    if (this.selectedFilePaths.length === this.files.length) {
 | 
				
			||||||
 | 
					      return 'all';
 | 
				
			||||||
 | 
					    } else return this.selectedFilePaths.length === 0 ? 'none' : 'some';
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  actions: {
 | 
					  actions: {
 | 
				
			||||||
    toggleSelectAll() {
 | 
					    toggleSelectAll() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,12 @@
 | 
				
			||||||
    data-test-action="file-table-select-all"
 | 
					    data-test-action="file-table-select-all"
 | 
				
			||||||
    {{action "toggleSelectAll"}}
 | 
					    {{action "toggleSelectAll"}}
 | 
				
			||||||
  >
 | 
					  >
 | 
				
			||||||
 | 
					    <i
 | 
				
			||||||
 | 
					      class="file-table-select-status-{{selectAllStatus}}"
 | 
				
			||||||
 | 
					      data-test-id="file-table-select-status-icon"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					    </i>
 | 
				
			||||||
    Selected {{selectedFilePaths.length}}
 | 
					    Selected {{selectedFilePaths.length}}
 | 
				
			||||||
  </button>
 | 
					  </button>
 | 
				
			||||||
  <button data-test-action="file-table-download-selected">Download Selected</button>
 | 
					  <button data-test-action="file-table-download-selected">Download Selected</button>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,4 +74,17 @@ module('Integration | Component | file-table', function(hooks) {
 | 
				
			||||||
    await click('[data-test-action=file-table-select-all]');
 | 
					    await click('[data-test-action=file-table-select-all]');
 | 
				
			||||||
    assert.equal(find('[data-test-action=file-table-select-all]').textContent.trim(), 'Selected ' + this.files.length);
 | 
					    assert.equal(find('[data-test-action=file-table-select-all]').textContent.trim(), 'Selected ' + this.files.length);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test('select all checkbox changes appearance between some, all and none', async function(assert) {
 | 
				
			||||||
 | 
					    this.set('files', [genericFile(), genericFile()]);
 | 
				
			||||||
 | 
					    this.set('selectedFilePaths', [this.files[0].path]);
 | 
				
			||||||
 | 
					    await render(hbs`{{file-table files=files selectedFilePaths=selectedFilePaths}}`);
 | 
				
			||||||
 | 
					    assert.equal(find('[data-test-id=file-table-select-status-icon]').classList.contains('file-table-select-status-some'), true, 'Shows SOME checkbox status icon');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await click('[data-test-action=file-table-select-all]');
 | 
				
			||||||
 | 
					    assert.equal(find('[data-test-id=file-table-select-status-icon]').classList.contains('file-table-select-status-all'), true, 'Shows ALL checkbox status icon');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await click('[data-test-action=file-table-select-all]');
 | 
				
			||||||
 | 
					    assert.equal(find('[data-test-id=file-table-select-status-icon]').classList.contains('file-table-select-status-none'), true, 'Shows NONE checkbox status icon');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue