Cart Buy Licenses Contact Integrate into App Docs Support Login/Register
v 1.8.58

Version: v1.8.59, estimated release date is Tuesday, August 3, 2021, Total Issue Count: 12

Product Type Description
survey-library Bug title actions produce error in IE11

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When opening page with survey in Internet Explorer 11, code in file src\knockout\components\action-bar\action-bar.ts (and probably same in src\knockout\components\progress\buttons.ts) in method ko.components.register(...) at line const container: HTMLDivElement = componentInfo.element.nextElementSibling; returns undefined container because IE do not expose nextElementSibling on comment nodes. ResponsivityManager then crashes at line this.resizeObserver.observe(this.container.parentElement);

What is the expected behavior?

Make code return container to pass to ResponsivityManager class

How would you reproduce the current behavior (if this is a bug)?

Go open page in IE 11 https://surveyjs.io/Examples/Library (you also need to polyfill object.assign and ResizeObserver)

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://surveyjs.io/Examples/Library

Test code

your_code_here

Specify your

  • browser: IE 11
  • browser version: 11.0.9600.17498 update version 11.0.15
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.56
survey-library Enhancement onPropertyValueChangedCallback fuction should calls not for owner and not for survey instance only

We are calling onPropertyValueChangedCallback function for survey only. However, we should call it for an object as well, if the callback was set.

survey-library Enhancement Reset setValue property on changing setToName property in setValue trigger at design time

We need to reset setValue property in Creator on changing setToName property in trigger instance.

survey-library Bug Override array value vs ordinary value in setPropertyValue

The following code doesn't work correctly:

var question = survey.getAllQuestions()[0];
question.setPropertyValue("testValue", [1, 2, 3]);
question.setPropertyValue("testValue", "abc");
console.log(question.getPropertyValue("testValue"));

Instead of "abc", the result will be ['a', 'b', 'c'] and it is incorrect.

survey-library Bug onCompleting event doesn't work correctly in preview mode.

If disable survey completing on this event:

    survey.onCompleting.add((sender, options) => {
      options.allowComplete = false;
    });

and the survey is current in the preview mode, then on clicking "Complete" button, the survey cancel the preview state and goes into "running" state, even if compelting is canceling on event. It should stay in "preview" mode.

survey-library Bug Do not call notification on setting the same value in select base renderedValue property

If a dropdown is used in a cell in matrix dynamic and it renders as select2, for example, then select2 calls several times dropdown renderedValue property with the same value. As result surveyjs fires onMatrixCellValueChanging event several times which is incorrect.

survey-library Enhancement Allow to run expression validator in expression question

Here is the survey JSON. There are two ratings question and expression that calculates their sum. There is a requirement that the sum should be exactly 10. For this task, it would be nice if expression question support expression validator. It doesn't support it in v1.8.58 and prior.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "rating",
     "name": "q1",
     "rateMax": 10
    },
    {
     "type": "rating",
     "name": "q2",
     "rateMax": 10
    },
    {
     "type": "expression",
     "name": "q3",
     "validators": [
      {
       "type": "expression",
       "expression": "{q3} = 10"
      }
     ],
     "expression": "{q1} + {q2}"
    }
   ]
  }
 ]
}
survey-library Bug Clear setValue for setvalue trigger can produce exception

The following code will produce null reference exception:

var trigger = new SurveyTriggerSetValue();
trigger.setValue = [1, 2, 3];
trigger.setValue = undefined;
survey-creator Bug Invisible pages are not disabled in page selector in Test tab

Are you requesting a feature, reporting a bug or ask a question?

Requesting a old feature that used to exist.

What is the current behavior?

When I set some pages to visible and others to invisible, all of the names of the pages appear in the Test Tab's pulldown list as the same colour.

What is the expected behavior?

I was using a version of the survey creator from the 2018/2019 era. In this old version, in the Test Tab's invisible pages were greyed out while visible pages were black.

This feature was very useful for me to quickly check the actions on my current page would render invisible pages to visible. I could quickly click the pulldown tab and see that page names have switched from grey to black.

test_pulldown_old

We recently upgraded to v.1.8.52 and noticed this feature was gone. I also notice that v.1.8.57 on https://surveyjs.io/create-survey does the same thing as v.1.8.52.

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

survey-analytics Bug In tabulator questions with dot in the name aren't binded

to reprocude:

var json = {
  questions: [
    {
      type: "radiogroup",
      name: "car.car",
      title: "What car are you driving?",
      isRequired: true,
      colCount: 4,
      choices: [
        "None",
        "Ford",
        "Vauxhall",
        "Volkswagen",
        "Nissan",
        "Audi",
        "Mercedes-Benz",
        "BMW",
        "Peugeot",
        "Toyota",
        "Citroen",
      ],
    },
  ],
};

var data = [
  {
    "car.car": "Audi",
  },
  {
    "car.car": "Ford",
  },
];

see https://github.com/olifolkerd/tabulator/issues/2911 and http://tabulator.info/docs/4.7/columns#field-nesting

custom-widgets Bug Bootstrap-datepicker - Unable to set date with the widget

Assumption: The enhancement to datepicker in #257 released in milestone 1.8.50 breaks the ability to select a date from the widget.

From the online examples: https://surveyjs.io/Examples/Library?id=custom-widget-bootstrapdatepicker&platform=Knockoutjs&theme=modern

Everything is greyed out and cannot be selected.

Here is working sample (Plunker) with version 1.8.49: https://plnkr.co/edit/XMWrXqUyGXghFw1A

custom-widgets Bug EasyAutocomplete doesn't work with goNextPageAutomatic: true

Hi, the problem is that you use onSelectItemEvent to select the question value instead of onChooseEvent. This will automatically evaluate the question when hovering over any of the autocomplete options. https://github.com/surveyjs/custom-widgets/blob/master/src/easy-autocomplete.js#L77

Version: v1.8.59, estimated release date is Tuesday, August 3, 2021, Total Issue Count: 12

Product
survey-library
Type
Bug
Description
title actions produce error in IE11

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When opening page with survey in Internet Explorer 11, code in file src\knockout\components\action-bar\action-bar.ts (and probably same in src\knockout\components\progress\buttons.ts) in method ko.components.register(...) at line const container: HTMLDivElement = componentInfo.element.nextElementSibling; returns undefined container because IE do not expose nextElementSibling on comment nodes. ResponsivityManager then crashes at line this.resizeObserver.observe(this.container.parentElement);

What is the expected behavior?

Make code return container to pass to ResponsivityManager class

How would you reproduce the current behavior (if this is a bug)?

Go open page in IE 11 https://surveyjs.io/Examples/Library (you also need to polyfill object.assign and ResizeObserver)

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://surveyjs.io/Examples/Library

Test code

your_code_here

Specify your

  • browser: IE 11
  • browser version: 11.0.9600.17498 update version 11.0.15
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.56

We are calling onPropertyValueChangedCallback function for survey only. However, we should call it for an object as well, if the callback was set.

We need to reset setValue property in Creator on changing setToName property in trigger instance.

Product
survey-library
Type
Bug
Description
Override array value vs ordinary value in setPropertyValue

The following code doesn't work correctly:

var question = survey.getAllQuestions()[0];
question.setPropertyValue("testValue", [1, 2, 3]);
question.setPropertyValue("testValue", "abc");
console.log(question.getPropertyValue("testValue"));

Instead of "abc", the result will be ['a', 'b', 'c'] and it is incorrect.

Product
survey-library
Type
Bug
Description
onCompleting event doesn't work correctly in preview mode.

If disable survey completing on this event:

    survey.onCompleting.add((sender, options) => {
      options.allowComplete = false;
    });

and the survey is current in the preview mode, then on clicking "Complete" button, the survey cancel the preview state and goes into "running" state, even if compelting is canceling on event. It should stay in "preview" mode.

If a dropdown is used in a cell in matrix dynamic and it renders as select2, for example, then select2 calls several times dropdown renderedValue property with the same value. As result surveyjs fires onMatrixCellValueChanging event several times which is incorrect.

Product
survey-library
Type
Enhancement
Description
Allow to run expression validator in expression question

Here is the survey JSON. There are two ratings question and expression that calculates their sum. There is a requirement that the sum should be exactly 10. For this task, it would be nice if expression question support expression validator. It doesn't support it in v1.8.58 and prior.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "rating",
     "name": "q1",
     "rateMax": 10
    },
    {
     "type": "rating",
     "name": "q2",
     "rateMax": 10
    },
    {
     "type": "expression",
     "name": "q3",
     "validators": [
      {
       "type": "expression",
       "expression": "{q3} = 10"
      }
     ],
     "expression": "{q1} + {q2}"
    }
   ]
  }
 ]
}
Product
survey-library
Type
Bug
Description
Clear setValue for setvalue trigger can produce exception

The following code will produce null reference exception:

var trigger = new SurveyTriggerSetValue();
trigger.setValue = [1, 2, 3];
trigger.setValue = undefined;
Product
survey-creator
Type
Bug
Description
Invisible pages are not disabled in page selector in Test tab

Are you requesting a feature, reporting a bug or ask a question?

Requesting a old feature that used to exist.

What is the current behavior?

When I set some pages to visible and others to invisible, all of the names of the pages appear in the Test Tab's pulldown list as the same colour.

What is the expected behavior?

I was using a version of the survey creator from the 2018/2019 era. In this old version, in the Test Tab's invisible pages were greyed out while visible pages were black.

This feature was very useful for me to quickly check the actions on my current page would render invisible pages to visible. I could quickly click the pulldown tab and see that page names have switched from grey to black.

test_pulldown_old

We recently upgraded to v.1.8.52 and noticed this feature was gone. I also notice that v.1.8.57 on https://surveyjs.io/create-survey does the same thing as v.1.8.52.

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

Product
survey-analytics
Type
Bug
Description
In tabulator questions with dot in the name aren't binded

to reprocude:

var json = {
  questions: [
    {
      type: "radiogroup",
      name: "car.car",
      title: "What car are you driving?",
      isRequired: true,
      colCount: 4,
      choices: [
        "None",
        "Ford",
        "Vauxhall",
        "Volkswagen",
        "Nissan",
        "Audi",
        "Mercedes-Benz",
        "BMW",
        "Peugeot",
        "Toyota",
        "Citroen",
      ],
    },
  ],
};

var data = [
  {
    "car.car": "Audi",
  },
  {
    "car.car": "Ford",
  },
];

see https://github.com/olifolkerd/tabulator/issues/2911 and http://tabulator.info/docs/4.7/columns#field-nesting

Product
custom-widgets
Type
Bug
Description
Bootstrap-datepicker - Unable to set date with the widget

Assumption: The enhancement to datepicker in #257 released in milestone 1.8.50 breaks the ability to select a date from the widget.

From the online examples: https://surveyjs.io/Examples/Library?id=custom-widget-bootstrapdatepicker&platform=Knockoutjs&theme=modern

Everything is greyed out and cannot be selected.

Here is working sample (Plunker) with version 1.8.49: https://plnkr.co/edit/XMWrXqUyGXghFw1A

Product
custom-widgets
Type
Bug
Description
EasyAutocomplete doesn't work with goNextPageAutomatic: true

Hi, the problem is that you use onSelectItemEvent to select the question value instead of onChooseEvent. This will automatically evaluate the question when hovering over any of the autocomplete options. https://github.com/surveyjs/custom-widgets/blob/master/src/easy-autocomplete.js#L77

Version: v1.8.58, released at Thursday, July 29, 2021, Total Issue Count: 17

Product Type Description
survey-library Enhancement Add SurveyElement isQuestion property

There is no easy way to find out is a survey element (SurveyElement class) is question or not. element.isQuestion should return 'true' if an element is a question.

survey-library Bug Null exception on showing preview in file question located in dynamic panel

If there is a file question located in a dynamic panel and file downloading/uploading using survey event then on setting survey into preview mode the exception is raised. The issue was reported on SurveyJS Support Forum.

survey-library Bug The first title action fired on pressing enter in a text editor

We render a title action button as default, as result any enter fires the action of this button.

survey-library Bug placeHolder is not updated immediately in text and comment on chaning

The following code will not change the rendering immediately: textQuestion.placeHolder = "Please type your name...";

survey-library Enhancement Improve question displayValue functionality
  1. If dropdown/radiogroup/checkboxes have choices with empty value, like new ItemValue("", "Empty") then displayValue should return "Empty" for a question with empty value.
  2. add displayValueCallback: (text: string): string callback function into question class to allow override the default behavior of displayValue property and getDisplayValue function
survey-library Bug Action ResponsivityManager works incorrectly with invisible actions

ResponsivityManager calcualtes space for invisible items and as result it leads to incorrect rendering.

survey-library Bug Calling clearIncorrectValues function in matrix cell will onMatrixCellValueChanging event even for emtpy cell

The original issue was created in SurveyJS Support Forum and related to select2.

survey-library Enhancement Refactor rendering survey logo&title

We have code duplication for rendering survey logo&title in different frameworks and then in Creator V2 (knockout and react). We should put this code into model and add unit tests.

survey-library Enhancement Move using settings.customIcons proxy on svg icon level

We were using Survey.settings.customIcons in actions.

  /**
   * Specifies a list of custom icons.
   * Use this property to replace SurveyJS default icons (displayed in UI elements of SurveyJS Library or Creator) with your custom icons.
   * For every default icon to replace, add a key/value object with the default icon's name as a key and the name of your custom icon as a value.
   * For example: Survey.settings.customIcons["icon-redo"] = "my-own-redo-icon"
   */
  customIcons: {},

It means that using svg icons directly in Creator V2, for example, pass by this functionality. We need to use svg icons directly in svg icons.

survey-library Enhancement Add canRemoveRowsCallback function into matrix dynamic

We need this call back function to additionally control deleting actions in Creator V2. It can't be done by using minRowCount as it could be done normally.

survey-creator Bug Toolbox doesn't load in 1.8.57

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

Toolbox doesn't load, get this error in the console:

Uncaught ReferenceError: Unable to process binding "if: function(){return koHasCategories }"
Message: Unable to process binding "foreach: function(){return koCategories }"
Message: Unable to process binding "foreach: function(){return actions }"
Message: actions is not defined
    at foreach (eval at createBindingsStringEvaluator (knockout-latest.debug.js?v=develop:3221), <anonymous>:3:60)
    at evaluateValueAccessor (knockout-latest.debug.js?v=develop:3494)
    at knockout-latest.debug.js?v=develop:3671
    at knockout-latest.debug.js?v=develop:4695
    at Object.init (knockout-latest.debug.js?v=develop:6062)
    at init (knockout-latest.debug.js?v=develop:4721)
    at knockout-latest.debug.js?v=develop:3730
    at Object.ignore (knockout-latest.debug.js?v=develop:1563)
    at knockout-latest.debug.js?v=develop:3729
    at Object.arrayForEach (knockout-latest.debug.js?v=develop:168)

How would you reproduce the current behavior (if this is a bug)?

Run the editor with version 1.8.57

Specify your

  • browser: chrome
  • editor version:
survey-creator Bug Fix d.ts file by removing IActionBarItem

We have to remove all using IActionBarItem in Creator V1 and replace it vs IAction

survey-creator Bug Question title start edit button is on the next line

image

survey-pdf Enhancement Add the ability to hide borders in text questions
survey-pdf Bug Multiple text has wrong layout in case several columns

Live sample

Survey JSON:

{
    "questions": [
        {
     "type": "multipletext",
     "name": "question1",
     "items": [
      {
       "name": "text1",
       "title": "Report Origin:"
      },
      {
       "name": "text2",
       "title": "Surgeon:"
      },
      {
       "name": "text3",
       "title": "Date of surgery:"
      }
     ],
     "colCount": 2
    }
    ]
}

How survey library looks: image

How survey pdf looks: image

survey-pdf Bug RowLine color is always blue
custom-widgets Bug Select2 "other" option with storeOthersAsComment set to false issue (React)

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

