]> git.ipfire.org Git - thirdparty/bulma.git/commitdiff
Add grid interactions smart-grid
authorJeremy Thomas <bbxdesign@gmail.com>
Fri, 13 May 2022 16:00:50 +0000 (18:00 +0200)
committerJeremy Thomas <bbxdesign@gmail.com>
Fri, 13 May 2022 16:00:50 +0000 (18:00 +0200)
docs/_javascript/playground.js [new file with mode: 0644]
docs/cyp/grid/grid.html
docs/lib/playground.js [new file with mode: 0644]

diff --git a/docs/_javascript/playground.js b/docs/_javascript/playground.js
new file mode 100644 (file)
index 0000000..2b5a967
--- /dev/null
@@ -0,0 +1,23 @@
+document.addEventListener("DOMContentLoaded", () => {
+  const $grid = document.getElementById("grid");
+  const $columns = document.querySelectorAll(".jsColumns");
+
+  $columns.forEach(($) =>
+    $.addEventListener(
+      "input",
+      (event) => {
+        const count = event.target.valueAsNumber;
+        const suffix = event.target.dataset.suffix;
+        console.log("Column count", count);
+        $grid.className = `grid has-${count}-cols${suffix}`;
+        const $columnsCount = getAll("strong", $.parentNode);
+        $columnsCount.innerHTML = count;
+      },
+      false
+    )
+  );
+
+  function getAll(selector, parent = document) {
+    return Array.prototype.slice.call(parent.querySelectorAll(selector), 0);
+  }
+});
index 46c8c69880800e48fb224edc91d70fcf4fa15aea..b5b38fddd9fc4fa863e6a87a592e7f211edb15a5 100644 (file)
@@ -1,27 +1,70 @@
 ---
 layout: cypress
 title: Grid/Grid
+breakpoints:
+- name: mobile
+  visibility: mobile
+  count: 2
+  suffix: '-mobile'
+- name: tablet
+  visibility: tablet-only
+  count: 4
+  suffix: '-tablet'
+- name: desktop
+  visibility: desktop-only
+  count: 8
+  suffix: '-desktop'
+- name: widescreen
+  visibility: widescreen-only
+  count: 12
+  suffix: '-widescreen'
+- name: fullhd
+  visibility: fullhd
+  count: 16
+  suffix: '-fullhd'
 ---
 
-<div class="grid">
-  <div class="cell">#1</div>
-  <div class="cell">#2</div>
-  <div class="cell">#3</div>
-  <div class="cell">#4</div>
-  <div class="cell">#5</div>
-  <div class="cell">#6</div>
-  <div class="cell">#7</div>
-  <div class="cell">#8</div>
-  <div class="cell">#9</div>
-  <div class="cell">#10</div>
-  <div class="cell">#11</div>
-  <div class="cell">#12</div>
-  <div class="cell">#13</div>
-  <div class="cell">#14</div>
-  <div class="cell">#15</div>
-  <div class="cell">#16</div>
-  <div class="cell">#17</div>
-  <div class="cell">#18</div>
-  <div class="cell">#19</div>
-  <div class="cell">#20</div>
-</div>
\ No newline at end of file
+<script src="{{ site.url }}/lib/playground.js"></script>
+
+<section style="padding: 3rem;">
+  {% for breakpoint in page.breakpoints %}
+    <p style="display: none;" class="block is-block-{{ breakpoint.visibility }}">
+      Current breakpoint: <strong>{{ breakpoint.name }}</strong>
+    </p>
+  {% endfor %}
+
+  <div style="display: flex; flex-wrap: wrap;">
+    {% for breakpoint in page.breakpoints %}
+      <div style="margin: 0 1.5em 1.5em 0; position: relative; width: 180px;">
+        <p style="border: 2px solid hsl(153, 53%,  53%); border-radius: 1em; pointer-events: none; display: none; position: absolute; left: -1em; right: -1em; top: -1em; bottom: -1em;" class="has-background-success-light is-block-{{ breakpoint.visibility }}"></p>
+        <div style="position: relative;">
+          <p style="font-size: 0.75em"><strong>{{ breakpoint.count }}</strong> columns on {{ breakpoint.name }}</p>
+          <input id="columns" class="jsColumns" type="range" min="1" max="16" value="{{ breakpoint.count }}" data-suffix="{{ breakpoint.suffix }}">
+        </div>
+      </div>
+    {% endfor %}
+  </div>
+
+  <div id="grid" class="grid">
+    <div class="cell">#1</div>
+    <div class="cell">#2</div>
+    <div class="cell">#3</div>
+    <div class="cell">#4</div>
+    <div class="cell">#5</div>
+    <div class="cell">#6</div>
+    <div class="cell">#7</div>
+    <div class="cell">#8</div>
+    <div class="cell">#9</div>
+    <div class="cell">#10</div>
+    <div class="cell">#11</div>
+    <div class="cell">#12</div>
+    <div class="cell">#13</div>
+    <div class="cell">#14</div>
+    <div class="cell">#15</div>
+    <div class="cell">#16</div>
+    <div class="cell">#17</div>
+    <div class="cell">#18</div>
+    <div class="cell">#19</div>
+    <div class="cell">#20</div>
+  </div>
+</section>
diff --git a/docs/lib/playground.js b/docs/lib/playground.js
new file mode 100644 (file)
index 0000000..be6f017
--- /dev/null
@@ -0,0 +1,23 @@
+"use strict";
+
+document.addEventListener("DOMContentLoaded", function () {
+  var $grid = document.getElementById("grid");
+  var $columns = document.querySelectorAll(".jsColumns");
+
+  $columns.forEach(function ($) {
+    return $.addEventListener("input", function (event) {
+      var count = event.target.valueAsNumber;
+      var suffix = event.target.dataset.suffix;
+      console.log("Column count", count);
+      $grid.className = "grid has-" + count + "-cols" + suffix;
+      var $columnsCount = getAll("strong", $.parentNode);
+      $columnsCount.innerHTML = count;
+    }, false);
+  });
+
+  function getAll(selector) {
+    var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
+
+    return Array.prototype.slice.call(parent.querySelectorAll(selector), 0);
+  }
+});
\ No newline at end of file