Browse Source

Add preview button

master
Dylan Baker 3 years ago
parent
commit
e979c76265
3 changed files with 65 additions and 1 deletions
  1. 51
    0
      static/script.js
  2. 12
    0
      static/style.css
  3. 2
    1
      templates/components.html

+ 51
- 0
static/script.js View File

@@ -1,3 +1,25 @@
1
+function createCloseButton() {
2
+  const container = document.createElement('div');
3
+  container.style.marginBottom = '1em';
4
+  container.style.display = 'flex';
5
+  container.style.justifyContent = 'flex-end';
6
+
7
+  const closeButton = document.createElement('a');
8
+  closeButton.classList.add('btn');
9
+  closeButton.classList.add('btn--close');
10
+  closeButton.href = '#';
11
+  closeButton.innerText = 'x close';
12
+  closeButton.style.marginLeft = 'auto';
13
+  closeButton.addEventListener('click', (e) => {
14
+    e.preventDefault();
15
+    container.parentElement.remove();
16
+  });
17
+
18
+  container.append(closeButton);
19
+
20
+  return container;
21
+}
22
+
1 23
 document.querySelectorAll('[data-delete]').forEach((el) => {
2 24
   el.addEventListener('click', (e) => {
3 25
     if (confirm('Are you sure? This cannot be undone.')) {
@@ -14,3 +36,32 @@ document.querySelectorAll('[data-delete]').forEach((el) => {
14 36
     }
15 37
   });
16 38
 });
39
+
40
+const previewButton = document.querySelector('[data-preview]');
41
+if (previewButton) {
42
+  previewButton.addEventListener('click', (e) => {
43
+    e.preventDefault();
44
+
45
+    const currentPreview = document.querySelector('#preview');
46
+    if (currentPreview) {
47
+      currentPreview.remove();
48
+    }
49
+
50
+    const form = document.querySelector('#post-form');
51
+    const textarea = form.querySelector('[name=body]');
52
+    const preview = document.createElement('div');
53
+    const content = document.createElement('div');
54
+    preview.id = 'preview';
55
+
56
+    if (textarea.value.trim().length === 0) {
57
+      return;
58
+    }
59
+
60
+    const closeButton = createCloseButton();
61
+
62
+    content.innerHTML = textarea.value;
63
+    preview.append(closeButton);
64
+    preview.append(content);
65
+    form.append(preview);
66
+  });
67
+}

+ 12
- 0
static/style.css View File

@@ -35,12 +35,24 @@ a:hover {
35 35
   border: 1px solid var(--dark-accent);
36 36
   border-radius: 0;
37 37
   padding: 0.15em 0.3em;
38
+  text-decoration: none;
38 39
 }
39 40
 
40 41
 .btn:hover {
41 42
   background-color: var(--off-white);
42 43
 }
43 44
 
45
+.btn--close {
46
+  background-color: var(--danger-red);
47
+  color: white;
48
+}
49
+
50
+.btn--close:hover {
51
+  background-color: var(--danger-red);
52
+  color: white;
53
+  filter: brightness(85%);
54
+}
55
+
44 56
 .danger {
45 57
   color: var(--danger-red);
46 58
 }

+ 2
- 1
templates/components.html View File

@@ -18,7 +18,7 @@
18 18
   </div>
19 19
 </div>
20 20
 {% endmacro %} {% macro form(post=false, action) %}
21
-<form class="form" method="POST" action="{{ action }}">
21
+<form class="form" method="POST" action="{{ action }}" id="post-form">
22 22
   <input
23 23
     type="hidden"
24 24
     name="id"
@@ -46,6 +46,7 @@
46 46
     >
47 47
   </div>
48 48
   <div class="form__field">
49
+    <a class="btn" href="#" data-preview>Preview</a>
49 50
     <input class="btn" type="submit" value="Post" />
50 51
   </div>
51 52
 </form>

Loading…
Cancel
Save