In React version (maybe in others too but I use/noticed this in React) when the select2 widget is active, and the storeOthersAsComment is set to false and the dropdown question has the other option (hasOther: true), select the "Other" option and try to write something in the textarea. As soon as you type one key, it will add that as a new option in the dropdown (and it will be selected) and the textarea gets hidden.

What is the expected behavior?

When you select the "other" option you can type in the textarea as much as you want without hiding the field and adding it to the dropdown as a new option (so just like it behaves without storeOthersAsComment set to false).

How would you reproduce the current behavior (if this is a bug)?

Activate select2, add a dropdown question, then set the hasOther to true and also set the storeOthersAsComment to false.

Provide the test code and the tested page URL (if applicable)

From this page: https://surveyjs.io/Examples/Library?id=custom-widget-select2&platform=Reactjs&theme=bootstrap (Edit in...) I created a new codesandbox fork and edited to reproduce the bug. It's nothing to do with choicesByUrl since it's reproducible with normal choices too.

Tested page URL: https://codesandbox.io/s/xenodochial-fire-1lkbl

Test code

import React, { Component } from "react";
import $ from "jquery";
import select2Init from "select2";
import "select2/dist/css/select2.min.css";

import * as Survey from "survey-react";
import * as widgets from "surveyjs-widgets";

import "bootstrap/dist/css/bootstrap.css";
import "survey-react/survey.css";
import "./index.css";

Survey.StylesManager.applyTheme("bootstrap");

class SurveyComponent extends Component {
  constructor() {
    super();
    window["$"] = window["jQuery"] = $;
    select2Init();
  }
  render() {
    widgets.select2(Survey);
    widgets.select2tagbox(Survey);

    const json = {
      elements: [
        {
          type: "dropdown",
          renderAs: "select2",
          hasOther: true,
          choicesByUrl: {
            url: "https://restcountries.eu/rest/v2/all"
          },
          name: "countries",
          title: "Please select the country you have arrived from:"
        }
      ]
    };
    const survey = new Survey.Model(json);

    survey.storeOthersAsComment = false;

    return <Survey.Survey model={survey} />;
  }
}

export default SurveyComponent;

Specify your

  • browser: Chrome, Firefox
  • browser version: Chrome: 92.0.4515.107, FF: 91.0b6
  • surveyjs platform (angular or react or jquery or knockout or vue): React
  • surveyjs version: 1.8.57 (latest atm)

Version: v1.8.58, released at Thursday, July 29, 2021, Total Issue Count: 17

Product
survey-library
Type
Enhancement
Description
Add SurveyElement isQuestion property

There is no easy way to find out is a survey element (SurveyElement class) is question or not. element.isQuestion should return 'true' if an element is a question.

If there is a file question located in a dynamic panel and file downloading/uploading using survey event then on setting survey into preview mode the exception is raised. The issue was reported on SurveyJS Support Forum.

Product
survey-library
Type
Bug
Description
The first title action fired on pressing enter in a text editor

We render a title action button as default, as result any enter fires the action of this button.

Product
survey-library
Type
Bug
Description
placeHolder is not updated immediately in text and comment on chaning

The following code will not change the rendering immediately: textQuestion.placeHolder = "Please type your name...";

Product
survey-library
Type
Enhancement
Description
Improve question displayValue functionality
  1. If dropdown/radiogroup/checkboxes have choices with empty value, like new ItemValue("", "Empty") then displayValue should return "Empty" for a question with empty value.
  2. add displayValueCallback: (text: string): string callback function into question class to allow override the default behavior of displayValue property and getDisplayValue function
Product
survey-library
Type
Bug
Description
Action ResponsivityManager works incorrectly with invisible actions

ResponsivityManager calcualtes space for invisible items and as result it leads to incorrect rendering.

The original issue was created in SurveyJS Support Forum and related to select2.

Product
survey-library
Type
Enhancement
Description
Refactor rendering survey logo&title

We have code duplication for rendering survey logo&title in different frameworks and then in Creator V2 (knockout and react). We should put this code into model and add unit tests.

Product
survey-library
Type
Enhancement
Description
Move using settings.customIcons proxy on svg icon level

We were using Survey.settings.customIcons in actions.

  /**
   * Specifies a list of custom icons.
   * Use this property to replace SurveyJS default icons (displayed in UI elements of SurveyJS Library or Creator) with your custom icons.
   * For every default icon to replace, add a key/value object with the default icon's name as a key and the name of your custom icon as a value.
   * For example: Survey.settings.customIcons["icon-redo"] = "my-own-redo-icon"
   */
  customIcons: {},

It means that using svg icons directly in Creator V2, for example, pass by this functionality. We need to use svg icons directly in svg icons.

Product
survey-library
Type
Enhancement
Description
Add canRemoveRowsCallback function into matrix dynamic

We need this call back function to additionally control deleting actions in Creator V2. It can't be done by using minRowCount as it could be done normally.

Product
survey-creator
Type
Bug
Description
Toolbox doesn't load in 1.8.57

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

Toolbox doesn't load, get this error in the console:

Uncaught ReferenceError: Unable to process binding "if: function(){return koHasCategories }"
Message: Unable to process binding "foreach: function(){return koCategories }"
Message: Unable to process binding "foreach: function(){return actions }"
Message: actions is not defined
    at foreach (eval at createBindingsStringEvaluator (knockout-latest.debug.js?v=develop:3221), <anonymous>:3:60)
    at evaluateValueAccessor (knockout-latest.debug.js?v=develop:3494)
    at knockout-latest.debug.js?v=develop:3671
    at knockout-latest.debug.js?v=develop:4695
    at Object.init (knockout-latest.debug.js?v=develop:6062)
    at init (knockout-latest.debug.js?v=develop:4721)
    at knockout-latest.debug.js?v=develop:3730
    at Object.ignore (knockout-latest.debug.js?v=develop:1563)
    at knockout-latest.debug.js?v=develop:3729
    at Object.arrayForEach (knockout-latest.debug.js?v=develop:168)

How would you reproduce the current behavior (if this is a bug)?

Run the editor with version 1.8.57

Specify your

  • browser: chrome
  • editor version:
Product
survey-creator
Type
Bug
Description
Fix d.ts file by removing IActionBarItem

We have to remove all using IActionBarItem in Creator V1 and replace it vs IAction

Product
survey-creator
Type
Bug
Description
Question title start edit button is on the next line

image

Product
survey-pdf
Type
Enhancement
Description
Add the ability to hide borders in text questions
Product
survey-pdf
Type
Bug
Description
Multiple text has wrong layout in case several columns

Live sample

Survey JSON:

{
    "questions": [
        {
     "type": "multipletext",
     "name": "question1",
     "items": [
      {
       "name": "text1",
       "title": "Report Origin:"
      },
      {
       "name": "text2",
       "title": "Surgeon:"
      },
      {
       "name": "text3",
       "title": "Date of surgery:"
      }
     ],
     "colCount": 2
    }
    ]
}

How survey library looks: image

How survey pdf looks: image

Product
survey-pdf
Type
Bug
Description
RowLine color is always blue

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

In React version (maybe in others too but I use/noticed this in React) when the select2 widget is active, and the storeOthersAsComment is set to false and the dropdown question has the other option (hasOther: true), select the "Other" option and try to write something in the textarea. As soon as you type one key, it will add that as a new option in the dropdown (and it will be selected) and the textarea gets hidden.

What is the expected behavior?

When you select the "other" option you can type in the textarea as much as you want without hiding the field and adding it to the dropdown as a new option (so just like it behaves without storeOthersAsComment set to false).

How would you reproduce the current behavior (if this is a bug)?

Activate select2, add a dropdown question, then set the hasOther to true and also set the storeOthersAsComment to false.

Provide the test code and the tested page URL (if applicable)

From this page: https://surveyjs.io/Examples/Library?id=custom-widget-select2&platform=Reactjs&theme=bootstrap (Edit in...) I created a new codesandbox fork and edited to reproduce the bug. It's nothing to do with choicesByUrl since it's reproducible with normal choices too.

Tested page URL: https://codesandbox.io/s/xenodochial-fire-1lkbl

Test code

import React, { Component } from "react";
import $ from "jquery";
import select2Init from "select2";
import "select2/dist/css/select2.min.css";

import * as Survey from "survey-react";
import * as widgets from "surveyjs-widgets";

import "bootstrap/dist/css/bootstrap.css";
import "survey-react/survey.css";
import "./index.css";

Survey.StylesManager.applyTheme("bootstrap");

class SurveyComponent extends Component {
  constructor() {
    super();
    window["$"] = window["jQuery"] = $;
    select2Init();
  }
  render() {
    widgets.select2(Survey);
    widgets.select2tagbox(Survey);

    const json = {
      elements: [
        {
          type: "dropdown",
          renderAs: "select2",
          hasOther: true,
          choicesByUrl: {
            url: "https://restcountries.eu/rest/v2/all"
          },
          name: "countries",
          title: "Please select the country you have arrived from:"
        }
      ]
    };
    const survey = new Survey.Model(json);

    survey.storeOthersAsComment = false;

    return <Survey.Survey model={survey} />;
  }
}

export default SurveyComponent;

Specify your

  • browser: Chrome, Firefox
  • browser version: Chrome: 92.0.4515.107, FF: 91.0b6
  • surveyjs platform (angular or react or jquery or knockout or vue): React
  • surveyjs version: 1.8.57 (latest atm)

Version: v1.8.57, released at Tuesday, July 20, 2021, Total Issue Count: 14

Product Type Description
survey-library Enhancement Readonly Question title is not getting disabled in default theme.

Hi Team,

Readonly question title is not getting disabled. The disabled class is getting undefined in the default theme. It's working fine in the modern theme. Input is getting the disabled attribute, but the title is getting undefined class due to which we are not able to assign read-only CSS to the question.

image image

Thanks, Sachin Tiwari

survey-library Enhancement Do not apply lazy rendering for first elements in the survey/page

To avoid a delay in rendering for the first elements, we can render first elements immediately on the page. SurveyJS will use Survey.settings.lazyRowsRenderingStartRow numeric property.

survey-library Enhancement Add survey onGetExpressionDisplayValue to override expression display value

Sometimes there is no easy way to override the expression question display value by using format and other properties. This event will allow to change the display value directly in code.

  /**
   * The event is fired before expression question convert it's value into display value for rendering.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - The expression question.
   * <br/> `options.value` - The question value.
   * <br/> `options.displayValue` - the display value that you can change before rendering.
   */
  public onGetExpressionDisplayValue: EventBase<SurveyModel>;

Example of using:

survey.onGetExpressionDisplayValue.add((sender, options) => {
  const val = options.value;
  if(!val && val !== false && val !== 0) {
    options.displayValue = "Value is empty."
  }
});
survey-library Bug Exception on runTriggers() function in complex scenario

The following code produces the error:

  var survey = new Survey({
    elements: [
      {
        type: "text",
        name: "q1",
      },
      {
        type: "matrixdynamic",
        name: "matrix",
        visibleIf: "{q1} = 'yes'",
        columns: [
          {
            name: "col1",
            cellType: "text",
          },
        ],
        rowCount: 1,
      },
      {
        type: "radiogroup",
        name: "radio",
        choices: [
          {
            value: "yes",
            text: "Yes",
          },
          {
            value: "no",
            text: "No",
          },
        ],
      },
    ],
    triggers: [
      {
        type: "setvalue",
        expression: "{matrix[0].col1} notcontains 'x'",
        setToName: "radio",
        setValue: "no",
      },
    ],
  });
  survey.runTriggers();

survey-library Bug getPlainData() function doesn't work correctly for matrix dropdown

matrix dropdown getPlainData() returns rows value for the title, instead of rows text.

survey-library Bug Do not show in creator V2 selectAll, none and hasOther if these properties are invisible

Do not render in design options in radiogroup/dropdown/checkbox if their related properties are hidden.

survey-library Enhancement Add disableTabStop property into IAction/Action

We need to disable tabstop for some buttons in actions. A new disableTabStop property (default is false) is added for this purpose.

survey-library Bug Questions are not rendering in lazyRendering mode on deleting elements on the top

On deleting elements on the top, scroll events is not fired and as result elements in invisible area are not rendered. We have to fire "scroll" event manually.

survey-library Enhancement Change onApply function callback property for popup

Add ability to cancel closing popup window on apply by returning false onApply callback

survey-library Bug Could not override defaultValue for question hideNumber property

The following code doesn't work: Survey.Serializer.findProperty("question", "hideNumber").defaultValue = true;, question.hideNumber returns 'false' by default.

survey-pdf Bug Dropdown display issue
  • long dropdown value does not brake line when rendering
  • dropdown with other comment value that contains tab characters is not rendered well

https://plnkr.co/edit/z8P7f2T1xOW5buFw

thank you for considering this

survey-pdf Enhancement HtmlToImage method does not respect custom fonts

See the thread in support center.

survey-pdf Bug Standard html rendering may cause errors in adobe acrobat

See the support center for more details

survey-pdf Bug Table in description throws an error when trying to export PDF

See the ticket in support center

Version: v1.8.57, released at Tuesday, July 20, 2021, Total Issue Count: 14

Product
survey-library
Type
Enhancement
Description
Readonly Question title is not getting disabled in default theme.

Hi Team,

Readonly question title is not getting disabled. The disabled class is getting undefined in the default theme. It's working fine in the modern theme. Input is getting the disabled attribute, but the title is getting undefined class due to which we are not able to assign read-only CSS to the question.

image image

Thanks, Sachin Tiwari

Product
survey-library
Type
Enhancement
Description
Do not apply lazy rendering for first elements in the survey/page

To avoid a delay in rendering for the first elements, we can render first elements immediately on the page. SurveyJS will use Survey.settings.lazyRowsRenderingStartRow numeric property.

Product
survey-library
Type
Enhancement
Description
Add survey onGetExpressionDisplayValue to override expression display value

Sometimes there is no easy way to override the expression question display value by using format and other properties. This event will allow to change the display value directly in code.

  /**
   * The event is fired before expression question convert it's value into display value for rendering.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - The expression question.
   * <br/> `options.value` - The question value.
   * <br/> `options.displayValue` - the display value that you can change before rendering.
   */
  public onGetExpressionDisplayValue: EventBase<SurveyModel>;

Example of using:

survey.onGetExpressionDisplayValue.add((sender, options) => {
  const val = options.value;
  if(!val && val !== false && val !== 0) {
    options.displayValue = "Value is empty."
  }
});
Product
survey-library
Type
Bug
Description
Exception on runTriggers() function in complex scenario

The following code produces the error:

  var survey = new Survey({
    elements: [
      {
        type: "text",
        name: "q1",
      },
      {
        type: "matrixdynamic",
        name: "matrix",
        visibleIf: "{q1} = 'yes'",
        columns: [
          {
            name: "col1",
            cellType: "text",
          },
        ],
        rowCount: 1,
      },
      {
        type: "radiogroup",
        name: "radio",
        choices: [
          {
            value: "yes",
            text: "Yes",
          },
          {
            value: "no",
            text: "No",
          },
        ],
      },
    ],
    triggers: [
      {
        type: "setvalue",
        expression: "{matrix[0].col1} notcontains 'x'",
        setToName: "radio",
        setValue: "no",
      },
    ],
  });
  survey.runTriggers();

Product
survey-library
Type
Bug
Description
getPlainData() function doesn't work correctly for matrix dropdown

matrix dropdown getPlainData() returns rows value for the title, instead of rows text.

Do not render in design options in radiogroup/dropdown/checkbox if their related properties are hidden.

Product
survey-library
Type
Enhancement
Description
Add disableTabStop property into IAction/Action

We need to disable tabstop for some buttons in actions. A new disableTabStop property (default is false) is added for this purpose.

On deleting elements on the top, scroll events is not fired and as result elements in invisible area are not rendered. We have to fire "scroll" event manually.

Product
survey-library
Type
Enhancement
Description
Change onApply function callback property for popup

Add ability to cancel closing popup window on apply by returning false onApply callback

