enable on-resize events on browser resize for any control

This commit is contained in:
David Botton 2024-08-11 16:59:54 -04:00
parent 9ad5676d5f
commit 4c2fd7d8e3
5 changed files with 33 additions and 9 deletions

View file

@ -625,10 +625,11 @@ option passed from javascript calling the jQuery custom event mechanism
(defgeneric set-on-resize (clog-obj on-resize-handler)
(:documentation "Set the ON-RESIZE-HANDLER for CLOG-OBJ. If ON-RESIZE-HANDLER
is nil unbind the event. In most modern browser this only works on the clog-window
object"))
object. One can set-on-resize and then re-trigger this event on any clog-obj
using (jquery-trigger obj \"resize\")."))
(defmethod set-on-resize ((obj clog-obj) handler)
(set-on-event obj "resize" handler))
(set-on-event obj "resize" handler :cancel-event t))
;;;;;;;;;;;;;;;;;;
;; set-on-focus ;;

View file

@ -70,3 +70,14 @@ result or DEFAULT-ANSWER on time out."))
(defmethod jquery-query ((obj clog-obj) method &key (default-answer nil))
(js-query obj (format nil "~A.~A" (jquery obj) method)
:default-answer default-answer))
;;;;;;;;;;;;;;;;;;;;
;; jquery-trigger ;;
;;;;;;;;;;;;;;;;;;;;
(defgeneric jquery-trigger (clog-obj event)
(:documentation "Trigger EVENT on CLOG-OBJ. Result is discarded,
returns CLOG-OBJ."))
(defmethod jquery-trigger ((obj clog-obj) event)
(js-execute obj (format nil "~A.trigger('~A')" (jquery obj) event)))

View file

@ -413,7 +413,8 @@ embedded in a native template application.)"
"CLOG-jQuery methods"
(jquery generic-function)
(jquery-execute generic-function)
(jquery-query generic-function))
(jquery-query generic-function)
(jquery-trigger generic-function))
(defsection @clog-element-common (:title "Common CLOG Elements")
"CLOG-A - Class for CLOG Anchors"

View file

@ -111,14 +111,25 @@
handler)
events))))))
;; Set on-create (from user in builder) and on-setup (from control-record)
(let ((handler (attribute control "data-on-create")))
(let ((resizeh (attribute control "data-on-resize"))
(handler (attribute control "data-on-create")))
(when (equalp handler "undefined")
(setf handler ""))
(when (equalp resizeh "undefined")
(setf resizeh ""))
(when (getf control-record :on-setup)
(setf handler (format nil "~A~A"
(funcall (getf control-record :on-setup)
control control-record)
handler)))
(unless (equal resizeh "")
(push (format nil
" \(set-on-resize \(window \(connection-body panel\)\)
\(lambda \(obj\)
\(declare \(ignore obj\)\)
\(jquery-trigger \(~A panel\) \"resize\"\)\)\)"
vname)
creates))
(unless (equal handler "")
(push (format nil
" \(let \(\(target \(~A panel\)\)\) ~

View file

@ -1052,7 +1052,7 @@
:properties (,@*props-grid*
,@*props-element*))
`(:name "flex-row"
:description "Row Align"
:description "Flex Row Align Container"
:clog-type clog:clog-div
:create clog:create-div
:create-type :element
@ -1066,7 +1066,7 @@
:properties (,@*props-flex*
,@*props-element*))
`(:name "flex-row-rev"
:description "Row Reverse Align"
:description "Flex Row Reverse Align Container"
:clog-type clog:clog-div
:create clog:create-div
:create-type :element
@ -1080,7 +1080,7 @@
:properties (,@*props-flex*
,@*props-element*))
`(:name "flex-col"
:description "Column Align"
:description "Flex Column Align Container"
:clog-type clog:clog-div
:create clog:create-div
:create-type :element
@ -1094,7 +1094,7 @@
:properties (,@*props-flex*
,@*props-element*))
`(:name "flex-col-rev"
:description "Column Reverse Align"
:description "Flow Column Reverse Align Container"
:clog-type clog:clog-div
:create clog:create-div
:create-type :element
@ -1108,7 +1108,7 @@
:properties (,@*props-flex*
,@*props-element*))
`(:name "flex-center"
:description "Center Align"
:description "Flow Center Align Container"
:clog-type clog:clog-div
:create clog:create-div
:create-type :element