Comments and bugfixes
Former-commit-id: 3379de3702aeb69c83fbeb45df683fc30ea291e3 [formerly 82957c19e2e6fef91c73a74e49e485b4c9463689] [formerly 1020925f8e6f073244fa9b37466920676cf209af [formerly 55c097b2aa0b6cabfa953202588d8196a0d21538]] Former-commit-id: e883c22efcc7f56061676319df571bc99370080a [formerly 71276f1d4aa5ddefdfc0411a4dbb656d459e317a] Former-commit-id: 7f93307b5a56493a2eff07e62185b110012b2293
This commit is contained in:
		
							parent
							
								
									ca9646ff9e
								
							
						
					
					
						commit
						4fd33de5ad
					
				| 
						 | 
					@ -7,6 +7,11 @@
 | 
				
			||||||
  <editor v-else-if="isEditor"></editor>
 | 
					  <editor v-else-if="isEditor"></editor>
 | 
				
			||||||
  <listing :class="{ multiple }" v-else-if="isListing"></listing>
 | 
					  <listing :class="{ multiple }" v-else-if="isListing"></listing>
 | 
				
			||||||
  <preview v-else-if="isPreview"></preview>
 | 
					  <preview v-else-if="isPreview"></preview>
 | 
				
			||||||
 | 
					  <div v-else>
 | 
				
			||||||
 | 
					    <h2 class="message">
 | 
				
			||||||
 | 
					      <span>Loading...</span>
 | 
				
			||||||
 | 
					    </h2>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
| 
						 | 
					@ -16,19 +21,9 @@ import InternalError from './errors/500'
 | 
				
			||||||
import Preview from './Preview'
 | 
					import Preview from './Preview'
 | 
				
			||||||
import Listing from './Listing'
 | 
					import Listing from './Listing'
 | 
				
			||||||
import Editor from './Editor'
 | 
					import Editor from './Editor'
 | 
				
			||||||
import css from '@/utils/css'
 | 
					 | 
				
			||||||
import api from '@/utils/api'
 | 
					import api from '@/utils/api'
 | 
				
			||||||
