74 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<div class="accounts-page">
 | 
						|
  {#if loading}
 | 
						|
    <LoadingPage />
 | 
						|
  {:elseif accounts && accounts.length}
 | 
						|
    <ul class="accounts-results">
 | 
						|
      {#each accounts as account}
 | 
						|
        <AccountSearchResult
 | 
						|
          {account}
 | 
						|
          actions={accountActions}
 | 
						|
          on:click="onClickAction(event)"
 | 
						|
        />
 | 
						|
      {/each}
 | 
						|
    </ul>
 | 
						|
  {/if}
 | 
						|
</div>
 | 
						|
<style>
 | 
						|
  .accounts-page {
 | 
						|
    padding: 20px 20px;
 | 
						|
    position: relative;
 | 
						|
  }
 | 
						|
  .accounts-results {
 | 
						|
    list-style: none;
 | 
						|
    box-sizing: border-box;
 | 
						|
    border: 1px solid var(--main-border);
 | 
						|
    border-radius: 2px;
 | 
						|
  }
 | 
						|
  @media (max-width: 767px) {
 | 
						|
    .accounts-page {
 | 
						|
      padding: 20px 10px;
 | 
						|
    }
 | 
						|
  }
 | 
						|
</style>
 | 
						|
<script>
 | 
						|
  import { store } from '../_store/store'
 | 
						|
  import LoadingPage from '../_components/LoadingPage.html'
 | 
						|
  import AccountSearchResult from '../_components/search/AccountSearchResult.html'
 | 
						|
  import { toast } from '../_utils/toast'
 | 
						|
  import { on } from '../_utils/eventBus'
 | 
						|
 | 
						|
  // TODO: paginate
 | 
						|
  export default {
 | 
						|
    async oncreate () {
 | 
						|
      try {
 | 
						|
        await this.refreshAccounts()
 | 
						|
      } catch (e) {
 | 
						|
        toast.say('Error: ' + (e.name || '') + ' ' + (e.message || ''))
 | 
						|
      } finally {
 | 
						|
        this.set({ loading: false })
 | 
						|
      }
 | 
						|
      on('refreshAccountsList', this, () => this.refreshAccounts())
 | 
						|
    },
 | 
						|
    data: () => ({
 | 
						|
      loading: true,
 | 
						|
      accounts: [],
 | 
						|
      accountActions: void 0
 | 
						|
    }),
 | 
						|
    store: () => store,
 | 
						|
    components: {
 | 
						|
      LoadingPage,
 | 
						|
      AccountSearchResult
 | 
						|
    },
 | 
						|
    methods: {
 | 
						|
      onClickAction (event) {
 | 
						|
        let { action, accountId } = event
 | 
						|
        action.onclick(accountId)
 | 
						|
      },
 | 
						|
      async refreshAccounts () {
 | 
						|
        let { accountsFetcher } = this.get()
 | 
						|
        let accounts = await accountsFetcher()
 | 
						|
        this.set({ accounts: accounts })
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
</script> |