start with rendering forms
This commit is contained in:
parent
e7eb71a840
commit
37b39c596f
4 changed files with 18 additions and 13 deletions
|
@ -9,7 +9,8 @@
|
||||||
(:response :scopes/web/response)
|
(:response :scopes/web/response)
|
||||||
(:shape :scopes/shape)
|
(:shape :scopes/shape)
|
||||||
(:util :scopes/util))
|
(:util :scopes/util))
|
||||||
(:import-from :scopes/web/dom #:div #:label)
|
(:import-from :scopes/web/dom
|
||||||
|
#:button #:div #:input #:label)
|
||||||
(:export #:render-content #:response))
|
(:export #:render-content #:response))
|
||||||
|
|
||||||
(in-package :scopes/frontend/cs-hx)
|
(in-package :scopes/frontend/cs-hx)
|
||||||
|
@ -26,16 +27,21 @@
|
||||||
(defun view (resp msg)
|
(defun view (resp msg)
|
||||||
(div nil (util:loop-plist (shape:data msg) k v collect (view-field k v))))
|
(div nil (util:loop-plist (shape:data msg) k v collect (view-field k v))))
|
||||||
|
|
||||||
(defun form (resp msg)
|
|
||||||
(let* ((data (shape:data msg))
|
|
||||||
(fields (getf data :fields)))
|
|
||||||
(mapcar (lambda (f) (form-field f)) fields)))
|
|
||||||
|
|
||||||
(defun view-field (label value)
|
(defun view-field (label value)
|
||||||
(div nil (label nil label) ": " value))
|
(div nil (label nil label) ": " value))
|
||||||
|
|
||||||
|
(defun form (resp msg)
|
||||||
|
(let* ((data (shape:data msg))
|
||||||
|
(fields (getf data :fields)))
|
||||||
|
(dom:form (list :name "login" :hx-target "#cs-debug" :hx-post "/hx/auth/login")
|
||||||
|
(mapcar (lambda (f) (form-field f)) fields)
|
||||||
|
(button '(:class "btn btn-primary") "Login")
|
||||||
|
)))
|
||||||
|
|
||||||
(defun form-field (name)
|
(defun form-field (name)
|
||||||
(div nil (label nil name) ": " name))
|
(div nil
|
||||||
|
(label '(:class "form-label") name)
|
||||||
|
(input (list :type "text" :name name :class "form-control"))))
|
||||||
|
|
||||||
(setf (gethash :view *templates*) #'view)
|
(setf (gethash :view *templates*) #'view)
|
||||||
(setf (gethash :form *templates*) #'form)
|
(setf (gethash :form *templates*) #'form)
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
(setf inp "<a href=\"https://example.com\">Link</a>")
|
(setf inp "<a href=\"https://example.com\">Link</a>")
|
||||||
(setf parsed (dom:parse inp))
|
(setf parsed (dom:parse inp))
|
||||||
(== parsed '(((:a :href "https://example.com") "Link")))
|
(== parsed '(((:a :href "https://example.com") "Link")))
|
||||||
;(== (dom:from-list parsed) ((dom:a '(:href "https://example.com") "Link")))
|
;(== (car (dom:from-list parsed)) (dom:a '(:href "https://example.com") "Link"))
|
||||||
(== (dom:render (dom:from-list parsed)) inp)
|
(== (dom:render (dom:from-list parsed)) inp)
|
||||||
(== (dom:to-list (dom:a '(:href "https://example.com") "Link")) (car parsed))
|
(== (dom:to-list (dom:a '(:href "https://example.com") "Link")) (car parsed))
|
||||||
))
|
))
|
||||||
|
|
|
@ -34,10 +34,9 @@
|
||||||
(make-instance 'mailbox))
|
(make-instance 'mailbox))
|
||||||
|
|
||||||
(defun rcv (mb)
|
(defun rcv (mb)
|
||||||
(handler-case
|
(handler-case (lpq:pop-queue (queue mb))
|
||||||
(lpq:pop-queue (queue mb))
|
|
||||||
(condition (cnd)
|
(condition (cnd)
|
||||||
(util:lg :info "condition on pop-queue" cnd)
|
(util:lg :info "rcv -> lpq:pop-queue" cnd)
|
||||||
+quit-message+)))
|
+quit-message+)))
|
||||||
|
|
||||||
(defun try-rcv (mb)
|
(defun try-rcv (mb)
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
(:export #:xml-element
|
(:export #:xml-element
|
||||||
#:elem #:element #:void-element #:render
|
#:elem #:element #:void-element #:render
|
||||||
#:dlist
|
#:dlist
|
||||||
#:a #:dd #:div #:dl #:dt #:label
|
#:a #:button #:dd #:div #:dl #:dt #:form #:label
|
||||||
#:br #:input
|
#:br #:input
|
||||||
#:parse #:from-list #:to-list))
|
#:parse #:from-list #:to-list))
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
tags)))
|
tags)))
|
||||||
|
|
||||||
(eval-when (:compile-toplevel :load-toplevel :execute)
|
(eval-when (:compile-toplevel :load-toplevel :execute)
|
||||||
(make-elements (a dd div dl dt label)))
|
(make-elements (a button dd div dl dt form label)))
|
||||||
|
|
||||||
(eval-when (:compile-toplevel :load-toplevel :execute)
|
(eval-when (:compile-toplevel :load-toplevel :execute)
|
||||||
(make-elements (br input) void-element))
|
(make-elements (br input) void-element))
|
||||||
|
|
Loading…
Add table
Reference in a new issue