Product
survey-library
Type
Bug
Description
Could not override defaultValue for question hideNumber property

The following code doesn't work: Survey.Serializer.findProperty("question", "hideNumber").defaultValue = true;, question.hideNumber returns 'false' by default.

Product
survey-pdf
Type
Bug
Description
Dropdown display issue
  • long dropdown value does not brake line when rendering
  • dropdown with other comment value that contains tab characters is not rendered well

https://plnkr.co/edit/z8P7f2T1xOW5buFw

thank you for considering this

Product
survey-pdf
Type
Enhancement
Description
HtmlToImage method does not respect custom fonts

See the thread in support center.

Product
survey-pdf
Type
Bug
Description
Standard html rendering may cause errors in adobe acrobat

See the support center for more details

Product
survey-pdf
Type
Bug
Description
Table in description throws an error when trying to export PDF

See the ticket in support center

Version: v1.8.56, released at Tuesday, July 13, 2021, Total Issue Count: 8

Product Type Description
survey-library Enhancement Render question/panel collapse/expand button by using action bar

We have a custom rendering for title collapse/expand action. It is time to replace it with our action bar. Additionally, we should add tabindex and aria* attributes for header when there is collapse/expand button to allow expand/collapse panel and question content by keyboard

survey-library Bug Elements Can Bypass Required or Other Validation

Are you requesting a feature, reporting a bug or asking a question?

Reporting a Bug which also maybe a feature.

What is the current behavior?

Given you have a checkbox group, radio select, or drop down field you can set a value such that it will pass validation. This validation can be a minimum count (for checkbox), or just marking it as required.

If you have a checkbox group that has a minimum count of 2, you can pass that validation by setting the value of 2 empty strings: ["", ""]

If you have a radio button group or a dropdown marked as required you can pass validation by setting [''].

If you have a textfield it can get fooled into passing required validation by also setting it's value to an array ['']

What is the expected behavior?

I expect the validation of a checkbox, radio group, or dropdown to verify that the values given as input are valid values since the choices are specified.

If the values are not valid then they should be ignored.

I would also expect all fields to do some kind of input checking (i.e., text field is smart enough to not be fooled by an empty string, but is fooled by an array)

The textbox seems less important to me than the checkbox because the output type of a checkbox element is an array, so an array input for a textbox shouldn't normally be expected.

How would you reproduce the current behavior (if this is a bug)?

By setting the values specified above on a survey.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://jsfiddle.net/mwrouse/xhk4now2/20/

That page has 2 surveys on the same page, the first one is without setting any values, so it will work as expected. The second is setting the values that can trick the validation.

Test code

var json = {
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "checkbox",
     "name": "question1",
     "validators": [
      {
       "type": "answercount",
       "minCount": 2
      }
     ],
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
    {
     "type": "radiogroup",
     "name": "question2",
     "isRequired": true,
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
    {
     "type": "dropdown",
     "name": "question3",
     "isRequired": true,
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
     {
     "type": "text",
     "name": "question4",
     "isRequired": true
    }
   ],
   "title": "Survey Example"
  }
 ],
};

var survey = new Survey.Model(json);
survey.setValue('question1', ["", ""]);
survey.setValue('question2', ['']);
survey.setValue('question3', ['']);
survey.setValue('question4', ['']);

Specify Your

  • browser: Chrome
  • browser version: Latest
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: 1.8.55
survey-library Bug Column title renders as empty string on changing matrix cellType in knockout

Let's say you have the following matrix:

    var survey = new Survey({
      elements: [
        {
          type: "matrixdynamic",
          name: "matrix",
          columns: [{ name: "col1" }],
        },
      ],
    });

After the matrix was rendered, the following code will change the column cell type from "dropdown" to "checkbox", but column title will be rendered as empty instead of "col1".

var matrix = survey.getQuestionByName("matrix");
matrix.cellType = "checkbox";

survey-library Bug Text validator validates empty string

Are you requesting a feature, reporting a bug or asking a question?

Question? Bug?

What is the current behavior?

If you have a texfield with validation (minimum length) then when you start the survey, you are able to complete the survey since these values are empty.

However, if you type in the textfield, you can't undo that action after the value has been set. Erasing the contents of the textfield won't allow it to pass validation anymore.

What is the expected behavior?

I would expect that if a question is not marked as required, that it should be able to pass validation without having a value set.

Even if you set the value, but then later change the value (e.g. a textfield with minimum length validation), it should not hold up the survey unless marked as required.

It appears that if you have a minimum count on a checkbox then it essentially makes it required. You can't complete the survey until that minimum requirement is met. Even though the question is not marked as required https://jsfiddle.net/mwrouse/qzfw87hL/4/

How would you reproduce the current behavior (if this is a bug)?

Make a survey with a textfield that has a minimum length > 0

Run the survey, don't set any values and you will be able to complete the survey.

Run the survey again, type in the textbox field, and click out of the field. Then if you erase the contents you will fail the minimum length validation.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://jsfiddle.net/mwrouse/abo3eLdk/5/

Test code


var json = {
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "question1",
     "validators": [
      {
       "type": "text",
       "minLength": 500000,
       "maxLength": 0,
       "allowDigits": true
      }
     ]
    }
   ],
   "title": "Type, Click Out, and Erase = Failed Validation"
  }
 ],
 "triggers": [
  {
   "type": "setvalue",
   "setToName": "name",
   "setValue": "Jon Snow"
  },
  {
   "type": "setvalue",
   "setToName": "email",
   "setValue": "jon.snow@nightwatch.com"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided to use your current information.",
   "isVariable": true
  },
  {
   "type": "setvalue",
   "setToName": "name"
  },
  {
   "type": "setvalue",
   "setToName": "email"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided not to use your current information.",
   "isVariable": true
  }
 ]
};

window.survey = new Survey.Model(json);
survey.checkErrorsMode = 'onValueChanged';
survey.render("surveyElement");

Specify your

  • browser: Chrome
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: 1.8.55
survey-library Bug Do not run answer count validator on empty array

We should not check min/max answers on checkbox question if an user doesn't check anything. If the question is not required then we should acceopt an empty value regardless of this validator. Answer count validator should work for non-empty array only.

survey-library Bug survey.onGetQuestionTitle event doesn't work in knockout

We have to update localziation strings on adding/removing function handlers in onGetQuestionTitle event.

survey-creator Bug Do not clear creator JSON on calling render function

On calling creator.render() function we simply clears the survey JSON. We have to check if there is already JSON in creator then do not override it with the default one page without questions JSON.

survey-pdf Enhancement Add option to render all text questions as multiline

Version: v1.8.56, released at Tuesday, July 13, 2021, Total Issue Count: 8

Product
survey-library
Type
Enhancement
Description
Render question/panel collapse/expand button by using action bar

We have a custom rendering for title collapse/expand action. It is time to replace it with our action bar. Additionally, we should add tabindex and aria* attributes for header when there is collapse/expand button to allow expand/collapse panel and question content by keyboard

Product
survey-library
Type
Bug
Description
Elements Can Bypass Required or Other Validation

Are you requesting a feature, reporting a bug or asking a question?

Reporting a Bug which also maybe a feature.

What is the current behavior?

Given you have a checkbox group, radio select, or drop down field you can set a value such that it will pass validation. This validation can be a minimum count (for checkbox), or just marking it as required.

If you have a checkbox group that has a minimum count of 2, you can pass that validation by setting the value of 2 empty strings: ["", ""]

If you have a radio button group or a dropdown marked as required you can pass validation by setting [''].

If you have a textfield it can get fooled into passing required validation by also setting it's value to an array ['']

What is the expected behavior?

I expect the validation of a checkbox, radio group, or dropdown to verify that the values given as input are valid values since the choices are specified.

If the values are not valid then they should be ignored.

I would also expect all fields to do some kind of input checking (i.e., text field is smart enough to not be fooled by an empty string, but is fooled by an array)

The textbox seems less important to me than the checkbox because the output type of a checkbox element is an array, so an array input for a textbox shouldn't normally be expected.

How would you reproduce the current behavior (if this is a bug)?

By setting the values specified above on a survey.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://jsfiddle.net/mwrouse/xhk4now2/20/

That page has 2 surveys on the same page, the first one is without setting any values, so it will work as expected. The second is setting the values that can trick the validation.

Test code

var json = {
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "checkbox",
     "name": "question1",
     "validators": [
      {
       "type": "answercount",
       "minCount": 2
      }
     ],
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
    {
     "type": "radiogroup",
     "name": "question2",
     "isRequired": true,
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
    {
     "type": "dropdown",
     "name": "question3",
     "isRequired": true,
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
     {
     "type": "text",
     "name": "question4",
     "isRequired": true
    }
   ],
   "title": "Survey Example"
  }
 ],
};

var survey = new Survey.Model(json);
survey.setValue('question1', ["", ""]);
survey.setValue('question2', ['']);
survey.setValue('question3', ['']);
survey.setValue('question4', ['']);

Specify Your

  • browser: Chrome
  • browser version: Latest
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: 1.8.55

Let's say you have the following matrix:

    var survey = new Survey({
      elements: [
        {
          type: "matrixdynamic",
          name: "matrix",
          columns: [{ name: "col1" }],
        },
      ],
    });

After the matrix was rendered, the following code will change the column cell type from "dropdown" to "checkbox", but column title will be rendered as empty instead of "col1".

var matrix = survey.getQuestionByName("matrix");
matrix.cellType = "checkbox";

Product
survey-library
Type
Bug
Description
Text validator validates empty string

Are you requesting a feature, reporting a bug or asking a question?

Question? Bug?

What is the current behavior?

If you have a texfield with validation (minimum length) then when you start the survey, you are able to complete the survey since these values are empty.

However, if you type in the textfield, you can't undo that action after the value has been set. Erasing the contents of the textfield won't allow it to pass validation anymore.

What is the expected behavior?

I would expect that if a question is not marked as required, that it should be able to pass validation without having a value set.

Even if you set the value, but then later change the value (e.g. a textfield with minimum length validation), it should not hold up the survey unless marked as required.

It appears that if you have a minimum count on a checkbox then it essentially makes it required. You can't complete the survey until that minimum requirement is met. Even though the question is not marked as required https://jsfiddle.net/mwrouse/qzfw87hL/4/

How would you reproduce the current behavior (if this is a bug)?

Make a survey with a textfield that has a minimum length > 0

Run the survey, don't set any values and you will be able to complete the survey.

Run the survey again, type in the textbox field, and click out of the field. Then if you erase the contents you will fail the minimum length validation.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://jsfiddle.net/mwrouse/abo3eLdk/5/

Test code


var json = {
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "question1",
     "validators": [
      {
       "type": "text",
       "minLength": 500000,
       "maxLength": 0,
       "allowDigits": true
      }
     ]
    }
   ],
   "title": "Type, Click Out, and Erase = Failed Validation"
  }
 ],
 "triggers": [
  {
   "type": "setvalue",
   "setToName": "name",
   "setValue": "Jon Snow"
  },
  {
   "type": "setvalue",
   "setToName": "email",
   "setValue": "jon.snow@nightwatch.com"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided to use your current information.",
   "isVariable": true
  },
  {
   "type": "setvalue",
   "setToName": "name"
  },
  {
   "type": "setvalue",
   "setToName": "email"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided not to use your current information.",
   "isVariable": true
  }
 ]
};

window.survey = new Survey.Model(json);
survey.checkErrorsMode = 'onValueChanged';
survey.render("surveyElement");

Specify your

  • browser: Chrome
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: 1.8.55
Product
survey-library
Type
Bug
Description
Do not run answer count validator on empty array

We should not check min/max answers on checkbox question if an user doesn't check anything. If the question is not required then we should acceopt an empty value regardless of this validator. Answer count validator should work for non-empty array only.

Product
survey-library
Type
Bug
Description
survey.onGetQuestionTitle event doesn't work in knockout

We have to update localziation strings on adding/removing function handlers in onGetQuestionTitle event.

Product
survey-creator
Type
Bug
Description
Do not clear creator JSON on calling render function

On calling creator.render() function we simply clears the survey JSON. We have to check if there is already JSON in creator then do not override it with the default one page without questions JSON.

Product
survey-pdf
Type
Enhancement
Description
Add option to render all text questions as multiline

Version: v1.8.55, released at Wednesday, July 7, 2021, Total Issue Count: 10

Product Type Description
survey-library Enhancement Do not show enableIf property for rateValues items in rating question

We do not enable/disable items in rating question since it doens't make sence. It means that we need to hide enableIf property.

survey-library Bug Dynamic dropdown with enableIf not displayed correctly

This is a complex case in our application, that we solved only by removing the enableIf from matrixdynamic field.

We need to make this matrix add/remove rows open for specific users and also the columns.

For user: "1" displays correctly, for user: "2" does not.

https://plnkr.co/edit/nq4dNpRFoDwhEG13?preview

survey-library Enhancement Add ability to override the default icons in SurveyJS Library/Creator

Add new options into survey settings:

  /**
   * Specifies a list of custom icons.
   * Use this property to replace SurveyJS default icons (displayed in UI elements of SurveyJS Library or Creator) with your custom icons.
   * For every default icon to replace, add a key/value object with the default icon's name as a key and the name of your custom icon as a value.
   * For example: Survey.settings.customIcons["icon-redo"] = "my-own-redo-icon"
   */
  customIcons: {},
survey-library Bug Boolean question that renders as switch should support goNextPageAutomatic

The old render, checkbox style, boolean question should not support goNextPageAutomatic, since it requres two clicks to set false from unknow/indeterminate state: check and then un-check. Switch, the default current render, allows to set true/false by one click. It means that for "switch" (default) render style we can support goNextPageAutomatic.

survey-library Bug Adding/Removing/Changing choices in column for matrices dynamic/dropdown doesn't work correctly

We do not modify on fly changing choices in matrices columns if a column is not default. The original issue was reported in SurveyJS support forum.

survey-library Bug Expression with "anyof" with 0 can executed incorrectly

The following code will return incorrect value:

  const runner = new Survey.ConditionRunner("{value} anyof [7, 3, 0]");
  values.value = 0;
  const res = runner.run(values);

The result will be false instead of true. We treat values.value as undefined, instead of 0. It is incorrect.

survey-library Bug React: Do not change state on properties change on rendering wrapper components

We do not change state on rendering a root component, however, we should check wrapper components as well.

survey-creator Bug When custom saveSurveyFunc fails to save an exception occurs

Are you requesting a feature, reporting a bug or ask a question?

I am reporting a bug.

What is the current behavior?

When a custom method is used to save a survey, and that method reports to the callback the save has failed, an error is shown in console and the saving loader persists.

What is the expected behavior?

A notification is shown and loader doesn't persist

How would you reproduce the current behavior (if this is a bug)?

https://plnkr.co/edit/UaU5wJydANLp2KIu Click save in above example

Workaround

Disabling the error when save fails.

            var options = {
                showErrorOnFailedSave: false
            };

            var creator = new SurveyCreator.SurveyCreator("creatorElement", options);
survey-creator Enhancement Image picker choose image adorner - allow choose images if contentMode === "video"

If contentMode === "video" for an image picker question, choose image adorner should allow to choose videos by default

custom-widgets Bug Select2 doesn't set question value on form auto fill

Version: v1.8.55, released at Wednesday, July 7, 2021, Total Issue Count: 10

Product
survey-library
Type
Enhancement
Description
Do not show enableIf property for rateValues items in rating question

We do not enable/disable items in rating question since it doens't make sence. It means that we need to hide enableIf property.

Product
survey-library
Type
Bug
Description
Dynamic dropdown with enableIf not displayed correctly

This is a complex case in our application, that we solved only by removing the enableIf from matrixdynamic field.

We need to make this matrix add/remove rows open for specific users and also the columns.

For user: "1" displays correctly, for user: "2" does not.

https://plnkr.co/edit/nq4dNpRFoDwhEG13?preview

