From 4c976bf0706ecff438cb594028663493c9f0734d Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 30 Mar 2024 01:00:41 -0700 Subject: [PATCH] Initial frontend global search --- .../e2e/document-list/document-list.spec.ts | 10 +- src-ui/src/app/app.module.ts | 6 + .../app-frame/app-frame.component.html | 15 +- .../app-frame/app-frame.component.scss | 53 ---- .../app-frame/app-frame.component.spec.ts | 62 ---- .../app-frame/app-frame.component.ts | 78 +---- .../global-search.component.html | 104 +++++++ .../global-search.component.scss | 33 +++ .../global-search.component.spec.ts | 268 ++++++++++++++++++ .../global-search/global-search.component.ts | 228 +++++++++++++++ .../src/app/services/rest/search.service.ts | 35 ++- src-ui/src/theme.scss | 2 +- src/documents/views.py | 33 ++- 13 files changed, 704 insertions(+), 223 deletions(-) create mode 100644 src-ui/src/app/components/app-frame/global-search/global-search.component.html create mode 100644 src-ui/src/app/components/app-frame/global-search/global-search.component.scss create mode 100644 src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts create mode 100644 src-ui/src/app/components/app-frame/global-search/global-search.component.ts diff --git a/src-ui/e2e/document-list/document-list.spec.ts b/src-ui/e2e/document-list/document-list.spec.ts index e74897257..6d21d2835 100644 --- a/src-ui/e2e/document-list/document-list.spec.ts +++ b/src-ui/e2e/document-list/document-list.spec.ts @@ -45,8 +45,8 @@ test('basic filtering', async ({ page }) => { test('text filtering', async ({ page }) => { await page.routeFromHAR(REQUESTS_HAR2, { notFound: 'fallback' }) await page.goto('/documents') - await page.getByRole('textbox').click() - await page.getByRole('textbox').fill('test') + await page.getByRole('main').getByRole('textbox').click() + await page.getByRole('main').getByRole('textbox').fill('test') await expect(page.locator('pngx-document-list')).toHaveText(/32 documents/) await expect(page).toHaveURL(/title_content=test/) await page.getByRole('button', { name: 'Title & content' }).click() @@ -59,12 +59,12 @@ test('text filtering', async ({ page }) => { await expect(page.locator('pngx-document-list')).toHaveText(/26 documents/) await page.getByRole('button', { name: 'Advanced search' }).click() await page.getByRole('button', { name: 'ASN' }).click() - await page.getByRole('textbox').fill('1123') + await page.getByRole('main').getByRole('textbox').fill('1123') await expect(page).toHaveURL(/archive_serial_number=1123/) await expect(page.locator('pngx-document-list')).toHaveText(/one document/i) await page.locator('select').selectOption('greater') - await page.getByRole('textbox').click() - await page.getByRole('textbox').fill('1123') + await page.getByRole('main').getByRole('textbox').click() + await page.getByRole('main').getByRole('textbox').fill('1123') await expect(page).toHaveURL(/archive_serial_number__gt=1123/) await expect(page.locator('pngx-document-list')).toHaveText(/5 documents/) await page.locator('select').selectOption('less') diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index d7263de82..39a66b0ba 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -120,6 +120,7 @@ import { RotateConfirmDialogComponent } from './components/common/confirm-dialog import { MergeConfirmDialogComponent } from './components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component' import { SplitConfirmDialogComponent } from './components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component' import { DocumentHistoryComponent } from './components/document-history/document-history.component' +import { GlobalSearchComponent } from './components/app-frame/global-search/global-search.component' import { airplane, archive, @@ -192,6 +193,7 @@ import { personFill, personFillLock, personLock, + personSquare, plus, plusCircle, questionCircle, @@ -202,6 +204,7 @@ import { sortAlphaDown, sortAlphaUpAlt, tagFill, + tag, tags, textIndentLeft, textLeft, @@ -286,6 +289,7 @@ const icons = { personFill, personFillLock, personLock, + personSquare, plus, plusCircle, questionCircle, @@ -296,6 +300,7 @@ const icons = { sortAlphaDown, sortAlphaUpAlt, tagFill, + tag, tags, textIndentLeft, textLeft, @@ -474,6 +479,7 @@ function initializeApp(settings: SettingsService) { MergeConfirmDialogComponent, SplitConfirmDialogComponent, DocumentHistoryComponent, + GlobalSearchComponent, ], imports: [ BrowserModule, diff --git a/src-ui/src/app/components/app-frame/app-frame.component.html b/src-ui/src/app/components/app-frame/app-frame.component.html index bdc8d08f2..d9b0b43bf 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.html +++ b/src-ui/src/app/components/app-frame/app-frame.component.html @@ -24,19 +24,8 @@ } -
-
- - - @if (!searchFieldEmpty) { - - } -
+
+