message: survey.surveyShowDataSaving: boolean property has been added. It shows saving progress for saving into dxsurvey.com service:
diff: @@ -26,6 +26,7 @@ export class SurveyModel extends Base implements ISurvey, ISurveyTriggerOwner, I
  * @see onComplete
  */
  public surveyPostId: string = null;
  + public surveyShowDataSaving: boolean = false;
  /**
  * Use this property as indentificator for a user, for example e-mail or unique customer id in your web application. If you are loading survey or posting survey results from/to [dxsurvey.com](http://www.dxsurvey.com) service, then the library do not allow to run the same survey the second time. On the second run, the user will see the 'Thank you' page.
  */
  @@ -785,7 +786,8 @@ export class SurveyModel extends Base implements ISurvey, ISurveyTriggerOwner, I
  var onCompleteOptions = {
  showDataSaving: function(text: string) {self.setCompletedState("saving", text);},
  showDataSavingError: function(text: string) {self.setCompletedState("error", text);},
  - showDataSavingSuccess: function(text: string) {self.setCompletedState("success", text);}
  + showDataSavingSuccess: function(text: string) {self.setCompletedState("success", text);},
  + showDataSavingClear: function(text: string) {self.setCompletedState("", "");}
  };
  this.onComplete.fire(this, onCompleteOptions);
  if (!previousCookie && this.surveyPostId) {
  @@ -1143,7 +1145,17 @@ export class SurveyModel extends Base implements ISurvey, ISurveyTriggerOwner, I
  }
  if (isPartialCompleted && !this.clientId) return;
  var self = this;
  + if(this.surveyShowDataSaving) {
  + this.setCompletedState("saving", "");
  + }
  new dxSurveyService().sendResult(postId, this.data, function (success: boolean, response: any) {
  + if(self.surveyShowDataSaving) {
  + if(success) {
  + self.setCompletedState("success", "");
  + } else {
  + self.setCompletedState("error", "");
  + }
  + }
  self.onSendResult.fire(self, { success: success, response: response});
  }, this.clientId, isPartialCompleted);
  }
  @@ -1484,7 +1496,7 @@ JsonObject.metaData.addClass("survey", [{ name: "locale", choices: () => { retur
  {name: "completedHtml:html", serializationProperty: "locCompletedHtml"}, { name: "pages", className: "page", visible: false },
  { name: "questions", alternativeName: "elements", baseClassName: "question", visible: false, onGetValue: function (obj) { return null; }, onSetValue: function (obj, value, jsonConverter) { var page = obj.addNewPage(""); jsonConverter.toObject({ questions: value }, page); } },
  { name: "triggers:triggers", baseClassName: "surveytrigger", classNamePart: "trigger" },
  - "surveyId", "surveyPostId", "cookieName", "sendResultOnPageNext:boolean",
  + {name: "surveyId", visible: false}, {name: "surveyPostId", visible: false}, {name: "surveyShowDataSaving", visible: false}, "cookieName", "sendResultOnPageNext:boolean",
  { name: "showNavigationButtons:boolean", default: true }, { name: "showTitle:boolean", default: true },
  { name: "showPageTitles:boolean", default: true }, { name: "showCompletedPage:boolean", default: true },
  "showPageNumbers:boolean", { name: "showQuestionNumbers", default: "on", choices: ["on", "onPage", "off"] },
  