homebox/frontend/components/global/DropZone.vue
Hayden 31b34241e0
feat: item-attachments CRUD (#22)
* change /content/ -> /homebox/

* add cache to code generators

* update env variables to set data storage

* update env variables

* set env variables in prod container

* implement attachment post route (WIP)

* get attachment endpoint

* attachment download

* implement string utilities lib

* implement generic drop zone

* use explicit truncate

* remove clean dir

* drop strings composable for lib

* update item types and add attachments

* add attachment API

* implement service context

* consolidate API code

* implement editing attachments

* implement upload limit configuration

* improve error handling

* add docs for max upload size

* fix test cases
2022-09-24 11:33:38 -08:00

31 lines
650 B
Vue

<template>
<div
ref="el"
class="h-24 w-full border-2 border-primary border-dashed grid place-content-center"
:class="isOverDropZone ? 'bg-primary bg-opacity-10' : ''"
>
<slot />
</div>
</template>
<script setup lang="ts">
defineProps({
modelValue: {
type: Boolean,
required: false,
},
});
const emit = defineEmits(["update:modelValue", "drop"]);
const el = ref<HTMLDivElement>(null);
const { isOverDropZone } = useDropZone(el, files => {
emit("drop", files);
});
watch(isOverDropZone, () => {
emit("update:modelValue", isOverDropZone.value);
});
</script>
<style scoped></style>