diff --git a/source/clog-element-common.lisp b/source/clog-element-common.lisp index e1f0cd0..193c35c 100644 --- a/source/clog-element-common.lisp +++ b/source/clog-element-common.lisp @@ -238,7 +238,6 @@ firefox and does not work at all on IE.")) :html-id html-id :auto-place auto-place)) - ;;;;;;;;;;;;;;;;;; ;; 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 :html-id html-id :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 "~A" + (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 "~A" + (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)) diff --git a/source/clog.lisp b/source/clog.lisp index 38ab83a..9384c9a 100644 --- a/source/clog.lisp +++ b/source/clog.lisp @@ -370,6 +370,15 @@ embedded in a native template application.)" (show-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) (create-HR generic-function) diff --git a/tools/clog-builder-settings.lisp b/tools/clog-builder-settings.lisp index 7a86240..98767ce 100644 --- a/tools/clog-builder-settings.lisp +++ b/tools/clog-builder-settings.lisp @@ -77,6 +77,10 @@ :control "dt") '(:tag "dd" :control "dd") + '(:tag "details" + :control "details") + '(:tag "summary" + :control "summary") '(:tag "div" :control "div"))) @@ -437,25 +441,6 @@ (:name "word wrap" :prop "wrap") ,@*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" :description "Drop down select" :clog-type clog:clog-select @@ -527,24 +512,6 @@ (remove-attribute control "disabled")) (property control "disabled"))) ,@*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" :description "Image" :clog-type clog:clog-img @@ -587,132 +554,6 @@ (:name "maximum" :prop "max") ,@*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" :description "Form" :clog-type clog:clog-form @@ -908,6 +749,173 @@ :create-param :week :create-value "" :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" :description "Audio Player" :clog-type clog:clog-audio @@ -971,6 +979,24 @@ (:name "return value" :prop "returnValue") ,@*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" :description "Horizontal Rule" :clog-type clog:clog-hr @@ -991,7 +1017,7 @@ :create-type :element :properties (,@*props-element*)) `(:name "style-block" - :description "Style" + :description "Style Block" :clog-type clog:clog-style-block :create clog:create-style-block :create-type :base