* Encrypts all notes going to the database * Creates encrypted snippets for loading note title cards * Creates an encrypted search index when note is changed * Migrates users to encrypted notes on login * Creates new encrypted master keys for newly logged in users
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<style type="text/css" scoped>
 | 
						|
	.fixed-search {
 | 
						|
		position: fixed;
 | 
						|
		top: 50%;
 | 
						|
		left: 0;
 | 
						|
		right: 0;
 | 
						|
		padding: 10px;
 | 
						|
	}
 | 
						|
</style>
 | 
						|
<template>
 | 
						|
	<span>
 | 
						|
 | 
						|
		<div class="ui form" v-if="!$store.getters.getIsUserOnMobile">
 | 
						|
			<!-- normal search menu  -->
 | 
						|
			<div class="ui left icon fluid input">
 | 
						|
				<input v-model="searchTerm" @keyup.enter="search" placeholder="Search Notes and Files" ref="searchInput"/>
 | 
						|
				<i class="search icon"></i>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
 | 
						|
		
 | 
						|
		<span class="ui basic icon button" v-on:click="openFloatingSearch" v-if="$store.getters.getIsUserOnMobile">
 | 
						|
			<i class="green search icon"></i>
 | 
						|
		</span>
 | 
						|
 | 
						|
		<div class="fixed-search" v-if="showFixedSearch">
 | 
						|
			<div class="ui raised segment">
 | 
						|
				<h2 class="ui center aligned header">Search!</h2>
 | 
						|
				<div class="ui form">
 | 
						|
					<div class="ui left icon fluid input">
 | 
						|
						<input 
 | 
						|
							ref="fixedSearch"
 | 
						|
							v-model="searchTerm"
 | 
						|
							@keyup.enter="search"
 | 
						|
							v-on:blur="showFixedSearch = false"
 | 
						|
							placeholder="Press Enter to Search" />
 | 
						|
						<i class="search icon"></i>
 | 
						|
					</div>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
 | 
						|
	</span>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
 | 
						|
	export default {
 | 
						|
 | 
						|
		data: function(){ 
 | 
						|
			return {
 | 
						|
				searchTerm: '',
 | 
						|
				searchTimeout: null,
 | 
						|
				searchDebounceDuration: 300,
 | 
						|
				showFixedSearch: false,
 | 
						|
			}
 | 
						|
		},
 | 
						|
		beforeCreate: function(){
 | 
						|
		},
 | 
						|
		mounted: function(){
 | 
						|
 | 
						|
			//search clear 
 | 
						|
			this.$bus.$on('reset_fast_filters', () => {
 | 
						|
				this.searchTerm = ''
 | 
						|
			})
 | 
						|
 | 
						|
		},
 | 
						|
		methods: {
 | 
						|
			openFloatingSearch(){
 | 
						|
				this.showFixedSearch = !this.showFixedSearch
 | 
						|
 | 
						|
				if(this.showFixedSearch){
 | 
						|
					this.$nextTick( () => {
 | 
						|
						this.searchTerm = ''
 | 
						|
						this.$refs.fixedSearch.focus()
 | 
						|
					})
 | 
						|
				}
 | 
						|
			},
 | 
						|
			searchKeyUp(){
 | 
						|
				//This event is not triggered on mobile
 | 
						|
				clearTimeout(this.searchTimeout)
 | 
						|
				this.searchTimeout = setTimeout(() => {
 | 
						|
					this.search()
 | 
						|
				}, this.searchDebounceDuration)
 | 
						|
			},
 | 
						|
			search(){
 | 
						|
				if(this.$store.getters.getIsUserOnMobile){
 | 
						|
					this.$refs.fixedSearch.blur()
 | 
						|
				}
 | 
						|
				this.$bus.$emit('update_search_term', this.searchTerm)
 | 
						|
			},
 | 
						|
		}
 | 
						|
	}
 | 
						|
</script> |