diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py index 5632be3e..cbb71780 100644 --- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py +++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating — Shop Floor', - 'version': '19.0.5.0.0', + 'version': '19.0.6.0.0', 'category': 'Manufacturing/Plating', 'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer, ' 'first-piece inspection gates.', diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss b/fusion_plating/fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss index 3d275ae4..3d2545de 100644 --- a/fusion_plating/fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss +++ b/fusion_plating/fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss @@ -28,6 +28,8 @@ display: flex; flex-direction: column; gap: $fp-space-6; + // Smooth momentum scroll on iOS / iPadOS Safari + -webkit-overflow-scrolling: touch; @media (max-width: 900px) { padding: $fp-space-4; gap: $fp-space-4; } @media (max-width: 600px) { padding: $fp-space-3; gap: $fp-space-4; } diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/scss/manager_dashboard.scss b/fusion_plating/fusion_plating_shopfloor/static/src/scss/manager_dashboard.scss index 62017c2a..41fc0f79 100644 --- a/fusion_plating/fusion_plating_shopfloor/static/src/scss/manager_dashboard.scss +++ b/fusion_plating/fusion_plating_shopfloor/static/src/scss/manager_dashboard.scss @@ -26,6 +26,7 @@ display: flex; flex-direction: column; gap: $fp-space-6; + -webkit-overflow-scrolling: touch; @media (max-width: 900px) { padding: $fp-space-4; gap: $fp-space-4; } @media (max-width: 600px) { padding: $fp-space-3; gap: $fp-space-4; } diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/scss/plant_overview.scss b/fusion_plating/fusion_plating_shopfloor/static/src/scss/plant_overview.scss index 3164ccb3..309ee52c 100644 --- a/fusion_plating/fusion_plating_shopfloor/static/src/scss/plant_overview.scss +++ b/fusion_plating/fusion_plating_shopfloor/static/src/scss/plant_overview.scss @@ -23,6 +23,7 @@ min-height: 100%; display: flex; flex-direction: column; + -webkit-overflow-scrolling: touch; } @@ -112,13 +113,21 @@ gap: $fp-space-4; padding: 0 $fp-space-6 $fp-space-6; overflow-x: auto; + -webkit-overflow-scrolling: touch; flex: 1; min-height: 0; align-items: flex-start; - @media (max-width: 900px) { padding: 0 $fp-space-4 $fp-space-4; } - @media (max-width: 600px) { + // Mobile: stack vertically, remove the horizontal overflow (and + // therefore the inner scroll trap); the page scrolls instead. + @media (max-width: 900px) { flex-direction: column; + overflow-x: visible; + overflow-y: visible; + min-height: auto; + padding: 0 $fp-space-4 $fp-space-4; + } + @media (max-width: 600px) { padding: 0 $fp-space-3 $fp-space-3; } } @@ -138,10 +147,15 @@ max-height: calc(100vh - 180px); overflow: hidden; - @media (max-width: 600px) { + // Touch / mobile: let columns be their natural height and let the + // PAGE scroll instead of each column having its own internal + // scroll. Nested scroll containers are unusable on a phone. + @media (max-width: 900px) { flex: 1 1 auto; - min-width: 100%; max-width: 100%; + min-width: 100%; + max-width: 100%; max-height: none; + overflow: visible; } } @@ -173,9 +187,18 @@ overflow-y: auto; padding: $fp-space-3; flex: 1; + // Smooth inertial scroll on iOS Safari + -webkit-overflow-scrolling: touch; transition: background-color $fp-dur $fp-ease, box-shadow $fp-dur $fp-ease; + // Mobile: disable the nested overflow so the page scrolls the + // whole list naturally instead of trapping scroll inside each + // column. + @media (max-width: 900px) { + overflow-y: visible; + } + // Drop-zone highlight: soft accent tint + inset outline. Shows the // whole column is receptive. The actual insertion point is drawn // by the real placeholder node (inserted by JS) between cards. @@ -220,6 +243,10 @@ margin-bottom: $fp-space-2; cursor: grab; box-shadow: $fp-elev-1; + // Allow vertical page-scroll gestures on touch — without this + // a draggable card can swallow the touch and block scrolling. + // Desktop drag (mousedown) still works. + touch-action: pan-y; transition: transform $fp-dur-fast $fp-ease, box-shadow $fp-dur $fp-ease, opacity $fp-dur $fp-ease,