Product
survey-library
Type
Enhancement
Description
Add ability to override the default icons in SurveyJS Library/Creator

Add new options into survey settings:

  /**
   * Specifies a list of custom icons.
   * Use this property to replace SurveyJS default icons (displayed in UI elements of SurveyJS Library or Creator) with your custom icons.
   * For every default icon to replace, add a key/value object with the default icon's name as a key and the name of your custom icon as a value.
   * For example: Survey.settings.customIcons["icon-redo"] = "my-own-redo-icon"
   */
  customIcons: {},

The old render, checkbox style, boolean question should not support goNextPageAutomatic, since it requres two clicks to set false from unknow/indeterminate state: check and then un-check. Switch, the default current render, allows to set true/false by one click. It means that for "switch" (default) render style we can support goNextPageAutomatic.

We do not modify on fly changing choices in matrices columns if a column is not default. The original issue was reported in SurveyJS support forum.

Product
survey-library
Type
Bug
Description
Expression with "anyof" with 0 can executed incorrectly

The following code will return incorrect value:

  const runner = new Survey.ConditionRunner("{value} anyof [7, 3, 0]");
  values.value = 0;
  const res = runner.run(values);

The result will be false instead of true. We treat values.value as undefined, instead of 0. It is incorrect.

We do not change state on rendering a root component, however, we should check wrapper components as well.

Product
survey-creator
Type
Bug
Description
When custom saveSurveyFunc fails to save an exception occurs

Are you requesting a feature, reporting a bug or ask a question?

I am reporting a bug.

What is the current behavior?

When a custom method is used to save a survey, and that method reports to the callback the save has failed, an error is shown in console and the saving loader persists.

What is the expected behavior?

A notification is shown and loader doesn't persist

How would you reproduce the current behavior (if this is a bug)?

https://plnkr.co/edit/UaU5wJydANLp2KIu Click save in above example

Workaround

Disabling the error when save fails.

            var options = {
                showErrorOnFailedSave: false
            };

            var creator = new SurveyCreator.SurveyCreator("creatorElement", options);

If contentMode === "video" for an image picker question, choose image adorner should allow to choose videos by default

Product
custom-widgets
Type
Bug
Description
Select2 doesn't set question value on form auto fill

Version: v1.8.54, released at Wednesday, June 30, 2021, Total Issue Count: 5

Product Type Description
survey-library Enhancement Focus first editable cell in the new row on adding a new row via UI

SurveyJS should focus the first editable cell in a new added row, if a user adds row by clicking "New Row" button.

survey-library Bug React: Single matrix columns are not updated on changing if matrix is editing in property grid

The bug was found on testing SurveyJS Creator V2, react version, React: Matrix (single choice) doesn't update after add/remove columns. Property grid overrides columns onArrayChanged callback, however it doesn't need this callback.

survey-creator Bug The direction of splitter is not working properly in right to left forms

Are you requesting a feature, reporting a bug or ask a question?

What is the current behavior?

What is the expected behavior?

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser:
  • editor version:
survey-creator Bug Not able to move question from one page to another on editing question in Modal Window

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

No able to move questions from one page to another. In the console i receive this error

base.ts:1543 Uncaught TypeError: t.addElement is not a function at t.setPage (base.ts:1543) at t.set (question.ts:198) at t.e.updatePropertyValue (propertyEditorBase.ts:435) at e.onEditorValueChanged (objectProperty.ts:137) at t.editor.onChanged (objectProperty.ts:37) at t.e.onkoValueChanged (propertyEditorBase.ts:473) at f.ic.lc (propertyEditorBase.ts:83) at Function.notifySubscribers (knockout-latest.js:38) at Function.xa (knockout-latest.js:43) at t (knockout-latest.js:42)

What is the expected behavior?

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser:
  • editor version:
custom-widgets Enhancement Tagbox component doesn't support other placeholder text

Tagbox component is supporting hasOther option. So, that I am able to add new values. But, I want to have placeholder value for text area. Please provide the otherPlaceHolder option. This option is available in most of the surveyjs components.

Version: v1.8.54, released at Wednesday, June 30, 2021, Total Issue Count: 5

Product
survey-library
Type
Enhancement
Description
Focus first editable cell in the new row on adding a new row via UI

SurveyJS should focus the first editable cell in a new added row, if a user adds row by clicking "New Row" button.

The bug was found on testing SurveyJS Creator V2, react version, React: Matrix (single choice) doesn't update after add/remove columns. Property grid overrides columns onArrayChanged callback, however it doesn't need this callback.

Are you requesting a feature, reporting a bug or ask a question?

What is the current behavior?

What is the expected behavior?

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser:
  • editor version:

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

No able to move questions from one page to another. In the console i receive this error

base.ts:1543 Uncaught TypeError: t.addElement is not a function at t.setPage (base.ts:1543) at t.set (question.ts:198) at t.e.updatePropertyValue (propertyEditorBase.ts:435) at e.onEditorValueChanged (objectProperty.ts:137) at t.editor.onChanged (objectProperty.ts:37) at t.e.onkoValueChanged (propertyEditorBase.ts:473) at f.ic.lc (propertyEditorBase.ts:83) at Function.notifySubscribers (knockout-latest.js:38) at Function.xa (knockout-latest.js:43) at t (knockout-latest.js:42)

What is the expected behavior?

How would you reproduce the current behavior (if this is a bug)?

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser:
  • editor version:
Product
custom-widgets
Type
Enhancement
Description
Tagbox component doesn't support other placeholder text

Tagbox component is supporting hasOther option. So, that I am able to add new values. But, I want to have placeholder value for text area. Please provide the otherPlaceHolder option. This option is available in most of the surveyjs components.

Version: v1.8.53, released at Thursday, June 24, 2021, Total Issue Count: 9

Product Type Description
survey-library Bug onValueChanged doesn't called on changing array value in custom question

The bug was find on testing SurveyJS Creator V2

survey-library Bug Setting data to matrices dynamic/dropdown in display mode doesn't set total rows values

SurveyJS doesn't set into matrices the totals value on setting it directly and doesn't recalculate them if the matrix/page/survey in readonly mode. As result on setting read-only matrix data totals are empty.

survey-library Enhancement Add detailPanelShowOnAdding boolean property into matrix dynamic

Optionally show detail panel on adding a new row in matrix dynamic.

survey-library Bug survey editingObj: Do not assign read-only array property value

The bug was found on testing SurveyJS Creator V2. Exception is raised on setting read-only survey.pages property on add/removing page in the "pages" property editor.

survey-library Bug Editing doesn't work in matrices if there is a question with the same name in detail panel

The following question JSON will not work correctly.

        {
          type: "matrixdropdown",
          name: "matrix",
          detailPanelMode: "underRow",
          detailElements: [{ type: "text", name: "q1" }],
          rows: ["row1", "row2"],
          columns: [{ cellType: "text", name: "q1" }],
        }

On changing a cell with opened detail panel, the value will be reset to the previous one.

PS: The bug is found during testing SurveyJS Creator V2.

survey-library Bug Column header title doesn't render correctly on adding column without title in code

For matrices dropdown and dynamic the following code will show a new column without a title:

matrix.addColumn("New Column") 

However, by default the title name should be taken from column name if the title is empty.

survey-library Bug Do not render empty strings in matrices headers

The bug was found during testing SurveyJS Creator V2. We are rendering empty localization strings in headers. SurveyJS Creator V2 allows to edit them. However, empty headers for actions/rows should not be edited. It is better to render empty "th" tag, without any content.

survey-library Bug If choicesByUrl.allowEmptyResponse is true and we have other value on loading in question, it doesn't set

Here is the example that reproduce the issue. We have choicesByUrl set up with allowEmptyResponse equals to true, survey "storeOthersAsComment" property is 'false', we store the "other"/comment value directly into question value. In this case, if the response returns the empty array, then we do not treat the question value as other with comment and simply ignores it.

survey-creator Bug Toolbox area is not scrollable

Version: v1.8.53, released at Thursday, June 24, 2021, Total Issue Count: 9

The bug was find on testing SurveyJS Creator V2

SurveyJS doesn't set into matrices the totals value on setting it directly and doesn't recalculate them if the matrix/page/survey in readonly mode. As result on setting read-only matrix data totals are empty.

Product
survey-library
Type
Enhancement
Description
Add detailPanelShowOnAdding boolean property into matrix dynamic

Optionally show detail panel on adding a new row in matrix dynamic.

Product
survey-library
Type
Bug
Description
survey editingObj: Do not assign read-only array property value

The bug was found on testing SurveyJS Creator V2. Exception is raised on setting read-only survey.pages property on add/removing page in the "pages" property editor.

The following question JSON will not work correctly.

        {
          type: "matrixdropdown",
          name: "matrix",
          detailPanelMode: "underRow",
          detailElements: [{ type: "text", name: "q1" }],
          rows: ["row1", "row2"],
          columns: [{ cellType: "text", name: "q1" }],
        }

On changing a cell with opened detail panel, the value will be reset to the previous one.

PS: The bug is found during testing SurveyJS Creator V2.

For matrices dropdown and dynamic the following code will show a new column without a title:

matrix.addColumn("New Column") 

However, by default the title name should be taken from column name if the title is empty.

Product
survey-library
Type
Bug
Description
Do not render empty strings in matrices headers

The bug was found during testing SurveyJS Creator V2. We are rendering empty localization strings in headers. SurveyJS Creator V2 allows to edit them. However, empty headers for actions/rows should not be edited. It is better to render empty "th" tag, without any content.

Here is the example that reproduce the issue. We have choicesByUrl set up with allowEmptyResponse equals to true, survey "storeOthersAsComment" property is 'false', we store the "other"/comment value directly into question value. In this case, if the response returns the empty array, then we do not treat the question value as other with comment and simply ignores it.

Product
survey-creator
Type
Bug
Description
Toolbox area is not scrollable

Version: v1.8.52, released at Wednesday, June 16, 2021, Total Issue Count: 3

Product Type Description
survey-library Bug Focus first input/textarea/select on showing popup

The focus is not in popup window on showing. The bug was found in testing Creator V2.

survey-library Enhancement Add survey.onShowingPreview event

A new event onShowingPreivew allows to disable showing preview on clicking "Preview" button based on a logic.

  /**
   * The event is fired before the survey is going to preview mode, state equals to `preview`. It happens when a user click on "Preview" button. It shows when "showPreviewBeforeComplete" proeprty equals to "showAllQuestions" or "showAnsweredQuestions".
   * You can prevent showing it by setting allowShowPreview to `false`.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.allowShowPreview` - Specifies whether a user can see a preview. Set this property to `false` to prevent from showing the preview. The default value is `true`.
   * @see showPreviewBeforeComplete
   */
  public onShowingPreview: EventBase<SurveyModel> = this.addEvent<
    SurveyModel
  >();


survey-library Enhancement Add selectedItems read-only property into checkbox question

checkboxQuestion.selectedItems returns the array of selected items Array in the checkbox. Sometimes developers need to get the array of ItemValue, to get the properties in the selected items instead of array of values checkboxQuestion.value.

Version: v1.8.52, released at Wednesday, June 16, 2021, Total Issue Count: 3

Product
survey-library
Type
Bug
Description
Focus first input/textarea/select on showing popup

The focus is not in popup window on showing. The bug was found in testing Creator V2.

Product
survey-library
Type
Enhancement
Description
Add survey.onShowingPreview event

A new event onShowingPreivew allows to disable showing preview on clicking "Preview" button based on a logic.

  /**
   * The event is fired before the survey is going to preview mode, state equals to `preview`. It happens when a user click on "Preview" button. It shows when "showPreviewBeforeComplete" proeprty equals to "showAllQuestions" or "showAnsweredQuestions".
   * You can prevent showing it by setting allowShowPreview to `false`.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.allowShowPreview` - Specifies whether a user can see a preview. Set this property to `false` to prevent from showing the preview. The default value is `true`.
   * @see showPreviewBeforeComplete
   */
  public onShowingPreview: EventBase<SurveyModel> = this.addEvent<
    SurveyModel
  >();


Product
survey-library
Type
Enhancement
Description
Add selectedItems read-only property into checkbox question

checkboxQuestion.selectedItems returns the array of selected items Array in the checkbox. Sometimes developers need to get the array of ItemValue, to get the properties in the selected items instead of array of values checkboxQuestion.value.

Version: v1.8.51, released at Thursday, June 10, 2021, Total Issue Count: 8

Product Type Description
survey-library Bug Show invisible elements doesn't work in react

Setting survey.showInvisibleElements into true, doesn't render question body in react. We should check "isVisible" instead of "visible" properties. Bug found during testing SurveyJS Creator V2 for react.

survey-library Bug Bug on rendering labelTrue/labelFalse in case of having the start page.

If there is the start page and then there is a boolean question on the first page, then SurveyJS does not render true/false lables. The issue was introduced in v1.8.50 due some optimizations. The original issue was created in SurveyJS Support desk.

survey-library Bug File question looks ugly in preview mode (disabled. modern theme)
survey-library Enhancement Improve API for customwidget

The decision should we add a customwidget into toolbox in SurveyJS Creator is spread in several places. We should put it in one function/property and test properly in a unit test.

survey-library Bug event onAfterRenderQuestion doesn't work properly (Knockout, Jquery, Angualr)
survey-creator Bug Locale dropdown in Test Tab shows language code instead of name

There is a bug in getting locale names in Test Tab.

survey-creator Bug Inconsistent selected language in designer and test survey tabs

The original issue was created on SurveyJS Support desk.

survey-creator Bug V1: Question Modal Editor (old style) doesn't apply collection properties correctly

Collection properties are not applied correctly on setting them in Question Modal Editor. On setting "showPropertyGrid" option to false.

Version: v1.8.51, released at Thursday, June 10, 2021, Total Issue Count: 8

Product
survey-library
Type
Bug
Description
Show invisible elements doesn't work in react

Setting survey.showInvisibleElements into true, doesn't render question body in react. We should check "isVisible" instead of "visible" properties. Bug found during testing SurveyJS Creator V2 for react.

If there is the start page and then there is a boolean question on the first page, then SurveyJS does not render true/false lables. The issue was introduced in v1.8.50 due some optimizations. The original issue was created in SurveyJS Support desk.

Product
survey-library
Type
Bug
Description
File question looks ugly in preview mode (disabled. modern theme)
Product
survey-library
Type
Enhancement
Description
Improve API for customwidget

The decision should we add a customwidget into toolbox in SurveyJS Creator is spread in several places. We should put it in one function/property and test properly in a unit test.

Product
survey-creator
Type
Bug
Description
Locale dropdown in Test Tab shows language code instead of name

There is a bug in getting locale names in Test Tab.

Product
survey-creator
Type
Bug
Description
Inconsistent selected language in designer and test survey tabs

The original issue was created on SurveyJS Support desk.

Collection properties are not applied correctly on setting them in Question Modal Editor. On setting "showPropertyGrid" option to false.

Version: v1.8.50, released at Friday, June 4, 2021, Total Issue Count: 14

Product Type Description
survey-library Bug Checkbox doesn't work correctly with choicesByUrl and hasOther
survey-library Bug Checkbox doens't work correctly with choicesByUrl, hasOther, defaultValue and survey display mode

The original issue was created on our support desk, it is the second bug in this ticket.

survey-library Bug Remove empty div for complete and start pages in react

We used empty div for old version of react. We have to replace them with Rect.Fragment.

survey-library Bug on calling setLocale function for localization string the object doesn't get notification

The owner of the localization string doesn't get notification when changing localization text using locStr.setLocale() function instead of setting locStr.text property. We should fire notification for both cases.

survey-library Bug survey.onAfterRenderPage has incorrect page if firstPageIsStarted is turn-on

We pass the "currentPage" for the started Page on survey.onAfterRenderPage. A new property "activePage" should be used here.

  /**
   * Returns the currentPage, unless the started page is showing. In this case returns the started page.
   * @see currentPage
   * @see firstPageIsStarted
   * @see startedPage
   */
  public get activePage();
survey-library Bug ItemValue enableIf doesn't work in matricex dropdown/dynamic if showInMultipleColumns is true

choices/checkboxes doesn't take into account enable/disable if matrix rendes these items in different columns, using show in multiple columns functionality. The original issue was created on SurveyJS Support desk.

We should add unit tests for a vertical column layout, since it is another case.

survey-library Bug Matrix - Custom cell types doesn't work (jQuery, Knockout, Angular)
survey-library Bug React: toolbar actions doesn't render on adding new item

We should take items from props every time we do rendering, since items collection can be changed outside.

survey-creator Enhancement Do not show hidden property in translation tab

Translation tab should check property visiblity, including creator.onShowingProperty event and do not show property if it is hidden and do not any text for translation. We should continue to show property even if it is hidden, but contains data for translation. Make sure to write this code for V1 and V2.

survey-creator Bug Vertical panels splitter is broken in latest browsers

Panels and editor width are not properly set when both the panels are closed and then the left panel is opened, as the editor resizes to previous width when left panel is opened. This makes both the splitter's width going bonkers.

See the https://surveyjs.answerdesk.io/ticket/details/t7081/abnormality-with-panel-editor-and-splitter-width thread for more details

Issue in- FF & FF Developer 89 Chrome 91

survey-analytics Enhancement Allow show files as images in table view
survey-analytics Bug Survey results table rendering error

Uncaught TypeError: Cannot read property 'length' of undefined at survey.analytics.tabulator.js:801 at Array.forEach () at update (survey.analytics.tabulator.js:799) at Object.render (survey.analytics.tabulator.js:819) at survey.analytics.tabulator.js:978 at Array.forEach () at TableExtensions../src/tables/extensions/tableextensions.ts.TableExtensions.render (survey.analytics.tabulator.js:976) at Tabulator../src/tables/tabulator.ts.Tabulator.render (survey.analytics.tabulator.js:1591) at Tabulator../src/tables/table.ts.Table.refresh (survey.analytics.tabulator.js:1304) at n.renderTabulator (client:1)

survey-analytics Bug Setting useNamesAsTitles option to true doesn't work
custom-widgets Enhancement Use renderedMin/renderedMax properties in date pickers

We have added new functionality into text question, min/max and minValueExpression/maxValueExpression that we can use in our date picker.

Version: v1.8.50, released at Friday, June 4, 2021, Total Issue Count: 14

Product
survey-library
Type
Bug
Description
Checkbox doesn't work correctly with choicesByUrl and hasOther

The original issue was created on our support desk, it is the second bug in this ticket.

Product
survey-library
Type
Bug
Description
Remove empty div for complete and start pages in react

We used empty div for old version of react. We have to replace them with Rect.Fragment.

The owner of the localization string doesn't get notification when changing localization text using locStr.setLocale() function instead of setting locStr.text property. We should fire notification for both cases.

We pass the "currentPage" for the started Page on survey.onAfterRenderPage. A new property "activePage" should be used here.

  /**
   * Returns the currentPage, unless the started page is showing. In this case returns the started page.
   * @see currentPage
   * @see firstPageIsStarted
   * @see startedPage
   */
  public get activePage();

choices/checkboxes doesn't take into account enable/disable if matrix rendes these items in different columns, using show in multiple columns functionality. The original issue was created on SurveyJS Support desk.

We should add unit tests for a vertical column layout, since it is another case.

Product
survey-library
Type
Bug
Description
Matrix - Custom cell types doesn't work (jQuery, Knockout, Angular)
Product
survey-library
Type
Bug
Description
React: toolbar actions doesn't render on adding new item

We should take items from props every time we do rendering, since items collection can be changed outside.

Product
survey-creator
Type
Enhancement
Description
Do not show hidden property in translation tab

Translation tab should check property visiblity, including creator.onShowingProperty event and do not show property if it is hidden and do not any text for translation. We should continue to show property even if it is hidden, but contains data for translation. Make sure to write this code for V1 and V2.

Product
survey-creator
Type
Bug
Description
Vertical panels splitter is broken in latest browsers

Panels and editor width are not properly set when both the panels are closed and then the left panel is opened, as the editor resizes to previous width when left panel is opened. This makes both the splitter's width going bonkers.

See the https://surveyjs.answerdesk.io/ticket/details/t7081/abnormality-with-panel-editor-and-splitter-width thread for more details

Issue in- FF & FF Developer 89 Chrome 91

Product
survey-analytics
Type
Enhancement
Description
Allow show files as images in table view
Product
survey-analytics
Type
Bug
Description
Survey results table rendering error

Uncaught TypeError: Cannot read property 'length' of undefined at survey.analytics.tabulator.js:801 at Array.forEach () at update (survey.analytics.tabulator.js:799) at Object.render (survey.analytics.tabulator.js:819) at survey.analytics.tabulator.js:978 at Array.forEach () at TableExtensions../src/tables/extensions/tableextensions.ts.TableExtensions.render (survey.analytics.tabulator.js:976) at Tabulator../src/tables/tabulator.ts.Tabulator.render (survey.analytics.tabulator.js:1591) at Tabulator../src/tables/table.ts.Table.refresh (survey.analytics.tabulator.js:1304) at n.renderTabulator (client:1)

Product
survey-analytics
Type
Bug
Description
Setting useNamesAsTitles option to true doesn't work
Product
custom-widgets
Type
Enhancement
Description
Use renderedMin/renderedMax properties in date pickers

We have added new functionality into text question, min/max and minValueExpression/maxValueExpression that we can use in our date picker.

Version: v1.8.49, released at Thursday, May 27, 2021, Total Issue Count: 14

Product Type Description
survey-library Bug react did not change question title on changing "questionTitlePattern" and "requriedText" in survey

Found this bug on testing SurveyJS Creator v2, react version. On chaning in property grid "questionTitlePattern" and "requriedText" nothing is changed visually.

survey-library Bug On changing allowAddRows property in matrix dynamic nothing happens

We do not change rendering on changing property allowAddRows in matrix dynamic question.

survey-library Bug Use localizable string rendering for matrix dynamic buttons

We use a span with text on rendering "Add row", "Remove" row buttons. It is not correct, we should render it using localizable string component. The bug was found on testing Property Grid in SurveyJS Creator V2, on chaning addRowText and removeRowText nothing happens.

survey-library Bug Do not notify about changes property grid if we change a non-serializable property

We are updating our property grid on changing internal properties like cssClassesValue and others. We should not do it, it leads to errors in react. The bug is found during testing SurveyJS Creator V2.

survey-library Bug Update progress text/info in designer

We do not update/show progress text in designer as result a user doesn't see the changes on setting another value to related properties. The bug is found on testing Survey Creator V2.

survey-library Bug Error on setting inputType to "date" for "text" column in matrix dynamic

SurveyJS produces error on setting "date" value into inputType property for text column in matrix dynamic/dropdown questions. We should not update properties in cell questions, if these properties are not serializable.

survey-library Bug SignaturePad throw an error in lazy loading example and knockout v 3.5.0

Here the example . Just scroll a while and see the error:

knockout-latest.debug.js:6042 Uncaught Error: Unable to process binding "template: function(){return { name:templateData.name,data:templateData.data,afterRender:templateData.afterRender} }"
Message: Anonymous template defined, but no template content was provided
survey-library Bug Fix functional tests for paneldymanic
survey-creator Bug keyDuplicationError property is located in "other" category in matrix dropdown

The property should be in "Validation" category in the property grid.

survey-creator Bug Mouse events doesn't work in firefox in text edit adorners

Firefox blocks mouse events if an element or any of its parent has draggable attribute set to "true". Here is the tiny example:

    <div draggable="true">
      <span draggable="false">
        <input type="text" value="test" />
      </span>
    </div>

Use can't select text in input using mouse or change the cursor position in FireFox. It works in other browsers. The solution is to turn off the draggable to "false" on starting edit and turn it back on "blur" event of the text input.

PS: In Creator V2 we have another solution for this functionality, we use content editable div feature and we do not use "draggable" attribute.

survey-pdf Enhancement Unicode in onTextMarkdown

Are you requesting a feature, reporting a bug or asking a question?

How to encode Unicode characters in surveyPDF.onTextMarkdown?

What is the current behavior?

Unicode characters (in markdown contexts) are not rendered correctly.

How would you reproduce the current behavior (if this is a bug)?

surveyPDF.onTextMarkdown.add(function (survey, options) {
                        var str = converter.makeHtml(options.text);
                        str = str.substring(3);
                        str = str.substring(0, str.length - 4);
                        str = str  + "…" + "…"; 
                        options.html = str;
                    });

Provide the test code and the tested page URL (if applicable)

https://plnkr.co/edit/YEpDFmepdOlFQ23A?preview

survey-pdf Enhancement Bug: Custom fonts aren't applied to HTML elements

Are you requesting a feature, reporting a bug or asking a question?

Reporting a bug

What is the current behavior?

When using a custom font with survey-pdf, the custom font is ignored for html elements.

What is the expected behavior?

The custom font should be used consistently in the resulting PDF.

How would you reproduce the current behavior (if this is a bug)?

  1. Print the PDF from the tested page.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://plnkr.co/edit/DOYreAlVe2q60Nmq

Test code

Survey
    .StylesManager
    .applyTheme("modern");

var json = {
    "questions": [
        {
            "type": "text",
            "name": "sample text question"
        },
        {
            "type": "html",
            "html": "<p>sample html question</p>"
        }
    ]
};

window.survey = new Survey.Model(json);

survey
    .onComplete
    .add(function (result) {
        document
            .querySelector('#surveyResult')
            .textContent = "Result JSON:\n" + JSON.stringify(result.data, null, 3);
    });

$("#surveyElement").Survey({model: survey});

function saveSurveyToPdf(filename, surveyModel, pdfWidth, pdfHeight) {
    var roboto = "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BG4AHwSLADwG1AA8BtQAPALvAEIC7wB6Au8APgLvADYDlgCPArUAngH9AJ8B+wAAAjUAJQVdAAcFXQAHBIb/4gTGADECnf/0BTgAHAU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU1AHcEjACpBIwAqQSMAKkEjACpAi3/4AItALACLf/pAi3/1QW0AKkFgAB2BYAAdgWAAHYFgAB2BYAAdgUwAIwFMACMBTAAjAUwAIwEzgAPBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQQwAFwEPQBdBD0AXQQ9AF0EPQBdAfr/xgH6AJYB+v/PAfr/uwRqAIwEkABbBJAAWwSQAFsEkABbBJAAWwRpAIgEaQCIBGkAiARpAIgDyQAWA8kAFgU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU1AHcEMABcBT8AqQUZAF8EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBXMAegR9AGAFtACpBGgAjAIt/7cB+v+dAi3/zAH6/7ICLf/sAfr/0gItABgB8f/7Ai0AqQaXALcD2gCNBGoANQID/7QFBACpBA4AjQROAKEB8QCTBE4AqQHxAFcETgCpAocAnAROAKkCzQCcBbQAqQRqAIwFtACpBGoAjAW0AKkEagCMBGr/vAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwTtAKgCtQCMBO0AqAK1AFME7QCoArUAYwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8ExgAxAp0ACQTGADECnQAJBMYAMQLFAAkFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgHGQA9BgMAKwTOAA8DyQAWBM4ADwTKAFYD9wBYBMoAVgP3AFgEygBWA/cAWAd6//IGwQBOBYAAdgSIAFsHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgID/7QG/ACpBwMAiwU4ABwEWgBtBM4ADwPJABYEzgAPA8kAFgTOAA8DyQAWBKEAXwRsABIFOAAcBFoAbQSMAKkEPQBdAAEAAAds/gwAAAlJ+hv+SgkwAAEAAAAA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AnQGjgaUBpoD5gPwBDoGrgRwBtYHAAbQBIIG6AS4BugFRgboBugG6AagBbAHOgXWBzoF7AaaBnAGIgZwBnAGmgaaBq4G7gbuBu4G7gbuBu4G7gZ2BoQGhAaEBoQGmgaaBpoGmgaaBwAG6AboBugG6AboBugG6AboBugG6Ac6BzoG7gbuBu4GdgZ2BnYGdgaaBoQG6AaEBugGhAboBoQG6AaEBugG6AaOBpQGlAaUBpQG6AboBugG6AaaBugGmgboBpoG6AagBqAGoAauBq4GrgbWBwAHOgcABtAG0AbQBtYG1gbWBwAHOgboBu4HAAc6BwAHOgcABzoAAQCFAAQABgALAAwAEwAlACcAKAApACoALwAwADMANAA1ADYAOAA6ADsAPQA+AD8ASQBKAEwATwBRAFIAUwBWAFgAWgBbAF0AXwCWAKoAqwCtAK4A0QDSANQA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA5wDoAOkA6gDrAPAA+QD6APsA/AEBAQIBAwEEAQUBBgELAQwBDQEPAREBEwEVARcBGQEbAR0BHgEfASABIQEiASMBJAElASYBMAE+AUABQgFEAUYBSQFLAU0BTgFPAVABUQFSAVMBVAFWAVgBWgFlAWcBaQF3AXkBegF7AXwBfgGAAYYBiAGKAYwBjQGQAZEBkwGUAZUBlgGXAZgABAA4/9gBZf/YAWf/2AFp/9gADgA6ABQAOwASAD0AFgDwABYBdwASAXkAFgF7ABYBhgASAYgAEgGKABIBjAAWAZMAFgGVABYBlwAWAAEAE/8gAFwAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qAKz/FgCv/xYAsf8WANb/VgDX/1YA2P9WANn/VgDa/1YA2/9WANz/VgDx/94A8v/eAPP/3gD0/94A9f/eAPb/3gD3/94A+P/rAPn/6wD6/+sA+//rAPz/6wEC/+sBA//rAQT/6wEF/+sBBv/rAQf/6gEI/+oBCf/qAQr/6gEL/+gBDP/oAQ3/VgEO/94BD/9WARD/3gER/1YBEv/eART/6wEW/+sBGP/rARr/6wEc/+sBHv/rASD/6wEi/+sBJP/rASb/6wEo/+sBKv/rASz/6wEu/+sBPP74AVD/6wFS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";
    var options = {
        fontSize: 14,
        margins: {
            left: 10,
            right: 10,
            top: 10,
            bot: 10
        },
        format: [
            pdfWidth, pdfHeight
        ],
        fontName: 'roboto',
        base64Normal: roboto
    };
    var surveyPDF = new SurveyPDF.SurveyPDF(json, options);
    surveyPDF.data = surveyModel.data;
    surveyPDF.save(filename);
}

document
    .getElementById("saveToPDFbtn")
    .onclick = function () {
        var pdfWidth = survey.pdfWidth || 210;
        var pdfHeight = survey.pdfHeight || 297;
        saveSurveyToPdf("surveyResult.pdf", survey, pdfWidth, pdfHeight);
    };

Note: It would appear that this might be caused by an inverted ternary operation in createDivBlock.

Specify your

  • browser: Microsoft Edge
  • browser version: 90.0.818.46
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.44
survey-pdf Enhancement Support multiple additional fonts
survey-analytics Bug Some strings are not localizable

Version: v1.8.49, released at Thursday, May 27, 2021, Total Issue Count: 14

Found this bug on testing SurveyJS Creator v2, react version. On chaning in property grid "questionTitlePattern" and "requriedText" nothing is changed visually.

Product
survey-library
Type
Bug
Description
On changing allowAddRows property in matrix dynamic nothing happens

We do not change rendering on changing property allowAddRows in matrix dynamic question.

Product
survey-library
Type
Bug
Description
Use localizable string rendering for matrix dynamic buttons

We use a span with text on rendering "Add row", "Remove" row buttons. It is not correct, we should render it using localizable string component. The bug was found on testing Property Grid in SurveyJS Creator V2, on chaning addRowText and removeRowText nothing happens.

