パッケージの詳細

@egjs/infinitegrid

naver13.9kMIT4.12.0

A module used to arrange elements including content infinitely according to grid type. With this module, you can implement various grids composed of different card elements whose sizes vary. It guarantees performance by maintaining the number of DOMs the

infinitegrid, infinite, scroll, layout

readme

InfiniteGrid Logo
@egjs/infinitegrid

version npm weekly downloads npm bundle size (scoped) Github actions  Coveralls github GitHub

Angular React Vue Svelte

Demo / Documentation / Other components

A module used to arrange elements including content infinitely according to grid type. With this module, you can implement various grids composed of different card elements whose sizes vary. It guarantees performance by maintaining the number of DOMs the module is handling under any circumstance
📱💻🖥

Supported Frameworks
AngularJS   React   Vue.js   Svelte


✨ Features

  • Use it in a framework you like.
    • We supports all major JS frameworks like React, Vue, Angular
  • Restore state like position and active slide with persist
  • Supports both Desktop & Mobile
  • Support Dynamic Options
  • Rich API

📖 Articles

⚙️ Installation

npm

$ npm install --save @egjs/infinitegrid

CDN

🏃 Quick Start

HTML

<div class="container"></div>

ES Modules

import { MasonryInfiniteGrid } from "@egjs/infinitegrid";

const ig = new MasonryInfiniteGrid(".container", { gap: 5 });

With CDN

<!-- Packaged with all dependencies -->
<!-- https://naver.github.io/egjs-infinitegrid/release/latest/dist/infinitegrid.min.js -->
<script src="https://unpkg.com/@egjs/infinitegrid/dist/infinitegrid.min.js"></script>
var ig = new InfiniteGrid.MasonryInfiniteGrid(".container", { gap: 5 });
import { MasonryInfiniteGrid } from "@egjs/infinitegrid";

function getItems(nextGroupKey, count) {
  const nextItems = [];

  for (let i = 0; i < count; ++i) {
    const num = nextGroupKey * count + i;
    nextItems.push(`<div class="item"></div>`);
  }
  return nextItems;
}
const ig = new MasonryInfiniteGrid(".container", {
  gap: 5,
});

ig.on("requestAppend", (e) => {
  const nextGroupKey = (+e.groupKey || 0) + 1;

  ig.append(getItems(nextGroupKey, 10), nextGroupKey);
});
ig.renderItems();

Use Faster & Lazy Rendering

  • When the loading="lazy" or data-grid-lazy="true"(external lazy loading) attribute is used, Rendering of the items occurs immediately. When items are loaded, they are rendered sequentially.
    <img src="..." />
    <img src="..." />
    <img src="..." loading="lazy" />
    <img data-grid-lazy="true" />
  • If you use data-grid-width and data-grid-height attributes, the size of self, child image, and video elements is automatically adjusted until loading is complete.

    <div data-grid-width="100" data-grid-height="100">
     <img src="..." />
     <img src="..." />
     <img src="..." />
    </div>
  • If you use data-grid-skip="true" attribute, you can omit it even if there are images in itself and child image, and video elements.

    <div data-grid-skip="true">
     <img src="..." />
     <img src="..." />
     <img src="..." />
    </div>

Detect resize of Container & Children

InfiniteGrid calculates the size of container and children by window resizing event. However, even if the size of the window does not change, the size of the event container and children can change. Most of the first rendering issues are also like this.

In this case, I recommend ResizeObserver for you.

Provides useResizeObserver option to detect size change of container and observeChildren option to detect size change of children.

import { MasonryInfiniteGrid, JustifiedInfiniteGrid, FrameInfiniteGrid, PackingInfiniteGrid } from "@egjs/infinitegrid";


// InfiniteGrid.MasonryInfiniteGrid
const grid = new MasonryInfiniteGrid(container, {
  gap: 5,
  useResizeObserver: true,
  observeChildren: true,
});

grid.renderItems();

Pre-guess size for performance or invisible items.

What if all items were the same size?

If you use the isEqualSize option, all items are considered to be the same size. Each resize only calculates the size of one item. Add data-grid-not-equal-size="true" attribute if there is an exceptional item whose size needs to be calculated while using isEqualSize.

<div class="item item1"></div>
<div class="item item1"></div>
<div class="item item1"></div>
<!--item2 is a different size than item1.-->
<div class="item item2" data-grid-not-equal-size="true"></div>

What if a size group exists?

isEqualSize assumes all items are equal. But if there are more than two size-groups, use data-grid-size-group.

<!--item1 has the same size.-->
<div class="item item1" data-grid-size-group="1"></div>
<div class="item item1" data-grid-size-group="1"></div>
<!--item2 has the same size.-->
<div class="item item2" data-grid-size-group="2"></div>
<div class="item item2" data-grid-size-group="2"></div>

What if all items don't change size?

If all items do not have a constant size, use the isConstantSize option. Resizing doesn't calculate the item's size. If you want to recalculate, use .updateItems(items, { useOrgResize: true }) method or .renderItems({ useOrgResize: true }) method.

📦 Packages

Package Version Description
@egjs/infinitegrid version Vanilla Module of InfiniteGrid
@egjs/ngx-infinitegrid version Angular Angular port of @egjs/infinitegrid
@egjs/react-infinitegrid version React React port of @egjs/infinitegrid
@egjs/vue-infinitegrid version Vue.js Vue.js@2 port of @egjs/infinitegrid
@egjs/vue3-infinitegrid version Vue.js Vue.js@3 port of @egjs/infinitegrid
@egjs/svelte-infinitegrid version Svelte Svelte port of @egjs/infinitegrid

🌐 Supported Browsers

IE Chrome Firefox Safari iOS Android
9+(With polyfill), 11+ for Angular & Svelte Latest Latest Latest 7+ 4+

📼 Demos

Check our Demos.

📖 Documentation

See Documentation page.

🙌 Contributing

See CONTRIBUTING.md.

📝 Feedback

Please file an Issue.

🛣️ Roadmap

See our Roadmap.

📜 License

@egjs/infinitegrid is released under the MIT license.

Copyright (c) 2015-present NAVER Corp.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

      

更新履歴

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

4.11.1 (2024-02-07)

:sparkles: Packages

  • @egjs/infinitegrid 4.11.1
  • @egjs/react-infinitegrid 4.11.1
  • @egjs/svelte-infinitegrid 4.11.1
  • @egjs/vue-infinitegrid 4.11.1
  • @egjs/vue3-infinitegrid 4.11.1
  • @egjs/ngx-infinitegrid 4.11.1

