From 75b6679bf2658aeaf8fe18be980c4d49de5a10b2 Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Thu, 5 Dec 2024 21:08:16 -0800
Subject: [PATCH] Bootstrap and sass migration
---
.../app-frame/app-frame.component.scss | 6 +-
.../document-detail.component.scss | 9 ++-
src-ui/src/styles.scss | 60 +++++++++++++++----
src-ui/src/theme.scss | 11 ++--
4 files changed, 59 insertions(+), 27 deletions(-)
diff --git a/src-ui/src/app/components/app-frame/app-frame.component.scss b/src-ui/src/app/components/app-frame/app-frame.component.scss
index afa018b3e..9d1110ef4 100644
--- a/src-ui/src/app/components/app-frame/app-frame.component.scss
+++ b/src-ui/src/app/components/app-frame/app-frame.component.scss
@@ -1,6 +1,3 @@
-@import "node_modules/bootstrap/scss/functions";
-@import "node_modules/bootstrap/scss/variables";
-
/*
* Sidebar
*/
@@ -15,6 +12,7 @@
overflow-y: auto;
--pngx-sidebar-width: 100%;
max-width: var(--pngx-sidebar-width);
+ transition: all .2s ease;
.sidebar-heading .spinner-border {
width: 0.8em;
@@ -37,8 +35,6 @@
@media (min-width: 2400px) {
--pngx-sidebar-width: 8.33333333%;
}
-
- transition: all .2s ease;
}
@media (max-width: 767.98px) {
.sidebar {
diff --git a/src-ui/src/app/components/document-detail/document-detail.component.scss b/src-ui/src/app/components/document-detail/document-detail.component.scss
index e3d17476b..c00f7655e 100644
--- a/src-ui/src/app/components/document-detail/document-detail.component.scss
+++ b/src-ui/src/app/components/document-detail/document-detail.component.scss
@@ -69,17 +69,16 @@ textarea.rtl {
left: 0;
width: 100%;
height: calc(100vh - 160px);
+ overflow: hidden;
+ background-color: gray;
+ padding: 10px 8px; // border
+ z-index: 1000;
@media screen and (min-width: 768px) {
left: calc(.5 * var(--bs-gutter-x));
width: calc(100% - var(--bs-gutter-x));
}
- overflow: hidden;
- background-color: gray;
- padding: 10px 8px; // border
- z-index: 1000;
-
> div {
mix-blend-mode: difference;
}
diff --git a/src-ui/src/styles.scss b/src-ui/src/styles.scss
index e5987d5d2..75e3b1449 100644
--- a/src-ui/src/styles.scss
+++ b/src-ui/src/styles.scss
@@ -1,5 +1,34 @@
-// bs options
-$enable-negative-margins: true;
+@use "sass:meta";
+// bs variables
+$grid-gutter-width: 1.5rem;
+$border-radius: .375rem;
+$btn-border-width: var(--bs-border-width);
+
+$form-file-button-bg: var(--bs-body-bg);
+$form-file-button-hover-bg: var(--pngx-bg-alt);
+
+@import "node_modules/bootstrap/dist/css/bootstrap.css";
+@include meta.load-css("theme");
+@import "~@ng-select/ng-select/themes/default.theme.css";
+@include meta.load-css("print");
+
+// re-created bootstrap styles
+.mt-n2 {
+ margin-top: -0.5rem;
+}
+.me-n2 {
+ margin-right: -0.5rem;
+}
+.mb-n2 {
+ margin-bottom: -0.5rem;
+}
+.ms-n2 {
+ margin-left: -0.5rem;
+}
+.my-n2 {
+ margin-top: -0.5rem;
+ margin-bottom: -0.5rem;
+}
$grid-breakpoints: (
xs: 0,
@@ -11,13 +40,22 @@ $grid-breakpoints: (
xxxl: 2400px
);
-$form-file-button-bg: var(--bs-body-bg);
-$form-file-button-hover-bg: var(--pngx-bg-alt);
+:root {
+ @each $name, $value in $grid-breakpoints {
+ --bs-breakpoint-#{$name}: #{$value};
+ }
+}
-@import "node_modules/bootstrap/scss/bootstrap";
-@import "theme";
-@import "~@ng-select/ng-select/themes/default.theme.css";
-@import "print";
+@media (min-width: 2400px) {
+ .col-xxxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xxxl-11 {
+ flex: 0 0 auto;
+ width:91.66666667%
+ }
+}
// Paperless-ngx styles
body {
@@ -731,12 +769,14 @@ canvas.hiddenCanvasElement {
margin-left: calc(#{$btn-border-width} * -1);
}
> .btn {
- @include border-end-radius(0);
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
}
}
.btn-group pngx-preview-popup:not(:first-child) {
> .btn {
- @include border-start-radius(0);
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
}
}
.btn-group pngx-preview-popup {
diff --git a/src-ui/src/theme.scss b/src-ui/src/theme.scss
index 380f78d7d..9f3c9cbe9 100644
--- a/src-ui/src/theme.scss
+++ b/src-ui/src/theme.scss
@@ -1,7 +1,4 @@
-$color-mode-type: data;
-
-@import 'bootstrap/scss/mixins/color-mode';
-
+@use "sass:color";
@mixin paperless-green {
// base color e.g. #17541f = hsl(128, 57%, 21%)
--pngx-primary: 128, 57%;
@@ -32,7 +29,7 @@ $color-mode-type: data;
// Dark text colors allow for maintain contrast with theme color changes
$text-color-light-bg: #212529;
$text-color-dark-bg: #abb2bf;
-$text-color-dark-bg-accent: lighten($text-color-dark-bg, 10%);
+$text-color-dark-bg-accent: color.adjust($text-color-dark-bg, $lightness: 10%);
// Taken from bootstrap
$form-check-input-checked-bg-image-dark: url("data:image/svg+xml,");
$form-check-radio-checked-bg-image-dark: url("data:image/svg+xml,");
@@ -333,7 +330,7 @@ $form-check-radio-checked-bg-image-dark: url("data:image/svg+xml,