Add all basic events

This commit is contained in:
David Botton 2022-01-25 22:46:17 -05:00
parent 62c2e07bc9
commit 972d14cd9b
3 changed files with 107 additions and 15 deletions

View file

@ -180,8 +180,8 @@ result or if time out DEFAULT-ANSWER (Private)"))
;;;;;;;;;;;;;;;;;;;;;;;
(defparameter mouse-event-script
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
(e.clientY - e.currentTarget.getBoundingClientRect().top + e.currentTarget.scrollTop) + ':' +
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
(e.clientY - e.currentTarget.getBoundingClientRect().top + e.currentTarget.scrollTop) + ':' +
e.screenX + ':' + e.screenY + ':' + e.which + ':' + e.altKey + ':' +
e.ctrlKey + ':' + e.shiftKey + ':' + e.metaKey + ':' +
e.clientX + ':' + e.clientY + ':' + e.pageX + ':' + e.pageY"
@ -216,10 +216,10 @@ result or if time out DEFAULT-ANSWER (Private)"))
(defparameter touch-event-script
"+ (e.touches[0].clientX -
e.touches[0].currentTarget.getBoundingClientRect().left +
e.touches[0].currentTarget.scrollLeft) + ':' +
e.touches[0].currentTarget.scrollLeft) + ':' +
(e.touches[0].clientY -
e.touches[0].currentTarget.getBoundingClientRect().top +
e.touches[0].currentTarget.scrollTop) + ':' +
e.touches[0].currentTarget.scrollTop) + ':' +
e.touches[0].screenX + ':' + e.touches[0].screenY + ':' + e.touches.length + ':' +
e.altKey + ':' +
e.ctrlKey + ':' +
@ -252,8 +252,8 @@ result or if time out DEFAULT-ANSWER (Private)"))
;;;;;;;;;;;;;;;;;;;;;;;;;
(defparameter pointer-event-script
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
(e.clientY - e.currentTarget.getBoundingClientRect().top + e.currentTarget.scrollTop) + ':' +
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
(e.clientY - e.currentTarget.getBoundingClientRect().top + e.currentTarget.scrollTop) + ':' +
e.screenX + ':' + e.screenY + ':' + e.which + ':' + e.altKey + ':' +
e.ctrlKey + ':' + e.shiftKey + ':' + e.metaKey + ':' +
e.clientX + ':' + e.clientY + ':' + e.pageX + ':' + e.pageY"
@ -306,7 +306,7 @@ result or if time out DEFAULT-ANSWER (Private)"))
;;;;;;;;;;;;;;;;;;;;;;
(defparameter drop-event-script
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
"+ (e.clientX - e.currentTarget.getBoundingClientRect().left + e.currentTarget.scrollLeft) + ':' +
(e.clientY - e.currentTarget.getBoundingClientRect().top + e.currentTarget.scrollTop) + ':' +
e.which + ':' + e.altKey + ':' + e.ctrlKey + ':' + e.shiftKey + ':' + e.metaKey + ':' +
encodeURIComponent(e.originalEvent.dataTransfer.getData('~A'))"
@ -680,7 +680,7 @@ If ON-FOCUS-OUT-HANDLER is nil unbind the event."))
(defgeneric set-on-reset (clog-obj on-reset-handler)
(:documentation "Set the ON-RESET-HANDLER for CLOG-OBJ. If ON-RESET-HANDLER
is nil unbind the event. This event is activated by using reset on a form. If
this even is bound, you must call the form reset manually."))
this event is bound, you must call the form reset manually."))
(defmethod set-on-reset ((obj clog-obj) handler)
(set-event obj "reset"
@ -1133,7 +1133,7 @@ If ON-KEY-DOWN-HANDLER is nil unbind the event."))
(funcall handler obj (parse-keyboard-event data))))
:one-time one-time
:cancel-event disable-default
:call-back-script keyboard-event-script))
:call-back-script keyboard-event-script))
;;;;;;;;;;;;;;;;;;;
;; set-on-key-up ;;
@ -1149,7 +1149,7 @@ ON-KEY-UP-HANDLER is nil unbind the event."))
(lambda (data)
(funcall handler obj (parse-keyboard-event data))))
:one-time one-time
:call-back-script keyboard-event-script))
:call-back-script keyboard-event-script))
;;;;;;;;;;;;;;;;;;;;;;
;; set-on-key-press ;;

