Explorar el Código

Event triggering API

Herbert Vojčík hace 8 años
padre
commit
3988cb649d
Se han modificado 2 ficheros con 116 adiciones y 1 borrados
  1. 97 1
      src/DOMite.js
  2. 19 0
      src/DOMite.st

+ 97 - 1
src/DOMite.js

@@ -1,4 +1,4 @@
-define("amber/domite/DOMite", ["amber/boot", "amber_core/Kernel-Collections"], function($boot){
+define("amber/domite/DOMite", ["amber/boot", "amber_core/Kernel-Collections"], function($boot){"use strict";
 var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
 $core.addPackage('DOMite');
 $core.packages["DOMite"].innerEval = function (expr) { return eval(expr); };
@@ -355,6 +355,78 @@ messageSends: []
 }),
 $globals.Domite);
 
+$core.addMethod(
+$core.method({
+selector: "fire:",
+protocol: 'events',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+self._fire_detail_(aString,nil._asJSON());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fire:",{aString:aString},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "fire: aString\x0a\x09self fire: aString detail: nil asJSON",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["fire:detail:", "asJSON"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "fire:detail:",
+protocol: 'events',
+fn: function (aString,anObject){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+self._fireEvent_($recv(self._class())._createCustomEvent_detail_(aString,anObject));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fire:detail:",{aString:aString,anObject:anObject},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString", "anObject"],
+source: "fire: aString detail: anObject\x0a\x09self fireEvent: (\x0a\x09\x09self class createCustomEvent: aString detail: anObject)",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["fireEvent:", "createCustomEvent:detail:", "class"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "fireEvent:",
+protocol: 'events',
+fn: function (anEvent){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv(self._element())._dispatchEvent_(anEvent);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fireEvent:",{anEvent:anEvent},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anEvent"],
+source: "fireEvent: anEvent\x0a\x09self element dispatchEvent: anEvent",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["dispatchEvent:", "element"]
+}),
+$globals.Domite);
+
 $core.addMethod(
 $core.method({
 selector: "initialize",
@@ -1026,6 +1098,30 @@ messageSends: ["fromElement:", "querySelector:"]
 }),
 $globals.Domite.klass);
 
+$core.addMethod(
+$core.method({
+selector: "createCustomEvent:detail:",
+protocol: 'events',
+fn: function (aString,anObject){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return new CustomEvent(aString, {detail: anObject});
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"createCustomEvent:detail:",{aString:aString,anObject:anObject},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString", "anObject"],
+source: "createCustomEvent: aString detail: anObject\x0a<return new CustomEvent(aString, {detail: anObject})>",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite.klass);
+
 $core.addMethod(
 $core.method({
 selector: "domListAsArray:",

+ 19 - 0
src/DOMite.st

@@ -142,6 +142,19 @@ resetContents
 
 !Domite methodsFor: 'events'!
 
+fire: aString
+	self fire: aString detail: nil asJSON
+!
+
+fire: aString detail: anObject
+	self fireEvent: (
+		self class createCustomEvent: aString detail: anObject)
+!
+
+fireEvent: anEvent
+	self element dispatchEvent: anEvent
+!
+
 off: aString unbind: aBlock
 	self element removeEventListener: aString block: aBlock useCapture: false
 !
@@ -271,6 +284,12 @@ wrap: aCollection
 	^ aCollection collect: [ :each | self fromElement: each ]
 ! !
 
+!Domite class methodsFor: 'events'!
+
+createCustomEvent: aString detail: anObject
+<return new CustomEvent(aString, {detail: anObject})>
+! !
+
 !Domite class methodsFor: 'instance creation'!
 
 allAt: aString