You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

script.js 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. const closeButton = document.createElement('a');
  7. closeButton.classList.add('btn');
  8. closeButton.classList.add('btn--close');
  9. closeButton.href = '#';
  10. closeButton.innerText = 'x close';
  11. closeButton.style.marginLeft = 'auto';
  12. closeButton.addEventListener('click', (e) => {
  13. e.preventDefault();
  14. container.parentElement.remove();
  15. });
  16. container.append(closeButton);
  17. return container;
  18. }
  19. document.querySelectorAll('[data-delete]').forEach((el) => {
  20. el.addEventListener('click', (e) => {
  21. if (confirm('Are you sure? This cannot be undone.')) {
  22. let postId = e.target.dataset.delete;
  23. fetch(`/posts/${postId}`, {
  24. method: 'DELETE',
  25. }).then((r) => {
  26. r.json().then((data) => {
  27. if (data.success) {
  28. window.location = '/';
  29. }
  30. });
  31. });
  32. }
  33. });
  34. });
  35. const previewButton = document.querySelector('[data-preview]');
  36. if (previewButton) {
  37. previewButton.addEventListener('click', (e) => {
  38. e.preventDefault();
  39. const currentPreview = document.querySelector('#preview');
  40. if (currentPreview) {
  41. currentPreview.remove();
  42. }
  43. const form = document.querySelector('#post-form');
  44. const textarea = form.querySelector('[name=body]');
  45. const preview = document.createElement('div');
  46. const content = document.createElement('div');
  47. preview.id = 'preview';
  48. if (textarea.value.trim().length === 0) {
  49. return;
  50. }
  51. const closeButton = createCloseButton();
  52. content.innerHTML = textarea.value;
  53. preview.append(closeButton);
  54. preview.append(content);
  55. form.append(preview);
  56. });
  57. }