mirror of
https://github.com/rabbibotton/clog.git
synced 2026-04-27 15:40:51 -07:00
All controls bound in clog added.
This commit is contained in:
parent
dea4e9d037
commit
0a4ef4905b
2 changed files with 178 additions and 77 deletions
|
|
@ -177,7 +177,7 @@ elements."))
|
|||
'(member :button :checkbox :color :date :datetime :datetime-local :email
|
||||
: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 class html-id)
|
||||
(:documentation "Create a new clog-form-element as child of CLOG-OBJ.
|
||||
|
|
@ -765,77 +765,6 @@ virtual keyboards."))
|
|||
""))
|
||||
:clog-type 'clog-fieldset :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-legend
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defclass clog-legend (clog-element)()
|
||||
(:documentation "CLOG Fieldset Legend Object"));
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
;; create-legend ;;
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-legend (clog-obj &key content class html-id)
|
||||
(:documentation "Create a new clog-legend as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-legend ((obj clog-obj) &key (content "")
|
||||
(class nil)
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<legend~A>~A</legend>"
|
||||
(if class
|
||||
(format nil " class='~A'"
|
||||
(escape-string class))
|
||||
"")
|
||||
content)
|
||||
:clog-type 'clog-legend :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-data-list
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defclass clog-data-list (clog-element)()
|
||||
(:documentation "CLOG Form Element Data-List Options Object"));
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; create-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) (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))
|
||||
|
||||
;;;;;;;;;;;;;;;;
|
||||
;; add-option ;;
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric add-option (clog-data-list value)
|
||||
(:documentation "Add option VALUE to data-list."))
|
||||
|
||||
(defmethod add-option ((obj clog-data-list) value)
|
||||
(create-child obj (format nil "<option value='~A'>" (escape-string value))
|
||||
:clog-type 'clog-element :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;
|
||||
;; add-options ;;
|
||||
;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric add-options (clog-data-list data-list)
|
||||
(:documentation "Add option VALUE to data-list."))
|
||||
|
||||
(defmethod add-options ((obj clog-data-list) data-list)
|
||||
(dolist (value data-list)
|
||||
(add-option obj value)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-text-area
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -952,6 +881,77 @@ optionally fill in with contents of data-list."))
|
|||
(defmethod disable-resize ((obj clog-text-area))
|
||||
(setf (resizable obj) :none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-legend
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defclass clog-legend (clog-element)()
|
||||
(:documentation "CLOG Fieldset Legend Object"));
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
;; create-legend ;;
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric create-legend (clog-obj &key content class html-id)
|
||||
(:documentation "Create a new clog-legend as child of CLOG-OBJ."))
|
||||
|
||||
(defmethod create-legend ((obj clog-obj) &key (content "")
|
||||
(class nil)
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<legend~A>~A</legend>"
|
||||
(if class
|
||||
(format nil " class='~A'"
|
||||
(escape-string class))
|
||||
"")
|
||||
content)
|
||||
:clog-type 'clog-legend :html-id html-id :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-data-list
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defclass clog-data-list (clog-element)()
|
||||
(:documentation "CLOG Form Element Data-List Options Object"));
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; create-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) (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))
|
||||
|
||||
;;;;;;;;;;;;;;;;
|
||||
;; add-option ;;
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric add-option (clog-data-list value)
|
||||
(:documentation "Add option VALUE to data-list."))
|
||||
|
||||
(defmethod add-option ((obj clog-data-list) value)
|
||||
(create-child obj (format nil "<option value='~A'>" (escape-string value))
|
||||
:clog-type 'clog-element :auto-place t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;
|
||||
;; add-options ;;
|
||||
;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric add-options (clog-data-list data-list)
|
||||
(:documentation "Add option VALUE to data-list."))
|
||||
|
||||
(defmethod add-options ((obj clog-data-list) data-list)
|
||||
(dolist (value data-list)
|
||||
(add-option obj value)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-select
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -1001,7 +1001,7 @@ optionally fill in with contents of data-list."))
|
|||
(escape-string value)
|
||||
(escape-string content))
|
||||
:clog-type 'clog-element :auto-place t))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; add-select-options ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -1018,7 +1018,8 @@ optionally fill in with contents of data-list."))
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defclass clog-option (clog-form-element)()
|
||||
(:documentation "CLOG Form Element Option for CLOG Select Object"));
|
||||
(:documentation "CLOG Form Element Option for CLOG Select Object
|
||||
or CLOG Data-List objects."));
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
;; create-option ;;
|
||||
|
|
@ -1034,7 +1035,7 @@ optionally fill in with contents of data-list."))
|
|||
(selected nil)
|
||||
(disabled nil)
|
||||
(class nil)
|
||||
(html-id nil))
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<option~A~A~A~A>~A</option>"
|
||||
(if selected
|
||||
" selected"
|
||||
|
|
@ -1048,7 +1049,7 @@ optionally fill in with contents of data-list."))
|
|||
(if class
|
||||
(format nil " class='~A'"
|
||||
(escape-string class))
|
||||
"")
|
||||
"")
|
||||
content)
|
||||
:clog-type 'clog-option :html-id html-id :auto-place t))
|
||||
|
||||
|
|
@ -1086,7 +1087,7 @@ optionally fill in with contents of data-list."))
|
|||
(defmethod create-optgroup ((obj clog-obj) &key (content "")
|
||||
(disabled nil)
|
||||
(class nil)
|
||||
(html-id nil))
|
||||
(html-id nil))
|
||||
(create-child obj (format nil "<optgroup label='~A'~A~A/>"
|
||||
content
|
||||
(if class
|
||||
|
|
|
|||
|
|
@ -47,12 +47,22 @@
|
|||
:control "tcol")
|
||||
'(:tag "span"
|
||||
:control "span")
|
||||
'(:tag "textarea"
|
||||
:control "textarea")
|
||||
'(:tag "style"
|
||||
:control "style-block")
|
||||
'(:tag "fieldset"
|
||||
:control "fieldset")
|
||||
'(:tag "legend"
|
||||
:control "legend")
|
||||
'(:tag "datalist"
|
||||
:control "datalist")
|
||||
'(:tag "select"
|
||||
:control "dropdown")
|
||||
'(:tag "option"
|
||||
:control "option")
|
||||
'(:tag "optgroup"
|
||||
:control "optgroup")
|
||||
'(:tag "div"
|
||||
:control "div")))
|
||||
|
||||
|
|
@ -392,6 +402,19 @@
|
|||
:create-type :element
|
||||
:create-content ""
|
||||
:properties (,@*props-element*))
|
||||
`(:name "textarea"
|
||||
:description "Text Area"
|
||||
:clog-type clog:clog-text-area
|
||||
:create clog:create-text-area
|
||||
:create-type :element
|
||||
:create-content ""
|
||||
:properties ((:name "rows"
|
||||
:prop "rows")
|
||||
(:name "columns"
|
||||
:prop "columns")
|
||||
(:name "word wrap"
|
||||
:prop "wrap")
|
||||
,@*props-element*))
|
||||
`(:name "fieldset"
|
||||
:description "Fieldset"
|
||||
:clog-type clog:clog-fieldset
|
||||
|
|
@ -405,6 +428,83 @@
|
|||
:create-content "Legend here"
|
||||
:create-type :element
|
||||
:properties (,@*props-element*))
|
||||
`(:name "datalist"
|
||||
:description "Data list"
|
||||
:clog-type clog:clog-data-list
|
||||
:create clog:create-data-list
|
||||
:create-type :base
|
||||
:properties (,@*props-base*))
|
||||
`(:name "dropdown"
|
||||
:description "Drop down select"
|
||||
:clog-type clog:clog-select
|
||||
:create clog:create-select
|
||||
:create-type :base
|
||||
:properties ((:name "multiple select"
|
||||
:get ,(lambda (control)
|
||||
(property control "multiple"))
|
||||
:set ,(lambda (control obj)
|
||||
(if (or (equalp (text obj) "true") (equalp (text obj) "multiple"))
|
||||
(setf (attribute control "multiple") t)
|
||||
(remove-attribute control "multiple"))
|
||||
(property control "multiple")))
|
||||
,@*props-base*))
|
||||
`(:name "listbox"
|
||||
:description "Listbox select"
|
||||
:clog-type clog:clog-select
|
||||
:create clog:create-select
|
||||
:create-type :base
|
||||
:setup ,(lambda (control content control-record)
|
||||
(declare (ignore content) (ignore control-record))
|
||||
(setf (size control) "4"))
|
||||
:properties ((:name "multiple select"
|
||||
:get ,(lambda (control)
|
||||
(property control "multiple"))
|
||||
:set ,(lambda (control obj)
|
||||
(if (or (equalp (text obj) "true") (equalp (text obj) "multiple"))
|
||||
(setf (attribute control "multiple") t)
|
||||
(remove-attribute control "multiple"))
|
||||
(property control "multiple")))
|
||||
,@*props-base*))
|
||||
`(:name "option"
|
||||
:description "Option Item"
|
||||
:clog-type clog:clog-option
|
||||
:create clog:create-option
|
||||
:create-content "option item"
|
||||
:create-type :element
|
||||
:properties ((:name "value"
|
||||
:prop "value")
|
||||
(:name "selected"
|
||||
:get ,(lambda (control)
|
||||
(property control "selected"))
|
||||
:set ,(lambda (control obj)
|
||||
(if (or (equalp (text obj) "true") (equalp (text obj) "selected"))
|
||||
(setf (attribute control "selected") t)
|
||||
(remove-attribute control "selected"))
|
||||
(property control "selected")))
|
||||
(:name "disabled"
|
||||
:get ,(lambda (control)
|
||||
(property control "disabled"))
|
||||
:set ,(lambda (control obj)
|
||||
(if (or (equalp (text obj) "true") (equalp (text obj) "disabled"))
|
||||
(setf (attribute control "disabled") t)
|
||||
(remove-attribute control "disabled"))
|
||||
(property control "disabled")))
|
||||
,@*props-element*))
|
||||
`(:name "optgroup"
|
||||
:description "Option Group"
|
||||
:clog-type clog:clog-optgroup
|
||||
:create clog:create-optgroup
|
||||
:create-content "option group"
|
||||
:create-type :element
|
||||
:properties ((:name "disabled"
|
||||
:get ,(lambda (control)
|
||||
(property control "disabled"))
|
||||
:set ,(lambda (control obj)
|
||||
(if (or (equalp (text obj) "true") (equalp (text obj) "disabled"))
|
||||
(setf (attribute control "disabled") t)
|
||||
(remove-attribute control "disabled"))
|
||||
(property control "disabled")))
|
||||
,@*props-element*))
|
||||
`(:name "span"
|
||||
:description "Span"
|
||||
:clog-type clog:clog-span
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue