68 lines
1.5 KiB
Vue
68 lines
1.5 KiB
Vue
<script setup>
|
|
|
|
import {onMounted, reactive} from "vue";
|
|
import {setDefaultData} from "src/composables/form/formHandling";
|
|
import FormWrapper from "components/FormWrapper.vue";
|
|
import {commonProps} from "src/composables/inputs";
|
|
import {isRequired} from "src/composables/form/rules";
|
|
import SlugInput from "components/inputs/SlugInput.vue";
|
|
import {storeToRefs} from "pinia";
|
|
import {useLoggedUserStore} from "stores/LoggedUser";
|
|
|
|
const props = defineProps({
|
|
copilot: {
|
|
type: Object
|
|
},
|
|
isRequestPending: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
}
|
|
})
|
|
|
|
const formData = reactive({
|
|
name: null,
|
|
urlSlug: "",
|
|
isPublic: false,
|
|
});
|
|
|
|
const rules = {
|
|
name: [isRequired],
|
|
urlSlug: [],
|
|
}
|
|
|
|
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
|
|
|
onMounted(() => {
|
|
if (props.copilot) {
|
|
setDefaultData(formData, props.copilot);
|
|
}
|
|
})
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<FormWrapper v-model="formData" :is-request-pending="props.isRequestPending">
|
|
<q-input
|
|
v-bind="commonProps"
|
|
label="Jméno"
|
|
:rules="rules.name"
|
|
v-model="formData.name"
|
|
/>
|
|
|
|
<template v-if="loggedUser?.publicUsername">
|
|
<SlugInput
|
|
v-if="formData.isPublic"
|
|
v-bind="commonProps"
|
|
v-model="formData.urlSlug"
|
|
label="URL"
|
|
:url="`/${loggedUser.publicUsername}/a/`"
|
|
:slug-source="formData.name"
|
|
:rules="rules.urlSlug"
|
|
/>
|
|
<q-checkbox v-model="formData.isPublic" label="Veřejný?"/>
|
|
</template>
|
|
|
|
</FormWrapper>
|
|
</template>
|