Cover Files no-match filter feedback
This commit is contained in:
parent
74c627f706
commit
a540da707d
|
|
@ -199,6 +199,25 @@ test.describe('G: Files Plugin', () => {
|
||||||
await expect(page.locator('.files-empty')).toHaveCount(0);
|
await expect(page.locator('.files-empty')).toHaveCount(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('files explorer shows no-match feedback while filtering', async ({ page }) => {
|
||||||
|
await page.locator('.wt-label').filter({ hasText: 'Project' }).click();
|
||||||
|
await openFilesTool(page);
|
||||||
|
await expect(page.locator('.files-breadcrumb')).toContainText('Project', { timeout: 10000 });
|
||||||
|
|
||||||
|
await page.locator('[data-files-filter]').fill('zzzz-no-matches');
|
||||||
|
|
||||||
|
const emptyState = page.locator('.files-empty');
|
||||||
|
await expect(emptyState).toBeVisible();
|
||||||
|
await expect(emptyState).toContainText('No matches');
|
||||||
|
await expect(emptyState.locator('[data-files-empty-action="clear-filter"]')).toBeVisible();
|
||||||
|
await expect(page.locator('[data-file-name="project-only.txt"]')).toHaveCount(0);
|
||||||
|
|
||||||
|
await emptyState.locator('[data-files-empty-action="clear-filter"]').click();
|
||||||
|
await expect(page.locator('[data-files-filter]')).toHaveValue('');
|
||||||
|
await expect(page.locator('.files-empty')).toHaveCount(0);
|
||||||
|
await expect(page.locator('[data-file-name="project-only.txt"]')).toBeVisible();
|
||||||
|
});
|
||||||
|
|
||||||
test('files explorer restores an item from trash metadata', async ({ page }) => {
|
test('files explorer restores an item from trash metadata', async ({ page }) => {
|
||||||
await page.locator('.wt-label').filter({ hasText: 'Project' }).click();
|
await page.locator('.wt-label').filter({ hasText: 'Project' }).click();
|
||||||
await openFilesTool(page);
|
await openFilesTool(page);
|
||||||
|
|
|
||||||
|
|
@ -823,6 +823,27 @@
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
function noMatchesState() {
|
||||||
|
return e('div', { className: 'files-empty' }, [
|
||||||
|
e('div', {}, ['No matches']),
|
||||||
|
e('div', { className: 'files-empty-actions' }, [
|
||||||
|
e('button', {
|
||||||
|
className: 'files-empty-btn',
|
||||||
|
'data-files-empty-action': 'clear-filter',
|
||||||
|
'data-files-icon': 'refresh',
|
||||||
|
title: 'Clear filter',
|
||||||
|
'aria-label': 'Clear filter',
|
||||||
|
innerHTML: actionSvg('refresh') + '<span>Clear filter</span>',
|
||||||
|
onClick: function () {
|
||||||
|
filter = '';
|
||||||
|
filterInput.value = '';
|
||||||
|
render();
|
||||||
|
list.focus();
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
}
|
||||||
var backButton = btn('Back', 'back', goBack, 'back');
|
var backButton = btn('Back', 'back', goBack, 'back');
|
||||||
var forwardButton = btn('Forward', 'forward', goForward, 'forward');
|
var forwardButton = btn('Forward', 'forward', goForward, 'forward');
|
||||||
var upButton = btn('Up', 'up', function () { if (current) nav(parent(current)); }, 'up');
|
var upButton = btn('Up', 'up', function () { if (current) nav(parent(current)); }, 'up');
|
||||||
|
|
@ -923,7 +944,7 @@
|
||||||
list.appendChild(e('div', { className: 'files-header' }, [e('span', {}, ['Name']), e('span', {}, ['Type']), e('span', {}, ['Size']), e('span', {}, ['Modified']), e('span', {}, ['Actions'])]));
|
list.appendChild(e('div', { className: 'files-header' }, [e('span', {}, ['Name']), e('span', {}, ['Type']), e('span', {}, ['Size']), e('span', {}, ['Modified']), e('span', {}, ['Actions'])]));
|
||||||
var shown = visible();
|
var shown = visible();
|
||||||
if (!shown.length) {
|
if (!shown.length) {
|
||||||
list.appendChild(filter ? e('div', { className: 'files-empty' }, ['No matches']) : emptyFolderState());
|
list.appendChild(filter ? noMatchesState() : emptyFolderState());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
shown.forEach(function (item) {
|
shown.forEach(function (item) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue