77 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<form class="search-input-form" on:submit="onSubmit(event)">
 | 
						|
  <div class="search-input-wrapper">
 | 
						|
    <input type="search"
 | 
						|
           class="search-input"
 | 
						|
           placeholder="Search"
 | 
						|
           aria-label="Search input"
 | 
						|
           required
 | 
						|
           bind:value="$queryInSearch">
 | 
						|
  </div>
 | 
						|
  <button type="submit" class="primary search-button" aria-label="Search" disabled="{{$searchLoading}}">
 | 
						|
    <svg class="search-button-svg">
 | 
						|
      <use xlink:href="#fa-search" />
 | 
						|
    </svg>
 | 
						|
  </button>
 | 
						|
</form>
 | 
						|
{{#if $searchLoading}}
 | 
						|
  <div class="search-results-container">
 | 
						|
    <LoadingPage />
 | 
						|
  </div>
 | 
						|
{{elseif $searchResults && $searchResultsForQuery === $queryInSearch}}
 | 
						|
  <div class="search-results-container">
 | 
						|
    <SearchResults />
 | 
						|
  </div>
 | 
						|
{{/if}}
 | 
						|
<style>
 | 
						|
  .search-input-form {
 | 
						|
    display: grid;
 | 
						|
    grid-template-columns: 1fr min-content;
 | 
						|
    grid-gap: 10px;
 | 
						|
  }
 | 
						|
  .search-input-wrapper {
 | 
						|
    position: relative;
 | 
						|
    display: flex;
 | 
						|
    justify-content: center;
 | 
						|
    align-items: center;
 | 
						|
  }
 | 
						|
  .search-input {
 | 
						|
    padding: 10px 15px;
 | 
						|
    border-radius: 10px;
 | 
						|
    flex: 1;
 | 
						|
  }
 | 
						|
  .search-button-svg {
 | 
						|
    fill: var(--button-primary-text);
 | 
						|
    width: 18px;
 | 
						|
    height: 18px;
 | 
						|
    flex: 1;
 | 
						|
  }
 | 
						|
  .search-results-container {
 | 
						|
    position: relative;
 | 
						|
    margin-top: 20px;
 | 
						|
  }
 | 
						|
  @media (min-width: 768px) {
 | 
						|
    .search-button {
 | 
						|
      min-width: 100px;
 | 
						|
    }
 | 
						|
  }
 | 
						|
</style>
 | 
						|
<script>
 | 
						|
  import { store } from '../../_store/store'
 | 
						|
  import LoadingPage from '../LoadingPage.html'
 | 
						|
  import { doSearch } from '../../_actions/search'
 | 
						|
  import SearchResults from './SearchResults.html'
 | 
						|
 | 
						|
  export default {
 | 
						|
    store: () => store,
 | 
						|
    components: {
 | 
						|
      LoadingPage,
 | 
						|
      SearchResults
 | 
						|
    },
 | 
						|
    methods: {
 | 
						|
      async onSubmit (e) {
 | 
						|
        e.preventDefault()
 | 
						|
        doSearch()
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
</script> |