Comments (2)
It doesn't seem like there is a way to accomplish the frozen
functionality with the native API.
However, changing grid._items
when a layoutStart
event is emitted from the grid changes the resultant layout. For example, this swaps the first two items
of the grid
whenever an item
is dragged and a sort should occur:
grid.on('layoutStart', function(items, isInstant) {
[grid._items[0], grid._items[1]] = [grid._items[1], grid._items[0]]
});
My idea now is to keep track of grid._items
before and after every layoutStart
event, take a diff, then determine whether the items
that have been moved to a different index of grid._items
should be put back where they belong before the sort
animation occurs, based on if they are frozen
.
Is there a better way to do this? I have also considered changing the source code to make it better suited for freezing items.
from muuri.
Muuri is very well architected, and written. Reading the source was the most pleasurable experience I have ever had with vanilla js.
I ended up changing some of the source code, specifically the grid.move
and grid.swap
functions, along with a public prototype method to set the frozenIndexes
safely. The changes are on this fork of muuri.
Note that this is not the most performant or ergonomic way to accomplish this. For my usecase, each grid
has at max 8 items
, so performance doesn't really matter.
Also, it has not been tested on 2D grids.
from muuri.
Related Issues (20)
- 卡片
- Issue with horizontal alignment of items
- TypeError: Cannot read properties of undefined (reading 'eventController')
- fillGaps property does not seem to work HOT 1
- Reset grid layout? (draggable grid)
- dragSortPredicate does not seem to work properly HOT 2
- question: drag/sort behaviour without the drag & sort HOT 1
- Retrieve the position of hidden grid items in custom layout function
- Is this maintained ? HOT 6
- Scaling Effects during dragging
- vue
- Add a new Item and snap to grid
- Drag Start Delay On Touch
- throws an error "window is not defined" HOT 1
- Muuri Doesn't Work on Tailwindcss Classe HOT 2
- grid.show() doesn't toggle items on, but grid.hide() toggles off. HOT 1
- Incompatible with zoom HOT 1
- Chrome app on iOS. Element glitching when placed in sortable container HOT 2
- How to initiate a grid.move() based on the dragged item's position, even when the item is outside the grid? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from muuri.