updated a bit
This commit is contained in:
		
							parent
							
								
									a3652a772d
								
							
						
					
					
						commit
						f39e561af7
					
				| 
						 | 
				
			
			@ -184,6 +184,7 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
 | 
			
		|||
		fileTypes 				:= map[string]bool{}
 | 
			
		||||
		fileSize				:= getFileSize(pathName)
 | 
			
		||||
		matchesCondition 		:= false
 | 
			
		||||
		matchesAllConditions	:= true
 | 
			
		||||
		extension 				:= filepath.Ext(strings.ToLower(path))
 | 
			
		||||
		mimetype 				:= mime.TypeByExtension(extension)
 | 
			
		||||
		fileTypes["audio"] 		= strings.HasPrefix(mimetype, "audio")
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +193,7 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
 | 
			
		|||
		fileTypes["doc"] 		= isDoc(extension)
 | 
			
		||||
		fileTypes["archive"] 	= isArchive(extension)
 | 
			
		||||
		fileTypes["dir"]		= isDir
 | 
			
		||||
		anyFilter 				:= false
 | 
			
		||||
 | 
			
		||||
		for t,v := range conditions {
 | 
			
		||||
			switch t {
 | 
			
		||||
			case "exact"	: continue
 | 
			
		||||
| 
						 | 
				
			
			@ -200,12 +201,12 @@ func containsSearchTerm(pathName string, searchTerm string, options searchOption
 | 
			
		|||
			case "smaller"	: matchesCondition = fileSize < int64(options.Size) * 1000000
 | 
			
		||||
			default			: matchesCondition = v == fileTypes[t]
 | 
			
		||||
			}
 | 
			
		||||
			anyFilter = true
 | 
			
		||||
			if (!matchesCondition) {
 | 
			
		||||
				matchesAllConditions = false
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if !anyFilter {
 | 
			
		||||
			matchesCondition = true
 | 
			
		||||
		}
 | 
			
		||||
		return matchesCondition, fileTypes
 | 
			
		||||
 | 
			
		||||
		return matchesAllConditions, fileTypes
 | 
			
		||||
	}
 | 
			
		||||
	return false, map[string]bool{}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +1,12 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div id="search" @click="open" v-bind:class="{ active, ongoing }">
 | 
			
		||||
    <div id="input">
 | 
			
		||||
      <button
 | 
			
		||||
        v-if="active"
 | 
			
		||||
        class="action"
 | 
			
		||||
        @click="close"
 | 
			
		||||
        :aria-label="$t('buttons.close')"
 | 
			
		||||
        :title="$t('buttons.close')"
 | 
			
		||||
      >
 | 
			
		||||
      <button v-if="active" class="action" @click="close" :aria-label="$t('buttons.close')" :title="$t('buttons.close')">
 | 
			
		||||
        <i class="material-icons">close</i>
 | 
			
		||||
      </button>
 | 
			
		||||
      <i v-else class="material-icons">search</i>
 | 
			
		||||
      <input
 | 
			
		||||
        type="text"
 | 
			
		||||
        @keyup.exact="keyup"
 | 
			
		||||
        @input="submit"
 | 
			
		||||
        ref="input"
 | 
			
		||||
        :autofocus="active"
 | 
			
		||||
        v-model.trim="value"
 | 
			
		||||
        :aria-label="$t('search.search')"
 | 
			
		||||
        :placeholder="$t('search.search')"
 | 
			
		||||
      />
 | 
			
		||||
      <input type="text" @keyup.exact="keyup" @input="submit" ref="input" :autofocus="active" v-model.trim="value"
 | 
			
		||||
        :aria-label="$t('search.search')" :placeholder="$t('search.search')" />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div v-if="isMobile && active" id="result" :class="{ hidden: !active }" ref="result">
 | 
			
		||||
      <div id="result-list">
 | 
			
		||||
| 
						 | 
				
			
			@ -28,12 +14,7 @@
 | 
			
		|||
          Search Context: {{ getContext(this.$route.path) }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <ul v-show="results.length > 0">
 | 
			
		||||
          <li
 | 
			
		||||
            v-for="(s, k) in results"
 | 
			
		||||
            :key="k"
 | 
			
		||||
            @click.stop.prevent="navigateTo(s.url)"
 | 
			
		||||
            style="cursor: pointer"
 | 
			
		||||
          >
 | 
			
		||||
          <li v-for="(s, k) in results" :key="k" @click.stop.prevent="navigateTo(s.url)" style="cursor: pointer">
 | 
			
		||||
            <router-link to="#" event="">
 | 
			
		||||
              <i v-if="s.dir" class="material-icons folder-icons"> folder </i>
 | 
			
		||||
              <i v-else-if="s.audio" class="material-icons audio-icons"> volume_up </i>
 | 
			
		||||
| 
						 | 
				
			
			@ -47,20 +28,17 @@
 | 
			
		|||
            </router-link>
 | 
			
		||||
          </li>
 | 
			
		||||
        </ul>
 | 
			
		||||
        <p v-show="isEmpty && isRunning" id="renew">
 | 
			
		||||
          <i class="material-icons spin">autorenew</i>
 | 
			
		||||
        </p>
 | 
			
		||||
        <p v-show="isEmpty && !isRunning">{{ text }}</p>
 | 
			
		||||
        <template v-if="isEmpty">
 | 
			
		||||
          <p >{{ text }}</p>
 | 
			
		||||
          <template v-if="value.length === 0">
 | 
			
		||||
            <div class="boxes">
 | 
			
		||||
              <h3>{{ $t("search.types") }}</h3>
 | 
			
		||||
              <div>
 | 
			
		||||
                <div
 | 
			
		||||
                  tabindex="0"
 | 
			
		||||
                  v-for="(v, k) in boxes"
 | 
			
		||||
                  :key="k"
 | 
			
		||||
                  role="button"
 | 
			
		||||
                  @click="init('type:' + k)"
 | 
			
		||||
                  :aria-label="v.label"
 | 
			
		||||
                >
 | 
			
		||||
                <div tabindex="0" v-for="(v, k) in boxes" :key="k" role="button" @click="init('type:' + k)"
 | 
			
		||||
                  :aria-label="v.label">
 | 
			
		||||
                  <i class="material-icons">{{ v.icon }}</i>
 | 
			
		||||
                  <p>{{ v.label }}</p>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -76,12 +54,7 @@
 | 
			
		|||
          Search Context: {{ getContext(this.$route.path) }}
 | 
			
		||||
        </div>
 | 
			
		||||
        <ul v-show="results.length > 0">
 | 
			
		||||
          <li
 | 
			
		||||
            v-for="(s, k) in results"
 | 
			
		||||
            :key="k"
 | 
			
		||||
            @click.stop.prevent="navigateTo(s.url)"
 | 
			
		||||
            style="cursor: pointer"
 | 
			
		||||
          >
 | 
			
		||||
          <li v-for="(s, k) in results" :key="k" @click.stop.prevent="navigateTo(s.url)" style="cursor: pointer">
 | 
			
		||||
            <router-link to="#" event="">
 | 
			
		||||
              <i v-if="s.dir" class="material-icons folder-icons"> folder </i>
 | 
			
		||||
              <i v-else-if="s.audio" class="material-icons audio-icons"> volume_up </i>
 | 
			
		||||
| 
						 | 
				
			
			@ -95,25 +68,16 @@
 | 
			
		|||
            </router-link>
 | 
			
		||||
          </li>
 | 
			
		||||
        </ul>
 | 
			
		||||
        <template >
 | 
			
		||||
          <p v-show="isEmpty" >{{ text }}</p>
 | 
			
		||||
          <template >
 | 
			
		||||
        <template>
 | 
			
		||||
          <p v-show="isEmpty && isRunning" id="renew">
 | 
			
		||||
            <i class="material-icons spin">autorenew</i>
 | 
			
		||||
          </p>
 | 
			
		||||
          <p v-show="isEmpty && !isRunning">{{ text }}</p>
 | 
			
		||||
          <template>
 | 
			
		||||
            <div v-show="results.length == 0" class="boxes">
 | 
			
		||||
              <ButtonGroup
 | 
			
		||||
                :buttons="folderSelect"
 | 
			
		||||
                @button-clicked="init"
 | 
			
		||||
                @remove-button-clicked="removeInit"
 | 
			
		||||
              />
 | 
			
		||||
              <ButtonGroup
 | 
			
		||||
                :buttons="typeSelect"
 | 
			
		||||
                @button-clicked="init"
 | 
			
		||||
                @remove-button-clicked="removeInit"
 | 
			
		||||
              />
 | 
			
		||||
              <ButtonGroup
 | 
			
		||||
                :buttons="sizeSelect"
 | 
			
		||||
                @button-clicked="init"
 | 
			
		||||
                @remove-button-clicked="removeInit"
 | 
			
		||||
              />
 | 
			
		||||
              <ButtonGroup :buttons="folderSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
 | 
			
		||||
              <ButtonGroup :buttons="typeSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
 | 
			
		||||
              <ButtonGroup :buttons="sizeSelect" @button-clicked="init" @remove-button-clicked="removeInit" />
 | 
			
		||||
            </div>
 | 
			
		||||
          </template>
 | 
			
		||||
        </template>
 | 
			
		||||
| 
						 | 
				
			
			@ -151,10 +115,11 @@ export default {
 | 
			
		|||
        { label: "Only Files", value: "type:file" },
 | 
			
		||||
      ],
 | 
			
		||||
      typeSelect: [
 | 
			
		||||
        { label: "Archives", value: "type:archive" },
 | 
			
		||||
        { label: "Audio Files", value: "type:audio" },
 | 
			
		||||
        { label: "Photos", value: "type:image" },
 | 
			
		||||
        { label: "Audio", value: "type:audio" },
 | 
			
		||||
        { label: "Videos", value: "type:video" },
 | 
			
		||||
        { label: "Documents", value: "type:docs" },
 | 
			
		||||
        { label: "Archives", value: "type:archive" },
 | 
			
		||||
      ],
 | 
			
		||||
      sizeSelect: [
 | 
			
		||||
        { label: "Smaller than 100MB", value: "type:smaller=100" },
 | 
			
		||||
| 
						 | 
				
			
			@ -215,6 +180,9 @@ export default {
 | 
			
		|||
    isMobile() {
 | 
			
		||||
      return this.width <= 800;
 | 
			
		||||
    },
 | 
			
		||||
    isRunning() {
 | 
			
		||||
      return this.ongoing;
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener("resize", this.handleResize);
 | 
			
		||||
| 
						 | 
				
			
			@ -266,20 +234,20 @@ export default {
 | 
			
		|||
      this.results.length === 0;
 | 
			
		||||
    },
 | 
			
		||||
    init(string) {
 | 
			
		||||
      if (string == null || string == ""){
 | 
			
		||||
      if (string == null || string == "") {
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.value = `${string} ${this.value}`;
 | 
			
		||||
      if (this.isMobile){
 | 
			
		||||
      if (this.isMobile) {
 | 
			
		||||
        this.$refs.input.focus();
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    removeInit(string) {
 | 
			
		||||
      if (string == null || string == ""){
 | 
			
		||||
      if (string == null || string == "") {
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.value = this.value.replace(string+" ", "");
 | 
			
		||||
      if (this.isMobile){
 | 
			
		||||
      this.value = this.value.replace(string + " ", "");
 | 
			
		||||
      if (this.isMobile) {
 | 
			
		||||
        this.$refs.input.focus();
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -301,7 +269,6 @@ export default {
 | 
			
		|||
      } catch (error) {
 | 
			
		||||
        this.$showError(error);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.ongoing = false;
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -188,6 +188,7 @@ body.rtl .breadcrumbs a {
 | 
			
		|||
 | 
			
		||||
/* File Selection */
 | 
			
		||||
#file-selection {
 | 
			
		||||
  box-shadow: rgba(0, 0, 0, 0.3) 0px 2em 50px 10px;
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  bottom: 1em;
 | 
			
		||||
  left: 50%;
 | 
			
		||||
| 
						 | 
				
			
			@ -196,10 +197,8 @@ body.rtl .breadcrumbs a {
 | 
			
		|||
  -ms-flex-align: center;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  background: #fff;
 | 
			
		||||
  -webkit-box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
 | 
			
		||||
  box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
 | 
			
		||||
  width: 95%;
 | 
			
		||||
  max-width: 25em;
 | 
			
		||||
  max-width: 30em;
 | 
			
		||||
  z-index: 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,7 +171,7 @@ body.rtl #search #result ul>* {
 | 
			
		|||
  width: 100%;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  display: none;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  margin: 1em;
 | 
			
		||||
  max-width: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -179,6 +179,18 @@ body.rtl #search #result ul>* {
 | 
			
		|||
  display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#search #result-desktop #renew {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  display: none;
 | 
			
		||||
  margin: 1em;
 | 
			
		||||
  max-width: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#search.ongoing #result-desktop #renew {
 | 
			
		||||
  display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Icon Colors */
 | 
			
		||||
.folder-icons {
 | 
			
		||||
  color: var(--icon-blue);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue