mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-09 20:30:26 -08:00
can now optionally specify the id used for an element
This commit is contained in:
parent
73bc5bf10f
commit
3d7dc17cd3
7 changed files with 272 additions and 155 deletions
|
|
@ -37,14 +37,14 @@
|
|||
(defclass clog-form (clog-element)()
|
||||
(:documentation "CLOG Form Objecs is the base class for all html forms."))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;
|
||||
;; create-form ;;
|
||||
;;;;;;;;;;;;;;;;;
|
||||
|
||||
(deftype from-method-type () '(members :get :post :none))
|
||||
|
||||
(defgeneric create-form (clog-obj &key action method target class auto-place)
|
||||
(defgeneric create-form (clog-obj
|
||||
&key action method target class html-id auto-place)
|
||||
(:documentation "Create a new CLOG-Form as child of CLOG-OBJ that organizes
|
||||
a collection of form elements in to a single form if :AUTO-PLACE (default t)
|
||||
place-inside-bottom-of CLOG-OBJ. In CLOG a form's on-submit handler should be
|
||||
|
|
@ -59,6 +59,7 @@ action."))
|
|||
(method :none)
|
||||
(target "_self")
|
||||
(class nil)
|
||||
(html-id nil)
|
||||
(auto-place t))
|
||||
(create-child obj (format nil "<form action='~A' ~A target='~A'/>"
|
||||
action
|
||||
|
|
@ -67,9 +68,10 @@ action."))
|
|||
(format nil "method='~A'" method))
|
||||
target
|
||||
(if class
|
||||
(format nil " class='~A'" (escape-string class))
|
||||
(format nil " class='~A'"
|
||||
(escape-string class))
|
||||
""))
|
||||
:clog-type 'clog-form :auto-place auto-place))
|
||||
:clog-type 'clog-form :html-id html-id :auto-place auto-place))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; form-element-count ;;
|
||||
|
|
@ -172,13 +174,17 @@ elements."))
|
|||
:file :hidden :image :month :number :password :radio :range
|
||||
:reset :search :submit :tel :text :time :url :week))
|
||||
|
||||
(defgeneric create-form-element (clog-obj element-type &key name value label)
|
||||
(defgeneric create-form-element (clog-obj element-type
|
||||
&key name value label html-id)
|
||||
(:documentation "Create a new clog-form-element as child of CLOG-OBJ.
|
||||
It is importamt that clog-form-elements are a child or descendant of a
|
||||
clog-form in the DOM. The radio ELEMENT-TYPE groups by NAME."))
|
||||
|
||||
(defmethod create-form-element ((obj clog-obj) element-type
|
||||
&key (name nil) (value nil) (label nil))
|
||||
&key (name nil)
|
||||
(value nil)
|
||||
(label nil)
|
||||
(html-id nil))
|
||||
(let ((element (create-child
|
||||
obj (format nil "<input type='~A'~A~A/>"
|
||||
(escape-string element-type)
|
||||
|
|
@ -188,7 +194,9 @@ clog-form in the DOM. The radio ELEMENT-TYPE groups by NAME."))
|
|||
(if name
|
||||
(format nil " name='~A'" name)
|
||||
""))
|
||||
:clog-type 'clog-form-element :auto-place t)))
|
||||
:clog-type 'clog-form-element
|
||||
:html-id html-id
|
||||
:auto-place t)))
|
||||
(when label
|
||||
(label-for label element))
|
||||
element))
|
||||
|
|
@ -370,8 +378,6 @@ group called NAME."))
|
|||
(format nil "$('input:radio[name=~A]:checked').val()"
|
||||
name)))
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;
|
||||
;; name-value ;;
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
|
@ -642,16 +648,18 @@ virtual keyboards."))
|
|||
;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
(defgeneric create-label (clog-obj &key content label-for)
|
||||
(defgeneric create-label (clog-obj &key content label-for html-id)
|
||||
(:documentation "Create a new clog-label as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-label ((obj clog-obj) &key (content "") (label-for nil))
|
||||
(defmethod create-label ((obj clog-obj) &key (content "")
|
||||
(label-for nil)
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<label for='~A'>~A</label>"
|
||||
(if label-for
|
||||
(html-id label-for)
|
||||
"")
|
||||
(escape-string content))
|
||||
:clog-type 'clog-label :auto-place t))
|
||||
:clog-type 'clog-label :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;
|
||||
;; label-for ;;
|
||||
|
|
@ -663,7 +671,6 @@ virtual keyboards."))
|
|||
(defmethod label-for ((obj clog-label) element)
|
||||
(setf (attribute obj "for") (html-id element)))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-fieldset
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -675,16 +682,15 @@ virtual keyboards."))
|
|||
;; create-fieldset ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
(defgeneric create-fieldset (clog-obj &key legend)
|
||||
(defgeneric create-fieldset (clog-obj &key legend html-id)
|
||||
(:documentation "Create a new clog-fieldset as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-fieldset ((obj clog-obj) &key (legend nil))
|
||||
(defmethod create-fieldset ((obj clog-obj) &key (legend nil) (html-id nil))
|
||||
(create-child obj (format nil "<fieldset>~A</fieldset>"
|
||||
(if legend
|
||||
(format nil "<legend>~A</legend>" legend)
|
||||
""))
|
||||
:clog-type 'clog-fieldset :auto-place t))
|
||||
:clog-type 'clog-fieldset :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-data-list
|
||||
|
|
@ -697,12 +703,15 @@ virtual keyboards."))
|
|||
;; create-data-list ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-data-list (clog-obj &key data-list)
|
||||
(defgeneric create-data-list (clog-obj &key data-list html-id)
|
||||
(:documentation "Create a new clog-data-list as child of CLOG-OBJ and
|
||||
optionally fill in with contents of data-list."))
|
||||
|
||||
(defmethod create-data-list ((obj clog-obj) &key (data-list nil))
|
||||
(let ((element (create-child obj "<datalist />" :clog-type 'clog-data-list :auto-place t)))
|
||||
(defmethod create-data-list ((obj clog-obj) &key (data-list nil) (html-id nil))
|
||||
(let ((element (create-child obj "<datalist />"
|
||||
:clog-type 'clog-data-list
|
||||
:html-id html-id
|
||||
:auto-place t)))
|
||||
(when data-list
|
||||
(add-options element data-list))
|
||||
element))
|
||||
|
|
@ -740,7 +749,8 @@ optionally fill in with contents of data-list."))
|
|||
;; create-text-area ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-text-area (clog-obj &key columns rows name value label)
|
||||
(defgeneric create-text-area (clog-obj
|
||||
&key columns rows name value label html-id)
|
||||
(:documentation "Create a new clog-text-area as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-text-area ((obj clog-obj)
|
||||
|
|
@ -748,12 +758,13 @@ optionally fill in with contents of data-list."))
|
|||
(rows 2)
|
||||
(name "")
|
||||
(value "")
|
||||
(label nil))
|
||||
(label nil)
|
||||
(html-id nil))
|
||||
(let ((element
|
||||
(create-child obj
|
||||
(format nil "<textarea name='~A' cols='~A' rows='~A'>~A</textarea>"
|
||||
name columns rows (escape-string value))
|
||||
:clog-type 'clog-text-area :auto-place t)))
|
||||
:clog-type 'clog-text-area :html-id html-id :auto-place t)))
|
||||
|
||||
(when label
|
||||
(label-for label element))
|
||||
|
|
@ -837,7 +848,6 @@ optionally fill in with contents of data-list."))
|
|||
(defmethod disable-resize ((obj clog-text-area))
|
||||
(setf (resizable obj) :none))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-select
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -849,10 +859,14 @@ optionally fill in with contents of data-list."))
|
|||
;; create-select ;;
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-select (clog-obj &key name multiple label)
|
||||
(defgeneric create-select (clog-obj &key name multiple label html-id)
|
||||
(:documentation "Create a new clog-select as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-select ((obj clog-obj) &key (name nil) (multiple nil) (label nil))
|
||||
(defmethod create-select ((obj clog-obj)
|
||||
&key (name nil)
|
||||
(multiple nil)
|
||||
(label nil)
|
||||
(html-id nil))
|
||||
(let ((element (create-child
|
||||
obj (format nil "<select~A~A/>"
|
||||
(if multiple
|
||||
|
|
@ -861,7 +875,7 @@ optionally fill in with contents of data-list."))
|
|||
(if name
|
||||
(format nil " name='~A'" name)
|
||||
""))
|
||||
:clog-type 'clog-select :auto-place t)))
|
||||
:clog-type 'clog-select :html-id html-id :auto-place t)))
|
||||
(when label
|
||||
(label-for label element))
|
||||
element))
|
||||
|
|
@ -901,14 +915,16 @@ optionally fill in with contents of data-list."))
|
|||
;; create-option ;;
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-option (clog-obj &key content value selected disabled)
|
||||
(defgeneric create-option (clog-obj
|
||||
&key content value selected disabled html-id)
|
||||
(:documentation "Create a new clog-option as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-option ((obj clog-obj) &key
|
||||
(content "")
|
||||
(value nil)
|
||||
(selected nil)
|
||||
(disabled nil))
|
||||
(disabled nil)
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<option~A~A~A>~A</option>"
|
||||
(if selected
|
||||
" selected"
|
||||
|
|
@ -920,7 +936,7 @@ optionally fill in with contents of data-list."))
|
|||
(format nil " value='~A'" value)
|
||||
"")
|
||||
content)
|
||||
:clog-type 'clog-option :auto-place t))
|
||||
:clog-type 'clog-option :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;
|
||||
;; selectedp ;;
|
||||
|
|
@ -950,15 +966,15 @@ optionally fill in with contents of data-list."))
|
|||
;; create-optgroup ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-optgroup (clog-obj &key content disabled)
|
||||
(defgeneric create-optgroup (clog-obj &key content disabled html-id)
|
||||
(:documentation "Create a new clog-optgroup as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-optgroup ((obj clog-obj) &key
|
||||
(content "")
|
||||
(disabled nil))
|
||||
(defmethod create-optgroup ((obj clog-obj) &key (content "")
|
||||
(disabled nil)
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<optgroup label='~A'~A/>"
|
||||
content
|
||||
(if disabled
|
||||
" disabled"
|
||||
""))
|
||||
:clog-type 'clog-optgroup :auto-place t))
|
||||
:clog-type 'clog-optgroup :html-id html-id :auto-place t))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue