assets/js/romo/onkey.js in romo-0.19.10 vs assets/js/romo/onkey.js in romo-0.20.0
- old
+ new
@@ -1,35 +1,38 @@
-$.fn.romoOnkey = function() {
- return $.map(this, function(element) {
- return new RomoOnkey(element);
- });
-}
+var RomoOnkey = RomoComponent(function(elem) {
+ this.elem = elem;
-var RomoOnkey = function(element) {
- this.elem = $(element);
this.defaultTriggerOn = 'keydown';
+ this.defaultDelayMs = 0;
+ this.delayTimeout = undefined;
this.doInit();
- this.triggerOn = this.elem.data('romo-onkey-on') || this.defaultTriggerOn;
- this.elem.on(this.triggerOn, $.proxy(this.onTrigger, this));
+ this.triggerOn = Romo.data(this.elem, 'romo-onkey-on') || this.defaultTriggerOn;
+ Romo.on(this.elem, this.triggerOn, Romo.proxy(this._onTrigger, this));
- this.elem.trigger('onkey:ready', [this]);
-}
+ Romo.trigger(this.elem, 'romoOnkey:ready', [this]);
+});
-RomoOnkey.prototype.doInit = function() {
- // override as needed
+// private
+
+RomoOnkey.prototype._doTrigger = function(triggerEvent) {
+ clearTimeout(this.delayTimeout);
+ this.delayTimeout = setTimeout(
+ Romo.proxy(function() {
+ Romo.trigger(this.elem, 'romoOnkey:trigger', [triggerEvent, this]);
+ }, this),
+ Romo.data(this.elem, 'romo-onkey-delay-ms') || this.defaultDelayMs
+ );
}
-RomoOnkey.prototype.onTrigger = function(e) {
- if (this.elem.hasClass('disabled') === false) {
- this.doTrigger(e);
+// event functions
+
+RomoOnkey.prototype.romoEvFn._onTrigger = function(e) {
+ if (Romo.hasClass(this.elem, 'disabled') === false) {
+ this._doTrigger(e);
}
}
-RomoOnkey.prototype.doTrigger = function(triggerEvent) {
- this.elem.trigger('onkey:trigger', [triggerEvent, this]);
-}
+// init
-Romo.onInitUI(function(e) {
- Romo.initUIElems(e, '[data-romo-onkey-auto="true"]').romoOnkey();
-});
+Romo.addElemsInitSelector('[data-romo-onkey-auto="true"]', RomoOnkey);