Summary and Description blocks

This commit is contained in:
David Botton 2022-01-23 13:12:50 -05:00
parent 873bfa3eec
commit a27c1aae85
3 changed files with 286 additions and 165 deletions

View file

@ -238,7 +238,6 @@ firefox and does not work at all on IE."))
:html-id html-id :html-id html-id
:auto-place auto-place)) :auto-place auto-place))
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
;; return-value ;; ;; return-value ;;
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
@ -1370,3 +1369,90 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
:clog-type 'clog-table-column-group-item :clog-type 'clog-table-column-group-item
:html-id html-id :html-id html-id
:auto-place auto-place)) :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - clog-details
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-details (clog-element)()
(:documentation "CLOG Details Objects."))
;;;;;;;;;;;;;;;;;;;;
;; create-details ;;
;;;;;;;;;;;;;;;;;;;;
(defgeneric create-details (clog-obj &key content hidden class html-id auto-place)
(:documentation "Create a new CLOG-Details as child of CLOG-OBJ with :CONTENT
(default \"\") and if :AUTO-PLACE (default t) place-inside-bottom-of
CLOG-OBJ. If hidden is true visiblep is set to nil."))
(defmethod create-details ((obj clog-obj) &key (content "")
(hidden nil)
(class nil)
(html-id nil)
(auto-place t))
(create-child obj (format nil "<details~A~A>~A</details>"
(if class
(format nil " class='~A'" (escape-string class))
"")
(if hidden
" style='visibility:hidden;'"
"")
(escape-string content))
:clog-type 'clog-details
:html-id html-id
:auto-place auto-place))
;;;;;;;;;;;;;;;;;;;
;; details-openp ;;
;;;;;;;;;;;;;;;;;;;
(defgeneric details-openp (clog-details)
(:documentation "Get/Setf details-openp. Will show details "))
(defmethod details-openp ((obj clog-details))
(unless (equalp (attribute obj "open") "undefined")
t))
(defgeneric set-details-openp (clog-details value)
(:documentation "Set details-openp VALUE for CLOG-DETAILS"))
(defmethod set-details-openp ((obj clog-details) value)
(if value
(setf (attribute obj "open") t)
(remove-attribute obj "open")))
(defsetf details-openp set-details-openp)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - clog-summary
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-summary (clog-element)()
(:documentation "CLOG Summary Objects."))
;;;;;;;;;;;;;;;;;;;;
;; create-summary ;;
;;;;;;;;;;;;;;;;;;;;
(defgeneric create-summary (clog-obj &key content hidden class html-id auto-place)
(:documentation "Create a new CLOG-Summary as child of CLOG-OBJ with :CONTENT
(default \"\") and if :AUTO-PLACE (default t) place-inside-bottom-of
CLOG-OBJ. If hidden is true visiblep is set to nil. Use inside a CLOG-DETAILS
object for drop reveal."))
(defmethod create-summary ((obj clog-obj) &key (content "")
(hidden nil)
(class nil)
(html-id nil)
(auto-place t))
(create-child obj (format nil "<summary~A~A>~A</summary>"
(if class
(format nil " class='~A'" (escape-string class))
"")
(if hidden
" style='visibility:hidden;'"
"")
(escape-string content))
:clog-type 'clog-summary
:html-id html-id
:auto-place auto-place))

View file

@ -370,6 +370,15 @@ embedded in a native template application.)"
(show-dialog generic-function) (show-dialog generic-function)
(close-dialog generic-function) (close-dialog generic-function)
"CLOG-Details - Class for CLOG Detail Blocks"
(clog-details class)
(create-details generic-function)
(detail-openp generic-function)
"CLOG-Summary - Class for CLOG Summary Blocks"
(clog-summary class)
(create-summary generic-function)
"CLOG-HR - Class for CLOG Hortizontal Rules" "CLOG-HR - Class for CLOG Hortizontal Rules"
(clog-HR class) (clog-HR class)
(create-HR generic-function) (create-HR generic-function)

View file

@ -77,6 +77,10 @@
:control "dt") :control "dt")
'(:tag "dd" '(:tag "dd"
:control "dd") :control "dd")
'(:tag "details"
:control "details")
'(:tag "summary"
:control "summary")
'(:tag "div" '(:tag "div"
:control "div"))) :control "div")))
@ -437,25 +441,6 @@
(:name "word wrap" (:name "word wrap"
:prop "wrap") :prop "wrap")
,@*props-element*)) ,@*props-element*))
`(:name "fieldset"
:description "Fieldset"
:clog-type clog:clog-fieldset
:create clog:create-fieldset
:create-type :base
:properties (,@*props-base*))
`(:name "legend"
:description "Fieldset Legend"
:clog-type clog:clog-legend
:create clog:create-legend
: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" `(:name "dropdown"
:description "Drop down select" :description "Drop down select"
:clog-type clog:clog-select :clog-type clog:clog-select
@ -527,24 +512,6 @@
(remove-attribute control "disabled")) (remove-attribute control "disabled"))
(property control "disabled"))) (property control "disabled")))
,@*props-element*)) ,@*props-element*))
`(:name "span"
:description "Span"
:clog-type clog:clog-span
:create clog:create-span
:create-type :element
:create-content "text here"
:properties (,@*props-element*))
`(:name "link"
:description "Link"
:clog-type clog:clog-a
:create clog:create-a
:create-type :element
:create-content "HTML Link"
:properties ((:name "href link"
:prop "href")
(:name "target"
:prop "target")
,@*props-element*))
`(:name "image" `(:name "image"
:description "Image" :description "Image"
:clog-type clog:clog-img :clog-type clog:clog-img
@ -587,132 +554,6 @@
(:name "maximum" (:name "maximum"
:prop "max") :prop "max")
,@*props-base*)) ,@*props-base*))
`(:name "ol"
:description "Ordered List"
:clog-type clog:clog-ordered-list
:create clog:create-ordered-list
:create-type :base
:properties ((:name "list kind"
:prop "list-style-type")
(:name "list location"
:prop "list-style-position")
,@*props-element*))
`(:name "ul"
:description "Unordered List"
:clog-type clog:clog-unordered-list
:create clog:create-unordered-list
:create-type :base
:properties ((:name "value"
:prop "value")
,@*props-element*))
`(:name "li"
:description "List Item"
:clog-type clog:clog-list-item
:create clog:create-list-item
:create-type :base
:properties (,@*props-element*))
`(:name "table"
:description "Table"
:clog-type clog:clog-table
:create clog:create-table
:create-type :base
:properties (,@*props-base*))
`(:name "tr"
:description "Table Row"
:clog-type clog:clog-table-row
:create clog:create-table-row
:create-type :base
:properties (,@*props-base*))
`(:name "td"
:description "Table Column"
:clog-type clog:clog-table-column
:create clog:create-table-column
:create-type :element
:create-content "Column"
:properties ((:name "column span"
:attr "colspan")
(:name "row span"
:attr "rowspan")
,@*props-element*))
`(:name "th"
:description "Table Heading"
:clog-type clog:clog-table-heading
:create clog:create-table-heading
:create-type :element
:create-content "Heading"
:properties ((:name "column span"
:attr "colspan")
(:name "row span"
:attr "rowspan")
(:name "abbreviated version"
:attr "abbr")
(:name "scope"
:attr "rowspan")
,@*props-element*))
`(:name "tcolgroup"
:description "Table Column Group"
:clog-type clog:clog-table-column-group
:create clog:create-table-column-group
:create-type :base
:properties ((:name "span"
:attr "span")
,@*props-base*))
`(:name "tcol"
:description "Table Column Group Item"
:clog-type clog:clog-table-column-group-item
:create clog:create-table-column-group-item
:create-type :base
:create-content "Column Group Item"
:properties ((:name "span"
:attr "span")
,@*props-base*))
`(:name "thead"
:description "Table Head"
:clog-type clog:clog-table-head
:create clog:create-table-head
:create-type :base
:properties (,@*props-base*))
`(:name "tbody"
:description "Table Body"
:clog-type clog:clog-table-body
:create clog:create-table-body
:create-type :base
:properties (,@*props-base*))
`(:name "tfoot"
:description "Table Footer"
:clog-type clog:clog-table-footer
:create clog:create-table-footer
:create-type :base
:properties (,@*props-base*))
`(:name "tcaption"
:description "Table Caption"
:clog-type clog:clog-table-caption
:create clog:create-table-caption
:create-type :element
:create-content "Caption"
:properties ((:name "caption side"
:style "caption-side")
,@*props-element*))
`(:name "dl"
:description "Definition List"
:clog-type clog:clog-definition-list
:create clog:create-definition-list
:create-type :base
:properties (,@*props-base*))
`(:name "dt"
:description "Definition Term"
:clog-type clog:clog-term
:create clog:create-term
:create-type :element
:create-content "Term"
:properties (,@*props-element*))
`(:name "dd"
:description "Definition Description"
:clog-type clog:clog-description
:create clog:create-description
:create-content "Description"
:create-type :element
:properties (,@*props-element*))
`(:name "form" `(:name "form"
:description "Form" :description "Form"
:clog-type clog:clog-form :clog-type clog:clog-form
@ -908,6 +749,173 @@
:create-param :week :create-param :week
:create-value "" :create-value ""
:properties (,@*props-form-element*)) :properties (,@*props-form-element*))
`(:name "fieldset"
:description "Fieldset"
:clog-type clog:clog-fieldset
:create clog:create-fieldset
:create-type :base
:properties (,@*props-base*))
`(:name "legend"
:description "Fieldset Legend"
:clog-type clog:clog-legend
:create clog:create-legend
: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 "ol"
:description "Ordered List"
:clog-type clog:clog-ordered-list
:create clog:create-ordered-list
:create-type :base
:properties ((:name "list kind"
:prop "list-style-type")
(:name "list location"
:prop "list-style-position")
,@*props-element*))
`(:name "ul"
:description "Unordered List"
:clog-type clog:clog-unordered-list
:create clog:create-unordered-list
:create-type :base
:properties ((:name "value"
:prop "value")
,@*props-element*))
`(:name "li"
:description "List Item"
:clog-type clog:clog-list-item
:create clog:create-list-item
:create-type :base
:properties (,@*props-element*))
`(:name "table"
:description "Table"
:clog-type clog:clog-table
:create clog:create-table
:create-type :base
:properties (,@*props-base*))
`(:name "tr"
:description "Table Row"
:clog-type clog:clog-table-row
:create clog:create-table-row
:create-type :base
:properties (,@*props-base*))
`(:name "td"
:description "Table Column"
:clog-type clog:clog-table-column
:create clog:create-table-column
:create-type :element
:create-content "Column"
:properties ((:name "column span"
:attr "colspan")
(:name "row span"
:attr "rowspan")
,@*props-element*))
`(:name "th"
:description "Table Heading"
:clog-type clog:clog-table-heading
:create clog:create-table-heading
:create-type :element
:create-content "Heading"
:properties ((:name "column span"
:attr "colspan")
(:name "row span"
:attr "rowspan")
(:name "abbreviated version"
:attr "abbr")
(:name "scope"
:attr "rowspan")
,@*props-element*))
`(:name "tcolgroup"
:description "Table Column Group"
:clog-type clog:clog-table-column-group
:create clog:create-table-column-group
:create-type :base
:properties ((:name "span"
:attr "span")
,@*props-base*))
`(:name "tcol"
:description "Table Column Group Item"
:clog-type clog:clog-table-column-group-item
:create clog:create-table-column-group-item
:create-type :base
:create-content "Column Group Item"
:properties ((:name "span"
:attr "span")
,@*props-base*))
`(:name "thead"
:description "Table Head"
:clog-type clog:clog-table-head
:create clog:create-table-head
:create-type :base
:properties (,@*props-base*))
`(:name "tbody"
:description "Table Body"
:clog-type clog:clog-table-body
:create clog:create-table-body
:create-type :base
:properties (,@*props-base*))
`(:name "tfoot"
:description "Table Footer"
:clog-type clog:clog-table-footer
:create clog:create-table-footer
:create-type :base
:properties (,@*props-base*))
`(:name "tcaption"
:description "Table Caption"
:clog-type clog:clog-table-caption
:create clog:create-table-caption
:create-type :element
:create-content "Caption"
:properties ((:name "caption side"
:style "caption-side")
,@*props-element*))
`(:name "dl"
:description "Definition List"
:clog-type clog:clog-definition-list
:create clog:create-definition-list
:create-type :base
:properties (,@*props-base*))
`(:name "dt"
:description "Definition Term"
:clog-type clog:clog-term
:create clog:create-term
:create-type :element
:create-content "Term"
:properties (,@*props-element*))
`(:name "dd"
:description "Definition Description"
:clog-type clog:clog-description
:create clog:create-description
:create-content "Description"
:create-type :element
:properties (,@*props-element*))
`(:name "details"
:description "Details Block"
:clog-type clog:clog-details
:create clog:create-details
:create-type :element
:create-content "Details"
:properties ((:name "open"
:get ,(lambda (control)
(property control "open"))
:set ,(lambda (control obj)
(if (or (equalp (text obj) "true") (equalp (text obj) "open"))
(setf (attribute control "open") t)
(remove-attribute control "open"))
(property control "open")))
,@*props-element*))
`(:name "summary"
:description "Summary Block"
:clog-type clog:clog-summary
:create clog:create-summary
:create-content "Summary"
:create-type :element
:properties (,@*props-element*))
`(:name "audio" `(:name "audio"
:description "Audio Player" :description "Audio Player"
:clog-type clog:clog-audio :clog-type clog:clog-audio
@ -971,6 +979,24 @@
(:name "return value" (:name "return value"
:prop "returnValue") :prop "returnValue")
,@*props-element*)) ,@*props-element*))
`(:name "span"
:description "Span"
:clog-type clog:clog-span
:create clog:create-span
:create-type :element
:create-content "text here"
:properties (,@*props-element*))
`(:name "link"
:description "Link"
:clog-type clog:clog-a
:create clog:create-a
:create-type :element
:create-content "HTML Link"
:properties ((:name "href link"
:prop "href")
(:name "target"
:prop "target")
,@*props-element*))
`(:name "hr" `(:name "hr"
:description "Horizontal Rule" :description "Horizontal Rule"
:clog-type clog:clog-hr :clog-type clog:clog-hr
@ -991,7 +1017,7 @@
:create-type :element :create-type :element
:properties (,@*props-element*)) :properties (,@*props-element*))
`(:name "style-block" `(:name "style-block"
:description "Style" :description "Style Block"
:clog-type clog:clog-style-block :clog-type clog:clog-style-block
:create clog:create-style-block :create clog:create-style-block
:create-type :base :create-type :base