Add version files and new GIF images for UI components

This commit is contained in:
2025-04-03 06:26:44 +07:00
commit 663c28a2ea
5219 changed files with 772528 additions and 0 deletions

View File

@ -0,0 +1,168 @@
/*
Product Name: dhtmlxSuite
Version: 4.0.3
Edition: Professional
License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com
Copyright UAB Dinamenta http://www.dhtmlx.com
*/
//all purpose set of rules, based on http://code.google.com/p/validation-js
dhtmlxValidation=function(){};
dhtmlxValidation.prototype={
trackInput:function(el,rule,callback_error,callback_correct){
dhtmlxEvent(el,"keyup",function(e){
if (dhtmlxValidation._timer) {
window.clearTimeout(dhtmlxValidation._timer);
dhtmlxValidation._timer = null;
}
dhtmlxValidation._timer = window.setTimeout(function(){
if (!dhtmlxValidation.checkInput(el,rule)){
if(!callback_error || callback_error(el,el.value,rule))
el.className+=" dhtmlx_live_validation_error";
} else {
el.className=el.className.replace(/[ ]*dhtmlx_live_validation_error/g,"");
if (callback_correct)
callback_correct(el,el.value,rule);
}
},250);
});
},
checkInput:function(input,rule){
return this.checkValue(input.value,rule);
},
checkValue:function(value,rule){
if (typeof rule=="string")
rule = rule.split(",");
var final_res=true;
for (var i=0; i<rule.length; i++){
if (!this["is"+rule[i]])
alert("Incorrect validation rule: "+rule[i]);
else
final_res=final_res&&this["is"+rule[i]](value);;
}
return final_res;
},
isEmpty: function(value) {
return value == '';
},
isNotEmpty: function(value) {
return (value instanceof Array?value.length>0:!value == ''); // array in case of multiselect
},
isValidBoolean: function(value) {
return !!value.toString().match(/^(0|1|true|false)$/);
},
isValidEmail: function(value) {
return !!value.toString().match(/(^[a-z0-9]([0-9a-z\-_\.]*)@([0-9a-z_\-\.]*)([.][a-z]{3})$)|(^[a-z]([0-9a-z_\.\-]*)@([0-9a-z_\-\.]*)(\.[a-z]{2,4})$)/i);
},
isValidInteger: function(value) {
return !!value.toString().match(/(^-?\d+$)/);
},
isValidNumeric: function(value) {
return !!value.toString().match(/(^-?\d\d*[\.|,]\d*$)|(^-?\d\d*$)|(^-?[\.|,]\d\d*$)/);
},
isValidAplhaNumeric: function(value) {
return !!value.toString().match(/^[_\-a-z0-9]+$/gi);
},
// 0000-00-00 00:00:00 to 9999:12:31 59:59:59 (no it is not a "valid DATE" function)
isValidDatetime: function(value) {
var dt = value.toString().match(/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/);
return dt && !!(dt[1]<=9999 && dt[2]<=12 && dt[3]<=31 && dt[4]<=59 && dt[5]<=59 && dt[6]<=59) || false;
},
// 0000-00-00 to 9999-12-31
isValidDate: function(value) {
var d = value.toString().match(/^(\d{4})-(\d{2})-(\d{2})$/);
return d && !!(d[1]<=9999 && d[2]<=12 && d[3]<=31) || false;
},
// 00:00:00 to 59:59:59
isValidTime: function(value) {
var t = value.toString().match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/);
return t && !!(t[1]<=24 && t[2]<=59 && t[3]<=59) || false;
},
// 0.0.0.0 to 255.255.255.255
isValidIPv4: function(value) {
var ip = value.toString().match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
return ip && !!(ip[1]<=255 && ip[2]<=255 && ip[3]<=255 && ip[4]<=255) || false;
},
isValidCurrency: function(value) { // Q: Should I consider those signs valid too ? : ¢|€|₤|₦|¥
return value.toString().match(/^\$?\s?\d+?([\.,\,]?\d+)?\s?\$?$/) && true || false;
},
// Social Security Number (999-99-9999 or 999999999)
isValidSSN: function(value) {
return value.toString().match(/^\d{3}\-?\d{2}\-?\d{4}$/) && true || false;
},
// Social Insurance Number (999999999)
isValidSIN: function(value) {
return value.toString().match(/^\d{9}$/) && true || false;
}
};
dhtmlxValidation=new dhtmlxValidation();
//extension for the grid
dhtmlXGridObject.prototype.enableValidation=function(mode,live){
mode=convertStringToBoolean(mode);
if (mode){
this._validators={ data:[] };
}else
this._validators=false;
if (arguments.length>1)
this._validators._live=live;
if (!this._validators._event)
this._validators._event=this.attachEvent("onEditCell",this.validationEvent);
};
dhtmlXGridObject.prototype.setColValidators=function(vals){
if (!this._validators) this.enableValidation(true);
if (typeof vals == "string") vals=vals.split(this.delim);
this._validators.data=vals;
};
dhtmlXGridObject.prototype.validationEvent=function(stage,id,ind,newval,oldval){
var v=this._validators;
if (!v) return true; // validators disabled
var rule=(v.data[ind]||this.cells(id,ind).getAttribute("validate"))||"";
if (stage==1 && rule){
var ed = this.editor||(this._fake||{}).editor;
if (!ed) return true; //event was trigered by checkbox
ed.cell.className=ed.cell.className.replace(/[ ]*dhtmlx_validation_error/g,"");
if (v._live){
var grid=this;
dhtmlxValidation.trackInput(ed.getInput(),rule,function(element,value,rule){
return grid.callEvent("onLiveValidationError",[id,ind,value,element,rule]);
},function(element,value,rule){
return grid.callEvent("onLiveValidationCorrect",[id,ind,value,element,rule]);
});
}
}
if (stage==2)
this.validateCell(id,ind,rule,newval);
return true;
};
dhtmlXGridObject.prototype.validateCell=function(id,ind,rule,value){
rule=rule||(this._validators.data[ind]||this.cells(id,ind).getAttribute("validate"));
value=value||this.cells(id,ind).getValue();
if (!rule) return;
var cell = this.cells(id,ind).cell;
var result = true;
if (typeof rule == "string")
rule = rule.split(this.delim);
for (var i=0; i < rule.length; i++) {
if (!dhtmlxValidation.checkValue(value,rule[i])){
if (this.callEvent("onValidationError",[id,ind,value,rule[i]]))
cell.className+=" dhtmlx_validation_error";
result = false;
}
}
if (result){
this.callEvent("onValidationCorrect",[id,ind,value,rule]);
cell.className=cell.className.replace(/[ ]*dhtmlx_validation_error/g,"");
}
return result;
};