Newer
Older

Дмитрий Малюгин
committed
<script setup lang="ts">
import type { IText } from '@/app/interfaces/entities';
import { useDataStore } from '@/app/stores/data';
import { deleteEntity, editEntity } from '@/app/helpers';
import StateMenu from '@/components/editEntityMenu/TextStateMenu.vue';
import MoveMenu from '@/components/editEntityMenu/TextMoveMenu.vue';

Дмитрий Малюгин
committed
interface Props {
entityData: IText;
}
const props = defineProps<Props>();
const entityData = ref(props.entityData);
const addTitle = () => {
editEntity({ ...entityData.value, title: 'Title' }, entityData.value.entity_uuid);

Дмитрий Малюгин
committed
entityData.value = { ...entityData.value, title: 'Title' };
};
const editTitle = () => {
editEntity({ ...entityData.value, title: entityData.value.title }, entityData.value.entity_uuid);

Дмитрий Малюгин
committed
};
const editText = () => {
editEntity({ ...entityData.value, text: entityData.value.text }, entityData.value.entity_uuid);

Дмитрий Малюгин
committed
};
newState.title = null;
editEntity({ ...newState }, entityData.value.entity_uuid);
const { textarea, triggerResize } = useTextareaAutosize({ styleProp: 'minHeight' });
const dataStore = useDataStore();
const homeEntities = computed(() => dataStore.homeEntities);

Дмитрий Малюгин
committed
</script>
<template>
<div class="entityContainer relative py-8 px-16">
v-if="entityData.title || entityData.title === ''"
type="text"
v-model="entityData.title"
@change="editTitle"
class="w-full mb-4 font-bold text-2xl pl-2"
/>
<textarea
ref="textarea"
v-model="entityData.text"
class="w-full indent-5 resize-none outline-0"
@change="editText"
@input="triggerResize"
placeholder="Enter text..."
<div class="speedDial absolute left-2 top-2 transition-all select-none">
:entityData="entityData"
@deleteEntity="deleteEntity"
@addTitle="addTitle"
@removeTitle="removeTitle"
/>
</div>
class="speedDial absolute left-2 bottom-2 transition-all select-none"
<MoveMenu :entityData="entityData" />

Дмитрий Малюгин
committed
</div>
</template>
<style scoped>
textarea {
-ms-overflow-style: none;
scrollbar-width: none;
}
textarea::-webkit-scrollbar {
display: none;
}

Дмитрий Малюгин
committed
opacity: 0;
}

Дмитрий Малюгин
committed
opacity: 100;
}
input::placeholder {
font-weight: 400;
}