1(function() { 2var ASPxClientEditBase = ASPx.CreateClass(ASPxClientControl, { 3 constructor: function(name) { 4 this.constructor.prototype.constructor.call(this, name); 5 this.EnabledChanged = new ASPxClientEvent(); 6 this.captionPosition = ASPx.Position.Left; 7 this.showCaptionColon = true; 8 this.scPrefix = "dxe"; 9 }, 10 InlineInitialize: function(){ 11 ASPxClientControl.prototype.InlineInitialize.call(this); 12 this.InitializeEnabled(); 13 this.InitializeEvents(); 14 }, 15 InitializeEnabled: function() { 16 this.SetEnabledInternal(this.clientEnabled, true); 17 }, 18 InitializeEvents: function() { }, 19 AddDefaultReadOnlyStateControllerItem: function(cssClass, mainElementId) { 20 ASPx.AddReadOnlyItems(mainElementId, [[[cssClass], [''], ['']]]); 21 }, 22 AddDefaultDisabledStateControllerItem: function(cssClass, mainElementId) { 23 ASPx.AddDisabledItems(mainElementId, [[[cssClass], [''], ['']]]); 24 }, 25 GetValue: function() { 26 var element = this.GetMainElement(); 27 if(ASPx.IsExistsElement(element)) 28 return element.innerHTML; 29 return ""; 30 }, 31 GetValueString: function(){ 32 var value = this.GetValue(); 33 return (value == null) ? null : value.toString(); 34 }, 35 EnsureValueStringIsActual: function() { 36 if(this.maskInfo != null) 37 this.ParseValue(); 38 }, 39 SetValue: function(value) { 40 if(value == null) 41 value = ""; 42 var element = this.GetMainElement(); 43 if(ASPx.IsExistsElement(element)) 44 element.innerHTML = value; 45 }, 46 GetEnabled: function(){ 47 return this.enabled && this.clientEnabled; 48 }, 49 SetEnabled: function(enabled){ 50 if(this.clientEnabled != enabled) { 51 var errorFrameRequiresUpdate = this.GetIsValid && !this.GetIsValid(); 52 if(errorFrameRequiresUpdate && !enabled) 53 this.UpdateErrorFrameAndFocus(false , null , true ); 54 this.clientEnabled = enabled; 55 this.SetEnabledInternal(enabled, false); 56 if(errorFrameRequiresUpdate && enabled) 57 this.UpdateErrorFrameAndFocus(false ); 58 this.RaiseEnabledChangedEvent(); 59 } 60 }, 61 SetEnabledInternal: function(enabled, initialization){ 62 if(!this.enabled) return; 63 if(!initialization || !enabled) 64 this.ChangeEnabledStateItems(enabled); 65 this.ChangeEnabledAttributes(enabled); 66 if(ASPx.Browser.Chrome) { 67 var mainElement = this.GetMainElement(); 68 if(mainElement) 69 mainElement.className = mainElement.className; 70 } 71 }, 72 ChangeEnabledAttributes: function(enabled){ 73 }, 74 ChangeEnabledStateItems: function(enabled){ 75 }, 76 RaiseEnabledChangedEvent: function(){ 77 if(!this.EnabledChanged.IsEmpty()){ 78 var args = new ASPxClientEventArgs(); 79 this.EnabledChanged.FireEvent(this, args); 80 } 81 }, 82 GetDecodeValue: function (value) { 83 if(typeof (value) == "string" && value.length > 1) 84 value = this.SimpleDecodeHtml(value); 85 return value; 86 }, 87 SimpleDecodeHtml: function (html) { 88 return ASPx.Str.ApplyReplacement(html, [ 89 [/</g, '<'], 90 [/&/g, '&'], 91 [/"/g, '"'], 92 [/'/g, '\''], 93 [/ /g, ' '] 94 ]); 95 }, 96 GetCachedElementById: function(idSuffix) { 97 return ASPx.CacheHelper.GetCachedElementById(this, this.name + idSuffix); 98 }, 99 GetCaptionCell: function() { 100 return this.GetCachedElementById(EditElementSuffix.CaptionCell); 101 }, 102 GetExternalTable: function() { 103 return this.GetCachedElementById(EditElementSuffix.ExternalTable); 104 }, 105 getCaptionRelatedCellCount: function() { 106 if(!this.captionRelatedCellCount) 107 this.captionRelatedCellCount = ASPx.GetNodesByClassName(this.GetExternalTable(), CaptionRelatedCellClassName).length; 108 return this.captionRelatedCellCount; 109 }, 110 addCssClassToCaptionRelatedCells: function() { 111 if(this.captionPosition == ASPx.Position.Left || this.captionPosition == ASPx.Position.Right) { 112 var captionRelatedCellsIndex = this.captionPosition == ASPx.Position.Left ? 0 : this.GetCaptionCell().cellIndex; 113 for(var i = 0; i < this.GetExternalTable().rows.length; i++) 114 ASPx.AddClassNameToElement(this.GetExternalTable().rows[i].cells[captionRelatedCellsIndex], CaptionRelatedCellClassName); 115 } 116 if(this.captionPosition == ASPx.Position.Top || this.captionPosition == ASPx.Position.Bottom) 117 for(var i = 0; i < this.GetCaptionCell().parentNode.cells.length; i++) 118 ASPx.AddClassNameToElement(this.GetCaptionCell().parentNode.cells[i], CaptionRelatedCellClassName); 119 }, 120 GetCaption: function() { 121 if(ASPx.IsExists(this.GetCaptionCell())) 122 return this.getCaptionInternal(); 123 return ""; 124 }, 125 SetCaption: function(caption) { 126 if(!ASPx.IsExists(this.GetCaptionCell())) 127 return; 128 if(this.getCaptionRelatedCellCount() == 0) 129 this.addCssClassToCaptionRelatedCells();
130 if(caption !== "") 131 ASPx.RemoveClassNameFromElement(this.GetExternalTable(), ASPxEditExternalTableClassNames.TableWithEmptyCaptionClassName); 132 else 133 ASPx.AddClassNameToElement(this.GetExternalTable(), ASPxEditExternalTableClassNames.TableWithEmptyCaptionClassName); 134 this.setCaptionInternal(caption); 135 }, 136 getCaptionTextNode: function() { 137 var captionElement = ASPx.GetNodesByPartialClassName(this.GetCaptionCell(), CaptionElementPartialClassName)[0]; 138 return ASPx.GetNormalizedTextNode(captionElement); 139 }, 140 getCaptionInternal: function() { 141 var captionText = this.getCaptionTextNode().nodeValue; 142 if(captionText !== "" && captionText[captionText.length - 1] == ":") 143 captionText = captionText.substring(0, captionText.length - 1); 144 return captionText; 145 }, 146 setCaptionInternal: function(caption) { 147 caption = ASPx.Str.Trim(caption); 148 var captionTextNode = this.getCaptionTextNode(); 149 if(this.showCaptionColon && caption[caption.length - 1] != ":" && caption !== "") 150 caption += ":"; 151 captionTextNode.nodeValue = caption; 152 }, 153 onVirtualKeyboardUITouchStart: function(evt) { } 154}); 155var ValidationPattern = ASPx.CreateClass(null, { 156 constructor: function(errorText) { 157 this.errorText = errorText; 158 } 159}); 160var RequiredFieldValidationPattern = ASPx.CreateClass(ValidationPattern, { 161 constructor: function(errorText) { 162 this.constructor.prototype.constructor.call(this, errorText); 163 }, 164 EvaluateIsValid: function(value) { 165 return value != null && (value.constructor == Array || ASPx.Str.Trim(value.toString()) != ""); 166 } 167}); 168var RegularExpressionValidationPattern = ASPx.CreateClass(ValidationPattern, { 169 constructor: function(errorText, pattern) { 170 this.constructor.prototype.constructor.call(this, errorText); 171 this.pattern = pattern; 172 }, 173 EvaluateIsValid: function(value) { 174 if(value == null) 175 return true; 176 var strValue = value.toString(); 177 if(ASPx.Str.Trim(strValue).length == 0) 178 return true; 179 var regEx = new RegExp(this.pattern); 180 var matches = regEx.exec(strValue); 181 return matches != null && strValue == matches[0]; 182 } 183}); 184function _aspxIsEditorFocusable(inputElement) { 185 return ASPx.IsFocusableCore(inputElement, function(container) { 186 return container.getAttribute("errorFrame") == "errorFrame"; 187 }); 188} 189var invalidEditorToBeFocused = null; 190var ValidationType = { 191 PersonalOnValueChanged: "ValueChanged", 192 PersonalViaScript: "CalledViaScript", 193 MassValidation: "MassValidation" 194}; 195var ErrorFrameDisplay = { 196 None: "None", 197 Static: "Static", 198 Dynamic: "Dynamic" 199}; 200var EditElementSuffix = { 201 ExternalTable: "_ET", 202 ControlCell: "_CC", 203 ErrorCell: "_EC", 204 ErrorTextCell: "_ETC", 205 ErrorImage: "_EI", 206 CaptionCell: "_CapC", 207 AccessibilityAdditionalTextRow: "_AHTR" 208}; 209var ASPxEditExternalTableClassNames = { 210 ValidStaticTableClassName: "dxeValidStEditorTable", 211 ValidDynamicTableClassName: "dxeValidDynEditorTable", 212 TableWithEmptyCaptionClassName: "tableWithEmptyCaption" 213}; 214var CaptionRelatedCellClassName = "dxeCaptionRelatedCell"; 215var CaptionElementPartialClassName = "dxeCaption"; 216var AccessibilityAssistantID = "AcAs"; 217var ASPxClientEdit = ASPx.CreateClass(ASPxClientEditBase, { 218 constructor: function(name) { 219 this.constructor.prototype.constructor.call(this, name); 220 this.isASPxClientEdit = true; 221 this.inputElement = null; 222 this.convertEmptyStringToNull = true; 223 this.readOnly = false; 224 this.clientReadOnly = false; 225 this.focused = false; 226 this.focusEventsLocked = false; 227 this.focusEventsLockCount = 0; 228 this.receiveGlobalMouseWheel = true; 229 this.styleDecoration = null; 230 this.heightCorrectionRequired = false; 231 this.customValidationEnabled = false; 232 this.display = ErrorFrameDisplay.Static; 233 this.initialErrorText = ""; 234 this.causesValidation = false; 235 this.validateOnLeave = true; 236 this.validationGroup = ""; 237 this.sendPostBackWithValidation = null; 238 this.validationPatterns = []; 239 this.setFocusOnError = false; 240 this.errorDisplayMode = "it"; 241 this.errorText = ""; 242 this.isValid = true; 243 this.errorImageIsAssigned = false; 244 this.notifyValidationSummariesToAcceptNewError = false; 245 this.isErrorFrameRequired = false; 246 this.enterProcessed = false; 247 this.keyDownHandlers = {}; 248 this.keyPressHandlers = {}; 249 this.keyUpHandlers = {}; 250 this.specialKeyboardHandlingUsed = false;
251 this.onKeyDownHandler = null; 252 this.onKeyPressHandler = null; 253 this.onKeyUpHandler = null; 254 this.onGotFocusHandler = null; 255 this.onLostFocusHandler = null; 256 this.GotFocus = new ASPxClientEvent(); 257 this.LostFocus = new ASPxClientEvent(); 258 this.Validation = new ASPxClientEvent(); 259 this.ValueChanged = new ASPxClientEvent(); 260 this.KeyDown = new ASPxClientEvent(); 261 this.KeyPress = new ASPxClientEvent(); 262 this.KeyUp = new ASPxClientEvent(); 263 this.eventHandlersInitialized = false; 264 this.errorCellVisibilityChanged = new ASPxClientEvent(); 265 this.ariaExplanatoryTextManager = null; 266 }, 267 SetData: function(data){ 268 if(data.decorationStyles){ 269 for(var i = 0; i < data.decorationStyles.length; i++) 270 this.AddDecorationStyle(data.decorationStyles[i].key, 271 data.decorationStyles[i].className, 272 data.decorationStyles[i].cssText); 273 } 274 }, 275 Initialize: function() { 276 this.initialErrorText = this.errorText; 277 ASPxClientEditBase.prototype.Initialize.call(this); 278 this.InitializeKeyHandlers(); 279 this.UpdateClientValidationState(); 280 this.UpdateValidationSummaries(null , true ); 281 }, 282 InlineInitialize: function() { 283 ASPxClientEditBase.prototype.InlineInitialize.call(this); 284 this.UpdateStyleDecorations(); 285 var externalTable = this.GetExternalTable(); 286 if(externalTable && ASPx.IsPercentageSize(externalTable.style.width)) { 287 this.width = "100%"; 288 this.GetMainElement().style.width = "100%"; 289 if(this.isErrorFrameRequired) 290 externalTable.setAttribute("errorFrame", "errorFrame"); 291 } 292 this.ariaExplanatoryTextManager = this.CreateAriaExplanatoryTextManager(); 293 if(this.clientReadOnly) 294 this.SetReadOnlyInternal(true); 295 this.UpdateErrorCellParentRowVisibility(); 296 }, 297 AfterInitialize: function() { 298 this.ariaExplanatoryTextManager.SetCaptionAssociating(); 299 this.ariaExplanatoryTextManager.UpdateText(); 300 this.ariaExplanatoryTextManager.UpdateValidationState(); 301 ASPxClientEditBase.prototype.AfterInitialize.call(this); 302 }, 303 UpdateStyleDecorations: function() { 304 if(this.styleDecoration) 305 this.styleDecoration.Update(); 306 }, 307 InitSpecialKeyboardHandling: function(){ 308 var name = this.name; 309 this.onKeyDownHandler = function(evt) { ASPx.KBSIKeyDown(name,evt); }; 310 this.onKeyPressHandler = function(evt) { ASPx.KBSIKeyPress(name, evt); }; 311 this.onKeyUpHandler = function(evt) { ASPx.KBSIKeyUp(name, evt); }; 312 this.onGotFocusHandler = function(evt) { ASPx.ESGotFocus(name); }; 313 this.onLostFocusHandler = function(evt) { ASPx.ESLostFocus(name); }; 314 this.specialKeyboardHandlingUsed = true; 315 this.InitializeDelayedSpecialFocus(); 316 }, 317 InitializeKeyHandlers: function() { 318 }, 319 AddKeyDownHandler: function(key, handler) { 320 this.keyDownHandlers[key] = handler; 321 }, 322 AddKeyPressHandler: function(key, handler) { 323 this.keyPressHandlers[key] = handler; 324 }, 325 ChangeSpecialInputEnabledAttributes: function(element, method, doNotChangeAutoComplete){ 326 if(!doNotChangeAutoComplete) 327 element.autocomplete = "off"; 328 if(this.onKeyDownHandler != null) 329 method(element, "keydown", this.onKeyDownHandler); 330 if(this.onKeyPressHandler != null) 331 method(element, "keypress", this.onKeyPressHandler); 332 if(this.onKeyUpHandler != null) 333 method(element, "keyup", this.onKeyUpHandler); 334 if(this.onGotFocusHandler != null) 335 method(element, "focus", this.onGotFocusHandler); 336 if(this.onLostFocusHandler != null) 337 method(element, "blur", this.onLostFocusHandler); 338 }, 339 CreateAriaExplanatoryTextManager: function() { 340 if(this.accessibilityCompliant) 341 return new EditAccessibilityExplanatoryTextManager(this); 342 else 343 return new DisableAccessibilityExplanatoryTextManager(this); 344 }, 345 UpdateClientValidationState: function() { 346 if(!this.customValidationEnabled) 347 return; 348 var mainElement = this.GetMainElement(); 349 if(mainElement) { 350 var validationState = !this.GetIsValid() ? ("-" + this.GetErrorText()) : ""; 351 this.UpdateStateObjectWithObject({ validationState: validationState }); 352 } 353 }, 354 UpdateValidationSummaries: function(validationType, initializing) { 355 if(ASPx.Ident.scripts.ASPxClientValidationSummary) { 356 var summaryCollection = ASPx.GetClientValidationSummaryCollection(); 357 summaryCollection.OnEditorIsValidStateChanged(this, validationType, initializing && this.notifyValidationSummariesToAcceptNewError); 358 } 359 }, 360 FindInputElement: function(){ 361 return null; 362 }, 363 GetInputElement: function(){ 364 if(!ASPx.IsExistsElement(this.inputElement)) 365 this.inputElement = this.FindInputElement(); 366 return this.inputElement; 367 }, 368 GetFocusableInputElement: function() { 369 return this.GetInputElement(); 370 }, 371 GetAccessibilityActiveElements: function() { 372 return [this.GetInputElement()]; 373 }, 374 GetAccessibilityFirstActiveElement: function() { 375 return this.accessibilityHelper ? 376 this.accessibilityHelper.getMainElement() : 377 this.GetAccessibilityActiveElements()[0]; 378 }, 379 GetAccessibilityAssistantElement: function() { 380 return this.GetChildElement(AccessibilityAssistantID); 381 }, 382 GetErrorImage: function() { 383 return this.GetCachedElementById(EditElementSuffix.ErrorImage); 384 }, 385 GetControlCell: function() { 386 return this.GetCachedElementById(EditElementSuffix.ControlCell); 387 }, 388 GetErrorCell: function() { 389 return this.GetCachedElementById(EditElementSuffix.ErrorCell); 390 }, 391 GetErrorTextCell: function() { 392 return this.GetCachedElementById(this.errorImageIsAssigned ? EditElementSuffix.ErrorTextCell : EditElementSuffix.ErrorCell); 393 }, 394 GetReadOnly: function() { 395 return this.readOnly || this.clientReadOnly; 396 }, 397 SetReadOnly: function(readOnly) { 398 readOnly = !!readOnly; 399 if(this.clientReadOnly === readOnly || this.readOnly) 400 return; 401 this.SetReadOnlyInternal(readOnly); 402 }, 403 SetReadOnlyInternal: function(readOnly) { 404 this.clientReadOnly = readOnly; 405 this.ChangeReadOnlyStateItems(readOnly); 406 }, 407 ChangeReadOnlyStateItems: function(readOnly) { 408 ASPx.GetStateController().SetElementReadOnly(this.GetMainElement(), readOnly); 409 }, 410 SetVisible: function (isVisible) { 411 if(this.clientVisible == isVisible) 412 return; 413 var externalTable = this.GetExternalTable(); 414 if(externalTable) { 415 ASPx.SetElementDisplay(externalTable, isVisible); 416 if(this.customValidationEnabled) { 417 var isValid = !isVisible ? true : void (0); 418 this.UpdateErrorFrameAndFocus(false , true , isValid ); 419 } 420 } 421 ASPxClientControl.prototype.SetVisible.call(this, isVisible); 422 }, 423 GetStateHiddenFieldName: function() { 424 return this.uniqueID + "$State"; 425 }, 426 GetValueInputToValidate: function() { 427 return this.GetInputElement(); 428 }, 429 IsVisible: function() { 430 if(!this.clientVisible) 431 return false; 432 var element = this.GetMainElement(); 433 if(!element) 434 return false; 435 while(element && element.tagName != "BODY") { 436 if(element.getAttribute("errorFrame") != "errorFrame" && (!ASPx.GetElementVisibility(element) || !ASPx.GetElementDisplay(element))) 437 return false; 438 element = element.parentNode; 439 } 440 return true; 441 }, 442 AdjustControlCore: function() { 443 this.CollapseEditor(); 444 this.UnstretchInputElement(); 445 if(this.heightCorrectionRequired) 446 this.CorrectEditorHeight(); 447 }, 448 CorrectEditorHeight: function() { 449 }, 450 UnstretchInputElement: function() { 451 }, 452 UseDelayedSpecialFocus: function() { 453 return false; 454 }, 455 GetDelayedSpecialFocusTriggers: function() { 456 return [ this.GetMainElement() ]; 457 }, 458 InitializeDelayedSpecialFocus: function() { 459 if(!this.UseDelayedSpecialFocus()) 460 return; 461 this.specialFocusTimer = -1; 462 var handler = function(evt) { this.OnDelayedSpecialFocusMouseDown(evt); }.aspxBind(this); 463 var triggers = this.GetDelayedSpecialFocusTriggers(); 464 for(var i = 0; i < triggers.length; i++) 465 ASPx.Evt.AttachEventToElement(triggers[i], "mousedown", handler); 466 }, 467 OnDelayedSpecialFocusMouseDown: function(evt) { 468 window.setTimeout(function() { this.SetFocus(); }.aspxBind(this), 0); 469 }, 470 IsFocusEventsLocked: function() { 471 return this.focusEventsLocked || this.focusEventsLockCount !== 0; 472 }, 473 BeginUpdate: function() { 474 this.focusEventsLockCount++; 475 }, 476 EndUpdate: function() { 477 this.focusEventsLockCount--; 478 if(this.focusEventsLockCount === 0) 479 if(this.focused && !this.IsEditorElement(document.activeElement)) 480 this.OnLostFocus(); 481 }, 482 LockFocusEvents: function() { 483 if(!this.focused) return; 484 this.focusEventsLocked = true; 485 }, 486 UnlockFocusEvents: function() { 487 this.focusEventsLocked = false; 488 }, 489 ForceRefocusEditor: function(evt, isNativeFocus) { 490 if(ASPx.Browser.VirtualKeyboardSupported && !this.ownerListBox) { 491 var focusedEditor = ASPx.VirtualKeyboardUI.getFocusedEditor(); 492 if(ASPx.VirtualKeyboardUI.getInputNativeFocusLocked() && (!focusedEditor || focusedEditor === this)) 493 return; 494 ASPx.VirtualKeyboardUI.setInputNativeFocusLocked(!isNativeFocus); 495 }
496 this.LockFocusEvents(); 497 this.BlurInputElement(); 498 window.setTimeout(function() { 499 if(ASPx.Browser.VirtualKeyboardSupported && !this.ownerListBox) { 500 ASPx.VirtualKeyboardUI.setFocusEditorCore(this); 501 } else { 502 this.SetFocus(); 503 } 504 }.aspxBind(this), 0); 505 }, 506 BlurInputElement: function() { 507 var inputElement = this.GetFocusableInputElement(); 508 if(inputElement && inputElement.blur) 509 inputElement.blur(); 510 }, 511 IsEditorElement: function(element) { 512 return this.GetMainElement() == element || ASPx.GetIsParent(this.GetMainElement(), element); 513 }, 514 IsClearButtonElement: function(element) { 515 return false; 516 }, 517 IsElementBelongToInputElement: function(element) { 518 return this.GetInputElement() == element; 519 }, 520 OnFocusCore: function() { 521 if(this.UseDelayedSpecialFocus()) 522 window.clearTimeout(this.specialFocusTimer); 523 if(!this.IsFocusEventsLocked()){ 524 this.focused = true; 525 ASPx.SetFocusedEditor(this); 526 if(this.styleDecoration) 527 this.styleDecoration.Update(); 528 if(this.isInitialized) 529 this.RaiseFocus(); 530 } 531 else 532 this.UnlockFocusEvents(); 533 }, 534 OnLostFocusCore: function() { 535 if(!this.IsFocusEventsLocked()){ 536 this.focused = false; 537 if(ASPx.GetFocusedEditor() === this) 538 ASPx.SetFocusedEditor(null); 539 if(this.styleDecoration) 540 this.styleDecoration.Update(); 541 this.RaiseLostFocus(); 542 } 543 }, 544 OnFocus: function() { 545 if(!this.specialKeyboardHandlingUsed) 546 this.OnFocusCore(); 547 }, 548 OnLostFocus: function() { 549 if(this.isInitialized && !this.specialKeyboardHandlingUsed) 550 this.OnLostFocusCore(); 551 }, 552 OnSpecialFocus: function() { 553 if(this.isInitialized) 554 this.OnFocusCore(); 555 }, 556 OnSpecialLostFocus: function() { 557 if(this.isInitialized) 558 this.OnLostFocusCore(); 559 }, 560 OnMouseWheel: function(evt){ 561 }, 562 OnValidation: function(validationType) { 563 if(this.customValidationEnabled && this.isInitialized && ASPx.IsExistsElement(this.GetMainElement()) && 564 (!this.IsErrorFrameDisplayed() || this.GetElementRequiredForErrorFrame())) { 565 this.BeginErrorFrameUpdate(); 566 try { 567 if(this.validateOnLeave || validationType != ValidationType.PersonalOnValueChanged) { 568 this.SetIsValid(true, true ); 569 this.SetErrorText(this.initialErrorText, true ); 570 this.ValidateWithPatterns(); 571 this.RaiseValidation(); 572 } 573 this.UpdateErrorFrameAndFocus(this.editorFocusingRequired(validationType)); 574 } finally { 575 this.EndErrorFrameUpdate(); 576 } 577 this.UpdateValidationSummaries(validationType); 578 this.ariaExplanatoryTextManager.UpdateValidationState(validationType); 579 } 580 }, 581 GetElementRequiredForErrorFrame: function() { 582 return this.GetExternalTable(); 583 }, 584 editorFocusingRequired: function(validationType) { 585 return !this.GetIsValid() && 586 validationType == ValidationType.PersonalViaScript && this.setFocusOnError; 587 }, 588 OnValueChanged: function() { 589 if(this.getProcessOnServerOnValueChanged()) 590 this.SendPostBackInternal(""); 591 }, 592 getProcessOnServerOnValueChanged: function() { 593 var processOnServer = this.RaiseValidationInternal(); 594 return this.RaiseValueChangedEvent() && processOnServer; 595 }, 596 ParseValue: function() { 597 }, 598 RaisePersonalStandardValidation: function() { 599 if(ASPx.IsFunction(window.ValidatorOnChange)) { 600 var inputElement = this.GetValueInputToValidate(); 601 if(inputElement && inputElement.Validators) 602 window.ValidatorOnChange({ srcElement: inputElement }); 603 } 604 }, 605 RaiseValidationInternal: function() { 606 if(this.isPostBackAllowed() && this.causesValidation && this.validateOnLeave) 607 return ASPxClientEdit.ValidateGroup(this.validationGroup); 608 else { 609 this.OnValidation(ValidationType.PersonalOnValueChanged); 610 return this.GetIsValid(); 611 } 612 }, 613 RaiseValueChangedEvent: function(){ 614 return this.RaiseValueChanged(); 615 }, 616 SendPostBackInternal: function(postBackArg) { 617 if(ASPx.IsFunction(this.sendPostBackWithValidation)) 618 this.sendPostBackWithValidation(postBackArg); 619 else 620 this.SendPostBack(postBackArg); 621 }, 622 SetElementToBeFocused: function() { 623 if(this.IsVisible()) 624 invalidEditorToBeFocused = this; 625 }, 626 GetFocusSelectAction: function() { 627 return null; 628 }, 629 SetFocus: function() { 630 var inputElement = this.GetFocusableInputElement(); 631 if(!inputElement) return; 632 var isIE9 = ASPx.Browser.IE && ASPx.Browser.Version >= 9; 633 if((ASPx.GetActiveElement() != inputElement || isIE9) && _aspxIsEditorFocusable(inputElement)) 634 ASPx.SetFocus(inputElement, this.GetFocusSelectAction()); 635 }, 636 SetFocusOnError: function() { 637 if(invalidEditorToBeFocused == this) { 638 this.SetFocus(); 639 invalidEditorToBeFocused = null; 640 } 641 }, 642 BeginErrorFrameUpdate: function() { 643 if(!this.errorFrameUpdateLocked) 644 this.errorFrameUpdateLocked = true; 645 }, 646 EndErrorFrameUpdate: function() { 647 this.errorFrameUpdateLocked = false; 648 var args = this.updateErrorFrameAndFocusLastCallArgs; 649 if(args) { 650 this.UpdateErrorFrameAndFocus(args[0], args[1]); 651 delete this.updateErrorFrameAndFocusLastCallArgs; 652 } 653 }, 654 UpdateErrorFrameAndFocus: function(setFocusOnError, ignoreVisibilityCheck, isValid) { 655 if(!this.GetEnabled() || !ignoreVisibilityCheck && !this.GetVisible()) 656 return; 657 if(this.errorFrameUpdateLocked) { 658 this.updateErrorFrameAndFocusLastCallArgs = [ setFocusOnError, ignoreVisibilityCheck ]; 659 return; 660 } 661 if(this.styleDecoration) 662 this.styleDecoration.Update(); 663 if(typeof(isValid) == "undefined") 664 isValid = this.GetIsValid(); 665 if(isValid && this.IsErrorFrameDisplayed()) 666 this.ChangeErrorFrameVisibility(false); 667 else { 668 var editorLocatedWithinVisibleContainer = this.IsVisible(); 669 if(this.IsErrorFrameDisplayed()) { 670 this.UpdateErrorCellContent(); 671 this.ChangeErrorFrameVisibility(true); 672 } 673 if(editorLocatedWithinVisibleContainer) { 674 if(setFocusOnError && this.setFocusOnError && invalidEditorToBeFocused == null) { 675 this.SetElementToBeFocused(); 676 this.SetFocusOnError(); 677 } 678 } 679 } 680 }, 681 ChangeErrorFrameVisibility: function(visible) { 682 var externalTable = this.GetExternalTable(); 683 var isStaticDisplay = this.display == ErrorFrameDisplay.Static; 684 if(!isStaticDisplay && visible) { 685 this.EnsureControlCellStylesLoaded(); 686 this.RestoreControlCellStyles(); 687 } 688 this.ChangeErrorCellVisibility(visible, isStaticDisplay); 689 if(!isStaticDisplay && !visible) { 690 this.EnsureControlCellStylesLoaded(); 691 this.ClearControlCellStyles(); 692 }
693 var validExternalTableClassName = isStaticDisplay ? ASPxEditExternalTableClassNames.ValidStaticTableClassName 694 : ASPxEditExternalTableClassNames.ValidDynamicTableClassName; 695 ASPx.ToggleClassNameToElement(externalTable, validExternalTableClassName, !visible); 696 this.UpdateErrorCellParentRowVisibility(); 697 }, 698 ChangeErrorCellVisibility: function(visible, useVisibilityAttribute) { 699 var errorCell = this.GetErrorCell(); 700 if(errorCell) { 701 if(useVisibilityAttribute) 702 ASPx.SetElementVisibility(errorCell, visible); 703 else { 704 ASPx.SetElementDisplay(errorCell, visible); 705 this.raiseErrorCellVisibilityChanged(); 706 } 707 } 708 }, 709 raiseErrorCellVisibilityChanged: function() { 710 if(!this.errorCellVisibilityChanged.IsEmpty()) 711 this.errorCellVisibilityChanged.FireEvent(this); 712 }, 713 UpdateErrorCellParentRowVisibility: function() { 714 var errorCell = this.GetErrorCell(); 715 if(!errorCell || this.display == ErrorFrameDisplay.Static) 716 return; 717 var displayedCellCount = 0; 718 var errorCellParentRow = errorCell.parentNode; 719 for(var i = 0; i < errorCellParentRow.cells.length; i++) { 720 var cell = errorCellParentRow.cells[i]; 721 if(ASPx.GetElementDisplay(cell)) 722 displayedCellCount++; 723 } 724 ASPx.SetElementDisplay(errorCellParentRow, displayedCellCount > 0); 725 }, 726 EnsureControlCellStylesLoaded: function() { 727 if(typeof(this.controlCellStyles) == "undefined") { 728 var controlCell = this.GetControlCell(); 729 this.controlCellStyles = { 730 cssClass: controlCell.className,
731 style: this.ExtractElementStyleStringIgnoringVisibilityProps(controlCell) 732 }; 733 } 734 }, 735 ClearControlCellStyles: function() { 736 this.ClearElementStyle(this.GetControlCell()); 737 }, 738 RestoreControlCellStyles: function() { 739 var controlCell = this.GetControlCell(); 740 controlCell.className = this.controlCellStyles.cssClass; 741 controlCell.style.cssText = this.controlCellStyles.style; 742 }, 743 ExtractElementStyleStringIgnoringVisibilityProps: function(element) { 744 var savedVisibility = element.style.visibility; 745 var savedDisplay = element.style.display; 746 element.style.visibility = ""; 747 element.style.display = ""; 748 var styleStr = element.style.cssText; 749 element.style.visibility = savedVisibility; 750 element.style.display = savedDisplay; 751 return styleStr; 752 }, 753 ClearElementStyle: function(element) { 754 if(!element) 755 return; 756 element.className = ""; 757 var excludedAttrNames = [ 758 "width", "display", "visibility", 759 "position", "left", "top", "z-index", 760 "margin", "margin-top", "margin-right", "margin-bottom", "margin-left", 761 "float", "clear" 762 ]; 763 var savedAttrValues = { }; 764 for(var i = 0; i < excludedAttrNames.length; i++) { 765 var attrName = excludedAttrNames[i]; 766 var attrValue = element.style[attrName]; 767 if(attrValue) 768 savedAttrValues[attrName] = attrValue; 769 } 770 element.style.cssText = ""; 771 for(var styleAttrName in savedAttrValues) 772 if(savedAttrValues.hasOwnProperty(styleAttrName)) 773 element.style[styleAttrName] = savedAttrValues[styleAttrName]; 774 }, 775 Clear: function() { 776 this.SetValue(null); 777 this.SetIsValid(true); 778 return true; 779 }, 780 ResetEditorState: function() { }, 781 UpdateErrorCellContent: function() { 782 if(this.errorDisplayMode.indexOf("t") > -1) 783 this.UpdateErrorText(); 784 if(this.errorDisplayMode == "i") 785 this.UpdateErrorImage(); 786 }, 787 UpdateErrorImage: function() { 788 var image = this.GetErrorImage(); 789 if(ASPx.IsExistsElement(image)) { 790 if(this.accessibilityCompliant) { 791 ASPx.Attr.SetAttribute(image, "aria-label", this.errorText); 792 var innerImg = ASPx.GetNodeByTagName(image, "IMG", 0); 793 if(ASPx.IsExists(innerImg)) 794 innerImg.alt = this.errorText; 795 } 796 image.alt = this.errorText; 797 image.title = this.errorText; 798 } else { 799 this.UpdateErrorText(); 800 } 801 }, 802 UpdateErrorText: function() { 803 var errorTextCell = this.GetErrorTextCell(); 804 if(ASPx.IsExistsElement(errorTextCell)) 805 errorTextCell.innerHTML = this.HtmlEncode(this.errorText); 806 }, 807 ValidateWithPatterns: function() { 808 if(this.validationPatterns.length > 0) { 809 var value = this.GetValue(); 810 for(var i = 0; i < this.validationPatterns.length; i++) { 811 var validator = this.validationPatterns[i]; 812 if(!validator.EvaluateIsValid(value)) { 813 this.SetIsValid(false, true ); 814 this.SetErrorText(validator.errorText, true ); 815 return; 816 } 817 } 818 } 819 }, 820 OnSpecialKeyDown: function(evt){ 821 this.RaiseKeyDown(evt); 822 var handler = this.keyDownHandlers[evt.keyCode]; 823 if(handler) 824 return this[handler](evt); 825 return false; 826 }, 827 OnSpecialKeyPress: function(evt){ 828 this.RaiseKeyPress(evt); 829 var handler = this.keyPressHandlers[evt.keyCode]; 830 if(handler) 831 return this[handler](evt); 832 if(ASPx.Browser.NetscapeFamily || ASPx.Browser.Opera){ 833 if(evt.keyCode == ASPx.Key.Enter) 834 return this.enterProcessed; 835 } 836 return false; 837 }, 838 OnSpecialKeyUp: function(evt){ 839 this.RaiseKeyUp(evt); 840 var handler = this.keyUpHandlers[evt.keyCode]; 841 if(handler) 842 return this[handler](evt); 843 return false; 844 }, 845 OnKeyDown: function(evt) { 846 if(!this.specialKeyboardHandlingUsed) 847 this.RaiseKeyDown(evt); 848 }, 849 OnKeyPress: function(evt) { 850 if(!this.specialKeyboardHandlingUsed) 851 this.RaiseKeyPress(evt); 852 }, 853 OnKeyUp: function(evt) { 854 if(!this.specialKeyboardHandlingUsed) 855 this.RaiseKeyUp(evt); 856 }, 857 RaiseKeyDown: function(evt){ 858 if(!this.KeyDown.IsEmpty()){ 859 var args = new ASPxClientEditKeyEventArgs(evt); 860 this.KeyDown.FireEvent(this, args); 861 } 862 }, 863 RaiseKeyPress: function(evt){ 864 if(!this.KeyPress.IsEmpty()){ 865 var args = new ASPxClientEditKeyEventArgs(evt); 866 this.KeyPress.FireEvent(this, args); 867 } 868 }, 869 RaiseKeyUp: function(evt){ 870 if(!this.KeyUp.IsEmpty()){ 871 var args = new ASPxClientEditKeyEventArgs(evt); 872 this.KeyUp.FireEvent(this, args); 873 } 874 }, 875 RaiseFocus: function(){ 876 if(!this.GotFocus.IsEmpty()){ 877 var args = new ASPxClientEventArgs(); 878 this.GotFocus.FireEvent(this, args); 879 } 880 }, 881 RaiseLostFocus: function(){ 882 if(!this.LostFocus.IsEmpty()){ 883 var args = new ASPxClientEventArgs(); 884 this.LostFocus.FireEvent(this, args); 885 } 886 }, 887 RaiseValidation: function() { 888 if(this.customValidationEnabled && !this.Validation.IsEmpty()) { 889 var currentValue = this.GetValue(); 890 var args = new ASPxClientEditValidationEventArgs(currentValue, this.errorText, this.GetIsValid()); 891 this.Validation.FireEvent(this, args); 892 this.SetErrorText(args.errorText, true ); 893 this.SetIsValid(args.isValid, true ); 894 if(args.value != currentValue) 895 this.SetValue(args.value); 896 } 897 }, 898 RaiseValueChanged: function(){ 899 var processOnServer = this.isPostBackAllowed(); 900 if(!this.ValueChanged.IsEmpty()){ 901 var args = new ASPxClientProcessingModeEventArgs(processOnServer); 902 this.ValueChanged.FireEvent(this, args); 903 processOnServer = args.processOnServer; 904 } 905 return processOnServer; 906 }, 907 isPostBackAllowed: function() { 908 return this.autoPostBack; 909 }, 910 AddDecorationStyle: function(key, className, cssText) { 911 if(!this.styleDecoration) 912 this.RequireStyleDecoration(); 913 this.styleDecoration.AddStyle(key, className, cssText); 914 }, 915 RequireStyleDecoration: function() { 916 this.styleDecoration = this.CreateStyleDecoration(); 917 this.PopulateStyleDecorationPostfixes(); 918 }, 919 CreateStyleDecoration: function() { 920 return new ASPx.EditorStyleDecoration(this); 921 }, 922 PopulateStyleDecorationPostfixes: function() { 923 this.styleDecoration.AddPostfix(""); 924 }, 925 LockStyleDecorationUpdate: function() { 926 if(this.styleDecoration) 927 this.styleDecoration.LockUpdate(); 928 }, 929 UnlockStyleDecorationUpdate: function() { 930 if(this.styleDecoration) 931 this.styleDecoration.UnlockUpdate(); 932 }, 933 Focus: function(){ 934 this.SetFocus(); 935 }, 936 GetIsValid: function() { 937 var hasRequiredInputElement = !this.RequireInputElementToValidate() || ASPx.IsExistsElement(this.GetInputElement()); 938 if(!hasRequiredInputElement || this.IsErrorFrameDisplayed() && !ASPx.IsExistsElement(this.GetElementRequiredForErrorFrame())) 939 return true; 940 return this.isValid; 941 }, 942 RequireInputElementToValidate: function() { 943 return true; 944 }, 945 IsErrorFrameDisplayed: function() { 946 return this.display !== ErrorFrameDisplay.None; 947 }, 948 GetErrorText: function(){ 949 return this.errorText; 950 }, 951 SetIsValid: function(isValid, validating){ 952 if(this.customValidationEnabled && this.isValid != isValid) { 953 this.isValid = isValid; 954 this.UpdateErrorFrameAndFocus(false );
955 this.UpdateClientValidationState(); 956 if(!validating) 957 this.UpdateValidationSummaries(ValidationType.PersonalViaScript); 958 } 959 }, 960 SetErrorText: function(errorText, validating){ 961 if(this.customValidationEnabled && this.errorText != errorText) { 962 this.errorText = errorText; 963 this.UpdateErrorFrameAndFocus(false ); 964 this.UpdateClientValidationState(); 965 if(!validating) 966 this.UpdateValidationSummaries(ValidationType.PersonalViaScript); 967 } 968 }, 969 Validate: function(){ 970 this.ParseValue(); 971 this.OnValidation(ValidationType.PersonalViaScript); 972 }, 973 GetModifyEvent: function() { 974 return this.ValueChanged; 975 }, 976 EnsureRequiredNativeAttributesExists: function() { } 977}); 978ASPx.Ident.scripts.ASPxClientEdit = true; 979ASPx.focusedEditorName = ""; 980ASPx.GetFocusedEditor = function() { 981 var focusedEditor = ASPx.GetControlCollection().Get(ASPx.focusedEditorName); 982 if(focusedEditor && !focusedEditor.focused){ 983 ASPx.SetFocusedEditor(null); 984 focusedEditor = null; 985 } 986 return focusedEditor; 987}; 988ASPx.SetFocusedEditor = function(editor) { 989 ASPx.focusedEditorName = editor ? editor.name : ""; 990}; 991ASPx.FindAssociatedLabelElements = function(editor) { 992 var assocciatedLabels = []; 993 var inputElement = editor.GetInputElement(); 994 if(!ASPx.IsExists(inputElement) || !inputElement.id) 995 return assocciatedLabels; 996 var labels = ASPx.GetNodesByTagName(document, "LABEL"); 997 for(var i = 0; i < labels.length; i++) { 998 if(!!labels[i].htmlFor && labels[i].htmlFor === inputElement.id) 999 assocciatedLabels.push(labels[i]); 1000 } 1001 return assocciatedLabels; 1002}; 1003var DisableAccessibilityExplanatoryTextManager = ASPx.CreateClass(null, { 1004 constructor: function(editor) { 1005 this.editor = editor; 1006 }, 1007 GetAdditionalTextRowId: function() { 1008 return this.editor.name + EditElementSuffix.AccessibilityAdditionalTextRow; 1009 }, 1010 GetErrorTextElement: function () { 1011 return !!this.editor.GetErrorTextCell() ? this.editor.GetErrorTextCell() : this.editor.GetErrorImage(); 1012 }, 1013 GetTextElement: function() { return null; }, 1014 SetCaptionAssociating: function() { }, 1015 UpdateText: function() { }, 1016 UpdateValidationState: function(validationType) { }, 1017 ToggleErrorAlert: function() { }, 1018 SetOrRemoveText: function(accessibilityElements, textElement, setText, isLabel, isFirst) { } 1019}); 1020var EditAccessibilityExplanatoryTextManager = ASPx.CreateClass(DisableAccessibilityExplanatoryTextManager, { 1021 constructor: function(editor) { 1022 this.constructor.prototype.constructor.call(this, editor); 1023 this.invisibleRowCssClassName = "dxAIR"; 1024 }, 1025 GetTextElement: function() { 1026 var mainElement = this.editor.GetMainElement(); 1027 if(!mainElement) return null; 1028 var explanatoryText = ""; 1029 var explanatoryTextElement = null; 1030 if(!!this.editor.nullText) 1031 explanatoryText = this.editor.nullText; 1032 else if(!!this.editor.helpTextObj) 1033 explanatoryTextElement = this.editor.helpTextObj.helpTextElement; 1034 else if(!!mainElement.title) 1035 explanatoryText = mainElement.title; 1036 if(explanatoryText && mainElement.tagName == "TABLE") { 1037 var assistantElement = this.editor.GetAccessibilityFirstActiveElement(); 1038 if(assistantElement) 1039 ASPx.Attr.Aria.AppendLabel(assistantElement, explanatoryText, true); 1040 } 1041 return explanatoryTextElement; 1042 }, 1043 SetCaptionAssociating: function() { 1044 var captionCell = this.editor.GetCaptionCell(); 1045 if(!captionCell || captionCell.childNodes[0].tagName == "LABEL") return; 1046 var labelElement = captionCell.childNodes[0]; 1047 ASPx.EditAccessibilityExplanatoryTextManager.SetLabelAssociating(this.editor, this.editor.GetAccessibilityFirstActiveElement(), labelElement); 1048 }, 1049 UpdateText: function() { 1050 var additionalTextElement = this.GetTextElement(); 1051 if(ASPx.IsExists(additionalTextElement)) { 1052 var pronounceElement = this.editor.GetAccessibilityFirstActiveElement(); 1053 var hasAnyLabel = !!ASPx.Attr.GetAttribute(pronounceElement, "aria-label") || 1054 !!ASPx.Attr.GetAttribute(pronounceElement, "aria-labelledby") || 1055 ASPx.FindAssociatedLabelElements(this.editor).length > 0; 1056 this.SetOrRemoveText([pronounceElement], additionalTextElement, true, !hasAnyLabel, false); 1057 } 1058 },
1059 UpdateValidationState: function(validationType) { 1060 if(validationType == ValidationType.PersonalOnValueChanged && this.editor.accessibilityHelper) return; 1061 var accessibilityElements = this.editor.GetAccessibilityActiveElements(); 1062 var errorTextElement = this.GetErrorTextElement(); 1063 this.SetOrRemoveText(accessibilityElements, errorTextElement, !this.editor.isValid, false, true); 1064 if(accessibilityElements.length > 0 && !!errorTextElement) { 1065 for(var i = 0; i < accessibilityElements.length; i++) { 1066 if(!ASPx.IsExists(accessibilityElements[i])) continue; 1067 ASPx.Attr.SetOrRemoveAttribute(accessibilityElements[i], "aria-invalid", !this.editor.isValid); 1068 } 1069 } 1070 }, 1071 ToggleErrorAlert: function() { 1072 var errorTextElement = this.GetErrorTextElement(); 1073 ASPx.SetElementDisplay(errorTextElement, false); 1074 ASPx.Attr.SetAttribute(errorTextElement, 'role', 'alert'); 1075 ASPx.SetElementDisplay(errorTextElement, true); 1076 setTimeout(function() { ASPx.Attr.RemoveAttribute(errorTextElement, 'role'); }, 500); 1077 }, 1078 SetOrRemoveText: function(accessibilityElements, textElement, setText, isLabel, isFirst) { 1079 var idsRefAttribute = isLabel ? ASPx.Attr.Aria.labelled : ASPx.Attr.Aria.described; 1080 if(!textElement) return; 1081 var textId = !!textElement.id ? textElement.id : textElement.parentNode.id; 1082 for(var i = 0; i < accessibilityElements.length; i++) { 1083 if(!accessibilityElements[i]) continue; 1084 var descRefString = ASPx.Attr.GetAttribute(accessibilityElements[i], idsRefAttribute); 1085 var descRefIds = !!descRefString ? descRefString.split(" ") : [ ]; 1086 var descIndex = descRefIds.indexOf(textId); 1087 if(setText && descIndex == -1) { 1088 if(isFirst) 1089 descRefIds.unshift(textId); 1090 else 1091 descRefIds.push(textId); 1092 } 1093 else if(!setText && descIndex > -1) 1094 descRefIds.splice(descIndex, 1); 1095 ASPx.Attr.SetOrRemoveAttribute(accessibilityElements[i], idsRefAttribute, descRefIds.join(" ")); 1096 } 1097 } 1098}); 1099ASPx.DisableAccessibilityExplanatoryTextManager = DisableAccessibilityExplanatoryTextManager; 1100ASPx.EditAccessibilityExplanatoryTextManager = EditAccessibilityExplanatoryTextManager; 1101ASPx.EditAccessibilityExplanatoryTextManager.SetLabelAssociating = function(editor, activeElement, labelElement) { 1102 var clickHandler = function(evt) { 1103 if(editor && editor.OnAssociatedLabelClick) 1104 editor.OnAssociatedLabelClick(evt); 1105 else 1106 activeElement.click(); 1107 }; 1108 ASPx.Evt.AttachEventToElement(labelElement, "click", clickHandler); 1109 if(!!editor) { 1110 var hasAriaLabel = !!ASPx.Attr.GetAttribute(activeElement, "aria-label"); 1111 editor.ariaExplanatoryTextManager.SetOrRemoveText([activeElement], labelElement, true, !hasAriaLabel, true); 1112 } 1113}; 1114ASPxClientEdit.ClearEditorsInContainer = function(container, validationGroup, clearInvisibleEditors) { 1115 invalidEditorToBeFocused = null; 1116 ASPx.ProcessEditorsInContainer(container, ASPx.ClearProcessingProc, ASPx.ClearChoiceCondition, validationGroup, clearInvisibleEditors, true ); 1117 ASPxClientEdit.ClearExternalControlsInContainer(container, validationGroup, clearInvisibleEditors, true ); 1118}; 1119ASPxClientEdit.ClearEditorsInContainerById = function(containerId, validationGroup, clearInvisibleEditors) { 1120 var container = document.getElementById(containerId); 1121 this.ClearEditorsInContainer(container, validationGroup, clearInvisibleEditors); 1122}; 1123ASPxClientEdit.ClearGroup = function(validationGroup, clearInvisibleEditors) { 1124 return this.ClearEditorsInContainer(null, validationGroup, clearInvisibleEditors); 1125}; 1126ASPxClientEdit.ValidateEditorsInContainer = function(container, validationGroup, validateInvisibleEditors) { 1127 var summaryCollection; 1128 if(ASPx.Ident.scripts.ASPxClientValidationSummary) { 1129 summaryCollection = ASPx.GetClientValidationSummaryCollection(); 1130 summaryCollection.AllowNewErrorsAccepting(validationGroup); 1131 } 1132 var validationResult = ASPx.ProcessEditorsInContainer(container, ASPx.ValidateProcessingProc, _aspxValidateChoiceCondition, validationGroup, validateInvisibleEditors, 1133 false ); 1134 validationResult.isValid = ASPxClientEdit.ValidateExternalControlsInContainer(container, validationGroup, validateInvisibleEditors, 1135 false ) && validationResult.isValid; 1136 if(typeof(validateInvisibleEditors) == "undefined") 1137 validateInvisibleEditors = false; 1138 if(typeof(validationGroup) == "undefined") 1139 validationGroup = null; 1140 validationResult.isValid = ASPx.GetControlCollection().RaiseValidationCompleted(container, validationGroup, 1141 validateInvisibleEditors, validationResult.isValid, validationResult.firstInvalid, validationResult.firstVisibleInvalid); 1142 if(summaryCollection) 1143 summaryCollection.ForbidNewErrorsAccepting(validationGroup); 1144 if(!validationResult.isValid && !!validationResult.firstVisibleInvalid && validationResult.firstVisibleInvalid.accessibilityCompliant && !validationResult.firstVisibleInvalid.setFocusOnError) { 1145 var accessInvalidControl = validationResult.firstVisibleInvalid; 1146 if(!summaryCollection && !accessInvalidControl.focused) { 1147 var beforeDelayActiveElement = ASPx.GetActiveElement(); 1148 setTimeout(function() { 1149 var currentActiveElement = ASPx.GetActiveElement(); 1150 if(accessInvalidControl.focused || (currentActiveElement != beforeDelayActiveElement && ASPx.Attr.IsExistsAttribute(currentActiveElement, 'role'))) 1151 return; 1152 accessInvalidControl.ariaExplanatoryTextManager.ToggleErrorAlert(); 1153 }, 500); 1154 } 1155 } 1156 return validationResult.isValid; 1157}; 1158ASPxClientEdit.ValidateEditorsInContainerById = function(containerId, validationGroup, validateInvisibleEditors) { 1159 var container = document.getElementById(containerId); 1160 return this.ValidateEditorsInContainer(container, validationGroup, validateInvisibleEditors); 1161};
1162ASPxClientEdit.ValidateGroup = function(validationGroup, validateInvisibleEditors) { 1163 return this.ValidateEditorsInContainer(null, validationGroup, validateInvisibleEditors); 1164}; 1165ASPxClientEdit.AreEditorsValid = function(containerOrContainerId, validationGroup, checkInvisibleEditors) { 1166 var container = typeof(containerOrContainerId) == "string" ? document.getElementById(containerOrContainerId) : containerOrContainerId; 1167 var checkResult = ASPx.ProcessEditorsInContainer(container, ASPx.EditorsValidProcessingProc, _aspxEditorsValidChoiceCondition, validationGroup, 1168 checkInvisibleEditors, false ); 1169 checkResult.isValid = ASPxClientEdit.AreExternalControlsValidInContainer(containerOrContainerId, validationGroup, 1170 checkInvisibleEditors, false ) && checkResult.isValid; 1171 return checkResult.isValid; 1172}; 1173ASPxClientEdit.AreExternalControlsValidInContainer = function(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors) { 1174 if(ASPx.Ident.scripts.ASPxClientHtmlEditor) 1175 return ASPxClientHtmlEditor.AreEditorsValidInContainer(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors); 1176 return true; 1177}; 1178ASPxClientEdit.ClearExternalControlsInContainer = function(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors) { 1179 if(ASPx.Ident.scripts.ASPxClientHtmlEditor) 1180 return ASPxClientHtmlEditor.ClearEditorsInContainer(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors); 1181 return true; 1182}; 1183ASPxClientEdit.ValidateExternalControlsInContainer = function(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors) { 1184 if(ASPx.Ident.scripts.ASPxClientHtmlEditor) 1185 return ASPxClientHtmlEditor.ValidateEditorsInContainer(containerId, validationGroup, validateInvisibleEditors, processDisabledEditors); 1186 return true; 1187}; 1188ASPxClientEdit.AttachEditorModificationListener = function(handler, predicate) { 1189 var processAction = function(event) { event.AddHandler(handler); }; 1190 ASPxClientEdit.ProcessEditorModificationListener(handler, processAction, predicate); 1191}; 1192ASPxClientEdit.DetachEditorModificationListener = function(handler, predicate) { 1193 var processAction = function(event) { event.RemoveHandler(handler); }; 1194 ASPxClientEdit.ProcessEditorModificationListener(handler, processAction, predicate); 1195}; 1196ASPxClientEdit.ProcessEditorModificationListener = function(handler, action, predicate) { 1197 ASPx.GetControlCollection().ForEachControl(function(control) { 1198 if(control.GetModifyEvent && predicate(control)) { 1199 if(control.isNative) 1200 control.EnsureRequiredNativeAttributesExists(); 1201 action(control.GetModifyEvent()); 1202 } 1203 }); 1204}; 1205var ASPxClientEditKeyEventArgs = ASPx.CreateClass(ASPxClientEventArgs, { 1206 constructor: function(htmlEvent) { 1207 this.constructor.prototype.constructor.call(this); 1208 this.htmlEvent = htmlEvent; 1209 } 1210}); 1211var ASPxClientEditValidationEventArgs = ASPx.CreateClass(ASPxClientEventArgs, { 1212 constructor: function(value, errorText, isValid) { 1213 this.constructor.prototype.constructor.call(this); 1214 this.errorText = errorText; 1215 this.isValid = isValid; 1216 this.value = value; 1217 } 1218}); 1219ASPx.ProcessEditorsInContainer = function(container, processingProc, choiceCondition, validationGroup, processInvisibleEditors, processDisabledEditors) { 1220 var allProcessedSuccessfull = true; 1221 var firstInvalid = null; 1222 var firstVisibleInvalid = null; 1223 var invalidEditorToBeFocused = null; 1224 ASPx.GetControlCollection().ForEachControl(function(control) { 1225 var canValidate = ASPx.CanValidateControl(control, container, processingProc, choiceCondition, validationGroup, processInvisibleEditors, processDisabledEditors); 1226 if(!canValidate) return; 1227 var isSuccess = processingProc(control); 1228 if(!isSuccess) { 1229 allProcessedSuccessfull = false; 1230 if(firstInvalid == null) 1231 firstInvalid = control; 1232 var isVisible = control.IsVisible(); 1233 if(isVisible && firstVisibleInvalid == null) 1234 firstVisibleInvalid = control; 1235 if(control.setFocusOnError && invalidEditorToBeFocused == null && isVisible) 1236 invalidEditorToBeFocused = control; 1237 } 1238 }, this); 1239 if(invalidEditorToBeFocused != null) 1240 invalidEditorToBeFocused.SetFocus(); 1241 return new ASPxValidationResult(allProcessedSuccessfull, firstInvalid, firstVisibleInvalid); 1242}; 1243ASPx.CanValidateControl = function(control, container, processingProc, choiceCondition, validationGroup, processInvisibleEditors, processDisabledEditors) { 1244 var needToProcessRatingControl = window.ASPxClientRatingControl && (control instanceof ASPxClientRatingControl) && processingProc === ASPx.ClearProcessingProc; 1245 var mainElement = control.GetMainElement(); 1246 if(!ASPx.Ident.IsASPxClientEdit(control) && !needToProcessRatingControl) 1247 return false; 1248 if(ASPx.Ident.isDialogInvisibleControl(control) || ASPx.Ident.isBatchEditUnusedEditor(control)) 1249 return false; 1250 if(!processDisabledEditors && !control.GetEnabled()) 1251 return false; 1252 if(!mainElement || (container && !ASPx.GetIsParent(container, mainElement))) 1253 return false; 1254 if(!processInvisibleEditors && !control.IsVisible()) 1255 return false; 1256 if(choiceCondition && !choiceCondition(control, validationGroup)) 1257 return false; 1258 return true; 1259}; 1260var ASPxValidationResult = ASPx.CreateClass(null, { 1261 constructor: function(isValid, firstInvalid, firstVisibleInvalid) { 1262 this.isValid = isValid; 1263 this.firstInvalid = firstInvalid;
1264 this.firstVisibleInvalid = firstVisibleInvalid; 1265 } 1266}); 1267ASPx.ClearChoiceCondition = function(edit, validationGroup) { 1268 return !ASPx.IsExists(validationGroup) || (edit.validationGroup == validationGroup); 1269}; 1270function _aspxValidateChoiceCondition(edit, validationGroup) { 1271 return ASPx.ClearChoiceCondition(edit, validationGroup) && edit.customValidationEnabled; 1272} 1273function _aspxEditorsValidChoiceCondition(edit, validationGroup) { 1274 return _aspxValidateChoiceCondition(edit, validationGroup); 1275} 1276function wrapLostFocusHandler(handler) { 1277 if(ASPx.Browser.Edge) { 1278 return function(name) { 1279 var edit = ASPx.GetControlCollection().Get(name); 1280 if(edit && !ASPx.IsElementVisible(edit.GetMainElement())) 1281 setTimeout(handler, 0, name); 1282 else 1283 handler(name); 1284 }; 1285 } 1286 return handler; 1287} 1288ASPx.EGotFocus = function(name) { 1289 var edit = ASPx.GetControlCollection().Get(name); 1290 if(!edit) return; 1291 if(!edit.isInitialized){ 1292 var inputElement = edit.GetFocusableInputElement(); 1293 if(inputElement && inputElement === document.activeElement) { 1294 if(ASPx.Browser.Firefox) 1295 window.setTimeout(function() { document.activeElement.blur(); }, 0); 1296 else 1297 document.activeElement.blur(); 1298 } 1299 return; 1300 } 1301 if(ASPx.Browser.VirtualKeyboardSupported && !edit.ownerListBox) 1302 ASPx.VirtualKeyboardUI.onCallingVirtualKeyboard(edit, false); 1303 else 1304 edit.OnFocus(); 1305}; 1306ASPx.ELostFocusCore = function(name) { 1307 var edit = ASPx.GetControlCollection().Get(name); 1308 if(ASPx.Browser.VirtualKeyboardSupported && (!edit || !edit.ownerListBox)) { 1309 var supressLostFocus = ASPx.VirtualKeyboardUI.isInputNativeBluring(); 1310 if(supressLostFocus) 1311 return; 1312 ASPx.VirtualKeyboardUI.resetFocusedEditor(); 1313 } 1314 if(edit != null) 1315 edit.OnLostFocus(); 1316}; 1317ASPx.ELostFocus = wrapLostFocusHandler(ASPx.ELostFocusCore); 1318ASPx.ESGotFocus = function(name) { 1319 var edit = ASPx.GetControlCollection().Get(name); 1320 if(!edit) return; 1321 if(ASPx.Browser.VirtualKeyboardSupported && !edit.ownerListBox) { 1322 ASPx.VirtualKeyboardUI.onCallingVirtualKeyboard(edit, true); 1323 } else { 1324 edit.OnSpecialFocus(); 1325 } 1326}; 1327ASPx.ESLostFocusCore = function(name) { 1328 var edit = ASPx.GetControlCollection().Get(name); 1329 if(ASPx.Browser.VirtualKeyboardSupported && (!edit || !edit.ownerListBox)) { 1330 var supressLostFocus = ASPx.VirtualKeyboardUI.isInputNativeBluring(); 1331 if(supressLostFocus) 1332 return; 1333 ASPx.VirtualKeyboardUI.resetFocusedEditor(); 1334 } 1335 if(!edit) return; 1336 if(edit.UseDelayedSpecialFocus()) 1337 edit.specialFocusTimer = window.setTimeout(function() { edit.OnSpecialLostFocus(); }, 30); 1338 else
1339 edit.OnSpecialLostFocus(); 1340}; 1341ASPx.ESLostFocus = wrapLostFocusHandler(ASPx.ESLostFocusCore); 1342ASPx.EValueChanged = function(name) { 1343 var edit = ASPx.GetControlCollection().Get(name); 1344 if(edit != null) 1345 edit.OnValueChanged(); 1346}; 1347ASPx.VirtualKeyboardUI = (function() { 1348 var focusedEditor = null; 1349 var inputNativeFocusLocked = false; 1350 function elementBelongsToEditor(element) { 1351 if(!element) return false; 1352 var isBelongsToEditor = false; 1353 ASPx.GetControlCollection().ForEachControl(function(control) { 1354 if(ASPx.Ident.IsASPxClientEdit(control) && control.IsEditorElement(element)) { 1355 isBelongsToEditor = true; 1356 return true; 1357 } 1358 }, this); 1359 return isBelongsToEditor; 1360 } 1361 function elementBelongsToFocusedEditor(element) { 1362 return focusedEditor && focusedEditor.IsEditorElement(element); 1363 } 1364 return { 1365 onTouchStart: function (evt) { 1366 if (!ASPx.Browser.VirtualKeyboardSupported || this.isGooglePlaceAutocompleteElementTap(evt)) return; 1367 inputNativeFocusLocked = false; 1368 if(focusedEditor) 1369 focusedEditor.onVirtualKeyboardUITouchStart(evt); 1370 if(ASPx.TouchUIHelper.pointerEnabled) { 1371 if(!window.testingTouchMode) { 1372 if(evt.pointerType !== ASPx.TouchUIHelper.pointerType.Touch 1373 || ASPx.Browser.AndroidMobilePlatform) 1374 return; 1375 } 1376 this.processFocusEditorControl(evt); 1377 } else 1378 ASPx.TouchUIHelper.handleFastTapIfRequired(evt, function(){ this.processFocusEditorControl(evt); }.aspxBind(this), false); 1379 }, 1380 processFocusEditorControl: function(evt) { 1381 var evtSource = ASPx.Evt.GetEventSource(evt); 1382 var timeEditHasAppliedFocus = focusedEditor && (ASPx.Ident.IsASPxClientTimeEdit && ASPx.Ident.IsASPxClientTimeEdit(focusedEditor)); 1383 var focusedTimeEditBelongsToDateEdit = timeEditHasAppliedFocus && focusedEditor.OwnerDateEdit && focusedEditor.OwnerDateEdit.GetShowTimeSection(); 1384 if(focusedTimeEditBelongsToDateEdit) { 1385 focusedEditor.OwnerDateEdit.ForceRefocusTimeSectionTimeEdit(evtSource); 1386 return; 1387 } 1388 var elementWithNativeFocus = ASPx.GetActiveElement(); 1389 var someEditorInputIsFocused = elementBelongsToEditor(elementWithNativeFocus); 1390 var touchKeyboardIsVisible = someEditorInputIsFocused; 1391 var tapOutsideEditorAndInputs = !elementBelongsToEditor(evtSource) && !ASPx.Ident.IsFocusableElementRegardlessTabIndex(evtSource); 1392 var blurToHideTouchKeyboard = touchKeyboardIsVisible && tapOutsideEditorAndInputs; 1393 if(blurToHideTouchKeyboard) { 1394 elementWithNativeFocus.blur(); 1395 return; 1396 } 1397 var tapOutsideFocusedEditor = focusedEditor && !elementBelongsToFocusedEditor(evtSource); 1398 if(tapOutsideFocusedEditor) { 1399 var focusedEditorWithBluredInput = !elementBelongsToFocusedEditor(elementWithNativeFocus); 1400 if(focusedEditorWithBluredInput) 1401 this.lostAppliedFocusOfEditor(); 1402 } 1403 }, 1404 smartFocusEditor: function(edit) { 1405 if(!edit.focused) { 1406 this.setInputNativeFocusLocked(true); 1407 this.setFocusEditorCore(edit); 1408 } else { 1409 edit.ForceRefocusEditor(); 1410 } 1411 }, 1412 setFocusEditorCore: function(edit) { 1413 if(ASPx.Browser.MacOSMobilePlatform) { 1414 var timeoutDuration = ASPx.Browser.Chrome ? 250 : 30; 1415 window.setTimeout(function(){ edit.SetFocus(); }, timeoutDuration); 1416 } else { 1417 edit.SetFocus(); 1418 } 1419 }, 1420 onCallingVirtualKeyboard: function(edit, isSpecial) { 1421 this.setAppliedFocusOfEditor(edit, isSpecial); 1422 if(edit.specialKeyboardHandlingUsed == isSpecial && inputNativeFocusLocked) 1423 edit.BlurInputElement(); 1424 }, 1425 isInputNativeBluring: function() { 1426 return focusedEditor && inputNativeFocusLocked; 1427 }, 1428 setInputNativeFocusLocked: function(locked) { 1429 inputNativeFocusLocked = locked; 1430 }, 1431 getInputNativeFocusLocked: function() { 1432 return inputNativeFocusLocked; 1433 }, 1434 setAppliedFocusOfEditor: function(edit, isSpecial) { 1435 if(focusedEditor === edit) { 1436 if(edit.specialKeyboardHandlingUsed == isSpecial) { 1437 focusedEditor.UnlockFocusEvents(); 1438 if(focusedEditor.EnsureClearButtonVisibility) 1439 focusedEditor.EnsureClearButtonVisibility(); 1440 } 1441 return; 1442 } 1443 if(edit.specialKeyboardHandlingUsed == isSpecial) { 1444 this.lostAppliedFocusOfEditor(); 1445 focusedEditor = edit; 1446 ASPx.SetFocusedEditor(edit); 1447 } 1448 if(isSpecial) 1449 edit.OnSpecialFocus(); 1450 else 1451 edit.OnFocus(); 1452 }, 1453 lostAppliedFocusOfEditor: function() { 1454 if(!focusedEditor) return; 1455 var curEditorName = focusedEditor.name; 1456 var skbdHandlingUsed = focusedEditor.specialKeyboardHandlingUsed;
1457 var focusedEditorInputElementExists = focusedEditor.GetInputElement(); 1458 focusedEditor = null; 1459 if(!focusedEditorInputElementExists) 1460 return; 1461 ASPx.ELostFocusCore(curEditorName); 1462 if(skbdHandlingUsed) 1463 ASPx.ESLostFocusCore(curEditorName); 1464 }, 1465 getFocusedEditor: function() { 1466 return focusedEditor; 1467 }, 1468 resetFocusedEditor: function() { 1469 focusedEditor = null; 1470 }, 1471 focusableInputElementIsActive: function(edit) { 1472 var inputElement = edit.GetFocusableInputElement(); 1473 return !!inputElement ? ASPx.GetActiveElement() === inputElement : false; 1474 }, 1475 isGooglePlaceAutocompleteElementTap: function(evt) { 1476 var googlePlaceAutocompleteContainer = ASPx.GetNodeByClassName(document.body, "pac-container", 0); 1477 if(!googlePlaceAutocompleteContainer) 1478 return false; 1479 return ASPx.GetParentByClassName(ASPx.Evt.GetEventSource(evt), "pac-container") != null; 1480 } 1481 }; 1482})(); 1483if(ASPx.Browser.VirtualKeyboardSupported) { 1484 var touchEventName = ASPx.TouchUIHelper.pointerEnabled ? ASPx.TouchUIHelper.pointerDownEventName : 'touchstart'; 1485 ASPx.Evt.AttachEventToDocument(touchEventName, function(evt){ ASPx.VirtualKeyboardUI.onTouchStart(evt); }); 1486} 1487ASPx.Evt.AttachEventToDocument("mousedown", function(evt) { 1488 var editor = ASPx.GetFocusedEditor(); 1489 if(!editor) 1490 return; 1491 var evtSource = ASPx.Evt.GetEventSource(evt); 1492 if(editor.IsClearButtonElement(evtSource)) 1493 return; 1494 if(editor.OwnerDateEdit && editor.OwnerDateEdit.GetShowTimeSection()) { 1495 editor.OwnerDateEdit.ForceRefocusTimeSectionTimeEdit(evtSource); 1496 return; 1497 } 1498 if(editor.ownerListBox && editor.ownerListBox.IsEditorElement(evtSource) && !editor.IsEditorElement(evtSource)) { 1499 editor.ownerListBox.ForceRefocusEditor(evt); 1500 ASPx.SetFocusedEditor(editor.ownerListBox); 1501 return; 1502 } 1503 if(editor.IsEditorElement(evtSource) && !editor.IsElementBelongToInputElement(evtSource)) 1504 editor.ForceRefocusEditor(evt); 1505}); 1506ASPx.Evt.AttachEventToDocument(ASPx.Evt.GetMouseWheelEventName(), function(evt) { 1507 var editor = ASPx.GetFocusedEditor(); 1508 if(editor != null && ASPx.IsExistsElement(editor.GetMainElement()) && editor.focused && editor.receiveGlobalMouseWheel) 1509 editor.OnMouseWheel(evt); 1510}); 1511ASPx.KBSIKeyDown = function(name, evt){ 1512 var control = ASPx.GetControlCollection().Get(name); 1513 if(control != null){ 1514 var isProcessed = control.OnSpecialKeyDown(evt); 1515 if(isProcessed) 1516 return ASPx.Evt.PreventEventAndBubble(evt); 1517 } 1518}; 1519ASPx.KBSIKeyPress = function(name, evt){ 1520 var control = ASPx.GetControlCollection().Get(name); 1521 if(control != null){ 1522 var isProcessed = control.OnSpecialKeyPress(evt); 1523 if(isProcessed) 1524 return ASPx.Evt.PreventEventAndBubble(evt); 1525 } 1526}; 1527ASPx.KBSIKeyUp = function(name, evt){ 1528 var control = ASPx.GetControlCollection().Get(name); 1529 if(control != null){ 1530 var isProcessed = control.OnSpecialKeyUp(evt); 1531 if(isProcessed) 1532 return ASPx.Evt.PreventEventAndBubble(evt); 1533 } 1534}; 1535ASPx.ClearProcessingProc = function(edit) { 1536 return edit.Clear(); 1537}; 1538ASPx.ValidateProcessingProc = function(edit) { 1539 edit.OnValidation(ValidationType.MassValidation); 1540 return edit.GetIsValid(); 1541}; 1542ASPx.EditorsValidProcessingProc = function(edit) { 1543 return edit.GetIsValid(); 1544}; 1545var CheckEditElementHelper = ASPx.CreateClass(ASPx.CheckableElementHelper, { 1546 AttachToMainElement: function(internalCheckBox) { 1547 ASPx.CheckableElementHelper.prototype.AttachToMainElement.call(this, internalCheckBox); 1548 this.AttachToLabelElement(this.GetLabelElement(internalCheckBox.container), internalCheckBox); 1549 }, 1550 AttachToLabelElement: function(labelElement, internalCheckBox) { 1551 var _this = this; 1552 if(labelElement) { 1553 ASPx.Evt.AttachEventToElement(labelElement, "click", 1554 function (evt) { 1555 _this.InvokeClick(internalCheckBox, evt); 1556 } 1557 ); 1558 ASPx.Evt.AttachEventToElement(labelElement, "mousedown", 1559 function (evt) { 1560 internalCheckBox.Refocus(); 1561 } 1562 ); 1563 } 1564 }, 1565 GetLabelElement: function(container) { 1566 var labelElement = ASPx.GetNodeByTagName(container, "LABEL", 0); 1567 if(!labelElement) { 1568 var labelCell = ASPx.GetNodeByClassName(container, "dxichTextCellSys", 0); 1569 labelElement = ASPx.GetNodeByTagName(labelCell, "SPAN", 0); 1570 } 1571 return labelElement; 1572 } 1573}); 1574CheckEditElementHelper.Instance = new CheckEditElementHelper(); 1575var CalendarSharedParameters = ASPx.CreateClass(null, { 1576 updateCalendarCallbackCommand: "UPDATE", 1577 constructor: function() { 1578 this.minDate = null; 1579 this.maxDate = null; 1580 this.disabledDates = []; 1581 this.calendarCustomDraw = false; 1582 this.hasCustomDisabledDatesViaCallback = false; 1583 this.dateRangeMode = false; 1584 this.currentDateEdit = null; 1585 this.DaysSelectingOnMouseOver = new ASPxClientEvent(); 1586 this.VisibleDaysMouseOut = new ASPxClientEvent(); 1587 this.CalendarSelectionChangedInternal = new ASPxClientEvent(); 1588 }, 1589 Assign: function(source) { 1590 this.minDate = source.minDate ? source.minDate : null; 1591 this.maxDate = source.maxDate ? source.maxDate : null; 1592 this.calendarCustomDraw = source.calendarCustomDraw ? source.calendarCustomDraw : false;
1593 this.hasCustomDisabledDatesViaCallback = source.hasCustomDisabledDatesViaCallback ? source.hasCustomDisabledDatesViaCallback : false; 1594 this.disabledDates = source.disabledDates ? source.disabledDates : []; 1595 this.currentDateEdit = source.currentDateEdit ? source.currentDateEdit : null; 1596 }, 1597 GetUpdateCallbackParameters: function() { 1598 var callbackArgs = this.GetCallbackArgs(); 1599 callbackArgs = this.FormatCallbackArg(this.updateCalendarCallbackCommand, callbackArgs); 1600 return callbackArgs; 1601 }, 1602 GetCallbackArgs: function() { 1603 var args = {}; 1604 if(this.minDate) 1605 args.clientMinDate = ASPx.DateUtils.GetInvariantDateString(this.minDate); 1606 if(this.maxDate) 1607 args.clientMaxDate = ASPx.DateUtils.GetInvariantDateString(this.maxDate); 1608 if(args.clientMinDate || args.clientMaxDate) { 1609 var jsonArgs = JSON.stringify(args); 1610 return ASPx.Str.EncodeHtml(jsonArgs); 1611 } 1612 return null; 1613 }, 1614 FormatCallbackArg: function(prefix, arg) { 1615 if(!arg) return prefix; 1616 return [prefix, '|', arg.length, ';', arg, ';'].join(''); 1617 } 1618}); 1619ASPx.CalendarSharedParameters = CalendarSharedParameters; 1620ASPx.ValidationType = ValidationType; 1621ASPx.ErrorFrameDisplay = ErrorFrameDisplay; 1622ASPx.EditElementSuffix = EditElementSuffix; 1623ASPx.ValidationPattern = ValidationPattern; 1624ASPx.RequiredFieldValidationPattern = RequiredFieldValidationPattern; 1625ASPx.RegularExpressionValidationPattern = RegularExpressionValidationPattern; 1626ASPx.CheckEditElementHelper = CheckEditElementHelper; 1627ASPx.IsEditorFocusable = _aspxIsEditorFocusable; 1628window.ASPxClientEditBase = ASPxClientEditBase; 1629window.ASPxClientEdit = ASPxClientEdit; 1630window.ASPxClientEditKeyEventArgs = ASPxClientEditKeyEventArgs; 1631window.ASPxClientEditValidationEventArgs = ASPxClientEditValidationEventArgs; 1632})(); 1633
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.