We are updating our property grid on changing internal properties like cssClassesValue and others. We should not do it, it leads to errors in react. The bug is found during testing SurveyJS Creator V2.

Product
survey-library
Type
Bug
Description
Update progress text/info in designer

We do not update/show progress text in designer as result a user doesn't see the changes on setting another value to related properties. The bug is found on testing Survey Creator V2.

SurveyJS produces error on setting "date" value into inputType property for text column in matrix dynamic/dropdown questions. We should not update properties in cell questions, if these properties are not serializable.

Here the example . Just scroll a while and see the error:

knockout-latest.debug.js:6042 Uncaught Error: Unable to process binding "template: function(){return { name:templateData.name,data:templateData.data,afterRender:templateData.afterRender} }"
Message: Anonymous template defined, but no template content was provided
Product
survey-library
Type
Bug
Description
Fix functional tests for paneldymanic

The property should be in "Validation" category in the property grid.

Product
survey-creator
Type
Bug
Description
Mouse events doesn't work in firefox in text edit adorners

Firefox blocks mouse events if an element or any of its parent has draggable attribute set to "true". Here is the tiny example:

    <div draggable="true">
      <span draggable="false">
        <input type="text" value="test" />
      </span>
    </div>

Use can't select text in input using mouse or change the cursor position in FireFox. It works in other browsers. The solution is to turn off the draggable to "false" on starting edit and turn it back on "blur" event of the text input.

PS: In Creator V2 we have another solution for this functionality, we use content editable div feature and we do not use "draggable" attribute.

Product
survey-pdf
Type
Enhancement
Description
Unicode in onTextMarkdown

Are you requesting a feature, reporting a bug or asking a question?

How to encode Unicode characters in surveyPDF.onTextMarkdown?

What is the current behavior?

Unicode characters (in markdown contexts) are not rendered correctly.

How would you reproduce the current behavior (if this is a bug)?

surveyPDF.onTextMarkdown.add(function (survey, options) {
                        var str = converter.makeHtml(options.text);
                        str = str.substring(3);
                        str = str.substring(0, str.length - 4);
                        str = str  + "…" + "…"; 
                        options.html = str;
                    });

Provide the test code and the tested page URL (if applicable)

https://plnkr.co/edit/YEpDFmepdOlFQ23A?preview

Product
survey-pdf
Type
Enhancement
Description
Bug: Custom fonts aren't applied to HTML elements

Are you requesting a feature, reporting a bug or asking a question?

Reporting a bug

What is the current behavior?

When using a custom font with survey-pdf, the custom font is ignored for html elements.

What is the expected behavior?

The custom font should be used consistently in the resulting PDF.

How would you reproduce the current behavior (if this is a bug)?

  1. Print the PDF from the tested page.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://plnkr.co/edit/DOYreAlVe2q60Nmq

Test code

Survey
    .StylesManager
    .applyTheme("modern");

var json = {
    "questions": [
        {
            "type": "text",
            "name": "sample text question"
        },
        {
            "type": "html",
            "html": "<p>sample html question</p>"
        }
    ]
};

window.survey = new Survey.Model(json);

survey
    .onComplete
    .add(function (result) {
        document
            .querySelector('#surveyResult')
            .textContent = "Result JSON:\n" + JSON.stringify(result.data, null, 3);
    });

$("#surveyElement").Survey({model: survey});

function saveSurveyToPdf(filename, surveyModel, pdfWidth, pdfHeight) {
    var roboto = "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BG4AHwSLADwG1AA8BtQAPALvAEIC7wB6Au8APgLvADYDlgCPArUAngH9AJ8B+wAAAjUAJQVdAAcFXQAHBIb/4gTGADECnf/0BTgAHAU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU1AHcEjACpBIwAqQSMAKkEjACpAi3/4AItALACLf/pAi3/1QW0AKkFgAB2BYAAdgWAAHYFgAB2BYAAdgUwAIwFMACMBTAAjAUwAIwEzgAPBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQQwAFwEPQBdBD0AXQQ9AF0EPQBdAfr/xgH6AJYB+v/PAfr/uwRqAIwEkABbBJAAWwSQAFsEkABbBJAAWwRpAIgEaQCIBGkAiARpAIgDyQAWA8kAFgU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU1AHcEMABcBT8AqQUZAF8EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBXMAegR9AGAFtACpBGgAjAIt/7cB+v+dAi3/zAH6/7ICLf/sAfr/0gItABgB8f/7Ai0AqQaXALcD2gCNBGoANQID/7QFBACpBA4AjQROAKEB8QCTBE4AqQHxAFcETgCpAocAnAROAKkCzQCcBbQAqQRqAIwFtACpBGoAjAW0AKkEagCMBGr/vAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwTtAKgCtQCMBO0AqAK1AFME7QCoArUAYwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8ExgAxAp0ACQTGADECnQAJBMYAMQLFAAkFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgHGQA9BgMAKwTOAA8DyQAWBM4ADwTKAFYD9wBYBMoAVgP3AFgEygBWA/cAWAd6//IGwQBOBYAAdgSIAFsHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgID/7QG/ACpBwMAiwU4ABwEWgBtBM4ADwPJABYEzgAPA8kAFgTOAA8DyQAWBKEAXwRsABIFOAAcBFoAbQSMAKkEPQBdAAEAAAds/gwAAAlJ+hv+SgkwAAEAAAAA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AnQGjgaUBpoD5gPwBDoGrgRwBtYHAAbQBIIG6AS4BugFRgboBugG6AagBbAHOgXWBzoF7AaaBnAGIgZwBnAGmgaaBq4G7gbuBu4G7gbuBu4G7gZ2BoQGhAaEBoQGmgaaBpoGmgaaBwAG6AboBugG6AboBugG6AboBugG6Ac6BzoG7gbuBu4GdgZ2BnYGdgaaBoQG6AaEBugGhAboBoQG6AaEBugG6AaOBpQGlAaUBpQG6AboBugG6AaaBugGmgboBpoG6AagBqAGoAauBq4GrgbWBwAHOgcABtAG0AbQBtYG1gbWBwAHOgboBu4HAAc6BwAHOgcABzoAAQCFAAQABgALAAwAEwAlACcAKAApACoALwAwADMANAA1ADYAOAA6ADsAPQA+AD8ASQBKAEwATwBRAFIAUwBWAFgAWgBbAF0AXwCWAKoAqwCtAK4A0QDSANQA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA5wDoAOkA6gDrAPAA+QD6APsA/AEBAQIBAwEEAQUBBgELAQwBDQEPAREBEwEVARcBGQEbAR0BHgEfASABIQEiASMBJAElASYBMAE+AUABQgFEAUYBSQFLAU0BTgFPAVABUQFSAVMBVAFWAVgBWgFlAWcBaQF3AXkBegF7AXwBfgGAAYYBiAGKAYwBjQGQAZEBkwGUAZUBlgGXAZgABAA4/9gBZf/YAWf/2AFp/9gADgA6ABQAOwASAD0AFgDwABYBdwASAXkAFgF7ABYBhgASAYgAEgGKABIBjAAWAZMAFgGVABYBlwAWAAEAE/8gAFwAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qAKz/FgCv/xYAsf8WANb/VgDX/1YA2P9WANn/VgDa/1YA2/9WANz/VgDx/94A8v/eAPP/3gD0/94A9f/eAPb/3gD3/94A+P/rAPn/6wD6/+sA+//rAPz/6wEC/+sBA//rAQT/6wEF/+sBBv/rAQf/6gEI/+oBCf/qAQr/6gEL/+gBDP/oAQ3/VgEO/94BD/9WARD/3gER/1YBEv/eART/6wEW/+sBGP/rARr/6wEc/+sBHv/rASD/6wEi/+sBJP/rASb/6wEo/+sBKv/rASz/6wEu/+sBPP74AVD/6wFS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";
    var options = {
        fontSize: 14,
        margins: {
            left: 10,
            right: 10,
            top: 10,
            bot: 10
        },
        format: [
            pdfWidth, pdfHeight
        ],
        fontName: 'roboto',
        base64Normal: roboto
    };
    var surveyPDF = new SurveyPDF.SurveyPDF(json, options);
    surveyPDF.data = surveyModel.data;
    surveyPDF.save(filename);
}

document
    .getElementById("saveToPDFbtn")
    .onclick = function () {
        var pdfWidth = survey.pdfWidth || 210;
        var pdfHeight = survey.pdfHeight || 297;
        saveSurveyToPdf("surveyResult.pdf", survey, pdfWidth, pdfHeight);
    };

Note: It would appear that this might be caused by an inverted ternary operation in createDivBlock.

Specify your

  • browser: Microsoft Edge
  • browser version: 90.0.818.46
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.44
Product
survey-pdf
Type
Enhancement
Description
Support multiple additional fonts
Product
survey-analytics
Type
Bug
Description
Some strings are not localizable

Version: v1.8.48, released at Thursday, May 20, 2021, Total Issue Count: 3

Product Type Description
survey-library Bug Remove min-width from question/panel css style

We do not need it, since a parent wrapper does it.

survey-library Bug panel.addNewPanel will create incorrect object in knockout

We have to create a knockout Panel object instead of PanelModel object.

survey-library Bug ActionBarItem properties are not reactive/observable

We return incorrect state object in the model to make properties reactive/observable.

Version: v1.8.48, released at Thursday, May 20, 2021, Total Issue Count: 3

Product
survey-library
Type
Bug
Description
Remove min-width from question/panel css style

We do not need it, since a parent wrapper does it.

Product
survey-library
Type
Bug
Description
panel.addNewPanel will create incorrect object in knockout

We have to create a knockout Panel object instead of PanelModel object.

Product
survey-library
Type
Bug
Description
ActionBarItem properties are not reactive/observable

We return incorrect state object in the model to make properties reactive/observable.

Version: v1.8.47, released at Wednesday, May 12, 2021, Total Issue Count: 10

Product Type Description
survey-library Enhancement Add isInputReadOnly into question

isInputReadOnly returns true if question is readOnly or we are in design-time in Creator V2. It requires for Creator V2. We changed slightly rendering by changing in some places the check for isReadOnly on isInputReadOnly.

survey-library Bug Fix bugs on setting values in property grid in Creator V2

Add several unit tests and fix them on setting values in survey objects from property grid (generated Survey)

survey-library Bug buttongroup question produces duplicated ids in knockout

Incorrect rendering for id attribute for radio input element.

survey-library Bug Bug with custom widget and error validation in vue

What is the current behavior?

Hi i'm working with survey-vue. I created a simple custom widget, with isRequired true. Triggering the survey validation via JavaScript works well with version 1.8.32 and below. But with version >= 1.8.33 the error red alerts are not displayed in the custom widget:

Example code: var page = vm.survey.getPage(0) page.hasErrors()

  • browser: Chrome and Firefox
survey-library Bug BUG: Dependend choices not working properly in PanelDynamic

Hi, I report the unattended behavior in the following kind of survey.

  1. First put a checkbox field (question1).
  2. Secondly a PanelDynamic.
  3. In the panel put a dropdown whose choices are taken from selected answer of question 1.

Now let's test the survey. Select some answers from question1. Add two or more rows in the paneldynamic. The first dropdown in the panel works well, the second shows default answers.

The expected behavior is that in every copy of the panel the dropdown should show the selected answers from question1.

If I first create copies of PanelDynamic and THEN choose answers from question1, all the dropdowns shows the correct answers.

UPD: Minimum example to reproduce the issue.

Test code

{
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "checkbox",
     "name": "question1",
     "choices": [
      "A",
      "B",
      "C",
      "D",
      "E"
     ],
     "otherText": "item5"
    },
    {
     "type": "paneldynamic",
     "name": "question2",
     "templateElements": [
      {
       "type": "dropdown",
       "name": "question3",
       "choicesFromQuestion": "question1",
       "choicesFromQuestionMode": "selected"
      }
     ]
    }
   ],
   "title": "Customer information"
  }
 ],
 "triggers": [
  {
   "type": "setvalue",
   "setToName": "name",
   "setValue": "Jon Snow"
  },
  {
   "type": "setvalue",
   "setToName": "email",
   "setValue": "jon.snow@nightwatch.com"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided to use your current information.",
   "isVariable": true
  },
  {
   "type": "setvalue",
   "setToName": "name"
  },
  {
   "type": "setvalue",
   "setToName": "email"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided not to use your current information.",
   "isVariable": true
  }
 ]
}

Specify your

  • browser: Firefox and Chrome
  • browser version: firefox 88 and chrome 90.0.4430.93
  • surveyjs platform: vue and jquery
  • surveyjs version: 1.8.46
survey-library Bug Bug in using resfull service in dropdown in matrix dynamic + using hasOther and setting old data

The original issue was created in SurveyJS support desk. Here is the minimum code to reproduce the issue:

    var json = {
      elements: [
        {
          type: "matrixdynamic",
          name: "countries",
          indent: 1,
          title: "Countries",
          columns: [
            {
              name: "country",
              hasOther: true,
              choicesByUrl: {
                url: "https://restcountries.eu/rest/v2/all",
                valueName: "name",
              },
            },
          ],
          rowCount: 1,
        },
      ],
    };
    var survey = new Survey.Model(json);
    survey.data = {
      countries: [{ country: "Albania", "country-Comment": "description" }],
    };
survey-library Bug Changing page/panel questionTitleLocation left doesn't change question title location immediately

We do not update question css on changing questionTitleLocation property of the question parent elements (page/panel).

survey-creator Bug Removing an item from toolbox if there are several categories and keepAllCategoriesExpanded are true collapse categories

On removing (and probably on adding) item(s) from/into toolbox if there are several categories and keepAllCategoriesExpanded equals to true, will collapse categories except the first one and an end-user will not be able to expand them.

survey-creator Bug Toolbar button desn't respect enabled attribute

Click function is called for the disabled button

See the https://surveyjs.answerdesk.io/ticket/details/t2320/custom-toolbar-item-enable-property-not-working thread for more details

survey-analytics Bug Matrix multiple choice does not seem to have visualisation

I tried creating a survey with matrix multiple choice. it was seen in the survey but there was no graphic available for the same

Version: v1.8.47, released at Wednesday, May 12, 2021, Total Issue Count: 10

Product
survey-library
Type
Enhancement
Description
Add isInputReadOnly into question

isInputReadOnly returns true if question is readOnly or we are in design-time in Creator V2. It requires for Creator V2. We changed slightly rendering by changing in some places the check for isReadOnly on isInputReadOnly.

Product
survey-library
Type
Bug
Description
Fix bugs on setting values in property grid in Creator V2

Add several unit tests and fix them on setting values in survey objects from property grid (generated Survey)

Product
survey-library
Type
Bug
Description
buttongroup question produces duplicated ids in knockout

Incorrect rendering for id attribute for radio input element.

Product
survey-library
Type
Bug
Description
Bug with custom widget and error validation in vue

What is the current behavior?

Hi i'm working with survey-vue. I created a simple custom widget, with isRequired true. Triggering the survey validation via JavaScript works well with version 1.8.32 and below. But with version >= 1.8.33 the error red alerts are not displayed in the custom widget:

Example code: var page = vm.survey.getPage(0) page.hasErrors()

  • browser: Chrome and Firefox
Product
survey-library
Type
Bug
Description
BUG: Dependend choices not working properly in PanelDynamic

Hi, I report the unattended behavior in the following kind of survey.

  1. First put a checkbox field (question1).
  2. Secondly a PanelDynamic.
  3. In the panel put a dropdown whose choices are taken from selected answer of question 1.

Now let's test the survey. Select some answers from question1. Add two or more rows in the paneldynamic. The first dropdown in the panel works well, the second shows default answers.

The expected behavior is that in every copy of the panel the dropdown should show the selected answers from question1.

If I first create copies of PanelDynamic and THEN choose answers from question1, all the dropdowns shows the correct answers.

UPD: Minimum example to reproduce the issue.

Test code