View file

@ -403,7 +403,99 @@
'((:name "on-click"
:parameters "target")
(:name "on-focus"
:parameters "target")))
:parameters "target")
(:name "on-blur"
:parameters "target")
(:name "on-change"
:parameters "target")
(:name "on-focus-in"
:parameters "target")
(:name "on-focus-out"
:parameters "target")
(:name "on-reset"
:parameters "target")
(:name "on-search"
:parameters "target")
(:name "on-select"
:parameters "target")
(:name "on-submit"
:parameters "target")
(:name "on-context-menu"
:parameters "target")
(:name "on-double-click"
:parameters "target")
(:name "on-mouse-click"
:parameters "target data")
(:name "on-mouse-double-click"
:parameters "target data")
(:name "on-mouse-right-click"
:parameters "target data")
(:name "on-mouse-enter"
:parameters "target")
(:name "on-mouse-leave"
:parameters "target")
(:name "on-mouse-over"
:parameters "target")
(:name "on-mouse-out"
:parameters "target")
(:name "on-mouse-down"
:parameters "target data")
(:name "on-mouse-up"
:parameters "target data")
(:name "on-mouse-move"
:parameters "target data")
(:name "on-pointer-enter"
:parameters "target")
(:name "on-pointer-leave"
:parameters "target")
(:name "on-pointer-over"
:parameters "target")
(:name "on-pointer-out"
:parameters "target")
(:name "on-pointer-down"
:parameters "target data")
(:name "on-pointer-up"
:parameters "target data")
(:name "on-pointer-move"
:parameters "target data")
(:name "on-touch-start"
:parameters "target data")
(:name "on-touch-move"
:parameters "target data")
(:name "on-touch-end"
:parameters "target data")
(:name "on-touch-cancel"
:parameters "target data")
(:name "on-character"
:parameters "target data")
(:name "on-key-down"
:parameters "target data")
(:name "on-key-up"
:parameters "target data")
(:name "on-key-press"
:parameters "target data")
(:name "on-copy"
:parameters "target")
(:name "on-cut"
:parameters "target")
(:name "on-paste"
:parameters "target")
(:name "on-resize"
:parameters "target")
(:name "on-drag-start"
:parameters "target")
(:name "on-drag"
:parameters "target")
(:name "on-drag-end"
:parameters "target")
(:name "on-drag-enter"
:parameters "target")
(:name "on-drag-leave"
:parameters "target")
(:name "on-drag-over"
:parameters "target")
(:name "on-drop"
:parameters "target data")))
(defparameter *supported-controls*
(list

View file

@ -360,7 +360,7 @@ not a temporary attached one when using select-control."
events)
(dolist (event (reverse (getf info :events)))
(let ((attr (format nil "data-~A" (getf event :name))))
(push `(,(getf event :name) ,(attribute control attr) ,(getf event :parameters)
(push `(,(getf event :name) ,(attribute control attr) ,(getf event :parameters)
,(getf event :setup)
,(lambda (obj)
(let ((txt (text obj)))
@ -776,17 +776,17 @@ of controls and double click to select control."
html-id
(format nil "CLOG:~A" (type-of control)))
vars)
(let ((info (control-info (attribute control "data-clog-type")))
props)
(let ((info (control-info (attribute control "data-clog-type"))))
(dolist (event (getf info :events))
(let ((handler (attribute control (format nil "data-~A" (getf event :name)))))
(unless (or (equalp handler "undefined")
(equal handler ""))
(push (format nil
"\(set-~A \(~A panel\) \(lambda \(~A\) ~A\)\)~%"
"\(set-~A \(~A panel\) \(lambda \(~A\) \(declare \(ignorable ~A\)\) ~A\)\)~%"
(getf event :name)
vname
(getf event :parameters)
(getf event :parameters)
handler)
events))))))))
(get-control-list app panel-id))