<script setup lang="ts">
	import {
		Form as VeeForm,
		Field,
		useForm,
		useField,
		ErrorMessage,
	} from "vee-validate";
	import { NamePath } from "ant-design-vue/es/form/interface";
	import { FormChapter } from "~/lib/client/types/form/story";

	import { story, bare } from "~/lib/client/editorConfig";
	import elBands from "../atoms/bands.vue";
	import genre from "../atoms/genre.vue";
	import elCharacters from "../atoms/characters.vue";
	import elPairings from "../atoms/pairings.vue";
	import uploadOrPaste from "./uploadOrPaste.vue";
	// import test1 from

	let { name, data } = defineProps<{
		name: NamePath;
		data: FormChapter;
	}>();
	let acData = toRef(data);
	let { data: _bands } = await useApiFetch("/bands/all");
	let bands = ref(_bands);
	provide("curName", name + ".");
	provide("bandlist", bands);
	const selectedBands = ref(data.bands || []);
	const updateBands = (val) => {
		selectedBands.value = val;
		// data.value.bands = val;
	};
	provide("selectedBands", {
		sb: selectedBands,
		updateBands,
	});
	const wrapc = { span: 12 };
</script>
<template>
	<div>
		<a-row :gutter="[10, 0]">
			<a-col :span="12">
				<Field
					:name="name + '.chapterTitle'"
					v-slot="{ value, field, errorMessage }"
				>
					<a-form-item
						:name="[field.name]"
						label="Chapter title"
						:help="errorMessage"
						:status="!!errorMessage ? 'error' : undefined"
					>
						<a-input v-bind="field" />
					</a-form-item>
				</Field>
			</a-col>
			<a-col :span="12">
				<el-bands />
			</a-col>
		</a-row>
		<a-row :gutter="[10, 0]">
			<a-col :span="12">
				<base-editor
					v-model:val="acData.summary"
					:name="name + '.summary'"
					:wrap-col="wrapc"
					label="Summary"
					:init="bare"
				/>
			</a-col>
			<a-col :span="12">
				<base-editor
					v-model:val="acData.notes"
					:name="name + '.notes'"
					:wrap-col="wrapc"
					label="Author's notes"
					:init="bare"
				/>
			</a-col>
		</a-row>
		<a-row :gutter="[10, 0]">
			<a-col :span="12">
				<el-characters />
			</a-col>
			<a-col :span="12">
				<el-pairings />
			</a-col>
		</a-row>
		<Field
			:name="name + '.nsfw'"
			type="checkbox"
			:unchecked-value="false"
			:value="true"
			v-slot="{ value, field, errorMessage }"
		>
			<a-checkbox v-bind="field" v-model="field.value">
				Has NSFW content
			</a-checkbox>
			<error-message :name="field.name" />
		</Field>
		<Field
			:name="name + '.loggedInOnly'"
			type="checkbox"
			:unchecked-value="false"
			:value="true"
			v-slot="{ value, field, errorMessage }"
		>
			<a-checkbox v-bind="field"> Visible only to registered users </a-checkbox>
			<error-message :name="field.name" />
		</Field>
		<Field
			:name="name + '.hidden'"
			type="checkbox"
			:unchecked-value="false"
			:value="true"
			v-slot="{ value, field, errorMessage }"
		>
			<a-tooltip>
				<template #title>
					Hides your story from everyone except you and site admins.
				</template>
				<a-checkbox v-bind="field"> Hidden </a-checkbox>
			</a-tooltip>
		</Field>
		<a-row>
			<a-col :span="24">
				<genre />
			</a-col>
		</a-row>
		<a-divider> Contents </a-divider>
		<upload-or-paste />
		<Field :name="name + '.id'" v-if="!!data.id" :model-value="data.id" />
	</div>
</template>
