]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Enhancement: disable add split button when approrpriate (#7215)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Thu, 11 Jul 2024 03:27:04 +0000 (20:27 -0700)
committerGitHub <noreply@github.com>
Thu, 11 Jul 2024 03:27:04 +0000 (03:27 +0000)
src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.html
src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.spec.ts
src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.ts

index 411f5ab79e35998cbb4ce4cde045f12093b01d37..7fb68218ae81324f110a7db122cd6464039aafa3 100644 (file)
@@ -23,7 +23,7 @@
         </div>
         <div class="col-4">
             <div class="d-grid">
-                <button class="btn btn-sm btn-primary" (click)="addSplit()" [disabled]="page === totalPages">
+                <button class="btn btn-sm btn-primary" (click)="addSplit()" [disabled]="!canSplit">
                     <i-bs name="plus-circle"></i-bs>&nbsp;
                     <span i18n>Add Split</span>
                 </button>
index 66bf2bf71f796a3cc7d67de1c00f4095ae2d2279..ffb5e12f335e74374396614db275188441ad545b 100644 (file)
@@ -92,4 +92,16 @@ describe('SplitConfirmDialogComponent', () => {
     component.pdfPreviewLoaded({ numPages: 5 } as any)
     expect(component.totalPages).toEqual(5)
   })
+
+  it('should correctly disable split button', () => {
+    component.totalPages = 5
+    component.page = 1
+    expect(component.canSplit).toBeTruthy()
+    component.page = 5
+    expect(component.canSplit).toBeFalsy()
+    component.page = 4
+    expect(component.canSplit).toBeTruthy()
+    component['pages'] = new Set([1, 2, 3, 4])
+    expect(component.canSplit).toBeFalsy()
+  })
 })
index 266da00ab08e67046c448d64235a986798674577..d5f26411664c12909248a0572e76fad193528c0e 100644 (file)
@@ -42,6 +42,14 @@ export class SplitConfirmDialogComponent
   public totalPages: number
   public deleteOriginal: boolean = false
 
+  public get canSplit(): boolean {
+    return (
+      this.page < this.totalPages &&
+      this.pages.size < this.totalPages - 1 &&
+      !this.pages.has(this.page)
+    )
+  }
+
   public get pdfSrc(): string {
     return this.documentService.getPreviewUrl(this.documentID)
   }