:rocket: New Features

  • @egjs/infinitegrid
    • add contentAlign prop (#558) (559a288)

:bug: Bug Fix

  • All
    • fix observe order (#563) (e5bfcc4)

:mega: Other

  • All
    • update packages versions (13597dd)

4.10.1 (2023-08-04)

:sparkles: Packages

  • @egjs/infinitegrid 4.10.1
  • @egjs/react-infinitegrid 4.10.1
  • @egjs/svelte-infinitegrid 4.10.2
  • @egjs/vue-infinitegrid 4.10.1
  • @egjs/vue3-infinitegrid 4.10.1
  • @egjs/ngx-infinitegrid 4.10.1

:bug: Bug Fix

  • @egjs/infinitegrid
  • @egjs/svelte-infinitegrid

:mega: Other

  • All
    • update packages versions (2222f2f)

4.10.0 (2023-05-26)

:sparkles: Packages

  • @egjs/infinitegrid 4.10.0
  • @egjs/react-infinitegrid 4.10.0
  • @egjs/svelte-infinitegrid 4.10.0
  • @egjs/vue-infinitegrid 4.10.0
  • @egjs/vue3-infinitegrid 4.10.0
  • @egjs/ngx-infinitegrid 4.10.0

:rocket: New Features

  • All
    • add infoBy prop for frameworks (#538) (6fd5c0b)
  • @egjs/ngx-infinitegrid
    • upgrade to Angular 15 and enable partial compilation (#527) (2f05376)

:bug: Bug Fix

  • @egjs/ngx-infinitegrid
    • fix zone inside run #535 (#537) (a2d9dd5)

:mega: Other

  • All
    • update packages versions (dce9a8c)

4.9.0 (2023-03-17)

:sparkles: Packages

  • @egjs/infinitegrid 4.9.0
  • @egjs/react-infinitegrid 4.9.0
  • @egjs/svelte-infinitegrid 4.9.0
  • @egjs/vue-infinitegrid 4.9.0
  • @egjs/vue3-infinitegrid 4.9.0
  • @egjs/ngx-infinitegrid 4.9.0

:rocket: New Features

  • @egjs/infinitegrid
    • support size-group, not-equal-size attribute (#533) (f693db9)

:bug: Bug Fix

  • @egjs/svelte-infinitegrid
    • fix svelte module naming (#529) (5e3d9fe)
  • @egjs/infinitegrid
    • fix the groupKey of the inserted item in own group (#531) (a798406)

:mega: Other

  • All
    • update packages versions (f628845)

4.8.1 (2023-01-27)

:sparkles: Packages

  • @egjs/infinitegrid 4.8.1
  • @egjs/react-infinitegrid 4.8.1
  • @egjs/svelte-infinitegrid 4.8.1
  • @egjs/vue-infinitegrid 4.8.1
  • @egjs/vue3-infinitegrid 4.8.1
  • @egjs/ngx-infinitegrid 4.8.1

:rocket: New Features

  • All
    • update @egjs/grid module (081acd5)

:bug: Bug Fix

  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid
    • support vue 3 types (#523) (1e09868)
  • @egjs/infinitegrid
    • fix changed groupKey (#526) (6db0bff)
  • @egjs/ngx-infinitegrid
    • ngx-infinitegrid: re-arrange peer deps and call next on the destroy subject (#520) (0410c76)
    • ngx-infinitegrid: reduce change detection cycles and teardown event listeners once the view is removed (#518) (ee30a5b)

:memo: Documentation

:mega: Other

  • All
    • update packages versions (191e57f)

4.7.1 (2022-09-08)

:sparkles: Packages

  • @egjs/infinitegrid 4.7.1
  • @egjs/react-infinitegrid 4.7.1
  • @egjs/svelte-infinitegrid 4.7.1
  • @egjs/vue-infinitegrid 4.7.1
  • @egjs/vue3-infinitegrid 4.7.1
  • @egjs/ngx-infinitegrid 4.7.1

:rocket: New Features

  • @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
  • @egjs/react-infinitegrid, @egjs/infinitegrid
    • add includePlaceholders param (#484) (39852c3)
  • @egjs/ngx-infinitegrid, @egjs/infinitegrid
    • add scrollContainer option (#511) (78043ad)
  • @egjs/svelte-infinitegrid, @egjs/ngx-infinitegrid
    • support ResizeObserver#464 (#470) (4400701)
  • @egjs/infinitegrid
    • add insertByGroupIndex method (#489) (87a06ef)
    • add nextGroupKeys property in request events (#493) (b0260ad)
  • @egjs/react-infinitegrid
    • add isCached method (#288) (1836a5b)
    • add react-infinitegrid@3.0.0 (#296) (a688207)
    • react-infinitegrid: add getItems method (#270) (a1386be)
    • react-infinitegrid: add react-infinitegrid module (#172) (a6990e4), closes #134 #128 #129 #148 #149 #150 #162
    • react-infinitegrid: add resize method (#195) (ac0c548), closes #193
    • react-infinitegrid: add updateItem, updateItems, getItem (#271) (bc50654)
    • react-infinitegrid: add useFirstRender option (#265) (9cbce7b)
    • react-infinitegrid: add useFit option (#187) (002f4bf)
    • react-infinitegrid: update InfiniteGrid 3.4.0 version (#209) (ab1cb6d)
  • @egjs/ngx-infinitegrid
    • Add ngx-infinitegrid@3.0.0 (#297) (21f3c9f)
  • @egjs/svelte-infinitegrid
    • add svelte-infinitegrid@3.0.0 (#301) (8c878c9)
  • @egjs/vue-infinitegrid
    • init vue-infinitegrid (127e684)
    • init vue-infinitegrid layouts (44dccbd)
    • use named slot as loading element (64db738)
  • Other
    • add observeChildren option (#481) (c821b4c)
    • add percentage option #121 (#367) (addffc1)
    • add removeByIndex method (#291) (1c37ecf)
    • add resizeDebounce, maxResizeDebounce (#361) (8dc5732)
    • add row option to JustifiedLayout (#383) (9e9ff2c)
    • add useOffset option (#412) (78d36c9)
    • all: add getStatus/setStatus (d007ebb)
    • all: add getStatus/setStatus (6008e3d)
    • all: add getStatus/setStatus (d78d000)
    • all: add isTrusted properties (78abe2d), closes #60
    • all: support IE8 (0557460)
    • DOMRanderer: update size (a008f34)
    • DOMRenderer: add orgSize property (62b7c9c)
    • Infinite: add change event (4e40bd7)
    • Infinite: add change event (d26cb98)
    • Infinite: add getCursor method (8febfa5)
    • Infinite: add getGroupKeys (f5c8bf4)
    • Infinite: add getItems (d8e6207)
    • Infinite: add infinite (459c5bf)
    • InfiniteGrid,eventHandler: add isTrusted property in event (#39) (403464b), closes #33
    • InfiniteGrid: add event parameter 'isScroll' (59b5932)
    • InfiniteGrid: add getItem, updateItem, updateItems method (#248) (3f92113)
    • InfiniteGrid: add ImageError event (#89) (0b4873f)
    • InfiniteGrid: add infinite module (408fdf4)
    • InfiniteGrid: add isConstantSize option (#198) (a9cfe40)
    • InfiniteGrid: add itemSelector option (#17) (b17fdd3), closes #2
    • InfiniteGrid: add loading bar (a77751e)
    • InfiniteGrid: add loading events (6bcae6a)
    • InfiniteGrid: add moveTo method (77bcb94)
    • InfiniteGrid: add moveTo method (18a20f9)
    • InfiniteGrid: add transitionDuration option (#199) (646e87d), closes #133
    • InfiniteGrid: add version in InfiniteGrid module (93adb6f)
    • InfiniteGrid: change direction option to horizontal (04c6181)
    • InfiniteGrid: make infinitegrid (f27a7e8)
    • InfiniteGrid: save/restore scroll position in get/setStatus (#38) (1576c44), closes #36
    • infiniteGrid: support (1ad6b3b)
    • InfiniteGrid: Support layout when items already have contained (#59) (3d9f347), closes #56
    • Infinite: separate infinite module (2824bd3)
    • Infnite: add useRecyle (b02245c)
    • ItemManager: add indexOf method (c72eeee)
    • Layout: add common constant ALIGN (dda0ea6)
    • Layout: add FacebookLayout (818f131)
    • Layout: add FacebookLayout (5323c6b)
    • Layout: add FrameLayout (a7e5708)
    • Layout: add FrameLayout (3c4cc02)
    • Layout: add FrameLayout (7b18694)
    • Layout: add FrameLayout (926bd4a)
    • Layout: add FrameLayout (#51) (f493e48)
    • Layout: add FrameLayout (#51) (966fd02)
    • Layout: add GoogleLayout (e3b2d4b)
    • Layout: add GoogleLayout (4a31b7a)
    • Layout: add GoogleLayout on outline (2410fb0)
    • Layout: add GoogleLayout on outline (d231f79)
    • Layout: add GridLayout (f7de0a8)
    • Layout: add GridLayout (7e7a59a)
    • Layout: add GridLayout (#49) (e80b7d9)
    • Layout: add index to group's outline (fcc7c3b)
    • Layout: add index to group's outline (be738d8)
    • Layout: add JustifiedLayout (#44) (8110fe6)
    • Layout: add LightBoxLayout (0207af9)
    • Layout: add LightBoxLayout (4ac2ab8)
    • Layout: add PackingLayout (f6d42c7)
    • Layout: add PackingLayout (48ea293)
    • Layout: add prefix underbar to private variable (fa7cb67)
    • LayoutManager: add LayoutManager module and fix Infinite scroll (#197) (e410c6e), closes #135 #173 #185 #186 #192
    • Parallax: add Parallax (ba67c4c)
    • react-infinitegrid: add react component (2024a28), closes #67
    • react-layout: add size percentage option and fix no children error (2e3a66b), closes #163 #166
    • react: add option isEqualSize (caea50a)
    • react: add react-layout package (c1e2d4c)
    • react: add react-layout README (cfeeef4)
    • react: support react component react-layout (#103) (063714b), closes #101
    • support native lazy loading #354 (#368) (8fca094)
    • util: support eventListenerOptions (6e1517c)
    • watcher: add Watcher (bbf1a55)

:bug: Bug Fix

  • @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
    • fix error in multiple groups (#387) (02df50f)
    • fix setStatus method's default value (#373) (5f8f9a2)
  • @egjs/react-infinitegrid, @egjs/infinitegrid
  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid
    • fix scopedSlots (#448) (8e940b5)
    • fix vue container #422 (#423) (61be75e)
  • @egjs/vue-infinitegrid, @egjs/react-infinitegrid
    • fixed the loading bar not rendering initially (#314) (03ec2a1)
  • @egjs/vue-infinitegrid
    • add "name" property on loading component (d2ab1f7)
    • add missing layoutOptions (84195d4)
    • fix that loading element is not render (#366) (d48508f)
    • rendering issue due to loading bar (18da1cb)
  • @egjs/ngx-infinitegrid
    • add defense code #443 (#446) (31c5a7f)
    • fix container for isOverflowScroll (#327) (6062c69)
    • support SSR in angular (#428) (60151d8)
  • @egjs/infinitegrid
    • add files field to package.json (23e37d5)
    • fit groups' outlines for start direction (#502) (51308c0)
    • fix contentError event returns an invalid item #482 (f865dec)
    • fix items to be removed (#500) (8317f39)
    • fix mounted setting (#497) (6d4a281)
    • fix outline calculation (#498) (0446dd4)
    • fix placholder key (#514) (af62a98)
  • @egjs/react-infinitegrid
    • browser: remove global.window for node.js (#233) (b9ae32a), closes #232
    • call next function on componentDidUpdate (#360) (5020356)
    • change findDOMNode to ref #362 (#363) (0bd15ab)
    • fix loading element for first mount #340 (#342) (9f6ac1a)
    • fix loading element visible (#286) (4848d68)
    • fix remove group's last item (#290) (fcf331b)
    • fix strict mode (#476) (64ac1e3)
    • react-infinitegrid: fix layout problem during first rendering (#262) (240be19)
    • react-infinitegrid: fix loading bar (#189) (aefd5cd), closes #170 #188
    • react-infinitegrid: fix no reset data and render first data issue (#181) (2170d6d), closes #179 #180
    • react-infinitegrid: fix package (ad422e5)
    • react-infinitegrid: fix refresh group (#273) (24518ae)
    • react-infinitegrid: fix refresh groups issue (8b9a679)
    • react-infinitegrid: fix setStatus for lazy setStatus (#254) (72042fb)
    • react-infinitegrid: fix status error (#191) (b8fe21b), closes #190
    • react-infinitegrid: fix updateItems for no item (#276) (6891e17)
    • react-infinitegrid: support tree shaking (d02e1b9)
    • update react-infinitegrid (4b4b5f5)
    • update react-infinitegrid (ffd117d)
  • @egjs/svelte-infinitegrid
    • change afterUpdate lifecycle (#304) (4851854)
    • fix setStatus' getter (#377) (16fa80c)
    • fix svelte types (#460) (cace348)
    • fix svelte version issue (#315) (bee5b3d)
    • fix svelte-infinitegrid's typo (6fe14d5)
    • fix types (#457) (f402d62)
    • fix types (#510) (96adfd7)
    • support svelte SSR (#430) (1518182)
  • @egjs/vue3-infinitegrid
  • Other
    • all: add keywords, reduce size, export modules (#137) (c846787), closes #130 #122 #136 #132
    • all: remove Object.assing (ca4e059)
    • browser: fix browser bug (a9441a2)
    • caculate itemSize for no column, no itemSize (#311) (5564e97)
    • change cursor before calling recycle (#319) (0732f66)
    • change cursors in first layout (#380) (7363bf2)
    • component: support IE8 (b321785)
    • connect the visible and invisible areas (#452) (2f30151)
    • declaration: fix InfiniteGrid types (d8d3ffa)
    • demo: fix arrow syntax (b87289a)
    • demo: fix innerHeight for IE (9970066)
    • demo: image url (bc20f2c)
    • DOMRenderer: apply QA (2a620dc)
    • DOMRenderer: defense browser for webkit below 537 (177600b)
    • DOMRenderer: fix constructor options's initialize (eafb8c9)
    • DOMRenderer: fix offsetTop for isOverflowScroll (21bda49)
    • DOMRenderer: fix resize for display: none (#278) (44df9e6)
    • DOMRenderer: fix setTransition (b6d1036)
    • DOMRenderer: prevent adding duplicate element (9fafb21)
    • DOMRenderer: remove link (43f9d35)
    • DOMRenderer: remove scrollBy method (345c210)
    • DOMRenderer: remove unnecessary method (c8c83cf)
    • DOMRenderer: restore style after destroy (4b54f68), closes #73
    • DOMRenderer: support cross browser (08525e5)
    • DOMRenderer: treat no parentNode (59c6ec2)
    • eventHandler: fix resize event when isOverflowScroll:true (#15) (708cf33)
    • fix attribute name in SquareLayout (#309) (3afa4ff)
    • fix bug that el is null (#284) (9903e10)
    • fix changed data (#392) (d1d2040)
    • fix container's height (#426) (719b8ee)
    • fix destroy method (#404) (42abbbf)
    • fix first rendering items (#437) (21300ac)
    • fix infinitegrid dependency (#323) (246f9d8)
    • fix item position not set with row option (#385) (9b78c95)
    • fix prepending first item's position (#338) (553bd3c)
    • fix random key, groupkey (#438) (cfe22d6)
    • fix SquareLayout's outline caculation (#339) (7fbb582)
    • fix status recovery (#445) (b93e154), closes #444
    • fix to change infinite viewSize after resize (#401) (7588775)
    • FrameLayout: fix layout function for prepended items (58a5c61)
    • GridLayout: remove fill method (988f7e6)
    • if you have data to prepend, request it (#281) (f284f15)
    • ImageLoaded: add asynchronous code (a8a8682)
    • ImageLoaded: add logic to check image element (8a19363)
    • ImageLoaded: fix that itemIndex is undefined (00fa6fd)
    • InfinieGrid: fix bug for resize (#53) (efd111c), closes #52
    • Infinite: add itemManager method (53f11c8)
    • Infinite: fix Infinite recycle point (e5b8af3)
    • Infinite: fix infinite scroll (fed913e)
    • infinite: fix recycle bug (d543ae4)
    • infinite: fix recycle bug (4c67af4)
    • Infinite: fix recycle visible area (f174f26)
    • infinitegrid.d: fix type definition (4b94331)
    • InfiniteGrid: add export infinite (c9361cd)
    • InfiniteGrid: apply PR (46ff8da)
    • InfiniteGrid: apply PR (eb6f257)
    • InfiniteGrid: apply QA (481eb20)
    • InfiniteGrid: apply QA (fa686ab)
    • InfiniteGrid: apply useRecycle options (f3c4c17)
    • InfiniteGrid: caculate outline after image complete (#92) (c62e519)
    • InfiniteGrid: change isProcessing (eef1f50)
    • InfiniteGrid: change pos (2dfdf3b)
    • InfiniteGrid: convert from JavaScript to TypeScript Project (#257) (21ec226)
    • InfiniteGrid: fix attached scroll and no request append event (#229) (e8e1f42), closes #227 #228
    • InfiniteGrid: fix change event (07738c6)
    • InfiniteGrid: fix Circular reference for getstatus (37cbff2)
    • InfiniteGrid: fix getCursor, setCursor and append/prepend event parameter (#203) (99f70db)
    • InfiniteGrid: fix getItems bug (dba0d93)
    • InfiniteGrid: fix innerWidth with window (e664574)
    • InfiniteGrid: fix isProcessing to procesingStatus (84b3f1c)
    • InfiniteGrid: fix isProcessing to procesingStatus (#32) (61b8a5a)
    • InfiniteGrid: fix items' is empty (a7c7637)
    • InfiniteGrid: fix layoutComplete to reset position (ca4e2b0)
    • InfiniteGrid: fix moveto and recycle bug (33b6b1d)
    • InfiniteGrid: fix pos (f917078)
    • InfiniteGrid: fix processingStatus in getStatus (#159) (a8015e6), closes #156 #157
    • InfiniteGrid: fix recycle structure (#34) (0df57ea)
    • InfiniteGrid: fix recyle structure (17f220d)
    • InfiniteGrid: fix remove method (59ddabd)
    • InfiniteGrid: fix resize, itemsize, outline bug (#153) (e354355), closes #144 #151 #152
    • InfiniteGrid: fix scroll error in moveTo method (#125) (950e906)
    • InfiniteGrid: fix scroll issue for IOS (6adf016)
    • InfiniteGrid: fix setStatus for DOM Reverse issue (#226) (decc540), closes #225
    • InfiniteGrid: make Rollup config (#244) (4cfe585)
    • InfiniteGrid: move item index (018b4d8)
    • InfiniteGrid: pass ImageLoaded if isEqualSize is true (#86) (96802ac)
    • InfiniteGrid: prevent code for prepend after append (7400662)
    • InfiniteGrid: prevent prepend when appending (9e58dc2)
    • InfiniteGrid: remove outline data for isRelayout (c9fac32)
    • InfiniteGrid: remove unnecessary method (#94) (3d6d78c), closes #93
    • infinitegrid: support IE8 (79a1854)
    • InfiniteGrid: support tree shaking (#215) (7710242), closes #214
    • InfiniteGrid: support type definition for Layouts and others. (#124) (8ac8947)
    • InfiniteGrid: the first render does not absolute position. (#235) (b8e41bf), closes #234
    • Infinite: remove startIndex, endIndex, horizontal (dc9df44)
    • Infinite: treat unknown outline (69ec34d)
    • ItemManager: add IGNORE_CLASSNAME for loadingBar (d381877)
    • ItemManager: disconnect link with renderer (1204fb6)
    • ItemManager: fix getStatus (ef0c356)
    • ItemManager: fix that the group without items are not deleted. (#261) (1b29952)
    • JustifiedLayout: fix bug for max node (d914cde)
    • JustifiedLayout: fix bug for min node (1304c15)
    • JustifiedLayout: fix node bug (7a2d8e9)
    • JustifiedLayout: fix size error (4b31e50), closes #164
    • Layout: add prepending code (b5638e9)
    • Layout: add prepending code (a82f033)
    • Layout: fix bug for empty array (30fd684)
    • Layout: fix bug for empty array (5e617d8)
    • Layout: fix bug for empty array (8f2472d)
    • Layout: fix bug for empty array (e7aa8c3)
    • Layout: fix bug for empty array. (9b636d2)
    • Layout: fix eslint error (c7f253c)
    • Layout: fix README (260827e)
    • Layout: fix README (3fd88da)
    • Layout: fix viewport (f03a971)
    • Layout: fix viewport (0980afc)
    • layoutManager: fix bug status (5da786f)
    • layoutManager: fix getTopItem (c3764ce)
    • LayoutManager: fix resize issue for isEqualSize (#222) (e33a6d1), closes #221
    • Layout: move lib file (3a671ea)
    • Layout: move lib file (c4b8663)
    • Layout: remove prefix underbar and rename viewport to size (cf82acd)
    • Layout: remove prefix underbar and rename viewport to size (f35e4af)
    • Layout: support IE11 (4bc83d9)
    • PackingLayout: remove get/set property (97187aa)
    • Parallax: support Parallax type (#268) (350e1b3), closes #267
    • Parallax: support webkit-transform (9a03c6a)
    • react-layout: fix children and componentWillUnmoount bug (72b7990), closes #144
    • react-layout: fix componentWillUnmount error (#139, #140) (76b1eb2), closes #138
    • react-layout: fix module error and React 16 error (#127) (ab581f1), closes #126
    • react-layout: fix reset method (#178) (b3fe6e7), closes #177
    • react-layout: fix setState bug (#160) (31221b5), closes #155 #158
    • react: apply review (a84059e)
    • react: fix README (5213a17)
    • react: fix shouldComponentUpdate (3164477)
    • read children's groupKey (#320) (e97ebd0)
    • README: fix README (d51e8d9)
    • scripts: fix auto caculate size script (a5c7601)
    • SquareLayout: apply QA (5026552)
    • support event types (#358) (d8cadad)
    • utils: add defence code (64b2e47)
    • utils: fix decimal point error (#176) (f89debf), closes #169 #175
    • utils: fix jQuery type error (#224) (8e393a0)
    • utils: support IE8 (394ed3d)
    • Watcher: add scrollBy method (3641a31)
    • Watcher: fix init order (#231) (f75590d), closes #230
    • Watcher: fix resize method (853f54a)
    • Watcher: fix watcher offset (#194) (4a1b694), closes #193
    • Watcher: if prevPos is null, occur append event (dbb0c1b)
    • Watcher: recycle issue (4f97742)
    • Watcher: remove link with renderer (af25a69)
    • Watcher: when resizing prevPos is weired (069b7d9)
    • Watcher: workaround for IOS (0fe6220)

:memo: Documentation

  • @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid
    • add vue2/3 readme link (#421) (dfe547e)
  • @egjs/vue-infinitegrid
    • change copyright year (fa925ec)
    • change Vue demo link (942a12f)
    • fix startLoading & endLoading usage (afc032c)
    • typos at vue-infinitegrid README (233370f)
    • update Demo dir link (24f56ea)
  • @egjs/react-infinitegrid
    • fix misnamed function parameter (#378) (3762702)
  • @egjs/infinitegrid
  • Other

:sparkles: Styling

  • @egjs/vue-infinitegrid
    • add missing editorconfig (fa8c2fc)
  • Other
    • InfiniteGrid: fix variable name vertical to horizontal (3ac31d1)
    • Layout: remove useless variable (f477a04)
    • Layout: remove useless variable (5b39ea3)
    • Layout: remove useless variable (9ab53a5)
    • Layout: remove useless variable (13deaa3)

:house: Code Refactoring

  • @egjs/react-infinitegrid, @egjs/ngx-infinitegrid, @egjs/infinitegrid
  • Other
    • all: complete refactoring (e20aec9)
    • all: fix env && remove infinite (e421314)
    • all: refactoring infiniteGrid (4697c14)
    • all: refactoring WIP (1dbca34)
    • all: refactoring WIP (6de6fc9)
    • Apply infinitegrid to the framework (#295) (1ffcc43)
    • infinite: refactor modules (WIP) (ff28a0e)
    • Layout: fixed size (6821e2c)

:mega: Other

  • All
  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
  • @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid
  • @egjs/infinitegrid
  • @egjs/react-infinitegrid
    • react-infinitegrid: update infinitegrid version (c9357b2)
    • remove browser field (#486) (14b063c)
  • @egjs/vue-infinitegrid
  • Other

4.7.0 (2022-09-02)

:sparkles: Packages

  • @egjs/infinitegrid 4.7.0
  • @egjs/react-infinitegrid 4.7.0
  • @egjs/svelte-infinitegrid 4.7.0
  • @egjs/vue-infinitegrid 4.7.0
  • @egjs/vue3-infinitegrid 4.7.0
  • @egjs/ngx-infinitegrid 4.7.0

:rocket: New Features

  • @egjs/ngx-infinitegrid, @egjs/infinitegrid
    • add scrollContainer option (#511) (78043ad)

:bug: Bug Fix

  • @egjs/react-infinitegrid, @egjs/infinitegrid
  • @egjs/infinitegrid
    • fix placholder key (#514) (af62a98)
  • @egjs/svelte-infinitegrid

:mega: Other

  • All
    • update packages versions (e438c00)

4.6.0 (2022-07-26)

:sparkles: Packages

  • @egjs/infinitegrid 4.6.0
  • @egjs/react-infinitegrid 4.6.0
  • @egjs/svelte-infinitegrid 4.6.0
  • @egjs/vue-infinitegrid 4.6.0
  • @egjs/vue3-infinitegrid 4.6.0
  • @egjs/ngx-infinitegrid 4.6.0

:bug: Bug Fix

  • @egjs/infinitegrid
    • fit groups' outlines for start direction (#502) (51308c0)
    • fix items to be removed (#500) (8317f39)
    • fix mounted setting (#497) (6d4a281)
    • fix outline calculation (#498) (0446dd4)

:mega: Other

  • All
    • update packages versions (d4aa615)

4.5.0 (2022-06-23)

:sparkles: Packages

  • @egjs/infinitegrid 4.5.0
  • @egjs/react-infinitegrid 4.5.0
  • @egjs/svelte-infinitegrid 4.5.0
  • @egjs/vue-infinitegrid 4.5.0
  • @egjs/vue3-infinitegrid 4.5.0
  • @egjs/ngx-infinitegrid 4.5.0

:rocket: New Features

  • @egjs/infinitegrid
    • add insertByGroupIndex method (#489) (87a06ef)
    • add nextGroupKeys property in request events (#493) (b0260ad)

:mega: Other

  • All
    • update packages versions (171bb74)
  • @egjs/react-infinitegrid
    • remove browser field (#486) (14b063c)

4.4.0 (2022-05-25)

:sparkles: Packages

  • @egjs/infinitegrid 4.4.0
  • @egjs/react-infinitegrid 4.4.0
  • @egjs/svelte-infinitegrid 4.4.0
  • @egjs/vue-infinitegrid 4.4.0
  • @egjs/vue3-infinitegrid 4.4.0
  • @egjs/ngx-infinitegrid 4.4.0

:rocket: New Features

  • @egjs/react-infinitegrid, @egjs/infinitegrid
    • add includePlaceholders param (#484) (39852c3)

:mega: Other

  • All
    • update packages versions (29bdea0)

4.3.1 (2022-05-17)

:sparkles: Packages

  • @egjs/infinitegrid 4.3.1
  • @egjs/react-infinitegrid 4.3.1
  • @egjs/svelte-infinitegrid 4.3.1
  • @egjs/vue-infinitegrid 4.3.1
  • @egjs/vue3-infinitegrid 4.3.1
  • @egjs/ngx-infinitegrid 4.3.1

:bug: Bug Fix

  • @egjs/infinitegrid
    • fix contentError event returns an invalid item #482 (f865dec)

:memo: Documentation

  • @egjs/infinitegrid
  • Other

:mega: Other

  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
    • update packages versions (47f9348)
  • @egjs/infinitegrid

4.3.0 (2022-05-13)

:sparkles: Packages

  • @egjs/infinitegrid 4.3.0
  • @egjs/react-infinitegrid 4.3.0
  • @egjs/svelte-infinitegrid 4.3.0
  • @egjs/vue-infinitegrid 4.3.0
  • @egjs/vue3-infinitegrid 4.3.0
  • @egjs/ngx-infinitegrid 4.3.0

:rocket: New Features

  • add observeChildren option (#481) (c821b4c)

:bug: Bug Fix

  • @egjs/react-infinitegrid

:house: Code Refactoring

  • @egjs/react-infinitegrid, @egjs/ngx-infinitegrid, @egjs/infinitegrid

:mega: Other

  • @egjs/vue3-infinitegrid, @egjs/vue-infinitegrid, @egjs/svelte-infinitegrid, @egjs/react-infinitegrid, @egjs/ngx-infinitegrid
    • update packages versions (bc07e37)
  • @egjs/infinitegrid