updates
This commit is contained in:
+8
-3
@@ -2,8 +2,11 @@ const stamp = Date.now();
|
||||
|
||||
export class Ut {
|
||||
|
||||
static EventsUID = 'Events' + stamp;
|
||||
static DataUID = 'Data' + stamp;
|
||||
static EventsUID = `Events_${stamp}`;
|
||||
static DataUID = `Data_${stamp}`;
|
||||
static WidgetUID = `Widget_${stamp}`;
|
||||
|
||||
static evKey = 0;
|
||||
|
||||
static isSet = (val) => typeof val !== 'undefined';
|
||||
static isFn = (val) => typeof val === 'function';
|
||||
@@ -18,6 +21,9 @@ export class Ut {
|
||||
static each = (obj, callback, context) => obj && Object.keys(obj).forEach(key => callback.call(context ?? this, obj[key], key) );
|
||||
|
||||
static tplString = (str, context) => new Function('return `' + str + '`;').call(context || {});
|
||||
|
||||
static nextKey = () => ++Ut.evKey;
|
||||
static resetKey = () => Ut.evKey = 0;
|
||||
|
||||
static extendNode(name, value) {
|
||||
|
||||
@@ -60,7 +66,6 @@ export class Ut {
|
||||
moveevent : ('ontouchstart' in window) ? 'touchmove' : 'mousemove'
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redirect
|
||||
*/
|
||||
|
||||
+91
-46
@@ -139,10 +139,9 @@
|
||||
|
||||
events.split(' ').forEach(function(evt) {
|
||||
|
||||
evt = evt.split('.');
|
||||
|
||||
let eName = evt[0];
|
||||
let namespace = nsPref + (evt[1] || '*');
|
||||
const i = evt.indexOf('.');
|
||||
const eName = i === -1 ? evt : evt.slice(0, i);
|
||||
const namespace = nsPref + (i === -1 ? '*' : evt.slice(i + 1) );
|
||||
|
||||
if (!this[ Ut.EventsUID ][ eName ]) {
|
||||
this[ Ut.EventsUID ][ eName ] = [];
|
||||
@@ -169,10 +168,9 @@
|
||||
|
||||
events.split(' ').forEach(function(evt) {
|
||||
|
||||
evt = evt.split('.');
|
||||
|
||||
let eName = evt[0];
|
||||
let namespace = nsPref + (evt[1] || '*');
|
||||
const i = evt.indexOf('.');
|
||||
const eName = i === -1 ? evt : evt.slice(0, i);
|
||||
const namespace = nsPref + (i === -1 ? '*' : evt.slice(i + 1) );
|
||||
|
||||
if (!this[ Ut.EventsUID ][ eName ]) {
|
||||
this[ Ut.EventsUID ][ eName ] = [];
|
||||
@@ -201,9 +199,9 @@
|
||||
|
||||
this[ Ut.EventsUID ][ eName ].push([ namespace, selector, _handler ]);
|
||||
|
||||
if (eName.startsWith('swipe')) {
|
||||
// if (eName.startsWith('swipe')) {
|
||||
// new SwipeEvents(this, eName, target, _handler, opts);
|
||||
}
|
||||
//}
|
||||
|
||||
this.addEventListener(eName, _handler, opts);
|
||||
|
||||
@@ -213,58 +211,73 @@
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove an event handler.
|
||||
*/
|
||||
off(events, selector) {
|
||||
/**
|
||||
* Remove an event handler.
|
||||
*/
|
||||
off(events, selector) {
|
||||
|
||||
let nsPref = (EvtOptions.nsEvent && EvtOptions.section) ? (EvtOptions.section + '.') : '';
|
||||
const target = this;
|
||||
|
||||
if (!this[Ut.EventsUID]) {
|
||||
return this;
|
||||
}
|
||||
if (!target[Ut.EventsUID]) {
|
||||
return target;
|
||||
}
|
||||
|
||||
if (!events) {
|
||||
this.replaceWith(this.cloneNode(true));
|
||||
return this;
|
||||
}
|
||||
events = events ?? [ '' ];
|
||||
|
||||
events.split(' ').forEach(function(evt) {
|
||||
events.split(' ').forEach(event => {
|
||||
|
||||
evt = evt.split('.');
|
||||
const eventToken = event.split('.');
|
||||
|
||||
let eName = evt[0];
|
||||
let namespace = nsPref + (evt[1] || '*');
|
||||
let [ eventName, eventNs ] = eventToken;
|
||||
|
||||
let eList = this[Ut.EventsUID][eName];
|
||||
if (eventName === '') {
|
||||
|
||||
if (eList) {
|
||||
const eventRoot = target[Ut.EventsUID];
|
||||
|
||||
let i = eList.length;
|
||||
Ut.each(eventRoot, (eventList, realEventName) => {
|
||||
|
||||
let i = (eventList && eventList.length) || 0;
|
||||
|
||||
while (i--) {
|
||||
|
||||
const eventData = eventList[i];
|
||||
|
||||
if ((eventToken.length === 1 || eventNs === eventData[0] || eventData[0].startsWith(`${eventNs}.`)) && (!selector || eventData[1] === selector) ) {
|
||||
target.removeEventListener(realEventName, eventData[2]);
|
||||
eventList.splice(i, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (EvtOptions.nsEvent && EvtOptions.section) {
|
||||
eventNs = `${eventNs}.${EvtOptions.section}`;
|
||||
}
|
||||
|
||||
const eventList = target[Ut.EventsUID][ eventName ];
|
||||
|
||||
let i = (eventList && eventList.length) || 0;
|
||||
|
||||
while(i--) {
|
||||
|
||||
let et = eList[i];
|
||||
const eventData = eventList[i];
|
||||
|
||||
if ((et[0] == namespace || namespace == nsPref + '*') && (!selector || (et[1] == selector)) ) {
|
||||
if ((eventToken.length === 1 || eventNs === eventData[0] || eventData[0].startsWith(`${eventNs}.`)) && (!selector || eventData[1] === selector) ) {
|
||||
|
||||
//if (customEvents[eName]) {
|
||||
// customEvents[eName].destroy.call(this, eName, et[1]);
|
||||
//if (customEvents[eventName]) {
|
||||
// customEvents[eventName].destroy.call(this, eventName, eventData[1]);
|
||||
//}
|
||||
//if (eventName.startsWith('swipe')) {}
|
||||
|
||||
if (eName.startsWith('swipe')) {
|
||||
|
||||
}
|
||||
|
||||
this.removeEventListener(eName, et[2]);
|
||||
|
||||
eList.splice(i, 1);
|
||||
this.removeEventListener(eventName, eventData[2]);
|
||||
eventList.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
return target;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -506,6 +519,7 @@
|
||||
left: rect.left + win.scrollX
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Store / Retreive Arbitrary Data
|
||||
*/
|
||||
@@ -521,6 +535,34 @@
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Store / Retreive Arbitrary Widget Data
|
||||
*/
|
||||
widget(data) {
|
||||
|
||||
if (data) {
|
||||
this[ Ut.WidgetUID ] = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
return this[ Ut.WidgetUID ] || null;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get Widget Data Value
|
||||
*/
|
||||
nval() {
|
||||
return this[ Ut.WidgetUID ]?.getValue();
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove widget data
|
||||
*/
|
||||
removeWidget() {
|
||||
delete this[ Ut.WidgetUID ];
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove Arbitrary Data
|
||||
@@ -994,9 +1036,12 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
if ('value' in target.dataset) {
|
||||
const widget = domUtils.widget.call(target);
|
||||
|
||||
if (widget) {
|
||||
|
||||
widget.restoreValue(Ut.unescape(val));
|
||||
|
||||
target.dataset.value = Ut.unescape(val);
|
||||
target.value = Ut.unescape(data[key + '_value'] ?? val);
|
||||
|
||||
if (domUtils.data.call(target, 'datepicker')) {
|
||||
|
||||
@@ -272,8 +272,10 @@ export class Validator {
|
||||
let value;
|
||||
let displayedVal = null;
|
||||
|
||||
if ('value' in el.dataset) {
|
||||
value = el.dataset.value;
|
||||
const widget = el.dxWidget();
|
||||
|
||||
if (widget) {
|
||||
value = widget.getValue();
|
||||
displayedVal = el.value.trim();
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user