funquail/front/src/components/library/FsBrowser.vue

54 lines
No EOL
1.4 KiB
Vue

<template>
<div :class="['ui', {loading}, 'segment']">
<div class="ui fluid action input">
<input class="ui disabled" disabled :value="data.root + '/' + value.join('/')" />
<button class="ui button" @click.prevent="$emit('import')">
<translate translate-context="Content/Library/Button/Verb">Import</translate>
</button>
</div>
<div class="ui list component-fs-browser">
<a
v-if="value.length > 0"
class="item"
href=""
@click.prevent="handleClick({name: '..', dir: true})"
>
<i class="folder icon"></i>
<div class="content">
<div class="header">..</div>
</div>
</a>
<a
class="item"
href=""
@click.prevent="handleClick(e)"
v-for="e in data.content"
:key="e.name">
<i class="folder icon" v-if="e.dir"></i>
<i class="file icon" v-else></i>
<div class="content">
<div class="header">{{ e.name }}</div>
</div>
</a>
</div>
</div>
</template>
<script>
export default {
props: ["data", "loading", "value"],
methods: {
handleClick (element) {
if (!element.dir) {
return
}
if (element.name === "..") {
let newValue = [...this.value]
newValue.pop()
this.$emit('input', newValue)
} else {
this.$emit('input', [...this.value, element.name])
}
}
}
}
</script>