@@ -25,7 +25,9 @@ import {
2525 faCamera ,
2626 faChevronLeft ,
2727 faChevronRight ,
28- faArrowsLeftRight
28+ faChevronDown ,
29+ faArrowsLeftRight ,
30+ faChevronUp
2931} from '@fortawesome/free-solid-svg-icons'
3032import { fiSteer } from '../icons/icons.jsx'
3133import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
@@ -1111,6 +1113,14 @@ export class JupyterHublet extends Component {
11111113 let className = 'appletMain'
11121114 if ( this . state . movepos || this . state . resize ) className += ' appletMainMove'
11131115 if ( this . props . laserPointerOn ) className += ' appletMainLaserPointer'
1116+ console . log (
1117+ 'check below' ,
1118+ this . props . pos . y > ( this . props . scrollpos ?? 0 ) + this . props . scrollheight ,
1119+ this . props . pos . y ,
1120+ this . props . scrollpos ?? 0 ,
1121+ this . props . scrollheight
1122+ )
1123+
11141124 return (
11151125 < Fragment >
11161126 < div
@@ -1412,6 +1422,84 @@ export class JupyterHublet extends Component {
14121422 < FontAwesomeIcon icon = { faChevronRight } />
14131423 </ div >
14141424 </ div >
1425+
1426+ < div
1427+ className = {
1428+ this . props . pos . y + this . props . pos . height <
1429+ ( this . props . scrollpos ?? 0 )
1430+ ? 'appletAbove'
1431+ : 'appletAbove appletAboveHidden'
1432+ }
1433+ key = 'appletAbove'
1434+ onPointerDown = { stopProp }
1435+ onPointerMove = { stopProp }
1436+ onPointerUp = { stopProp }
1437+ onClick = { ( event ) =>
1438+ this . props . submitAppPosition (
1439+ this . props . pos . x ,
1440+ this . props . scrollpos + 0.1 ,
1441+ this . props . pos . width ,
1442+ this . props . pos . height ,
1443+ false
1444+ )
1445+ }
1446+ style = { {
1447+ position : 'absolute' ,
1448+ left :
1449+ ( this . props . pos . x + this . props . pos . width * 0.5 ) *
1450+ this . props . bbwidth -
1451+ 0.5 * buttonHSize +
1452+ 'px' ,
1453+ top : this . props . scrollpos * this . props . bbwidth + 5 + 'px' ,
1454+ zIndex : this . props . zIndex
1455+ } }
1456+ >
1457+ < div className = 'appletAboveContent' >
1458+ < FontAwesomeIcon icon = { faChevronDown } />
1459+ </ div >
1460+ </ div >
1461+
1462+ < div
1463+ className = {
1464+ this . props . pos . y >
1465+ ( this . props . scrollpos ?? 0 ) + this . props . scrollheight
1466+ ? 'appletBelow'
1467+ : 'appletBelow appletBelowHidden'
1468+ }
1469+ key = 'appletBelow'
1470+ onPointerDown = { stopProp }
1471+ onPointerMove = { stopProp }
1472+ onPointerUp = { stopProp }
1473+ onClick = { ( event ) =>
1474+ this . props . submitAppPosition (
1475+ this . props . pos . x ,
1476+ this . props . scrollpos + 0.1 ,
1477+ this . props . pos . width ,
1478+ this . props . pos . height ,
1479+ false
1480+ )
1481+ }
1482+ style = { {
1483+ position : 'absolute' ,
1484+ left :
1485+ ( this . props . pos . x + this . props . pos . width * 0.5 ) *
1486+ this . props . bbwidth -
1487+ 0.5 * buttonHSize +
1488+ 'px' ,
1489+ top :
1490+ ( this . props . scrollpos + this . props . scrollheight ) *
1491+ this . props . bbwidth -
1492+ buttonVSize +
1493+ 5 +
1494+ 'px' ,
1495+ zIndex : this . props . zIndex
1496+ } }
1497+ >
1498+ < div className = 'appletBelowContent' >
1499+ < FontAwesomeIcon icon = { faChevronUp } />
1500+ </ div >
1501+ </ div >
1502+
14151503 < OverlayPanel className = 'tbChild' ref = { this . jupyterinfo } showCloseIcon >
14161504 < h3 >
14171505 < div style = { { display : 'flex' , alignItems : 'center' } } >
0 commit comments