Context Menu Scroll

The SpreadJS context menu supports scrolling and customization of the height to fit with any display size. In the following demo, try setting the height to 150.

The context menu supports scrolling, and you can use the spread.contextMenu.menuView.scrollable to control whether the context menu is able to scroll. You can use the spread.contextMenu.menuView.scrollable to control whether context menu able to scroll. You can use the spread.contextMenu.menuView.maxHeight to set or get context menu's max height.
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); initSpread(spread); }; function initSpread(spread) { initWorkbook(spread); initEvents(spread); } function initWorkbook(spread) { var sheet = spread.getActiveSheet(); sheet.suspendPaint(); var dataColumns = ["Name", "City", "Birthday", "Sex", "Weight", "Height"]; let data = [ ["Bob", "New York", "1968/6/8", "M", "80", "180"], ["Betty", "New York", "1972/7/3", "F", "72", "168"], ["Cherry", "Washington", "1986/2/2", "F", "58", "161"], ["Gary", "New York", "1964/3/2", "M", "71", "179"], ["Hunk", "Washington", "1972/8/8", "M", "80", "171"], ["Eva", "Washington", "1993/2/15", "F", "71", "180"] ]; sheet.tables.addFromDataSource("table1", 1, 1, data, GC.Spread.Sheets.Tables.TableThemes.medium7); sheet.getRange(-1, 1, -1, 6).width(80); sheet.getRange(2, 3, 6, 1).formatter("mm-dd-yyyy"); var table = sheet.tables.findByName("table1"); table.setColumnName(0, dataColumns[0]); table.setColumnName(1, dataColumns[1]); table.setColumnName(2, dataColumns[2]); table.setColumnName(3, dataColumns[3]); table.setColumnName(4, dataColumns[4]); table.setColumnName(5, dataColumns[5]); sheet.resumePaint(); } function initEvents(spread) { document.getElementById('scrollable').onchange = function (e) { var scrollable = e.target.checked; spread.contextMenu.menuView.scrollable(scrollable); }; document.getElementById('setContextMenuMaxHeight').onclick = function (e) { var maxHeight = document.getElementById('contextMenuMaxHeight').value; spread.contextMenu.menuView.maxHeight(+maxHeight); }; }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/purejs/node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/purejs/node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" class="sample-spreadsheets"></div> <div class="options-container"> <div class="sp-demo-childBlock"> <div id="settingsDiv"> <div class="option-row"> <label for="contextMenuMaxHeight">Context Menu Max Height: </label> <input type="text" id="contextMenuMaxHeight"/> <input type="button" id="setContextMenuMaxHeight" value="Set"/> </div> <div class="option-row"> <input type="checkbox" id="scrollable" checked/> <label for="scrollable">Enable Context Menu Scroll</label> </div> </div> </div> </div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .option-row { font-size: 14px; margin-top: 10px; } label { margin-bottom: 6px; } input { padding: 4px 6px; } input[type=button] { margin-top: 6px; } p{ padding:2px 10px; background-color:#F4F8EB; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }