diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 9d9d585e3..9cbe824fa 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -88,7 +88,8 @@ const BrewRenderer = (props)=>{ iframe.contentWindow.document.querySelector('.brewRenderer'); if (brewRenderer) { const pages = brewRenderer.querySelectorAll('.page'); - if (pageNumber > pages.length) { + if (pageNumber + 1 > pages.length) { + console.log(pageNumber, pages.length); console.log('page not found'); } else { pages[pageNumber].scrollIntoView({ block: 'start' }); @@ -234,6 +235,11 @@ const BrewRenderer = (props)=>{ ); } + const handlePageChange = (pageNumber) => { + // Scroll to the desired page + scrollToPage(pageNumber); + }; + return ( <> {/*render dummy page while iFrame is mounting.*/} @@ -251,7 +257,7 @@ const BrewRenderer = (props)=>{ contentDidMount={frameDidMount} onClick={()=>{emitClick();}} > - +
{ +const ToolBar = ({ updateZoom, currentPage, onPageChange, totalPages }) => { const [state, setState] = useState({ - currentPage: 1, - totalPages: 10, + currentPage: currentPage, + totalPages: totalPages, zoomLevel: 100, }); + const [pageNumberInput, setPageNumberInput] = useState( + state.currentPage + 1 + ); + const [zoomInput, setZoomInput] = useState(state.zoomLevel); + useEffect(() => { console.log(`Zoom to: ${state.zoomLevel}`); updateZoom(state.zoomLevel); }, [state.zoomLevel]); + // Update currentPage whenever page prop changes + useEffect(() => { + console.log(`page number from props ${currentPage}`); + setState((prevState) => ({ + ...prevState, + currentPage: currentPage, + })); + setPageNumberInput(currentPage + 1); + }, [currentPage]); + const setZoomLevel = (direction) => { let zoomLevel = state.zoomLevel; if (direction === 'in') { @@ -29,17 +44,22 @@ const ToolBar = ({updateZoom}) => { })); }; - const scrollToPage = (direction) => { - let currentPage = state.currentPage; - if (direction === 'next') { - currentPage += 1; - } else { - currentPage = currentPage - 1; + const handleInputChange = (value, type) => { + // Remove the "%" symbol from the input value + const newValue = parseInt(value.replace('%', ''), 10); + + // Check the type of input (zoom or page) + if (type === 'zoom') { + // Check if zoom level is within the allowed range + if (newValue >= 10 && newValue <= 300) { + setZoomInput(newValue + '%'); // Add "%" back to the value + } + } else if (type === 'page') { + // Check if page number is within the allowed range + if (newValue >= 1 && newValue <= totalPages) { + setPageNumberInput(newValue); + } } - setState((prevState) => ({ - ...prevState, - currentPage, - })); }; return ( @@ -53,7 +73,27 @@ const ToolBar = ({updateZoom}) => {
- {state.zoomLevel}% +
+ handleInputChange(e.target.value, 'zoom')} + onBlur={(e) => { + const newZoomLevel = parseInt( + e.target.value.replace('%', ''), + 10 + ); + if (newZoomLevel !== state.zoomLevel) { + updateZoom(newZoomLevel); + } + }} + /> + % +
+
- {state.currentPage} + handleInputChange(e.target.value, 'page')} + onBlur={(e) => { + parseInt(pageNumberInput) === state.currentPage + 1 || + onPageChange(parseInt(pageNumberInput) - 1); + }} + /> +
diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.less b/client/homebrew/brewRenderer/toolBar/toolBar.less index 1d3ae5205..db20a51a6 100644 --- a/client/homebrew/brewRenderer/toolBar/toolBar.less +++ b/client/homebrew/brewRenderer/toolBar/toolBar.less @@ -13,12 +13,12 @@ z-index: 1; display: flex; justify-content: center; - align-items: baseline; + align-items: center; column-gap: 15px; row-gap: 5px; flex-wrap: wrap; - span { + input { background: #eee; font-family: 'Open Sans', sans-serif; text-transform: uppercase; @@ -27,7 +27,7 @@ color: #000; padding: 2px 5px; border-radius: 7px; - width: 50px; + height:1.5em; } .tool {