<template>
	<ul class="menu nolist">
		<li
			v-for="stash in stashes"
			:key="`stash-${stash.id}`"
			class="menu-item"
		>
			<label class="menu-stash noselect">
				<Checkbox
					:checked="stashedByIds.has(stash.id)"
					class="menu-check"
					@change="(checked) => checked ? $emit('stash', stash.id) : $emit('unstash', stash.id)"
				/>{{ stash.name }}
			</label>
		</li>
	</ul>
</template>

<script>
import Checkbox from '../form/checkbox.vue';

function stashes() {
	return this.$store.state.auth.user?.stashes || [];
}

export default {
	components: {
		Checkbox,
	},
	props: {
		stashedBy: {
			type: Array,
			default: () => [],
		},
	},
	emits: ['stash', 'unstash'],
	data() {
		const stashedByIds = new Set(this.stashedBy.map(stash => stash.id));

		return {
			stashedByIds,
		};
	},
	computed: {
		stashes,
	},
};
</script>

<style lang="scss" scoped>
.menu-item {
	color: var(--text);
	display: block;
}

.menu-stash {
	display: flex;
	align-items: center;
	padding: .5rem 1rem .5rem .5rem;

	&:hover {
		color: var(--primary);
		cursor: pointer;
	}
}

.menu-check {
	display: inline-block;
	margin: 0 .75rem 0 0;
}
</style>