From 26ec011e3ee7487a45658e2520b4983b20394625 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 7 Apr 2024 17:37:12 -0700 Subject: [PATCH] Revert "Only reset selection / filters if no menus open" This reverts commit 5cc2dac6fcae78f577526ac905831daa671fff6e. --- .../date-dropdown.component.spec.ts | 6 ----- .../date-dropdown/date-dropdown.component.ts | 9 +------ .../filterable-dropdown.component.spec.ts | 9 ------- .../filterable-dropdown.component.ts | 4 --- ...missions-filter-dropdown.component.spec.ts | 6 ----- .../permissions-filter-dropdown.component.ts | 15 +---------- .../bulk-editor/bulk-editor.component.spec.ts | 12 --------- .../bulk-editor/bulk-editor.component.ts | 16 ++---------- .../document-list.component.html | 2 +- .../document-list.component.spec.ts | 11 -------- .../document-list/document-list.component.ts | 21 ++-------------- .../filter-editor.component.spec.ts | 10 -------- .../filter-editor/filter-editor.component.ts | 25 +------------------ 13 files changed, 8 insertions(+), 138 deletions(-) diff --git a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.spec.ts b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.spec.ts index c119a2c93..e445a73b7 100644 --- a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.spec.ts +++ b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.spec.ts @@ -135,10 +135,4 @@ describe('DateDropdownComponent', () => { input.dispatchEvent(event) expect(eventSpy).toHaveBeenCalled() }) - - it('should correctly pass open state', () => { - expect(component.isOpen()).toBeFalsy() - component.dropdown.open() - expect(component.isOpen()).toBeTruthy() - }) }) diff --git a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts index 73337086f..f47489699 100644 --- a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts +++ b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts @@ -5,9 +5,8 @@ import { Output, OnInit, OnDestroy, - ViewChild, } from '@angular/core' -import { NgbDateAdapter, NgbDropdown } from '@ng-bootstrap/ng-bootstrap' +import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap' import { Subject, Subscription } from 'rxjs' import { debounceTime } from 'rxjs/operators' import { SettingsService } from 'src/app/services/settings.service' @@ -89,8 +88,6 @@ export class DateDropdownComponent implements OnInit, OnDestroy { @Input() disabled: boolean = false - @ViewChild(NgbDropdown) dropdown: NgbDropdown - get isActive(): boolean { return ( this.relativeDate !== null || @@ -99,10 +96,6 @@ export class DateDropdownComponent implements OnInit, OnDestroy { ) } - public isOpen(): boolean { - return this.dropdown.isOpen() - } - private datesSetDebounce$ = new Subject() private sub: Subscription diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.spec.ts b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.spec.ts index 22d693a53..fe377cc70 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.spec.ts +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.spec.ts @@ -577,13 +577,4 @@ describe('FilterableDropdownComponent & FilterableDropdownSelectionModel', () => expect(selectionModel.getSelectedItems()).toEqual([items[0]]) expect(selectionModel.getExcludedItems()).toEqual([items[1]]) }) - - it('should correctly pass open state', () => { - component.items = items - component.icon = 'tag-fill' - fixture.detectChanges() - expect(component.isOpen()).toBeFalsy() - component.dropdown.open() - expect(component.isOpen()).toBeTruthy() - }) }) diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts index 78f9ae3a6..4f39d32c3 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts @@ -425,10 +425,6 @@ export class FilterableDropdownComponent { modelIsDirty: boolean = false - public isOpen(): boolean { - return this.dropdown.isOpen() - } - private keyboardIndex: number constructor(private filterPipe: FilterPipe) { diff --git a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.spec.ts b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.spec.ts index c9a582980..eb9dfed7b 100644 --- a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.spec.ts +++ b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.spec.ts @@ -165,10 +165,4 @@ describe('PermissionsFilterDropdownComponent', () => { userID: null, }) }) - - it('should correctly pass open state', () => { - expect(component.isOpen()).toBeFalsy() - component.dropdown.open() - expect(component.isOpen()).toBeTruthy() - }) }) diff --git a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts index dc84467f3..b0c3e8817 100644 --- a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts +++ b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts @@ -1,10 +1,4 @@ -import { - Component, - EventEmitter, - Input, - Output, - ViewChild, -} from '@angular/core' +import { Component, EventEmitter, Input, Output } from '@angular/core' import { first } from 'rxjs' import { User } from 'src/app/data/user' import { @@ -15,7 +9,6 @@ import { import { UserService } from 'src/app/services/rest/user.service' import { SettingsService } from 'src/app/services/settings.service' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' -import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' export class PermissionsSelectionModel { ownerFilter: OwnerFilterType @@ -66,8 +59,6 @@ export class PermissionsFilterDropdownComponent extends ComponentWithPermissions hideUnowned: boolean - @ViewChild(NgbDropdown) dropdown: NgbDropdown - get isActive(): boolean { return ( this.selectionModel.ownerFilter !== OwnerFilterType.NONE || @@ -75,10 +66,6 @@ export class PermissionsFilterDropdownComponent extends ComponentWithPermissions ) } - public isOpen(): boolean { - return this.dropdown.isOpen() - } - constructor( public permissionsService: PermissionsService, userService: UserService, diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts index c06af89ae..127d7ef2b 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts @@ -1179,16 +1179,4 @@ describe('BulkEditorComponent', () => { ) expect(component.storagePaths).toEqual(storagePaths.results) }) - - it('should correctly pass open state from dropdowns', () => { - jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) - fixture.detectChanges() - expect(component.hasOpenMenu).toBeFalsy() - component.filterableDropdowns = [ - { - isOpen: () => true, - } as any, - ] - expect(component.hasOpenMenu).toBeTruthy() - }) }) diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index 455d9f56c..556a1ff13 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, ViewChildren } from '@angular/core' +import { Component, OnDestroy, OnInit } from '@angular/core' import { Tag } from 'src/app/data/tag' import { Correspondent } from 'src/app/data/correspondent' import { DocumentType } from 'src/app/data/document-type' @@ -6,7 +6,7 @@ import { TagService } from 'src/app/services/rest/tag.service' import { CorrespondentService } from 'src/app/services/rest/correspondent.service' import { DocumentTypeService } from 'src/app/services/rest/document-type.service' import { DocumentListViewService } from 'src/app/services/document-list-view.service' -import { NgbDropdown, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' +import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' import { DocumentService, SelectionDataItem, @@ -15,7 +15,6 @@ import { OpenDocumentsService } from 'src/app/services/open-documents.service' import { ConfirmDialogComponent } from 'src/app/components/common/confirm-dialog/confirm-dialog.component' import { ChangedItems, - FilterableDropdownComponent, FilterableDropdownSelectionModel, } from '../../common/filterable-dropdown/filterable-dropdown.component' import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component' @@ -75,10 +74,6 @@ export class BulkEditorComponent downloadUseFormatting: new FormControl(false), }) - @ViewChildren(NgbDropdown) dropdowns: NgbDropdown[] - @ViewChildren(FilterableDropdownComponent) - filterableDropdowns: FilterableDropdownComponent[] - constructor( private documentTypeService: DocumentTypeService, private tagService: TagService, @@ -126,13 +121,6 @@ export class BulkEditorComponent return ownsAll } - get hasOpenMenu(): boolean { - return ( - this.filterableDropdowns.some((d) => d.isOpen()) || - this.dropdowns.some((d) => d.isOpen()) - ) - } - ngOnInit() { if ( this.permissionService.currentUserCan( diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index 8f98ffe2f..3cce1496b 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -81,7 +81,7 @@
- +
diff --git a/src-ui/src/app/components/document-list/document-list.component.spec.ts b/src-ui/src/app/components/document-list/document-list.component.spec.ts index 43b3f432a..c4420ad3f 100644 --- a/src-ui/src/app/components/document-list/document-list.component.spec.ts +++ b/src-ui/src/app/components/document-list/document-list.component.spec.ts @@ -630,15 +630,4 @@ describe('DocumentListComponent', () => { document.dispatchEvent(new KeyboardEvent('keydown', { key: 'o' })) expect(detailSpy).toHaveBeenCalledWith(docs[0]) }) - - it('should ignore escape hotkey if there is a filter or bulk editor menu to close', () => { - fixture.detectChanges() - jest - .spyOn(component['filterEditor'], 'hasOpenMenu', 'get') - .mockReturnValue(true) - const resetSpy = jest.spyOn(component['filterEditor'], 'resetSelected') - component.clickTag(1) - document.dispatchEvent(new KeyboardEvent('keydown', { key: 'escape' })) - expect(resetSpy).not.toHaveBeenCalled() - }) }) diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index 8a1c3a634..75658f4c7 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -7,7 +7,7 @@ import { ViewChildren, } from '@angular/core' import { ActivatedRoute, convertToParamMap, Router } from '@angular/router' -import { NgbDropdown, NgbModal } from '@ng-bootstrap/ng-bootstrap' +import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { filter, first, map, Subject, switchMap, takeUntil } from 'rxjs' import { FilterRule } from 'src/app/data/filter-rule' import { @@ -37,7 +37,6 @@ import { ComponentWithPermissions } from '../with-permissions/with-permissions.c import { FilterEditorComponent } from './filter-editor/filter-editor.component' import { SaveViewConfigDialogComponent } from './save-view-config-dialog/save-view-config-dialog.component' import { HotKeyService } from 'src/app/services/hot-key.service' -import { BulkEditorComponent } from './bulk-editor/bulk-editor.component' @Component({ selector: 'pngx-document-list', @@ -67,13 +66,8 @@ export class DocumentListComponent @ViewChild('filterEditor') private filterEditor: FilterEditorComponent - @ViewChild('bulkEditor') - private bulkEditor: BulkEditorComponent - @ViewChildren(SortableDirective) headers: QueryList - @ViewChildren(NgbDropdown) dropdowns: QueryList - displayMode = 'smallCards' // largeCards, smallCards, details unmodifiedFilterRules: FilterRule[] = [] @@ -135,14 +129,6 @@ export class DocumentListComponent return this.list.selected.size > 0 } - get hasOpenMenu(): boolean { - return ( - this.dropdowns.some((d) => d.isOpen()) || - this.filterEditor.hasOpenMenu || - this.bulkEditor.hasOpenMenu - ) - } - saveDisplayMode() { localStorage.setItem('document-list:displayMode', this.displayMode) } @@ -206,10 +192,7 @@ export class DocumentListComponent keys: 'escape', description: $localize`Reset filters / selection`, }) - .pipe( - takeUntil(this.unsubscribeNotifier), - filter(() => !this.hasOpenMenu) - ) + .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe(() => { if (this.list.selected.size > 0) { this.list.selectNone() diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts index 017767458..5c393168f 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts @@ -1870,14 +1870,4 @@ describe('FilterEditorComponent', () => { component.itemSelected({ item: 'world', preventDefault: () => true }) expect(component.textFilter).toEqual('hello world ') }) - - it('should correctly pass open state from dropdowns', () => { - expect(component.hasOpenMenu).toBeFalsy() - component.filterableDropdowns = [ - { - isOpen: () => true, - } as any, - ] - expect(component.hasOpenMenu).toBeTruthy() - }) }) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 1fc7e39a5..b7be4b57c 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -8,7 +8,6 @@ import { ViewChild, ElementRef, AfterViewInit, - ViewChildren, } from '@angular/core' import { Tag } from 'src/app/data/tag' import { Correspondent } from 'src/app/data/correspondent' @@ -62,7 +61,6 @@ import { FILTER_SHARED_BY_USER, } from 'src/app/data/filter-rule-type' import { - FilterableDropdownComponent, FilterableDropdownSelectionModel, Intersection, LogicalOperator, @@ -76,13 +74,9 @@ import { import { Document } from 'src/app/data/document' import { StoragePath } from 'src/app/data/storage-path' import { StoragePathService } from 'src/app/services/rest/storage-path.service' -import { - DateDropdownComponent, - RelativeDate, -} from '../../common/date-dropdown/date-dropdown.component' +import { RelativeDate } from '../../common/date-dropdown/date-dropdown.component' import { OwnerFilterType, - PermissionsFilterDropdownComponent, PermissionsSelectionModel, } from '../../common/permissions-filter-dropdown/permissions-filter-dropdown.component' import { @@ -92,7 +86,6 @@ import { } from 'src/app/services/permissions.service' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' import { SearchService } from 'src/app/services/rest/search.service' -import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' const TEXT_FILTER_TARGET_TITLE = 'title' const TEXT_FILTER_TARGET_TITLE_CONTENT = 'title-content' @@ -276,13 +269,6 @@ export class FilterEditorComponent unsubscribeNotifier: Subject = new Subject() - @ViewChild(NgbDropdown) textFilterDropdown: NgbDropdown - @ViewChildren(FilterableDropdownComponent) - filterableDropdowns: FilterableDropdownComponent[] - @ViewChildren(DateDropdownComponent) dateDropdowns: DateDropdownComponent[] - @ViewChild(PermissionsFilterDropdownComponent) - permissionsDropdown: PermissionsFilterDropdownComponent - get textFilterTargets() { if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) { return DEFAULT_TEXT_FILTER_TARGET_OPTIONS.concat([ @@ -890,15 +876,6 @@ export class FilterEditorComponent textFilterDebounce: Subject - get hasOpenMenu(): boolean { - return ( - this.textFilterDropdown.isOpen() || - this.filterableDropdowns.some((d) => d.isOpen()) || - this.dateDropdowns.some((d) => d.isOpen()) || - this.permissionsDropdown.isOpen() - ) - } - ngOnInit() { if ( this.permissionsService.currentUserCan(