roll back render and move the resize observer to the clog framework

This commit is contained in:
David Botton 2024-08-13 14:21:23 -04:00
parent d924cc437c
commit a34e516325
3 changed files with 15 additions and 20 deletions

View file

@ -625,11 +625,17 @@ option passed from javascript calling the jQuery custom event mechanism
(defgeneric set-on-resize (clog-obj on-resize-handler) (defgeneric set-on-resize (clog-obj on-resize-handler)
(:documentation "Set the ON-RESIZE-HANDLER for CLOG-OBJ. If 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 is nil unbind the event. In most modern browser this only works on the clog-window
object. One can set-on-resize and then re-trigger this event on any clog-obj object, unless a ResizeObserver is put in place, so one is installed except for
using (jquery-trigger obj \"resize\").")) clog-window making this event functional."))
(defmethod set-on-resize ((obj clog-obj) handler) (defmethod set-on-resize ((obj clog-obj) handler)
(set-on-event obj "resize" handler :cancel-event t)) (set-on-event obj "resize" handler :cancel-event t)
(unless (typep obj 'clog-window)
(js-execute obj (format nil "new ResizeObserver(() => {
~A.trigger('resize');
}).observe(~A)"
(jquery obj)
(script-id obj)))))
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
;; set-on-focus ;; ;; set-on-focus ;;

View file

@ -212,8 +212,11 @@ return t on success"
(getf control-record :positioning)) (getf control-record :positioning))
(t (t
:absolute))) :absolute)))
(parent (when (getf data :shift-key) (auto-parent (attribute content "data-clog-auto-parent"))
(current-control app))) (parent (if (getf data :shift-key)
(current-control app)
(when auto-parent
(get-from-control-list app (html-id content) auto-parent))))
(control (create-control (if parent (control (create-control (if parent
parent parent
content) content)

View file

@ -111,28 +111,14 @@
handler) handler)
events)))))) events))))))
;; Set on-create (from user in builder) and on-setup (from control-record) ;; Set on-create (from user in builder) and on-setup (from control-record)
(let ((resizeh (attribute control "data-on-resize")) (let ((handler (attribute control "data-on-create")))
(handler (attribute control "data-on-create")))
(when (equalp handler "undefined") (when (equalp handler "undefined")
(setf handler "")) (setf handler ""))
(when (equalp resizeh "undefined")
(setf resizeh ""))
(when (getf control-record :on-setup) (when (getf control-record :on-setup)
(setf handler (format nil "~A~A" (setf handler (format nil "~A~A"
(funcall (getf control-record :on-setup) (funcall (getf control-record :on-setup)
control control-record) control control-record)
handler))) handler)))
(unless (equal resizeh "")
(push (format nil
" \(js-execute panel
\(format nil \"new ResizeObserver\(\(\) => {
~~A.trigger\('resize'\);
}\).observe\(~~A\)\"
\(jquery \(~A panel\)\)
\(script-id \(~A panel\)\)\)\)"
vname
vname)
creates))
(unless (equal handler "") (unless (equal handler "")
(push (format nil (push (format nil
" \(let \(\(target \(~A panel\)\)\) ~ " \(let \(\(target \(~A panel\)\)\) ~