{
 "completedHtml": "<p><h4>Thank you for sharing this information with us.</h4></p><p>Your name is: <b>{name}</b></p><p>Your email is: <b>{email}</b></p><p>This information is not in the survey data result:<b> {tempvar}</b></p>",
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "checkbox",
     "name": "question1",
     "choices": [
      "A",
      "B",
      "C",
      "D",
      "E"
     ],
     "otherText": "item5"
    },
    {
     "type": "paneldynamic",
     "name": "question2",
     "templateElements": [
      {
       "type": "dropdown",
       "name": "question3",
       "choicesFromQuestion": "question1",
       "choicesFromQuestionMode": "selected"
      }
     ]
    }
   ],
   "title": "Customer information"
  }
 ],
 "triggers": [
  {
   "type": "setvalue",
   "setToName": "name",
   "setValue": "Jon Snow"
  },
  {
   "type": "setvalue",
   "setToName": "email",
   "setValue": "jon.snow@nightwatch.com"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided to use your current information.",
   "isVariable": true
  },
  {
   "type": "setvalue",
   "setToName": "name"
  },
  {
   "type": "setvalue",
   "setToName": "email"
  },
  {
   "type": "setvalue",
   "setToName": "tempvar",
   "setValue": "You have decided not to use your current information.",
   "isVariable": true
  }
 ]
}

Specify your

  • browser: Firefox and Chrome
  • browser version: firefox 88 and chrome 90.0.4430.93
  • surveyjs platform: vue and jquery
  • surveyjs version: 1.8.46

The original issue was created in SurveyJS support desk. Here is the minimum code to reproduce the issue:

    var json = {
      elements: [
        {
          type: "matrixdynamic",
          name: "countries",
          indent: 1,
          title: "Countries",
          columns: [
            {
              name: "country",
              hasOther: true,
              choicesByUrl: {
                url: "https://restcountries.eu/rest/v2/all",
                valueName: "name",
              },
            },
          ],
          rowCount: 1,
        },
      ],
    };
    var survey = new Survey.Model(json);
    survey.data = {
      countries: [{ country: "Albania", "country-Comment": "description" }],
    };

We do not update question css on changing questionTitleLocation property of the question parent elements (page/panel).

On removing (and probably on adding) item(s) from/into toolbox if there are several categories and keepAllCategoriesExpanded equals to true, will collapse categories except the first one and an end-user will not be able to expand them.

Product
survey-creator
Type
Bug
Description
Toolbar button desn't respect enabled attribute

Click function is called for the disabled button

See the https://surveyjs.answerdesk.io/ticket/details/t2320/custom-toolbar-item-enable-property-not-working thread for more details

Product
survey-analytics
Type
Bug
Description
Matrix multiple choice does not seem to have visualisation

I tried creating a survey with matrix multiple choice. it was seen in the survey but there was no graphic available for the same

Version: v1.8.46, released at Friday, April 30, 2021, Total Issue Count: 7

Product Type Description
survey-library Bug Html is not working properly on question titles (links cannot be opened) - ko, jquery, angular

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When i add a link to my question title, when i click on link is not working

What is the expected behavior?

Work as a link

How would you reproduce the current behavior (if this is a bug)?

Extra info, this is working on previous version Version : 1.8.6 -> https://plnkr.co/edit/ES5fBWNX0qkFbzwc (Working) Version : 1.8.44 -> https://plnkr.co/edit/xRm2YnIk6lNpZE9r (Not working)

survey-library Enhancement Make questions/panels disabled in Creator V2 on design surface

question and panel returns isReadOnly true for survey in design mode for Creator V2.

survey-library Bug defaultValue doesn't set into read-only boolean question

The following json will show undefined boolean question while it should q1 value into true.

{
      elements: [
        {
          type: "boolean",
          name: "q1",
          defaultValue: true,
          readOnly: true,
        }
      ]
    }
survey-library Enhancement Remove required errors on setting values in matrix cells, panel dynamic and multiple text questions

We do not clear requires errors on setting values inside the complex questions like: matrix dropdown/dynamic, panel dynamic and multiple text questions. It makes sense to do it.

survey-library Bug KnockoutJS - stack overflow during complex survey rendering
survey-creator Bug Rating items adorner crashes after adding custom rate values
  1. Go to https://surveyjs.io/create-survey
  2. Add rating question
  3. Add custom rate value in Rate Values section
  4. ???
  5. Items adorner of rating is broken in designer

image

survey-creator Bug survey title and description are not update in property grid accordingly to survey locale change

The original issue was posted into SurveyJS Support desk.

Version: v1.8.46, released at Friday, April 30, 2021, Total Issue Count: 7

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When i add a link to my question title, when i click on link is not working

What is the expected behavior?

Work as a link

How would you reproduce the current behavior (if this is a bug)?

Extra info, this is working on previous version Version : 1.8.6 -> https://plnkr.co/edit/ES5fBWNX0qkFbzwc (Working) Version : 1.8.44 -> https://plnkr.co/edit/xRm2YnIk6lNpZE9r (Not working)

Product
survey-library
Type
Enhancement
Description
Make questions/panels disabled in Creator V2 on design surface

question and panel returns isReadOnly true for survey in design mode for Creator V2.

Product
survey-library
Type
Bug
Description
defaultValue doesn't set into read-only boolean question

The following json will show undefined boolean question while it should q1 value into true.

{
      elements: [
        {
          type: "boolean",
          name: "q1",
          defaultValue: true,
          readOnly: true,
        }
      ]
    }

We do not clear requires errors on setting values inside the complex questions like: matrix dropdown/dynamic, panel dynamic and multiple text questions. It makes sense to do it.

Product
survey-library
Type
Bug
Description
KnockoutJS - stack overflow during complex survey rendering
Product
survey-creator
Type
Bug
Description
Rating items adorner crashes after adding custom rate values
  1. Go to https://surveyjs.io/create-survey
  2. Add rating question
  3. Add custom rate value in Rate Values section
  4. ???
  5. Items adorner of rating is broken in designer

image

The original issue was posted into SurveyJS Support desk.

Version: v1.8.45, released at Wednesday, April 28, 2021, Total Issue Count: 16

Product Type Description
survey-library Bug Make maxLength property in text question invisible for non text inputType

We show maxLength property for "numeric" inputType, when it doesn't make sense. We should hide it in the property grid.

survey-library Enhancement Optionally add all items into visibleItems for checkbox/radiogroup questions in design mode

We need this functionality for SurveyJS Creator V2

survey-library Bug knockout, jquery, angular: Ranking questions doesnt update ordering when choices are in the format {text:"xx", value:"xx"}

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When user re-orders the ranking choices, the numbering doesnt get updated as per ranking order.

What is the expected behavior?

When user re-orders the ranking choices, the numbering should get updated as per ranking order.

How would you reproduce the current behavior (if this is a bug)?

Use this as a test example json provided below. Output

Provide the test code and the tested page URL (if applicable)

Tested page URL: use the SurveyEditor demo and paste the below json

Test code

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "ranking",
     "name": "smartphone-features",
     "title": "Please rank the following smartphone features in order of importance:",
     "isRequired": true,
     "choices": [
      {
       "value": "121",
       "text": "Battery life"
      },
      {
       "value": "122",
       "text": "Screen size"
      },
      {
       "value": "124",
       "text": "Storage space"
      },
      {
       "value": "125",
       "text": "Camera quality"
      },
      {
       "value": "126",
       "text": "Durability"
      },
      {
       "value": "127",
       "text": "Processor power"
      },
      {
       "value": "128",
       "text": "Price"
      }
     ]
    }
   ]
  }
 ]
}

Specify your

  • browser: Chrome
  • browser version: v81.0.4xx
  • surveyjs platform (angular or react or jquery or knockout or vue): JQuery
  • surveyjs version: 1.8.44 (earlier versions also have this problem)
survey-library Bug Do not get "Select All", "None" and "Others" choices when copy them from choicesFromQuestion

We can have double choices for "Select All", "None" and "Other" if choicesFromQuestion property is used.

survey-library Bug Issue on combination between default value on question + single page survey + visibleif on choice

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

My default value its being cleaned up, because the visible if relation with choice only on singlePage mode

What is the expected behavior?

The default value must be set after my previous question ends (seems like, the process its running before, and that its why the default value never appears)

How would you reproduce the current behavior (if this is a bug)?

plunker with single page : https://plnkr.co/edit/Asiw5IchB63JSX6X plunker with multiple page : https://plnkr.co/edit/YPWEltANZzKNtJJr You need to select the option 1 and option 2

survey-library Enhancement Improve localization string onStrChanged callback

Add oldValue, newValue parameters into onStrChanged callback for localization strings and notify object about text change the owner object. It requires from Creator V2.

survey-library Bug KnockoutJS: Question inner content (e.g. items) are nor ready in the koQuestionAfterRender event handler
survey-library Enhancement Passing backgroundColor as an option for SignaturePad

Are you requesting a feature, reporting a bug or asking a question?

feature

What is the current behavior?

SignaturePad has hardcoded white background.

What is the expected behavior?

We should be able to pass backgroundColor as a config for type "signaturepad". The underlying library for signaturepad supports it.

How would you reproduce the current behavior (if this is a bug)?

This white background is the default behaviour as introduceed by commit
https://github.com/surveyjs/survey-library/commit/6c1f2fc2e4506c155c77c28f0cb5ad7e11872b06#diff-56fcd01c0c08b1327bf774d29516820047e7a5a410ca987f6446b4c62e5ef679R75

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser: Chrome
  • browser version: 90
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: latest
survey-library Enhancement Peformance improvements on loading and value changing for very large surveys

If surveys has hundreds questions on a page and there is a text pre-processing in the question titles, then it takes a significant time to load the survey and change the value. We are calling a lot of times strChanged function for localization strings. These calls should be reduce significantly.

survey-library Enhancement Refactor code with navigation buttons position

Remove a code duplication.

survey-library Bug Text processing doesn't work correctly in matrix dropdown/dynamic columns in knockout

If you are using text processing in the column then initially on the first rendering, we do not process text in column title.

          columns: [
            {
              name: "col1",
              title: "Value: {question1} from question1",
              cellType: "text",
            },
          ],

If the "question1" has a value on the first rendering then we show incorrect value. It doesn't work in knockout and works in react.

survey-creator Bug Choice items (inner markup) adorners are not created if question is dragged on design surface

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

Choice items (inner markup) adorners are not created if question is dragged on design surface

What is the expected behavior?

Choice item adorners created ok

How would you reproduce the current behavior (if this is a bug)?

Add question from toolbox via drag/drop

survey-creator Enhancement Impove getNextValue function that generates new value for a new choice

If we have a choice array: ["1 day", "2 days", "3 days"] then the next value should be "4 days" instead of "3 days1".

survey-creator Bug creator onPropertyValueChanging doesn't work correct on setting empty string as new value

The original issue was posted into SurveyJS support desk. The following code doesn't work correctly if the newValue is white spaces and trim() will return empty string:

creator.onPropertyValueChanging = (sender, options) {
    options.newValue = options.newValue.trim();
  };

It works fine in V2, but in V1 we ignore empty strings as we do with undefined or null.

custom-widgets Bug jquery date picker generates error if jQuery is not included

Add check on existing jQuery

custom-widgets Bug Ck-Editor plugin doesn't work in panel dynamic

We use question name as unique identificator. However, in panel dynamic, question name is not unique. We should use inputId that is unique.

Version: v1.8.45, released at Wednesday, April 28, 2021, Total Issue Count: 16

We show maxLength property for "numeric" inputType, when it doesn't make sense. We should hide it in the property grid.

We need this functionality for SurveyJS Creator V2

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When user re-orders the ranking choices, the numbering doesnt get updated as per ranking order.

What is the expected behavior?

When user re-orders the ranking choices, the numbering should get updated as per ranking order.

How would you reproduce the current behavior (if this is a bug)?

Use this as a test example json provided below. Output

Provide the test code and the tested page URL (if applicable)

Tested page URL: use the SurveyEditor demo and paste the below json

Test code

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "ranking",
     "name": "smartphone-features",
     "title": "Please rank the following smartphone features in order of importance:",
     "isRequired": true,
     "choices": [
      {
       "value": "121",
       "text": "Battery life"
      },
      {
       "value": "122",
       "text": "Screen size"
      },
      {
       "value": "124",
       "text": "Storage space"
      },
      {
       "value": "125",
       "text": "Camera quality"
      },
      {
       "value": "126",
       "text": "Durability"
      },
      {
       "value": "127",
       "text": "Processor power"
      },
      {
       "value": "128",
       "text": "Price"
      }
     ]
    }
   ]
  }
 ]
}

Specify your

  • browser: Chrome
  • browser version: v81.0.4xx
  • surveyjs platform (angular or react or jquery or knockout or vue): JQuery
  • surveyjs version: 1.8.44 (earlier versions also have this problem)

We can have double choices for "Select All", "None" and "Other" if choicesFromQuestion property is used.

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

My default value its being cleaned up, because the visible if relation with choice only on singlePage mode

What is the expected behavior?

The default value must be set after my previous question ends (seems like, the process its running before, and that its why the default value never appears)

How would you reproduce the current behavior (if this is a bug)?

plunker with single page : https://plnkr.co/edit/Asiw5IchB63JSX6X plunker with multiple page : https://plnkr.co/edit/YPWEltANZzKNtJJr You need to select the option 1 and option 2

Product
survey-library
Type
Enhancement
Description
Improve localization string onStrChanged callback

Add oldValue, newValue parameters into onStrChanged callback for localization strings and notify object about text change the owner object. It requires from Creator V2.

Product
survey-library
Type
Enhancement
Description
Passing backgroundColor as an option for SignaturePad

Are you requesting a feature, reporting a bug or asking a question?

feature

What is the current behavior?

SignaturePad has hardcoded white background.

What is the expected behavior?

We should be able to pass backgroundColor as a config for type "signaturepad". The underlying library for signaturepad supports it.

How would you reproduce the current behavior (if this is a bug)?

This white background is the default behaviour as introduceed by commit
https://github.com/surveyjs/survey-library/commit/6c1f2fc2e4506c155c77c28f0cb5ad7e11872b06#diff-56fcd01c0c08b1327bf774d29516820047e7a5a410ca987f6446b4c62e5ef679R75

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

your_code_here

Specify your

  • browser: Chrome
  • browser version: 90
  • surveyjs platform (angular or react or jquery or knockout or vue): knockout
  • surveyjs version: latest
Product
survey-library
Type
Enhancement
Description
Peformance improvements on loading and value changing for very large surveys

If surveys has hundreds questions on a page and there is a text pre-processing in the question titles, then it takes a significant time to load the survey and change the value. We are calling a lot of times strChanged function for localization strings. These calls should be reduce significantly.

Product
survey-library
Type
Enhancement
Description
Refactor code with navigation buttons position

Remove a code duplication.

If you are using text processing in the column then initially on the first rendering, we do not process text in column title.

          columns: [
            {
              name: "col1",
              title: "Value: {question1} from question1",
              cellType: "text",
            },
          ],

If the "question1" has a value on the first rendering then we show incorrect value. It doesn't work in knockout and works in react.

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

Choice items (inner markup) adorners are not created if question is dragged on design surface

What is the expected behavior?

Choice item adorners created ok

How would you reproduce the current behavior (if this is a bug)?

Add question from toolbox via drag/drop

Product
survey-creator
Type
Enhancement
Description
Impove getNextValue function that generates new value for a new choice

If we have a choice array: ["1 day", "2 days", "3 days"] then the next value should be "4 days" instead of "3 days1".

The original issue was posted into SurveyJS support desk. The following code doesn't work correctly if the newValue is white spaces and trim() will return empty string:

creator.onPropertyValueChanging = (sender, options) {
    options.newValue = options.newValue.trim();
  };

It works fine in V2, but in V1 we ignore empty strings as we do with undefined or null.

Product
custom-widgets
Type
Bug
Description
jquery date picker generates error if jQuery is not included

Add check on existing jQuery

Product
custom-widgets
Type
Bug
Description
Ck-Editor plugin doesn't work in panel dynamic

We use question name as unique identificator. However, in panel dynamic, question name is not unique. We should use inputId that is unique.

Version: v1.8.44, released at Wednesday, April 21, 2021, Total Issue Count: 16

Product Type Description
survey-library Bug Remove has other item property from ranking's property grid

image

Also some strange behavior with other item adorner in ranking question: image

survey-library Bug Hide max selected choices property from ranking's property grid

image

survey-library Bug Bug on clean answers on complete on choices from web property

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When I use the choices from web property and my question has a previous value that doesn't match with the current data of my API endpoint, the data is not cleaned when I approve (this is cleaned when I have a scenario without choices from web).

What is the expected behavior?

It works exactly the same as the case without choices from web

How would you reproduce the current behavior (if this is a bug)?

Case without choices from web: this is a case that has 3 choices, the user select 1 element, and after that, that element was removed - this case is ok https://plnkr.co/edit/vQ76jGTalxvqFc5I

Case with choices from web https://plnkr.co/edit/MlnMy5CyGITAwJES

Specify your

  • browser:n/a
  • browser version: n/a
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: last
survey-library Bug Incorrect default value for panelRemoveButtonLocation property

The default value is incorrect in the property definition.

survey-library Bug Creator V2: Localizable properties may show default values from another properties in matrix dynamic

We need this fix for property grid in Creator V2

survey-library Enhancement ranking: hide "hasOthers" and related properties

"hasOthers" and related properties do not have a lot of sense for ranking question. We will hide them

based on the https://surveyjs.answerdesk.io/ticket/details/T6802

survey-library Bug survey-knockout + jQuery - drag file(s) over a file question causes the error
Uncaught TypeError: t.dataTransfer is undefined

See the https://surveyjs.answerdesk.io/ticket/details/t6815/uncaught-typeerror-t-datatransfer-is-undefined thread for more details

survey-library Enhancement Add survey.onMatrixRowRemoving event

You can use this event to avoid deleting row from a matrix dynamic question at the last moment or for example clear row values instead of deleting the row. The following code will clear values in the only row, instead of removing it and allow to remove a row if there are more then one row in the matrix.

    survey.onMatrixRowRemoving.add(function(survey, options) {
      options.allow = options.question.rowCount > 1;
      if (!options.allow) {
        options.row.clearValue();
      }
    });
survey-library Bug MultipleText question set empty string as value for their items

The original issue was created on SurveyJS support desk. The empty string should not be considered as valid entered value.

survey-library Enhancement Change panel and page title property type from string to text

The question title property has text type. We need to be consistent and have the text type for panel and page title property as well.

survey-library Enhancement Allow to check errors in survey/pages that uses the async functions during validation

Change survey.hasErrors function. The function can return undefined if there is no erros in sync validation, but the async validation is exists and started to executed. A new optional third parameter is added: onAsyncValidation?: (hasErrors: boolean) => void. We added the additionally the following functions: hasPageErrors and hasCurrentPageErrors.

  /**
   * Returns `true`, if a page contains an error. If there is an async function in an expression, then the function will return `undefined` value.
   * In this case, you should use the second `onAsyncValidation` parameter,  which is a callback function: (hasErrors: boolean) => void
   * @param page the page that you want to validate. If the parameter is undefined then the `currentPage` is using
   * @param onAsyncValidation use this parameter if you use async functions in your expressions. This callback function will be called with hasErrors value equals to `true` or `false`.
   * @see hasCurrentPageErrors
   * @see hasErrors
   * @see currentPage
   */
  public hasPageErrors(page?: PageModel,  onAsyncValidation?: (hasErrors: boolean) => void): boolean;

/**
   * Returns `true`, if the current page contains any error. If there is an async function in an expression, then the function will return `undefined` value.
   * In this case, you should use `onAsyncValidation` parameter, which is a callback function: (hasErrors: boolean) => void
   * @param onAsyncValidation use this parameter if you use async functions in your expressions. This callback function will be called with hasErrors value equals to `true` or `false`.
   * @see hasPageErrors
   * @see hasErrors
   * @see currentPage
   */
  public hasCurrentPageErrors(onAsyncValidation?: (hasErrors: boolean) => void): boolean;
survey-library Bug Do not modify expression questions if survey in display mode

Let's say we have expression question that has an expression property equals to today(). When we show the survey in display mode we expect to see the date when the survey was last modified and not the current date. We should not modify values for expression questions.

survey-library Bug ItemValue object is created instead of ImageItemValue for ImagePicker during choices by URL parsing
survey-creator Bug Bug on create a custom question (panel question) from toolbox

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

When i add a panel question on the toolbox the event onQuestionAdded is not being triggered , and im getting 2 different behaviors when i drag the question or when i click it

  1. When i drag it duplicates the name created from the original question, and no event is triggered
  2. When i click on the element im getting the default behavior of new question added (its changing the name), and no event is triggered

What is the expected behavior?

When i add a panel question on the toolbox the event onQuestionAdded must be triggered.

  1. When i drag the question , change the name of the question and trigger the event onQuestionAdded
  2. When i click on the element, change the name of the question and trigger the event onQuestionAdded

How would you reproduce the current behavior (if this is a bug)?

  1. Add a new panel question
  2. Add any question inside of this panel
  3. Add it to toolbox
  4. And click or drag it, into your survey

Specify your

  • browser: n/a
  • editor version: 1.8.37
survey-creator Bug Update expressions on deleting panels and pages

Creator updates expressions on deleting a question. However, if we delete a page or panel that contains questions Surveyjs does nothing. It should update for questions in it.

survey-creator Enhancement Multiple text item title adorner - make it possible to edit item name

I think it will be enough to implement the following option:

SurveyCreator.itemTitleAdorner.inplaceEditForNames = true;

which will change edited field from "title" to "name" value

Version: v1.8.44, released at Wednesday, April 21, 2021, Total Issue Count: 16

Product
survey-library
Type
Bug
Description
Remove has other item property from ranking's property grid

image

Also some strange behavior with other item adorner in ranking question: image

Product
survey-library
Type
Bug
Description
Hide max selected choices property from ranking's property grid

image

Product
survey-library
Type
Bug
Description
Bug on clean answers on complete on choices from web property

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When I use the choices from web property and my question has a previous value that doesn't match with the current data of my API endpoint, the data is not cleaned when I approve (this is cleaned when I have a scenario without choices from web).

What is the expected behavior?

It works exactly the same as the case without choices from web

How would you reproduce the current behavior (if this is a bug)?

Case without choices from web: this is a case that has 3 choices, the user select 1 element, and after that, that element was removed - this case is ok https://plnkr.co/edit/vQ76jGTalxvqFc5I

Case with choices from web https://plnkr.co/edit/MlnMy5CyGITAwJES

Specify your

  • browser:n/a
  • browser version: n/a
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: last
Product
survey-library
Type
Bug
Description
Incorrect default value for panelRemoveButtonLocation property

The default value is incorrect in the property definition.

We need this fix for property grid in Creator V2

Product
survey-library
Type
Enhancement
Description
ranking: hide "hasOthers" and related properties

"hasOthers" and related properties do not have a lot of sense for ranking question. We will hide them

based on the https://surveyjs.answerdesk.io/ticket/details/T6802

Uncaught TypeError: t.dataTransfer is undefined

See the https://surveyjs.answerdesk.io/ticket/details/t6815/uncaught-typeerror-t-datatransfer-is-undefined thread for more details

Product
survey-library
Type
Enhancement
Description
Add survey.onMatrixRowRemoving event

You can use this event to avoid deleting row from a matrix dynamic question at the last moment or for example clear row values instead of deleting the row. The following code will clear values in the only row, instead of removing it and allow to remove a row if there are more then one row in the matrix.

    survey.onMatrixRowRemoving.add(function(survey, options) {
      options.allow = options.question.rowCount > 1;
      if (!options.allow) {
        options.row.clearValue();
      }
    });
Product
survey-library
Type
Bug
Description
MultipleText question set empty string as value for their items

The original issue was created on SurveyJS support desk. The empty string should not be considered as valid entered value.

Product
survey-library
Type
Enhancement
Description
Change panel and page title property type from string to text

The question title property has text type. We need to be consistent and have the text type for panel and page title property as well.

Change survey.hasErrors function. The function can return undefined if there is no erros in sync validation, but the async validation is exists and started to executed. A new optional third parameter is added: onAsyncValidation?: (hasErrors: boolean) => void. We added the additionally the following functions: hasPageErrors and hasCurrentPageErrors.

  /**
   * Returns `true`, if a page contains an error. If there is an async function in an expression, then the function will return `undefined` value.
   * In this case, you should use the second `onAsyncValidation` parameter,  which is a callback function: (hasErrors: boolean) => void
   * @param page the page that you want to validate. If the parameter is undefined then the `currentPage` is using
   * @param onAsyncValidation use this parameter if you use async functions in your expressions. This callback function will be called with hasErrors value equals to `true` or `false`.
   * @see hasCurrentPageErrors
   * @see hasErrors
   * @see currentPage
   */
  public hasPageErrors(page?: PageModel,  onAsyncValidation?: (hasErrors: boolean) => void): boolean;

/**
   * Returns `true`, if the current page contains any error. If there is an async function in an expression, then the function will return `undefined` value.
   * In this case, you should use `onAsyncValidation` parameter, which is a callback function: (hasErrors: boolean) => void
   * @param onAsyncValidation use this parameter if you use async functions in your expressions. This callback function will be called with hasErrors value equals to `true` or `false`.
   * @see hasPageErrors
   * @see hasErrors
   * @see currentPage
   */
  public hasCurrentPageErrors(onAsyncValidation?: (hasErrors: boolean) => void): boolean;
Product
survey-library
Type
Bug
Description
Do not modify expression questions if survey in display mode

Let's say we have expression question that has an expression property equals to today(). When we show the survey in display mode we expect to see the date when the survey was last modified and not the current date. We should not modify values for expression questions.

Product
survey-creator
Type
Bug
Description
Bug on create a custom question (panel question) from toolbox

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

When i add a panel question on the toolbox the event onQuestionAdded is not being triggered , and im getting 2 different behaviors when i drag the question or when i click it

  1. When i drag it duplicates the name created from the original question, and no event is triggered
  2. When i click on the element im getting the default behavior of new question added (its changing the name), and no event is triggered

What is the expected behavior?

When i add a panel question on the toolbox the event onQuestionAdded must be triggered.

  1. When i drag the question , change the name of the question and trigger the event onQuestionAdded
  2. When i click on the element, change the name of the question and trigger the event onQuestionAdded

How would you reproduce the current behavior (if this is a bug)?

  1. Add a new panel question
  2. Add any question inside of this panel
  3. Add it to toolbox
  4. And click or drag it, into your survey

Specify your

  • browser: n/a
  • editor version: 1.8.37
Product
survey-creator
Type
Bug
Description
Update expressions on deleting panels and pages

Creator updates expressions on deleting a question. However, if we delete a page or panel that contains questions Surveyjs does nothing. It should update for questions in it.

Product
survey-creator
Type
Enhancement
Description
Multiple text item title adorner - make it possible to edit item name

I think it will be enough to implement the following option:

SurveyCreator.itemTitleAdorner.inplaceEditForNames = true;

which will change edited field from "title" to "name" value

Version: v1.8.43, released at Wednesday, April 14, 2021, Total Issue Count: 3

Product Type Description
survey-library Bug rateValues property in Rating question has "rates" name in property hash

Because the property name and name in the property hash is different, our property grid in Creator V2 works incorrectly. We should fix it. It should not introduce any breacking changes since "rates" used internally only and "rateValues" property is for public API.

survey-library Bug "Remove" button doesn't show on adding new row in matrix dynamic

Due performance optimization we forgot to add/update our rows actions cache. We have update it on adding/removing rows.

survey-analytics Enhancement Show signature as an image in table view column

Version: v1.8.43, released at Wednesday, April 14, 2021, Total Issue Count: 3

Because the property name and name in the property hash is different, our property grid in Creator V2 works incorrectly. We should fix it. It should not introduce any breacking changes since "rates" used internally only and "rateValues" property is for public API.

Product
survey-library
Type
Bug
Description
"Remove" button doesn't show on adding new row in matrix dynamic

Due performance optimization we forgot to add/update our rows actions cache. We have update it on adding/removing rows.

Product
survey-analytics
Type
Enhancement
Description
Show signature as an image in table view column

Version: v1.8.42, released at Wednesday, April 14, 2021, Total Issue Count: 15

Product Type Description
survey-library Enhancement Accessibility: use title attribute instead of headers for responsive tables
survey-library Bug showInvisibleElements prop show only empty divs with class "sv-vue-row-additional-div"

Are you requesting a feature, reporting a bug or asking a question?

Reporting a bug

What is the current behavior?

When I set survey "showInvisibleElements" prop to true, the visibleIf questions doesn't show up (only their empty div).

What is the expected behavior?

Show all the visible and invisible questions when "showInvisibleElements" is set to true.

How would you reproduce the current behavior (if this is a bug)?

Using a form with visibleIf conditions, set survey.showInvisibleElements = true and run. Currently, I'm using Nuxt, but I found it easier to reproduce with pure Vue at CodeSandbox.

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://codesandbox.io/s/surveyjs-vue-forked-d2bvg?file=/src/components/SurveyComponent.vue

Specify your

  • browser: Microsoft Edge (Chromium)
  • browser version: 89.0.774.54
  • surveyjs platform (angular or react or jquery or knockout or vue): survey-vue
  • surveyjs version: Both 1.7.9 and 1.8.36
survey-library Bug Cannot find module 'survey-core' or its corresponding type declarations

Are you requesting a feature, reporting a bug or asking a question?

Bug

What is the current behavior?

When building the application, we are getting "Cannot find module 'survey-core' or its corresponding type declarations."

What is the expected behavior?

No errors occur while building the vue app.

How would you reproduce the current behavior (if this is a bug)?

Get to Version ^1.8.37 and run a build.

Specify your

  • browser: Chrome
  • browser version: 89.0.4389.114
  • surveyjs platform (angular or react or jquery or knockout or vue): Vue
  • surveyjs version: 1.8.37
survey-library Bug Bug on visible if (contains operator) if text value is 'False' or 'True'

Are you requesting a feature, reporting a bug or ask a question?

Bug

What is the current behavior?

When i use this kind of visibleif contains 'False' contains 'FALSE' contains 'True' contains 'TRUE'

the question never appears

What is the expected behavior?

This reserved words, should be treated as a word

How would you reproduce the current behavior (if this is a bug)?

You can use the plunker attached, the test survey tab

Provide the test code and the tested page URL (if applicable)

Tested page URL: https://plnkr.co/edit/kJnGrgMdzZToW6Un

  • browser: N/A
  • editor version: last
survey-library Bug visibleIf does not work on subsequent pages for Vue implementation only.

"visibleIf" on a second page causes the page to never work if comparing answer from previous page.

Are you requesting a feature, reporting a bug or asking a question?

Reporitng a bug

What is the current behavior?

For other framework/library implementations (such as React or jquery) visibleIf works on other pages. However on the VueJs implementation, the visibleIf parameter is ignored. It seems the variables on subsequent pages in VueJs does not have a value.

VueJS version not working: https://codesandbox.io/s/surveyjs-vue-forked-uyoj5

What is the expected behavior?

Working React Version https://codesandbox.io/s/vigorous-lederberg-h99xb

How would you reproduce the current behavior (if this is a bug)?

Every time, this is a bug.

Provide the test code and the tested page URL (if applicable)

Tested page URL:

Test code

These work on subsequent pages: visbibleIf: "1=1"


This does not work on subsequent pages:
 ```visibleIf: "{introQuestion} = 'yes'",```

Working React Version
https://codesandbox.io/s/vigorous-lederberg-h99xb

VueJS version not working:
https://codesandbox.io/s/surveyjs-vue-forked-uyoj5

Both of these examples utilize the same js