]> BookStack Code Mirror - bookstack/commitdiff
Moved book cover image input into collapsible section
authorDan Brown <redacted>
Sun, 10 Dec 2017 13:46:50 +0000 (13:46 +0000)
committerDan Brown <redacted>
Sun, 10 Dec 2017 13:46:50 +0000 (13:46 +0000)
Prevent extra friction when creating a new book and makes it easier to
skip if grid view is not in use

resources/assets/js/components/collapsible.js [new file with mode: 0644]
resources/assets/js/components/index.js
resources/assets/sass/_forms.scss
resources/views/books/form.blade.php

diff --git a/resources/assets/js/components/collapsible.js b/resources/assets/js/components/collapsible.js
new file mode 100644 (file)
index 0000000..11b06fc
--- /dev/null
@@ -0,0 +1,37 @@
+/**
+ * Collapsible
+ * Provides some simple logic to allow collapsible sections.
+ */
+class Collapsible {
+
+    constructor(elem) {
+        this.elem = elem;
+        this.trigger = elem.querySelector('[collapsible-trigger]');
+        this.content = elem.querySelector('[collapsible-content]');
+
+        if (!this.trigger) return;
+
+        this.trigger.addEventListener('click', this.toggle.bind(this));
+    }
+
+    open() {
+        this.elem.classList.add('open');
+        $(this.content).slideDown(400);
+    }
+
+    close() {
+        this.elem.classList.remove('open');
+        $(this.content).slideUp(400);
+    }
+
+    toggle() {
+        if (this.elem.classList.contains('open')) {
+            this.close();
+        } else {
+            this.open();
+        }
+    }
+
+}
+
+module.exports = Collapsible;
\ No newline at end of file
index 4cb16d06afcb6d62bd9da06a0e6e3270349d946b..5340f6ed71bb90a3c3d03015e26214a82eb76eae 100644 (file)
@@ -15,6 +15,7 @@ let componentMapping = {
     'markdown-editor': require('./markdown-editor'),
     'editor-toolbox': require('./editor-toolbox'),
     'image-picker': require('./image-picker'),
+    'collapsible': require('./collapsible'),
 };
 
 window.components = {};
index 802a075a252540ef3f56dbcfa0f180627a1da460..457d30e5488a81d060ec5d3235e678b5f792a35f 100644 (file)
@@ -191,6 +191,41 @@ input:checked + .toggle-switch {
   }
 }
 
+.form-group[collapsible] {
+  margin-left: -$-m;
+  margin-right: -$-m;
+  padding: 0 $-m;
+  border-top: 1px solid #DDD;
+  border-bottom: 1px solid #DDD;
+  .collapse-title {
+    margin-left: -$-m;
+    margin-right: -$-m;
+    padding: $-s $-m;
+  }
+  .collapse-title, .collapse-title label {
+    cursor: pointer;
+  }
+  .collapse-title label {
+    padding-bottom: 0;
+    margin-bottom: 0;
+    color: inherit;
+  }
+  .collapse-title label:before {
+    display: inline-block;
+    content: '▸';
+    margin-right: $-m;
+    transition: all ease-in-out 400ms;
+    transform: rotate(0);
+  }
+  .collapse-content {
+    display: none;
+    padding-bottom: $-m;
+  }
+  &.open .collapse-title label:before {
+    transform: rotate(90deg);
+  }
+}
+
 .inline-input-style {
   display: block;
   width: 100%;
index 06eea7ca9f5aeb8c08b4fdaa4103b304addd32e4..0620ae9761b6eae9849f111798214d31219b2ce7 100644 (file)
@@ -9,20 +9,25 @@
     <label for="description">{{ trans('common.description') }}</label>
     @include('form/textarea', ['name' => 'description'])
 </div>
-<div class="form-group" id="logo-control">
-        <label for="user-avatar">{{ trans('common.cover_image') }}</label>
-        <p class="small">{{ trans('common.cover_image_description') }}</p>
 
-        @include('components.image-picker', [
-            'resizeHeight' => '512',
-            'resizeWidth' => '512',
-            'showRemove' => false,
-            'defaultImage' => baseUrl('/book_default_cover.png'),
-            'currentImage' => @isset($model) ? $model->getBookCover() : baseUrl('/book_default_cover.png') ,
-            'currentId' => @isset($model) ? $model->image_id : 0,
-            'name' => 'image_id',
-            'imageClass' => 'cover'
-        ])
+<div class="form-group" collapsible id="logo-control">
+        <div class="collapse-title text-primary" collapsible-trigger>
+            <label for="user-avatar">{{ trans('common.cover_image') }}</label>
+        </div>
+        <div class="collapse-content" collapsible-content>
+            <p class="small">{{ trans('common.cover_image_description') }}</p>
+
+            @include('components.image-picker', [
+                'resizeHeight' => '512',
+                'resizeWidth' => '512',
+                'showRemove' => false,
+                'defaultImage' => baseUrl('/book_default_cover.png'),
+                'currentImage' => @isset($model) ? $model->getBookCover() : baseUrl('/book_default_cover.png') ,
+                'currentId' => @isset($model) ? $model->image_id : 0,
+                'name' => 'image_id',
+                'imageClass' => 'cover'
+            ])
+        </div>
 </div>
 
 <div class="form-group text-right">