Fix tables width, paginators, button on mobile / touchscreens (#2695)
authorKim <1877318+kimsible@users.noreply.github.com>
Fri, 1 May 2020 08:45:07 +0000 (10:45 +0200)
committerGitHub <noreply@github.com>
Fri, 1 May 2020 08:45:07 +0000 (10:45 +0200)
client/src/app/+my-account/my-account.component.scss
client/src/app/shared/buttons/action-dropdown.component.html
client/src/sass/application.scss
client/src/sass/bootstrap.scss
client/src/sass/include/_bootstrap-variables.scss
client/src/sass/primeng-custom.scss

index d452a2b213e555a2668937ad0d6b3723d96bddb9..fd47aec860ac9d57bbec14925c25f8dd1e6eeb5d 100644 (file)
@@ -1,5 +1,3 @@
-
-
 .row {
   flex-direction: column;
   width: 100%;
index 14cfe9a22865071935bf7b131cebc7754d9e9c20..0efc01d3800899ce6ee09b38d31b3f56ebf4ed5b 100644 (file)
@@ -1,4 +1,4 @@
-<div class="dropdown-root" ngbDropdown [placement]="placement" *ngIf="areActionsDisplayed(actions, entry)">
+<div class="dropdown-root" ngbDropdown [placement]="placement" container="body" *ngIf="areActionsDisplayed(actions, entry)">
   <div
     class="action-button" [ngClass]="{ small: buttonSize === 'small', grey: theme === 'grey', orange: theme === 'orange', 'button-styled': buttonStyled }"
     ngbDropdownToggle role="button"
index ab0bf0a08a8d503a6ec8f675536d45727c4bf332..f54fecda8b168d9ef40920948c4064d4195c62f4 100644 (file)
@@ -267,7 +267,7 @@ table {
   top: #{-($header-height + 20px)};
 }
 
-@media screen and (max-width: #{map-get($grid-breakpoints, xxl)}) {
+@media screen and (max-width: #{breakpoint(xxl)}) {
   .main-col {
     &.expanded {
       .margin-content {
@@ -278,7 +278,7 @@ table {
   }
 }
 
-@media screen and (max-width: #{map-get($grid-breakpoints, lg)}) {
+@media screen and (max-width: #{breakpoint(lg)}) {
   /* the following applies from 500px to 900px and is partially overriden from 500px to 800px by changes below to $small-view */
   .main-col {
     &, &.expanded {
@@ -343,6 +343,40 @@ table {
   }
 }
 
+// overflow-databale responsive rules
+@media screen and (max-width: #{breakpoint(xxl)}) {
+  .main-col {
+    &.expanded {
+      @include overflow-datatable(breakpoint(lg), $expanded-horizontal-margins/2);
+    }
+
+    &:not(.expanded) {
+      @include overflow-datatable(breakpoint(lg), $not-expanded-horizontal-margins + $menu-width/2);
+    }
+  }
+}
+
+@media screen and (max-width: #{breakpoint(lg)}) {
+  .main-col {
+    &.expanded {
+      @include overflow-datatable(breakpoint(lg), $expanded-horizontal-margins/3);
+    }
+
+    &:not(.expanded) {
+      @include overflow-datatable(breakpoint(lg), $not-expanded-horizontal-margins + $menu-width/2);
+    }
+  }
+}
+
+@media screen and (max-width: $small-view) {
+  .main-col {
+    &:not(.expanded),
+    &.expanded {
+      @include overflow-datatable(breakpoint(lg), 15px);
+    }
+  }
+}
+
 @media screen and (min-width: $small-view) and (max-width: #{$small-view + $menu-width}) {
   .main-col {
     &:not(.expanded) {
index eee3db8fca3fdbe52ce979fa74464673b191eb0f..377c85070bc6ec4036d32442c811e5b0c4c14ad0 100644 (file)
@@ -66,7 +66,7 @@ $icon-font-path: '~@neos21/bootstrap3-glyphicons/assets/fonts/';
 }
 
 
-@media screen and (min-width: #{map-get($grid-breakpoints, md)}) {
+@media screen and (min-width: #{breakpoint(md)}) {
   .modal:before {
     vertical-align: middle;
     content: " ";
index d536eac8663a76dfa79f99c944a3d5effbce6e7b..6aa5c24745f7c3b52cfb0576d654c9deb153314f 100644 (file)
@@ -17,6 +17,10 @@ $grid-breakpoints: (
   xxl: 1600px
 );
 
+@function breakpoint($label) {
+  @return map-get($grid-breakpoints, $label);
+}
+
 $container-max-widths: (
   sm: 420px,
   md: 720px,
index 8444f935774849631a314c1c5d309c43f67877ba..b8e685abaa9f363d5426d6cae797d96ec27ad0b3 100644 (file)
@@ -80,7 +80,7 @@ p-table {
           my-edit-button,
           my-delete-button,
           my-button {
-            display: block !important;
+            display: inline-block !important;
           }
         }
       }
@@ -160,14 +160,20 @@ p-table {
     my-delete-button,
     my-button {
       display: none !important;
+      margin-left: 5px;
 
       &.show {
-        display: block !important;
+        display: inline-block !important;
       }
-    }
 
-    my-edit-button + my-delete-button {
-      margin-left: 5px;
+      // keep displaying on touchscreen
+      @media not all and (hover: hover) and (pointer: fine) {
+        display: inline-block !important;
+      }
+
+      :first-child {
+        margin-left: 0
+      }
     }
   }
 
@@ -241,7 +247,7 @@ p-table {
           &.focus-within,
           &:focus {
             box-shadow: #{$focus-box-shadow-form} var(--mainColorLightest) !important;
-          } 
+          }
         }
 
         a {
@@ -266,6 +272,33 @@ p-table {
   }
 }
 
+// overflow data table
+@mixin overflow-datatable ($table-min-width, $horizontal-margins) {
+  p-table {
+    .ui-table-wrapper {
+      overflow-x: auto;
+      max-width: calc(100vw - #{$horizontal-margins * 2});
+
+      table {
+        min-width: $table-min-width;
+      }
+    }
+
+    p-paginator .ui-paginator-bottom {
+      display: block;
+
+      .ui-paginator-current {
+        position: relative;
+        display: block;
+      }
+
+      a, .ui-paginator-pages {
+        vertical-align: middle;
+      }
+    }
+  }
+}
+
 // multiselect customizations
 p-multiselect {
   .ui-multiselect {