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
+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
 document.querySelectorAll('[data-delete]').forEach((el) => {
23
 document.querySelectorAll('[data-delete]').forEach((el) => {
2
   el.addEventListener('click', (e) => {
24
   el.addEventListener('click', (e) => {
3
     if (confirm('Are you sure? This cannot be undone.')) {
25
     if (confirm('Are you sure? This cannot be undone.')) {
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
   border: 1px solid var(--dark-accent);
35
   border: 1px solid var(--dark-accent);
36
   border-radius: 0;
36
   border-radius: 0;
37
   padding: 0.15em 0.3em;
37
   padding: 0.15em 0.3em;
38
+  text-decoration: none;
38
 }
39
 }
39
 
40
 
40
 .btn:hover {
41
 .btn:hover {
41
   background-color: var(--off-white);
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
 .danger {
56
 .danger {
45
   color: var(--danger-red);
57
   color: var(--danger-red);
46
 }
58
 }

+ 2
- 1
templates/components.html View File

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

Loading…
Cancel
Save