mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Use ng-select for document detail screen
This commit is contained in:
		
							
								
								
									
										8
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -2056,6 +2056,14 @@
 | 
				
			|||||||
        "tslib": "^2.0.0"
 | 
					        "tslib": "^2.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@ng-select/ng-select": {
 | 
				
			||||||
 | 
					      "version": "5.0.9",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-5.0.9.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-YZeSAiS8/Nx/eHZJPmOOYL8YmcvSq+dr1P8WIrsKmRA7mueorBpPc5xlUj+nLQbpLtsiQvdWDQspf/ykOvD/lA==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "tslib": "^2.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@ngtools/webpack": {
 | 
					    "@ngtools/webpack": {
 | 
				
			||||||
      "version": "10.2.0",
 | 
					      "version": "10.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.2.0.tgz",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@
 | 
				
			|||||||
    "@angular/platform-browser-dynamic": "~10.1.5",
 | 
					    "@angular/platform-browser-dynamic": "~10.1.5",
 | 
				
			||||||
    "@angular/router": "~10.1.5",
 | 
					    "@angular/router": "~10.1.5",
 | 
				
			||||||
    "@ng-bootstrap/ng-bootstrap": "^8.0.0",
 | 
					    "@ng-bootstrap/ng-bootstrap": "^8.0.0",
 | 
				
			||||||
 | 
					    "@ng-select/ng-select": "^5.0.9",
 | 
				
			||||||
    "bootstrap": "^4.5.0",
 | 
					    "bootstrap": "^4.5.0",
 | 
				
			||||||
    "ng-bootstrap": "^1.6.3",
 | 
					    "ng-bootstrap": "^1.6.3",
 | 
				
			||||||
    "ng2-pdf-viewer": "^6.3.2",
 | 
					    "ng2-pdf-viewer": "^6.3.2",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,7 @@ import { FileSizePipe } from './pipes/file-size.pipe';
 | 
				
			|||||||
import { FilterPipe } from './pipes/filter.pipe';
 | 
					import { FilterPipe } from './pipes/filter.pipe';
 | 
				
			||||||
import { DocumentTitlePipe } from './pipes/document-title.pipe';
 | 
					import { DocumentTitlePipe } from './pipes/document-title.pipe';
 | 
				
			||||||
import { MetadataCollapseComponent } from './components/document-detail/metadata-collapse/metadata-collapse.component';
 | 
					import { MetadataCollapseComponent } from './components/document-detail/metadata-collapse/metadata-collapse.component';
 | 
				
			||||||
 | 
					import { NgSelectModule } from '@ng-select/ng-select';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  declarations: [
 | 
					  declarations: [
 | 
				
			||||||
@@ -110,7 +111,8 @@ import { MetadataCollapseComponent } from './components/document-detail/metadata
 | 
				
			|||||||
    ReactiveFormsModule,
 | 
					    ReactiveFormsModule,
 | 
				
			||||||
    NgxFileDropModule,
 | 
					    NgxFileDropModule,
 | 
				
			||||||
    InfiniteScrollModule,
 | 
					    InfiniteScrollModule,
 | 
				
			||||||
    PdfViewerModule
 | 
					    PdfViewerModule,
 | 
				
			||||||
 | 
					    NgSelectModule
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  providers: [
 | 
					  providers: [
 | 
				
			||||||
    DatePipe,
 | 
					    DatePipe,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,15 @@
 | 
				
			|||||||
<div class="form-group">
 | 
					<div class="form-group paperless-input-select">
 | 
				
			||||||
  <label [for]="inputId">{{title}}</label>
 | 
					  <label [for]="inputId">{{title}}</label>
 | 
				
			||||||
  <div [class.input-group]="showPlusButton()">
 | 
					  <div [class.input-group]="showPlusButton()">
 | 
				
			||||||
    <select class="form-control" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" (blur)="onTouched()"
 | 
					    <ng-select name="correspondent" [(ngModel)]="value"
 | 
				
			||||||
      [disabled]="disabled" [style.color]="textColor" [style.background]="backgroundColor">
 | 
					      [disabled]="disabled"
 | 
				
			||||||
      <option *ngIf="allowNull" [ngValue]="null" class="form-control">---</option>
 | 
					      [style.color]="textColor"
 | 
				
			||||||
      <option *ngFor="let i of items" [ngValue]="i.id" class="form-control">{{i.name}}</option>
 | 
					      [style.background]="backgroundColor"
 | 
				
			||||||
    </select>
 | 
					      (change)="onChange(value)"
 | 
				
			||||||
 | 
					      (blur)="onTouched()">
 | 
				
			||||||
 | 
					      <ng-option *ngFor="let i of items" [value]="i.id">{{i.name}}</ng-option>
 | 
				
			||||||
 | 
					    </ng-select>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div *ngIf="showPlusButton()" class="input-group-append">
 | 
					    <div *ngIf="showPlusButton()" class="input-group-append">
 | 
				
			||||||
      <button class="btn btn-outline-secondary" type="button" (click)="createNew.emit()">
 | 
					      <button class="btn btn-outline-secondary" type="button" (click)="createNew.emit()">
 | 
				
			||||||
        <svg class="buttonicon" fill="currentColor">
 | 
					        <svg class="buttonicon" fill="currentColor">
 | 
				
			||||||
@@ -15,4 +19,4 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
 | 
					  <small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					// styles for ng-select child are in styles.scss
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@import "node_modules/bootstrap/scss/bootstrap";
 | 
					@import "node_modules/bootstrap/scss/bootstrap";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@import "~@ng-select/ng-select/themes/default.theme.css";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.toolbaricon {
 | 
					.toolbaricon {
 | 
				
			||||||
  width: 1.2em;
 | 
					  width: 1.2em;
 | 
				
			||||||
@@ -65,4 +66,24 @@ body {
 | 
				
			|||||||
  display: block;
 | 
					  display: block;
 | 
				
			||||||
  background-size: 1rem;
 | 
					  background-size: 1rem;
 | 
				
			||||||
  float: right;
 | 
					  float: right;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paperless-input-select {
 | 
				
			||||||
 | 
					  .ng-select {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    flex: 1 1 auto;
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
 | 
					    height: calc(1.5em + 0.75rem + 5px);
 | 
				
			||||||
 | 
					    line-height: 1.5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .ng-select-container {
 | 
				
			||||||
 | 
					      height: 100%;
 | 
				
			||||||
 | 
					      border-top-right-radius: 0;
 | 
				
			||||||
 | 
					      border-bottom-right-radius: 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      .ng-value-container .ng-input {
 | 
				
			||||||
 | 
					        top: 8px;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user