Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - Digitova/react-infinite-scroller: ⏬ Infinite scroll component for React in ES6 · GitHub
Skip to content

Repository files navigation

React Infinite Scroller

TravisnpmReact Versionnpmnpm

Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.

Installation

npm install react-infinite-scroller --save
yarn add react-infinite-scroller

How to use

importInfiniteScrollfrom'react-infinite-scroller';

Window scroll events

<InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader"key={0}>Loading ...</div>}>{items} // <--Thisisthecontentyouwanttoload
</InfiniteScroll>

DOM scroll events

<divstyle="height:700px;overflow:auto;"><InfiniteScrollpageStart={0}loadMore={loadFunc}hasMore={true||false}loader={<divclassName="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll></div>

Props

NameTypeDefaultDescription
elementComponent'div'Name of the element that the component should render as.
hasMoreBooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
initialLoadBooleantrueWhether the component should load the first set of items.
isReverseBooleanfalseWhether new items should be loaded when user scrolls to the top of the scrollable area.
loadMoreFunctionA callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }
loaderComponentA React component to render while more items are loading. The parent component must have a unique key prop.
pageStartNumber0The number of the first page to load, With the default of 0, the first page is 1.
thresholdNumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useCaptureBooleanfalseProxy to the useCapture option of the added event listeners.
useWindowBooleantrueAdd scroll listeners to the window, or else, the component's parentNode.

About

⏬ Infinite scroll component for React in ES6

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages