Working with Vue.js
Intro and examples
<template> <div class="container"> <h3>Manifest thumbs</h3> <div v-if="currentCanvas"> <canvas-panel ref="viewer" :manifest-id="manifest.current.id" :canvas-id="currentCanvas.id" height="290" style-id="atlas-styles" /> </div> <div v-if="manifest.current" class="thumb-list"> <div v-bind:key="canvas.id" v-for="canvas in manifest.current?.items" v-on:click="handlerClick(canvas)" > <IIIFCanvas v-bind:canvasId="canvas.id"> <CanvasThumbnail :active="currentCanvas.id === canvas.id"/> </IIIFCanvas> </div> </div> </div> </template> <script> import IIIFCanvas from "./IIIFCanvas"; import CanvasThumbnail from "./CanvasThumbnail"; export default { name: "ManifestThumbnailList", inject: ["vault", "manifest"], components: { IIIFCanvas, CanvasThumbnail, }, props: {}, data() { return { currentCanvas: null, manifest: this.manifest, }; }, methods: { handlerClick(canvas) { this.currentCanvas = canvas; if (this.$refs.viewer) { this.$refs.viewer.goHome(); } }, }, watch: { "manifest.current": { handler() { if (this.manifest.current && !this.currentCanvas) { this.currentCanvas = this.manifest.current.items[0]; } }, }, }, }; </script> <style> .container { background: #3E8A6F; color: #fff; } .container h3 { padding: 1em 0; text-align: center; margin: 0; } .thumb-list { display: flex; flex-wrap: wrap; justify-content: flex-start; padding: 1em; } .thumb-list > div ~ div { margin-left: 1em; } </style>
To enter the code editing mode, press Enter. To exit the edit mode, press Escape
You are editing the code. To exit the edit mode, press Escape