From b0c9c76fde6f6cfd7c384099def60a64b3ad2fcc Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Mon, 13 Feb 2023 14:02:51 +0100
Subject: [PATCH] Explain examples better

---
 example/src/App.vue | 65 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 64 insertions(+), 1 deletion(-)

diff --git a/example/src/App.vue b/example/src/App.vue
index 311d66b..451cba0 100644
--- a/example/src/App.vue
+++ b/example/src/App.vue
@@ -6,7 +6,19 @@ import NumberCounter from "./components/NumberCounter.vue";
 
 <template>
   <div id="app">
-    <DragGrid :rows="8" :cols="5" :pos-validation="blockField" v-model="items">
+    <h1><code>DragGrid</code> Examples</h1>
+    <h2>Example 1</h2>
+    <p>
+      Grid with two programmatically blocked cells and one programmatically
+      blocked item
+    </p>
+    <DragGrid
+      :rows="8"
+      :cols="5"
+      :pos-validation="blockField"
+      v-model="items"
+      class="bordered"
+    >
       <div id="blocker">
         This field is blocked because it's filled, the next one programmatically
       </div>
@@ -14,6 +26,13 @@ import NumberCounter from "./components/NumberCounter.vue";
         <div class="container">{{ item }}</div>
       </template>
     </DragGrid>
+
+    <h2>Example 2: "Tic-Tac-Toe"</h2>
+    <p>
+      A grid functioning as a playing field and another functioning as a
+      container for playing pieces. You can drag as many pieces as you want from
+      the container to the field.
+    </p>
     <div class="ttt-container">
       <DragGrid
         :rows="3"
@@ -50,6 +69,15 @@ import NumberCounter from "./components/NumberCounter.vue";
         </template>
       </DragGrid>
     </div>
+
+    <h2>Example 3: Counters</h2>
+    <p>
+      Showcasing local and global state: The local state of the counter
+      components doesn't change when moved inside one grid, but is cleared when
+      moved to the other. The global state is in the <code>data</code> attribute
+      of each item and gets transferred as well. Both grids have also custom
+      highlights.
+    </p>
     <div class="ttt-container">
       <drag-grid
         v-model="counters"
@@ -80,6 +108,16 @@ import NumberCounter from "./components/NumberCounter.vue";
         </template>
       </drag-grid>
     </div>
+
+    <h2>Example 4: Dynamic lessons</h2>
+    <p>
+      These lessons are loaded from <code>computed</code> to simulate a
+      non-editable source like an API. they are changed using the method
+      <code>handleLessonMoved</code>. Try changing the sizes of Lesson1, the
+      grid and the texts of the items! The lesson container on the side doesn't
+      have a highlight and doesn't keep track of the item position. Try moving
+      <code>item3</code> back and forth!
+    </p>
     <div class="ttt-container">
       <div>
         <label>
@@ -137,6 +175,17 @@ import NumberCounter from "./components/NumberCounter.vue";
         </template>
       </drag-grid>
     </div>
+
+    <h2>Example 5: Dynamic colors</h2>
+    <p>
+      This example showcases the <code>rawItem</code> with the custom method
+      <code>getColor</code>. Both grids on the outside call the method with
+      <code>"red"</code> while the one in the middle uses <code>"green"</code>.
+      We use arrays called <code>placedA</code>, <code>placedB</code> and
+      <code>placedC</code> to save, which item is contained in which grid.
+      Notice: the third grid doesn't save the item position, they are always
+      positioned automatically.
+    </p>
     <div class="ttt-container">
       <drag-grid
         :value="colorGrid"
@@ -549,4 +598,18 @@ export default {
   line-height: 2em;
   box-sizing: content-box;
 }
+
+h2 {
+  padding-top: 1em;
+}
+
+h2 + p {
+  padding-bottom: 0.5em;
+}
+
+code {
+  background: lightgray;
+  padding: 0.2em;
+  border-radius: 3px;
+}
 </style>
-- 
GitLab