Skip to content

Commit b9e720f

Browse files
allow references pane to be resized (#546)
1 parent 6ecb8bc commit b9e720f

File tree

2 files changed

+41
-5
lines changed

2 files changed

+41
-5
lines changed

css/elements.css

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,8 @@ tr.del > td {
992992
flex-grow: 0;
993993
flex-shrink: 0;
994994
font-size: 80%;
995+
cursor: row-resize;
996+
user-select: none;
995997
}
996998

997999
.menu-pane-header emu-opt,
@@ -1245,7 +1247,6 @@ li.menu-search-result-term:before {
12451247
bottom: 0;
12461248
left: 0;
12471249
right: 0;
1248-
height: 250px;
12491250
display: none;
12501251
background-color: #ddd;
12511252
z-index: 1;
@@ -1254,6 +1255,8 @@ li.menu-search-result-term:before {
12541255
#references-pane-table-container {
12551256
overflow-x: hidden;
12561257
overflow-y: auto;
1258+
min-height: 35px;
1259+
max-height: 85vh;
12571260
}
12581261

12591262
#references-pane {

js/menu.js

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,10 @@ let referencePane = {
723723
this.$header.appendChild(this.$headerText);
724724
this.$headerRefId = document.createElement('a');
725725
this.$header.appendChild(this.$headerRefId);
726+
this.$header.addEventListener('pointerdown', e => {
727+
this.dragStart(e);
728+
});
729+
726730
this.$closeButton = document.createElement('span');
727731
this.$closeButton.setAttribute('id', 'references-pane-close');
728732
this.$closeButton.addEventListener('click', () => {
@@ -731,16 +735,16 @@ let referencePane = {
731735
this.$header.appendChild(this.$closeButton);
732736

733737
this.$pane.appendChild(this.$header);
734-
let tableContainer = document.createElement('div');
735-
tableContainer.setAttribute('id', 'references-pane-table-container');
738+
this.$tableContainer = document.createElement('div');
739+
this.$tableContainer.setAttribute('id', 'references-pane-table-container');
736740

737741
this.$table = document.createElement('table');
738742
this.$table.setAttribute('id', 'references-pane-table');
739743

740744
this.$tableBody = this.$table.createTBody();
741745

742-
tableContainer.appendChild(this.$table);
743-
this.$pane.appendChild(tableContainer);
746+
this.$tableContainer.appendChild(this.$table);
747+
this.$pane.appendChild(this.$tableContainer);
744748

745749
menu.$specContainer.appendChild(this.$container);
746750
},
@@ -793,6 +797,7 @@ let referencePane = {
793797
this.$table.removeChild(this.$tableBody);
794798
this.$tableBody = newBody;
795799
this.$table.appendChild(this.$tableBody);
800+
this.autoSize();
796801
},
797802

798803
showSDOs(sdos, alternativeId) {
@@ -839,6 +844,34 @@ let referencePane = {
839844
this.$table.removeChild(this.$tableBody);
840845
this.$tableBody = newBody;
841846
this.$table.appendChild(this.$tableBody);
847+
this.autoSize();
848+
},
849+
850+
autoSize() {
851+
this.$tableContainer.style.height =
852+
Math.min(250, this.$table.getBoundingClientRect().height) + 'px';
853+
},
854+
855+
dragStart(pointerDownEvent) {
856+
let startingMousePos = pointerDownEvent.clientY;
857+
let startingHeight = this.$tableContainer.getBoundingClientRect().height;
858+
let moveListener = pointerMoveEvent => {
859+
if (pointerMoveEvent.buttons === 0) {
860+
removeListeners();
861+
return;
862+
}
863+
let desiredHeight = startingHeight - (pointerMoveEvent.clientY - startingMousePos);
864+
this.$tableContainer.style.height = Math.max(0, desiredHeight) + 'px';
865+
};
866+
let listenerOptions = { capture: true, passive: true };
867+
let removeListeners = () => {
868+
document.removeEventListener('pointermove', moveListener, listenerOptions);
869+
this.$header.removeEventListener('pointerup', removeListeners, listenerOptions);
870+
this.$header.removeEventListener('pointercancel', removeListeners, listenerOptions);
871+
};
872+
document.addEventListener('pointermove', moveListener, listenerOptions);
873+
this.$header.addEventListener('pointerup', removeListeners, listenerOptions);
874+
this.$header.addEventListener('pointercancel', removeListeners, listenerOptions);
842875
},
843876
};
844877

0 commit comments

Comments
 (0)