* start on removing pseudo virtual list * rename, refactor * remove unused file * fix the tests * actually fix tests * okay actually fix tests
		
			
				
	
	
		
			65 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <div class="the-list" on:initialized>
 | |
|   {#each safeItems as item, i (item)}
 | |
|     <ListLazyItem
 | |
|       {component}
 | |
|       index={i}
 | |
|       {length}
 | |
|       {makeProps}
 | |
|       key={item}
 | |
|       on:initialized="itemInitialized()"
 | |
|     />
 | |
|   {/each}
 | |
| </div>
 | |
| <style>
 | |
|   .the-list {
 | |
|     position: relative;
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import ListLazyItem from './ListLazyItem.html'
 | |
|   import { listStore } from './listStore'
 | |
| 
 | |
|   export default {
 | |
|     oncreate () {
 | |
|       let { realm } = this.get()
 | |
|       this.store.setCurrentRealm(realm)
 | |
|     },
 | |
|     ondestroy () {
 | |
|       this.store.setCurrentRealm(null)
 | |
|     },
 | |
|     methods: {
 | |
|       itemInitialized () {
 | |
|         let { initializedCount, length } = this.get()
 | |
|         initializedCount++
 | |
|         this.set({initializedCount})
 | |
|         if (initializedCount === length) {
 | |
|           this.initialize()
 | |
|         }
 | |
|       },
 | |
|       initialize () {
 | |
|         let { scrollToItem } = this.get()
 | |
|         if (scrollToItem) {
 | |
|           let element = document.getElementById(`list-item-${scrollToItem}`)
 | |
|           requestAnimationFrame(() => {
 | |
|             console.log('scrolling element into view')
 | |
|             element.scrollIntoView(true)
 | |
|             this.fire('initialized')
 | |
|           })
 | |
|         } else {
 | |
|           this.fire('initialized')
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     data: () => ({
 | |
|       initializedCount: 0
 | |
|     }),
 | |
|     computed: {
 | |
|       safeItems: ({ items }) => items || [],
 | |
|       length: ({ safeItems }) => safeItems.length
 | |
|     },
 | |
|     components: {
 | |
|       ListLazyItem
 | |
|     },
 | |
|     store: () => listStore
 | |
|   }
 | |
| </script> |