start with rendering forms

This commit is contained in:
Helmut Merz 2025-06-23 10:15:57 +02:00
parent e7eb71a840
commit 37b39c596f
4 changed files with 18 additions and 13 deletions

View file

@ -9,7 +9,8 @@
(:response :scopes/web/response)
(:shape :scopes/shape)
(:util :scopes/util))
(:import-from :scopes/web/dom #:div #:label)
(:import-from :scopes/web/dom
#:button #:div #:input #:label)
(:export #:render-content #:response))
(in-package :scopes/frontend/cs-hx)
@ -26,16 +27,21 @@
(defun view (resp msg)
(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)
(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)
(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 :form *templates*) #'form)

View file

@ -47,7 +47,7 @@
(setf inp "<a href=\"https://example.com\">Link</a>")
(setf parsed (dom:parse inp))
(== 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:to-list (dom:a '(:href "https://example.com") "Link")) (car parsed))
))

View file

@ -34,10 +34,9 @@
(make-instance 'mailbox))
(defun rcv (mb)
(handler-case
(lpq:pop-queue (queue mb))
(handler-case (lpq:pop-queue (queue mb))
(condition (cnd)
(util:lg :info "condition on pop-queue" cnd)
(util:lg :info "rcv -> lpq:pop-queue" cnd)
+quit-message+)))
(defun try-rcv (mb)

View file

@ -8,7 +8,7 @@
(:export #:xml-element
#:elem #:element #:void-element #:render
#:dlist
#:a #:dd #:div #:dl #:dt #:label
#:a #:button #:dd #:div #:dl #:dt #:form #:label
#:br #:input
#:parse #:from-list #:to-list))
@ -81,7 +81,7 @@
tags)))
(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)
(make-elements (br input) void-element))