import { mapGetters, mapState, mapMutations } from 'vuex'
 | 
					import { mapGetters, mapState, mapMutations } from 'vuex'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function updateColumnSizes () {
 | 
					 | 
				
			||||||
  let columns = Math.floor(document.querySelector('main').offsetWidth / 300)
 | 
					 | 
				
			||||||
  let items = css(['#listing.mosaic .item', '.mosaic#listing .item'])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (columns === 0) columns = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  items.style.width = `calc(${100 / columns}% - 1em)`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: 'files',
 | 
					  name: 'files',
 | 
				
			||||||
  components: {
 | 
					  components: {
 | 
				
			||||||
| 
						 | 
					@ -72,14 +67,18 @@ export default {
 | 
				
			||||||
    '$route': 'fetchData',
 | 
					    '$route': 'fetchData',
 | 
				
			||||||
    'reload': function () {
 | 
					    'reload': function () {
 | 
				
			||||||
      this.$store.commit('setReload', false)
 | 
					      this.$store.commit('setReload', false)
 | 
				
			||||||
 | 
					      this.$store.commit('resetSelected')
 | 
				
			||||||
 | 
					      this.$store.commit('multiple', false)
 | 
				
			||||||
 | 
					      this.$store.commit('closeHovers')
 | 
				
			||||||
      this.fetchData()
 | 
					      this.fetchData()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  mounted () {
 | 
					  mounted () {
 | 
				
			||||||
    updateColumnSizes()
 | 
					 | 
				
			||||||
    window.addEventListener('resize', updateColumnSizes)
 | 
					 | 
				
			||||||
    window.addEventListener('keydown', this.keyEvent)
 | 
					    window.addEventListener('keydown', this.keyEvent)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  beforeDestroy () {
 | 
				
			||||||
 | 
					    window.removeEventListener('keydown', this.keyEvent)
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    ...mapMutations([ 'setLoading' ]),
 | 
					    ...mapMutations([ 'setLoading' ]),
 | 
				
			||||||
    fetchData () {
 | 
					    fetchData () {
 | 
				
			||||||
| 
						 | 
					@ -117,18 +116,12 @@ export default {
 | 
				
			||||||
      if (event.keyCode === 27) {
 | 
					      if (event.keyCode === 27) {
 | 
				
			||||||
        this.$store.commit('closeHovers')
 | 
					        this.$store.commit('closeHovers')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (this.req.kind !== 'listing') {
 | 
					        // If we're on a listing, unselect all
 | 
				
			||||||
          return
 | 
					        // files and folders.
 | 
				
			||||||
        }
 | 
					        if (this.req.kind === 'listing') {
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // If we're on a listing, unselect all files and folders.
 | 
					 | 
				
			||||||
        let items = document.getElementsByClassName('item')
 | 
					 | 
				
			||||||
        Array.from(items).forEach(link => {
 | 
					 | 
				
			||||||
          link.setAttribute('aria-selected', false)
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          this.$store.commit('resetSelected')
 | 
					          this.$store.commit('resetSelected')
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Del!
 | 
					      // Del!
 | 
				
			||||||
      if (event.keyCode === 46) {
 | 
					      if (event.keyCode === 46) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,6 +73,7 @@
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import {mapState} from 'vuex'
 | 
					import {mapState} from 'vuex'
 | 
				
			||||||
import Item from './ListingItem'
 | 
					import Item from './ListingItem'
 | 
				
			||||||
 | 
					import css from '@/utils/css'
 | 
				
			||||||
import api from '@/utils/api'
 | 
					import api from '@/utils/api'
 | 
				
			||||||
import buttons from '@/utils/buttons'
 | 
					import buttons from '@/utils/buttons'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,17 +104,38 @@ export default {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  mounted: function () {
 | 
					  mounted: function () {
 | 
				
			||||||
    document.addEventListener('dragover', function (event) {
 | 
					    // Check the columns size for the first time.
 | 
				
			||||||
      event.preventDefault()
 | 
					    this.resizeEvent()
 | 
				
			||||||
    }, false)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    document.addEventListener('drop', this.drop, false)
 | 
					    // Add the needed event listeners to the window and document.
 | 
				
			||||||
 | 
					    window.addEventListener('resize', this.resizeEvent)
 | 
				
			||||||
 | 
					    document.addEventListener('dragover', this.preventDefault)
 | 
				
			||||||
 | 
					    document.addEventListener('drop', this.drop)
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  beforeDestroy () {
 | 
				
			||||||
 | 
					    // Remove event listeners before destroying this page.
 | 
				
			||||||
 | 
					    window.removeEventListener('resize', this.resizeEvent)
 | 
				
			||||||
 | 
					    document.removeEventListener('dragover', this.preventDefault)
 | 
				
			||||||
 | 
					    document.removeEventListener('drop', this.drop)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    base64: function (name) {
 | 
					    base64: function (name) {
 | 
				
			||||||
      return window.btoa(unescape(encodeURIComponent(name)))
 | 
					      return window.btoa(unescape(encodeURIComponent(name)))
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    preventDefault (event) {
 | 
				
			||||||
 | 
					      // Wrapper around prevent default.
 | 
				
			||||||
 | 
					      event.preventDefault()
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    resizeEvent () {
 | 
				
			||||||
 | 
					      // Update the columns size based on the window width.
 | 
				
			||||||
 | 
					      let columns = Math.floor(document.querySelector('main').offsetWidth / 300)
 | 
				
			||||||
 | 
					      let items = css(['#listing.mosaic .item', '.mosaic#listing .item'])
 | 
				
			||||||
 | 
					      if (columns === 0) columns = 1
 | 
				
			||||||
 | 
					      items.style.width = `calc(${100 / columns}% - 1em)`
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    dragEnter: function (event) {
 | 
					    dragEnter: function (event) {
 | 
				
			||||||
 | 
					      // When the user starts dragging an item, put every
 | 
				
			||||||
 | 
					      // file on the listing with 50% opacity.
 | 
				
			||||||
      let items = document.getElementsByClassName('item')
 | 
					      let items = document.getElementsByClassName('item')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Array.from(items).forEach(file => {
 | 
					      Array.from(items).forEach(file => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.action i {
 | 
					.action i {
 | 
				
			||||||
  padding: 0.4em;
 | 
					  padding: 0.4em;
 | 
				
			||||||
  -webkit-transition: 0.2s ease-in-out all;
 | 
					  transition: .1s ease-in-out all;
 | 
				
			||||||
  transition: 0.2s ease-in-out all;
 | 
					 | 
				
			||||||
  border-radius: 50%;
 | 
					  border-radius: 50%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ function loading (button) {
 | 
				
			||||||
    el.classList.add('spin')
 | 
					    el.classList.add('spin')
 | 
				
			||||||
    el.innerHTML = 'autorenew'
 | 
					    el.innerHTML = 'autorenew'
 | 
				
			||||||
    el.style.opacity = 1
 | 
					    el.style.opacity = 1
 | 
				
			||||||
  }, 0)
 | 
					  }, 100)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function done (button, success = true) {
 | 
					function done (button, success = true) {
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ function done (button, success = true) {
 | 
				
			||||||
    el.classList.remove('spin')
 | 
					    el.classList.remove('spin')
 | 
				
			||||||
    el.innerHTML = el.dataset.icon
 | 
					    el.innerHTML = el.dataset.icon
 | 
				
			||||||
    el.style.opacity = 1
 | 
					    el.style.opacity = 1
 | 
				
			||||||
  }, 0)
 | 
					  }, 100)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue