mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 19:17:13 -05:00 
			
		
		
		
	Merge branch 'feature-invert-thumb-option' into dev
This commit is contained in:
		
						commit
						d341bf14ff
					
				@ -18,8 +18,9 @@ paperlessng_directory: /opt/paperless-ng
 | 
				
			|||||||
paperlessng_consumption_dir: "{{ paperlessng_directory }}/consumption"
 | 
					paperlessng_consumption_dir: "{{ paperlessng_directory }}/consumption"
 | 
				
			||||||
paperlessng_data_dir: "{{ paperlessng_directory }}/data"
 | 
					paperlessng_data_dir: "{{ paperlessng_directory }}/data"
 | 
				
			||||||
paperlessng_media_root: "{{ paperlessng_directory }}/media"
 | 
					paperlessng_media_root: "{{ paperlessng_directory }}/media"
 | 
				
			||||||
paperlessng_static_dir: "{{ paperlessng_directory }}/static"
 | 
					paperlessng_staticdir: "{{ paperlessng_directory }}/static"
 | 
				
			||||||
paperlessng_filename_format:
 | 
					paperlessng_filename_format:
 | 
				
			||||||
 | 
					paperlessng_logging_dir: "{{ paperlessng_data_dir }}/log"
 | 
				
			||||||
paperlessng_virtualenv: "{{ paperlessng_directory }}/.venv"
 | 
					paperlessng_virtualenv: "{{ paperlessng_directory }}/.venv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Hosting & Security
 | 
					# Hosting & Security
 | 
				
			||||||
@ -36,12 +37,15 @@ paperlessng_enable_http_remote_user: False
 | 
				
			|||||||
paperlessng_ocr_languages:
 | 
					paperlessng_ocr_languages:
 | 
				
			||||||
  - eng
 | 
					  - eng
 | 
				
			||||||
paperlessng_ocr_mode: skip
 | 
					paperlessng_ocr_mode: skip
 | 
				
			||||||
 | 
					paperlessng_ocr_clean: clean
 | 
				
			||||||
 | 
					paperlessng_ocr_deskew: True
 | 
				
			||||||
 | 
					paperlessng_ocr_rotate_pages: True
 | 
				
			||||||
 | 
					paperlessng_ocr_rotate_pages_threshold: 12
 | 
				
			||||||
paperlessng_ocr_output_type: pdfa
 | 
					paperlessng_ocr_output_type: pdfa
 | 
				
			||||||
paperlessng_ocr_pages: 0
 | 
					paperlessng_ocr_pages: 0
 | 
				
			||||||
paperlessng_ocr_image_dpi:
 | 
					paperlessng_ocr_image_dpi:
 | 
				
			||||||
# see https://ocrmypdf.readthedocs.io/en/latest/api.html#ocrmypdf.ocr
 | 
					# see https://ocrmypdf.readthedocs.io/en/latest/api.html#ocrmypdf.ocr
 | 
				
			||||||
paperlessng_ocr_user_args:
 | 
					paperlessng_ocr_user_args:
 | 
				
			||||||
  #- "deskew": True  # https://github.com/jonaswinkler/paperless-ng/issues/231
 | 
					 | 
				
			||||||
  - "optimize": 1
 | 
					  - "optimize": 1
 | 
				
			||||||
paperlessng_use_jbig2enc: True
 | 
					paperlessng_use_jbig2enc: True
 | 
				
			||||||
paperlessng_big2enc_lossy: False
 | 
					paperlessng_big2enc_lossy: False
 | 
				
			||||||
@ -57,10 +61,11 @@ paperlessng_consumer_polling: 0
 | 
				
			|||||||
paperlessng_consumer_delete_duplicates: False
 | 
					paperlessng_consumer_delete_duplicates: False
 | 
				
			||||||
paperlessng_consumer_recursive: False
 | 
					paperlessng_consumer_recursive: False
 | 
				
			||||||
paperlessng_consumer_subdirs_as_tags: False
 | 
					paperlessng_consumer_subdirs_as_tags: False
 | 
				
			||||||
 | 
					paperlessng_convert_memory_limit: 0
 | 
				
			||||||
 | 
					paperlessng_convert_tmpdir:
 | 
				
			||||||
paperlessng_optimize_thumbnails: True
 | 
					paperlessng_optimize_thumbnails: True
 | 
				
			||||||
paperlessng_post_consume_script:
 | 
					paperlessng_post_consume_script:
 | 
				
			||||||
paperlessng_filename_date_order:
 | 
					paperlessng_filename_date_order:
 | 
				
			||||||
paperlessng_filename_parse_transforms:
 | 
					 | 
				
			||||||
paperlessng_thumbnail_font_name: /usr/share/fonts/liberation/LiberationSerif-Regular.ttf
 | 
					paperlessng_thumbnail_font_name: /usr/share/fonts/liberation/LiberationSerif-Regular.ttf
 | 
				
			||||||
paperlessng_ignore_dates: ""
 | 
					paperlessng_ignore_dates: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -43,7 +43,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- name: install ocr languages
 | 
					- name: install ocr languages
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    pkg: "{{ paperlessng_ocr_languages | map('regex_replace', '^(.*)$', 'tesseract-ocr-\\1') | list }}"
 | 
					    pkg: "{{ paperlessng_ocr_languages | map('regex_replace', '^(.*)$', 'tesseract-ocr-\\1') | map('replace', '_', '-') | list }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: set up notesalexp repository key (for jbig2enc)
 | 
					- name: set up notesalexp repository key (for jbig2enc)
 | 
				
			||||||
  apt_key:
 | 
					  apt_key:
 | 
				
			||||||
@ -256,7 +256,7 @@
 | 
				
			|||||||
    - "{{ paperlessng_consumption_dir }}"
 | 
					    - "{{ paperlessng_consumption_dir }}"
 | 
				
			||||||
    - "{{ paperlessng_data_dir }}"
 | 
					    - "{{ paperlessng_data_dir }}"
 | 
				
			||||||
    - "{{ paperlessng_media_root }}"
 | 
					    - "{{ paperlessng_media_root }}"
 | 
				
			||||||
    - "{{ paperlessng_static_dir }}"
 | 
					    - "{{ paperlessng_staticdir }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: rename initial config
 | 
					- name: rename initial config
 | 
				
			||||||
  command:
 | 
					  command:
 | 
				
			||||||
@ -280,9 +280,11 @@
 | 
				
			|||||||
    - regexp: PAPERLESS_MEDIA_ROOT
 | 
					    - regexp: PAPERLESS_MEDIA_ROOT
 | 
				
			||||||
      line: "PAPERLESS_MEDIA_ROOT={{ paperlessng_media_root }}"
 | 
					      line: "PAPERLESS_MEDIA_ROOT={{ paperlessng_media_root }}"
 | 
				
			||||||
    - regexp: PAPERLESS_STATICDIR
 | 
					    - regexp: PAPERLESS_STATICDIR
 | 
				
			||||||
      line: "PAPERLESS_STATICDIR={{ paperlessng_static_dir }}"
 | 
					      line: "PAPERLESS_STATICDIR={{ paperlessng_staticdir }}"
 | 
				
			||||||
    - regexp: PAPERLESS_FILENAME_FORMAT
 | 
					    - regexp: PAPERLESS_FILENAME_FORMAT
 | 
				
			||||||
      line: "PAPERLESS_FILENAME_FORMAT={{ paperlessng_filename_format }}"
 | 
					      line: "PAPERLESS_FILENAME_FORMAT={{ paperlessng_filename_format }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_LOGGING_DIR
 | 
				
			||||||
 | 
					      line: "PAPERLESS_LOGGING_DIR={{ paperlessng_logging_dir }}"
 | 
				
			||||||
    # Hosting & Security
 | 
					    # Hosting & Security
 | 
				
			||||||
    - regexp: PAPERLESS_SECRET_KEY
 | 
					    - regexp: PAPERLESS_SECRET_KEY
 | 
				
			||||||
      line: "PAPERLESS_SECRET_KEY={{ paperlessng_secret_key }}"
 | 
					      line: "PAPERLESS_SECRET_KEY={{ paperlessng_secret_key }}"
 | 
				
			||||||
@ -302,9 +304,17 @@
 | 
				
			|||||||
      line: "PAPERLESS_ENABLE_HTTP_REMOTE_USER={{ paperlessng_enable_http_remote_user }}"
 | 
					      line: "PAPERLESS_ENABLE_HTTP_REMOTE_USER={{ paperlessng_enable_http_remote_user }}"
 | 
				
			||||||
    # OCR settings
 | 
					    # OCR settings
 | 
				
			||||||
    - regexp: PAPERLESS_OCR_LANGUAGE
 | 
					    - regexp: PAPERLESS_OCR_LANGUAGE
 | 
				
			||||||
      line: "PAPERLESS_OCR_LANGUAGE={{ paperlessng_ocr_languages | join('+') }}"
 | 
					      line: "PAPERLESS_OCR_LANGUAGE={{ paperlessng_ocr_languages | join('+') | replace('-','_') }}"
 | 
				
			||||||
    - regexp: PAPERLESS_OCR_MODE
 | 
					    - regexp: PAPERLESS_OCR_MODE
 | 
				
			||||||
      line: "PAPERLESS_OCR_MODE={{ paperlessng_ocr_mode }}"
 | 
					      line: "PAPERLESS_OCR_MODE={{ paperlessng_ocr_mode }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_OCR_CLEAN
 | 
				
			||||||
 | 
					      line: "PAPERLESS_OCR_CLEAN={{ paperlessng_ocr_clean }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_OCR_DESKEW
 | 
				
			||||||
 | 
					      line: "PAPERLESS_OCR_DESKEW={{ paperlessng_ocr_deskew }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_OCR_ROTATE_PAGES
 | 
				
			||||||
 | 
					      line: "PAPERLESS_OCR_ROTATE_PAGES={{ paperlessng_ocr_rotate_pages }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD
 | 
				
			||||||
 | 
					      line: "PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD={{ paperlessng_ocr_rotate_pages_threshold }}"
 | 
				
			||||||
    - regexp: PAPERLESS_OCR_OUTPUT_TYPE
 | 
					    - regexp: PAPERLESS_OCR_OUTPUT_TYPE
 | 
				
			||||||
      line: "PAPERLESS_OCR_OUTPUT_TYPE={{ paperlessng_ocr_output_type }}"
 | 
					      line: "PAPERLESS_OCR_OUTPUT_TYPE={{ paperlessng_ocr_output_type }}"
 | 
				
			||||||
    - regexp: PAPERLESS_OCR_PAGES
 | 
					    - regexp: PAPERLESS_OCR_PAGES
 | 
				
			||||||
@ -331,6 +341,10 @@
 | 
				
			|||||||
      line: "PAPERLESS_CONSUMER_RECURSIVE={{ paperlessng_consumer_recursive }}"
 | 
					      line: "PAPERLESS_CONSUMER_RECURSIVE={{ paperlessng_consumer_recursive }}"
 | 
				
			||||||
    - regexp: PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS
 | 
					    - regexp: PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS
 | 
				
			||||||
      line: "PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS={{ paperlessng_consumer_subdirs_as_tags }}"
 | 
					      line: "PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS={{ paperlessng_consumer_subdirs_as_tags }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_CONVERT_MEMORY_LIMIT
 | 
				
			||||||
 | 
					      line: "PAPERLESS_CONVERT_MEMORY_LIMIT={{ paperlessng_convert_memory_limit }}"
 | 
				
			||||||
 | 
					    - regexp: PAPERLESS_CONVERT_TMPDIR
 | 
				
			||||||
 | 
					      line: "PAPERLESS_CONVERT_TMPDIR={{ paperlessng_convert_tmpdir }}"
 | 
				
			||||||
    - regexp: PAPERLESS_OPTIMIZE_THUMBNAILS
 | 
					    - regexp: PAPERLESS_OPTIMIZE_THUMBNAILS
 | 
				
			||||||
      line: "PAPERLESS_OPTIMIZE_THUMBNAILS={{ paperlessng_optimize_thumbnails }}"
 | 
					      line: "PAPERLESS_OPTIMIZE_THUMBNAILS={{ paperlessng_optimize_thumbnails }}"
 | 
				
			||||||
    - regexp: PAPERLESS_POST_CONSUME_SCRIPT
 | 
					    - regexp: PAPERLESS_POST_CONSUME_SCRIPT
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
<div class="card mb-3 shadow-sm" [class.card-selected]="selected" [class.document-card]="selectable">
 | 
					<div class="card mb-3 shadow-sm" [class.card-selected]="selected" [class.document-card]="selectable">
 | 
				
			||||||
  <div class="row no-gutters">
 | 
					  <div class="row no-gutters">
 | 
				
			||||||
    <div class="col-md-2 d-none d-lg-block doc-img-background rounded-left" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
					    <div class="col-md-2 d-none d-lg-block doc-img-background rounded-left" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
				
			||||||
      <img [src]="getThumbUrl()" class="card-img doc-img border-right rounded-left">
 | 
					      <img [src]="getThumbUrl()" class="card-img doc-img border-right rounded-left" [class.inverted]="getIsThumbInverted()">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div style="top: 0; left: 0" class="position-absolute border-right border-bottom bg-light p-1" [class.document-card-check]="!selected">
 | 
					      <div style="top: 0; left: 0" class="position-absolute border-right border-bottom bg-light p-1" [class.document-card-check]="!selected">
 | 
				
			||||||
        <div class="custom-control custom-checkbox">
 | 
					        <div class="custom-control custom-checkbox">
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 | 
				
			|||||||
import { DomSanitizer } from '@angular/platform-browser';
 | 
					import { DomSanitizer } from '@angular/platform-browser';
 | 
				
			||||||
import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
					import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
				
			||||||
import { DocumentService } from 'src/app/services/rest/document.service';
 | 
					import { DocumentService } from 'src/app/services/rest/document.service';
 | 
				
			||||||
 | 
					import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-document-card-large',
 | 
					  selector: 'app-document-card-large',
 | 
				
			||||||
@ -10,7 +11,7 @@ import { DocumentService } from 'src/app/services/rest/document.service';
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
export class DocumentCardLargeComponent implements OnInit {
 | 
					export class DocumentCardLargeComponent implements OnInit {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(private documentService: DocumentService, private sanitizer: DomSanitizer) { }
 | 
					  constructor(private documentService: DocumentService, private sanitizer: DomSanitizer, private settingsService: SettingsService) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Input()
 | 
					  @Input()
 | 
				
			||||||
  selected = false
 | 
					  selected = false
 | 
				
			||||||
@ -53,6 +54,10 @@ export class DocumentCardLargeComponent implements OnInit {
 | 
				
			|||||||
  ngOnInit(): void {
 | 
					  ngOnInit(): void {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getIsThumbInverted() {
 | 
				
			||||||
 | 
					    return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getDetailsAsString() {
 | 
					  getDetailsAsString() {
 | 
				
			||||||
    if (typeof this.details === 'string') {
 | 
					    if (typeof this.details === 'string') {
 | 
				
			||||||
      return this.details.substring(0, 500)
 | 
					      return this.details.substring(0, 500)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
<div class="col p-2 h-100">
 | 
					<div class="col p-2 h-100">
 | 
				
			||||||
  <div class="card h-100 shadow-sm document-card" [class.card-selected]="selected">
 | 
					  <div class="card h-100 shadow-sm document-card" [class.card-selected]="selected">
 | 
				
			||||||
    <div class="border-bottom doc-img-container" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
					    <div class="border-bottom doc-img-container" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
				
			||||||
      <img class="card-img doc-img rounded-top" [src]="getThumbUrl()">
 | 
					      <img class="card-img doc-img rounded-top" [class.inverted]="getIsThumbInverted()" [src]="getThumbUrl()">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div class="border-right border-bottom bg-light p-1 rounded document-card-check">
 | 
					      <div class="border-right border-bottom bg-light p-1 rounded document-card-check">
 | 
				
			||||||
        <div class="custom-control custom-checkbox">
 | 
					        <div class="custom-control custom-checkbox">
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 | 
				
			|||||||
import { map } from 'rxjs/operators';
 | 
					import { map } from 'rxjs/operators';
 | 
				
			||||||
import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
					import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
				
			||||||
import { DocumentService } from 'src/app/services/rest/document.service';
 | 
					import { DocumentService } from 'src/app/services/rest/document.service';
 | 
				
			||||||
 | 
					import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-document-card-small',
 | 
					  selector: 'app-document-card-small',
 | 
				
			||||||
@ -10,7 +11,7 @@ import { DocumentService } from 'src/app/services/rest/document.service';
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
export class DocumentCardSmallComponent implements OnInit {
 | 
					export class DocumentCardSmallComponent implements OnInit {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(private documentService: DocumentService) { }
 | 
					  constructor(private documentService: DocumentService, private settingsService: SettingsService) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Input()
 | 
					  @Input()
 | 
				
			||||||
  selected = false
 | 
					  selected = false
 | 
				
			||||||
@ -32,6 +33,10 @@ export class DocumentCardSmallComponent implements OnInit {
 | 
				
			|||||||
  ngOnInit(): void {
 | 
					  ngOnInit(): void {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getIsThumbInverted() {
 | 
				
			||||||
 | 
					    return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getThumbUrl() {
 | 
					  getThumbUrl() {
 | 
				
			||||||
    return this.documentService.getThumbUrl(this.document.id)
 | 
					    return this.documentService.getThumbUrl(this.document.id)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -96,6 +96,7 @@
 | 
				
			|||||||
          <div class="col">
 | 
					          <div class="col">
 | 
				
			||||||
            <app-input-check i18n-title title="Use system settings" formControlName="darkModeUseSystem"></app-input-check>
 | 
					            <app-input-check i18n-title title="Use system settings" formControlName="darkModeUseSystem"></app-input-check>
 | 
				
			||||||
            <app-input-check [hidden]="settingsForm.value.darkModeUseSystem" i18n-title title="Enable dark mode" formControlName="darkModeEnabled"></app-input-check>
 | 
					            <app-input-check [hidden]="settingsForm.value.darkModeUseSystem" i18n-title title="Enable dark mode" formControlName="darkModeEnabled"></app-input-check>
 | 
				
			||||||
 | 
					            <app-input-check i18n-title title="Invert Thumbnails in dark mode" formControlName="darkModeInvertThumbs"></app-input-check>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,7 @@ export class SettingsComponent implements OnInit {
 | 
				
			|||||||
    'documentListItemPerPage': new FormControl(this.settings.get(SETTINGS_KEYS.DOCUMENT_LIST_SIZE)),
 | 
					    'documentListItemPerPage': new FormControl(this.settings.get(SETTINGS_KEYS.DOCUMENT_LIST_SIZE)),
 | 
				
			||||||
    'darkModeUseSystem': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM)),
 | 
					    'darkModeUseSystem': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM)),
 | 
				
			||||||
    'darkModeEnabled': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED)),
 | 
					    'darkModeEnabled': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED)),
 | 
				
			||||||
 | 
					    'darkModeInvertThumbs': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)),
 | 
				
			||||||
    'useNativePdfViewer': new FormControl(this.settings.get(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER)),
 | 
					    'useNativePdfViewer': new FormControl(this.settings.get(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER)),
 | 
				
			||||||
    'savedViews': this.savedViewGroup,
 | 
					    'savedViews': this.savedViewGroup,
 | 
				
			||||||
    'displayLanguage': new FormControl(this.settings.getLanguage()),
 | 
					    'displayLanguage': new FormControl(this.settings.getLanguage()),
 | 
				
			||||||
@ -74,6 +75,7 @@ export class SettingsComponent implements OnInit {
 | 
				
			|||||||
    this.settings.set(SETTINGS_KEYS.DOCUMENT_LIST_SIZE, this.settingsForm.value.documentListItemPerPage)
 | 
					    this.settings.set(SETTINGS_KEYS.DOCUMENT_LIST_SIZE, this.settingsForm.value.documentListItemPerPage)
 | 
				
			||||||
    this.settings.set(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, this.settingsForm.value.darkModeUseSystem)
 | 
					    this.settings.set(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, this.settingsForm.value.darkModeUseSystem)
 | 
				
			||||||
    this.settings.set(SETTINGS_KEYS.DARK_MODE_ENABLED, (this.settingsForm.value.darkModeEnabled == true).toString())
 | 
					    this.settings.set(SETTINGS_KEYS.DARK_MODE_ENABLED, (this.settingsForm.value.darkModeEnabled == true).toString())
 | 
				
			||||||
 | 
					    this.settings.set(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED, (this.settingsForm.value.darkModeInvertThumbs == true).toString())
 | 
				
			||||||
    this.settings.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, this.settingsForm.value.useNativePdfViewer)
 | 
					    this.settings.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, this.settingsForm.value.useNativePdfViewer)
 | 
				
			||||||
    this.settings.set(SETTINGS_KEYS.DATE_LOCALE, this.settingsForm.value.dateLocale)
 | 
					    this.settings.set(SETTINGS_KEYS.DATE_LOCALE, this.settingsForm.value.dateLocale)
 | 
				
			||||||
    this.settings.set(SETTINGS_KEYS.DATE_FORMAT, this.settingsForm.value.dateFormat)
 | 
					    this.settings.set(SETTINGS_KEYS.DATE_FORMAT, this.settingsForm.value.dateFormat)
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,7 @@ export const SETTINGS_KEYS = {
 | 
				
			|||||||
  DOCUMENT_LIST_SIZE: 'general-settings:documentListSize',
 | 
					  DOCUMENT_LIST_SIZE: 'general-settings:documentListSize',
 | 
				
			||||||
  DARK_MODE_USE_SYSTEM: 'general-settings:dark-mode:use-system',
 | 
					  DARK_MODE_USE_SYSTEM: 'general-settings:dark-mode:use-system',
 | 
				
			||||||
  DARK_MODE_ENABLED: 'general-settings:dark-mode:enabled',
 | 
					  DARK_MODE_ENABLED: 'general-settings:dark-mode:enabled',
 | 
				
			||||||
 | 
					  DARK_MODE_THUMB_INVERTED: 'general-settings:dark-mode:thumb-inverted',
 | 
				
			||||||
  USE_NATIVE_PDF_VIEWER: 'general-settings:document-details:native-pdf-viewer',
 | 
					  USE_NATIVE_PDF_VIEWER: 'general-settings:document-details:native-pdf-viewer',
 | 
				
			||||||
  DATE_LOCALE: 'general-settings:date-display:date-locale',
 | 
					  DATE_LOCALE: 'general-settings:date-display:date-locale',
 | 
				
			||||||
  DATE_FORMAT: 'general-settings:date-display:date-format',
 | 
					  DATE_FORMAT: 'general-settings:date-display:date-format',
 | 
				
			||||||
@ -41,6 +42,7 @@ const SETTINGS: PaperlessSettings[] = [
 | 
				
			|||||||
  {key: SETTINGS_KEYS.DOCUMENT_LIST_SIZE, type: "number", default: 50},
 | 
					  {key: SETTINGS_KEYS.DOCUMENT_LIST_SIZE, type: "number", default: 50},
 | 
				
			||||||
  {key: SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, type: "boolean", default: true},
 | 
					  {key: SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, type: "boolean", default: true},
 | 
				
			||||||
  {key: SETTINGS_KEYS.DARK_MODE_ENABLED, type: "boolean", default: false},
 | 
					  {key: SETTINGS_KEYS.DARK_MODE_ENABLED, type: "boolean", default: false},
 | 
				
			||||||
 | 
					  {key: SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED, type: "boolean", default: true},
 | 
				
			||||||
  {key: SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, type: "boolean", default: false},
 | 
					  {key: SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, type: "boolean", default: false},
 | 
				
			||||||
  {key: SETTINGS_KEYS.DATE_LOCALE, type: "string", default: ""},
 | 
					  {key: SETTINGS_KEYS.DATE_LOCALE, type: "string", default: ""},
 | 
				
			||||||
  {key: SETTINGS_KEYS.DATE_FORMAT, type: "string", default: "mediumDate"},
 | 
					  {key: SETTINGS_KEYS.DATE_FORMAT, type: "string", default: "mediumDate"},
 | 
				
			||||||
 | 
				
			|||||||
@ -139,15 +139,18 @@ $border-color-dark-mode: #47494f;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  .doc-img {
 | 
					  .doc-img {
 | 
				
			||||||
    mix-blend-mode: normal;
 | 
					    mix-blend-mode: normal;
 | 
				
			||||||
    filter: invert(95%) hue-rotate(180deg);
 | 
					 | 
				
			||||||
    border-radius: 0;
 | 
					    border-radius: 0;
 | 
				
			||||||
    border-color: $bg-dark-mode;
 | 
					    border-color: $bg-dark-mode;
 | 
				
			||||||
 | 
					    filter: invert(10%);
 | 
				
			||||||
    &.border-right {
 | 
					    &.border-right {
 | 
				
			||||||
      border-right: none !important;
 | 
					      border-right: none !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .doc-img.inverted {
 | 
				
			||||||
 | 
					    filter: invert(95%) hue-rotate(180deg);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .card-selected .doc-img {
 | 
					  .card-selected .doc-img {
 | 
				
			||||||
    mix-blend-mode: luminosity;
 | 
					    mix-blend-mode: luminosity;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user