src/view/admin/components/tag-script.lisp

DOWNLOAD
(defpackage murja.view.admin.components.tag-script
  (:use :cl :binding-arrows :parenscript)
  (:export :tags-component-frontend)
  (:documentation "All the parenscript logic hidden from making murja.view.admin.components.editor an eyesore"))

(in-package :murja.view.admin.components.tag-script)

(defun tags-component-frontend ()
  (ps
    (chain document
	   (add-event-listener "DOMContentLoaded"
			       (lambda (e)
				 (let ((add-tag (chain document
						       (query-selector "#add-tag")))
				       (remove-tag (chain document
							  (query-selector "#remove-tag")))
				       (tag-select (chain document
							  (query-selector "#tag-select"))))

				   (chain add-tag
					  (add-event-listener "click" (lambda (e)
									(let* ((new-tag (chain
											(prompt "New tag?")
											(to-lower-case)))
									       (as-option (chain
											   document
											   (create-element "option"))))
									  (setf (@ as-option text) new-tag)
									  (chain tag-select
										 options
										 (add as-option))))))
									  
				   (chain remove-tag
					  (add-event-listener "click" (lambda (e)
									(chain
									 tag-select
									 (remove (@ tag-select selected-index))))))))))))