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

Version: v1.8.48, estimated release date is Tuesday, May 18, 2021, Total Issue Count: 2

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.

Version: v1.8.48, estimated release date is Tuesday, May 18, 2021, Total Issue Count: 2

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.

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 json payload for the survey.

survey-library Bug Comment question expand "textarea"

It is possible to expand "textarea" of the "comment" question outside the parent element. But it shouldn't.

survey-library Enhancement Add panel attribute into options parameter onDynamicPanelAdded event

In most cases, developers need an instance of added panel in this event. We ask to get it as: let panel = options.question.panels[options.question.panels.length - 1]l, but code is not obvious and the attribute should be in the place initially.

survey-library Enhancement Allow to set logo width/height in percent/pixels/auto
survey-library Enhancement Implement the autoComplete option for dropdown question type
survey-library Bug survey.clear() doesn't clear other text if defaultValue is "other"

If we have the following questions:

 "elements": [
        {
          "type": "checkbox",
          "name": "q1",
          "defaultValue": [
            "other"
          ],
          "choices": [
            "Item1",
          ],
          "hasOther": true
        },
        {
          "type": "radiogroup",
          "name": "q2",
          "defaultValue": "other",
          "choices": [
            "Item1",
          ],
          "hasOther": true
        },
]

Then on calling survey.clear() other text is not cleared for this questions. Here the original issue on SurveyJS Support Desk.

survey-creator Bug Duplicated element id "svd-translation-language-selector"
survey-creator Bug Translation tab accessibility issues
survey-creator Bug Edit pages does not work when editing survey in Modal Window

When I choose old property grid and edit pages in modal, it didn't work.

survey-creator Bug Error saving choices from web on classic mode (Modal Question Property Editor)

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

Bug

What is the current behavior?

When i try to change any property from choices from web tab on modal question editor, i get an exception error

What is the expected behavior?

Being able to save my question without problem

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

a video explaining the situation https://streamable.com/u90ci4

survey-analytics Enhancement Introduce export `fileName` option for Tabulator visualizer

This option should allow to set exported file name

Version: v1.8.42, released at Wednesday, April 14, 2021, Total Issue Count: 15

Product
survey-library
Type
Enhancement
Description
Accessibility: use title attribute instead of headers for responsive tables

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

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

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

"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 json payload for the survey.

Product
survey-library
Type
Bug
Description
Comment question expand "textarea"

It is possible to expand "textarea" of the "comment" question outside the parent element. But it shouldn't.

Product
survey-library
Type
Enhancement
Description
Add panel attribute into options parameter onDynamicPanelAdded event

In most cases, developers need an instance of added panel in this event. We ask to get it as: let panel = options.question.panels[options.question.panels.length - 1]l, but code is not obvious and the attribute should be in the place initially.

Product
survey-library
Type
Enhancement
Description
Allow to set logo width/height in percent/pixels/auto
Product
survey-library
Type
Enhancement
Description
Implement the autoComplete option for dropdown question type
Product
survey-library
Type
Bug
Description
survey.clear() doesn't clear other text if defaultValue is "other"

If we have the following questions:

 "elements": [
        {
          "type": "checkbox",
          "name": "q1",
          "defaultValue": [
            "other"
          ],
          "choices": [
            "Item1",
          ],
          "hasOther": true
        },
        {
          "type": "radiogroup",
          "name": "q2",
          "defaultValue": "other",
          "choices": [
            "Item1",
          ],
          "hasOther": true
        },
]

Then on calling survey.clear() other text is not cleared for this questions. Here the original issue on SurveyJS Support Desk.

Product
survey-creator
Type
Bug
Description
Duplicated element id "svd-translation-language-selector"
Product
survey-creator
Type
Bug
Description
Translation tab accessibility issues
Product
survey-creator
Type
Bug
Description
Edit pages does not work when editing survey in Modal Window

When I choose old property grid and edit pages in modal, it didn't work.

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

Bug

What is the current behavior?

When i try to change any property from choices from web tab on modal question editor, i get an exception error

What is the expected behavior?

Being able to save my question without problem

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

a video explaining the situation https://streamable.com/u90ci4

Product
survey-analytics
Type
Enhancement
Description
Introduce export `fileName` option for Tabulator visualizer

This option should allow to set exported file name

Version: v1.8.41, released at Tuesday, April 6, 2021, Total Issue Count: 3

Product Type Description
survey-library Enhancement Inroduce survey.lazyRendering property

We have the global settings.lazyRowsRendering. We need this property on the survey level: /**

  • By default all rows are rendered no matters if they are visible or not.
  • Set it true, and survey markup rows will be rendered only if they are visible in viewport.
  • This feature is experimantal and might do not support all the use cases. */ public lazyRendering: boolean;
survey-library Enhancement Add "multipletext_itemname" string into English translation file

This string is used on creating multiple text question as a name for text item. The default english string is "text".

survey-library Enhancement Reduce the number of calls for survey.onGetMatrixRowActions event.

We call survey.onGetMatrixRowActions event in 4 times more then we could.

Version: v1.8.41, released at Tuesday, April 6, 2021, Total Issue Count: 3

Product
survey-library
Type
Enhancement
Description
Inroduce survey.lazyRendering property

We have the global settings.lazyRowsRendering. We need this property on the survey level: /**

  • By default all rows are rendered no matters if they are visible or not.
  • Set it true, and survey markup rows will be rendered only if they are visible in viewport.
  • This feature is experimantal and might do not support all the use cases. */ public lazyRendering: boolean;
Product
survey-library
Type
Enhancement
Description
Add "multipletext_itemname" string into English translation file

This string is used on creating multiple text question as a name for text item. The default english string is "text".

Product
survey-library
Type
Enhancement
Description
Reduce the number of calls for survey.onGetMatrixRowActions event.

We call survey.onGetMatrixRowActions event in 4 times more then we could.

Version: v1.8.40, released at Monday, April 5, 2021, Total Issue Count: 12

Product Type Description
survey-library Enhancement Optimize performance for survey gets data from editingObj property

Optimized performance in several places to make survey works faster with setting editingObj property. It is requried for SurveyJS Creator V2. Added several new unit tests.

survey-library Bug Progress bar doesn't work correctly when survey.progressBarType equals to "requriedQuestions"

We do not register rendering elements for this progressBarType. It should be fixed.

survey-library Enhancement Support {panelindex} in panel dynamic template questions

The current JSON doesn't work right now.

{
   "elements": [
    {
     "type": "paneldynamic",
     "name": "panel",
     "templateElements": [
      {
       "type": "text",
       "name": "question1",
       "defaultValueExpression": "{panelIndex} + 1"
      }
     ]
    }
   ]
 }

is undefined. We need to support it.

survey-library Bug Bug: Unable to Preview a Matrix Dynamic inside of a Panel Dynamic

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

Reporting a Bug

What is the current behavior?

When attempting to preview the survey results, an exception is thrown.

What is the expected behavior?

The preview should be displayed without any exceptions.

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

  1. Add a row in the panel dynamic
  2. Answer the question in the matrix dynamic
  3. Preview the results

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

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

Test code

Survey
    .StylesManager
    .applyTheme("modern");

var json = {
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "paneldynamic",
     "name": "question1",
     "templateElements": [
      {
       "type": "matrixdynamic",
       "name": "question2",
       "columns": [
        {
         "name": "Column 1"
        }
       ],
       "choices": [
        1,
        2,
        3,
        4,
        5
       ],
       "rowCount": 1
      }
     ]
    }
   ]
  }
 ],
 "showPreviewBeforeComplete": "showAnsweredQuestions"
};

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});

Specify your

  • browser: Microsoft Edge
  • browser version: 89.0.774.63
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery / Vue
  • surveyjs version: 1.8.39
survey-library Bug question.indent and panel.indent doesn't work when they are inside dynamic panel.

Survey ignores indents during rendering in the following JSON:

{
      elements: [
        {
          type: "paneldynamic",
          name: "panel",
          templateElements: [
            {
              type: "text",
              name: "question1",
              indent: 1,
            },
            {
              type: "panel",
              name: "nestedPanel",
              indent: 2,
              elements: [
                {
                  type: "text",
                  name: "question2",
                  indent: 3,
                },
              ],
            },
          ],
          panelCount: 1,
        },
      ],
    }
survey-library Enhancement Performance optimization in creating actions in matrix dropdown/dynamic rows

There was a performance issue if there is actions in matrix rows and there are hundreds rows in the matrix

survey-library Enhancement Performance optimization: calculate question.displayValue on request only

We calculate question displayValue on loading/creating question and changing value. For complex questions like matrix, it requires to generate rows and perform a lot of task, while question.displayValue could be not requested during survey running at all. We should calculate it on request only.

survey-library Enhancement Performance optimization: add property into html question to avoid text processing

Add ignoreHtmlProgressing boolean non-serializable property into html question that avoids the text/html processing when it is true (default is undefined).

Requires for Creator V2

survey-library Enhancement Peformance optimization: calculate element css objects on requests only

Do not create and update Survey element css objects until they were not requested first time and then start to update them accordingly. It will increase the survey loading/deserialization time. We may do not render a Survey element (it could be located on another page), but SurveyJS updates an element css objects since it is loaded.

survey-library Enhancement Performance optimization: Do not render content of collapsed panel

We do not render content of collapsed panel for react, we should not do not it for knockout and vue either.

survey-creator Bug defaultValue property editor doesn't work correctly for matrix dropdown if cellType is set

The issue was created on SurveyJS support desk. Property editor for defaultValue is failed for the following JSON:

    {
     "type": "matrixdropdown",
     "name": "question1",
     "columns": [
      {
       "name": "Column 1",
       "cellType": "boolean"
      },
     ],
     "cellType": "boolean",
     "rows": [
      "Row 1",
      "Row 2"
     ]
    }

It works fine if remove cellType: "boolean" property.

survey-creator Bug Next value functionality stops working for choices, matrix dropdown rows and rates

We used deprecated and non-documented itemValue property to generate the next value. We should replace it with value property. Add a unit test on this functionality. The bug was reported on SurveyJS support desk.

Version: v1.8.40, released at Monday, April 5, 2021, Total Issue Count: 12

Product
survey-library
Type
Enhancement
Description
Optimize performance for survey gets data from editingObj property

Optimized performance in several places to make survey works faster with setting editingObj property. It is requried for SurveyJS Creator V2. Added several new unit tests.

We do not register rendering elements for this progressBarType. It should be fixed.

Product
survey-library
Type
Enhancement
Description
Support {panelindex} in panel dynamic template questions

The current JSON doesn't work right now.

{
   "elements": [
    {
     "type": "paneldynamic",
     "name": "panel",
     "templateElements": [
      {
       "type": "text",
       "name": "question1",
       "defaultValueExpression": "{panelIndex} + 1"
      }
     ]
    }
   ]
 }

is undefined. We need to support it.

Product
survey-library
Type
Bug
Description
Bug: Unable to Preview a Matrix Dynamic inside of a Panel Dynamic

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

Reporting a Bug

What is the current behavior?

When attempting to preview the survey results, an exception is thrown.

What is the expected behavior?

The preview should be displayed without any exceptions.

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

  1. Add a row in the panel dynamic
  2. Answer the question in the matrix dynamic
  3. Preview the results

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

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

Test code

Survey
    .StylesManager
    .applyTheme("modern");

var json = {
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "paneldynamic",
     "name": "question1",
     "templateElements": [
      {
       "type": "matrixdynamic",
       "name": "question2",
       "columns": [
        {
         "name": "Column 1"
        }
       ],
       "choices": [
        1,
        2,
        3,
        4,
        5
       ],
       "rowCount": 1
      }
     ]
    }
   ]
  }
 ],
 "showPreviewBeforeComplete": "showAnsweredQuestions"
};

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});

Specify your

  • browser: Microsoft Edge
  • browser version: 89.0.774.63
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery / Vue
  • surveyjs version: 1.8.39

Survey ignores indents during rendering in the following JSON:

{
      elements: [
        {
          type: "paneldynamic",
          name: "panel",
          templateElements: [
            {
              type: "text",
              name: "question1",
              indent: 1,
            },
            {
              type: "panel",
              name: "nestedPanel",
              indent: 2,
              elements: [
                {
                  type: "text",
                  name: "question2",
                  indent: 3,
                },
              ],
            },
          ],
          panelCount: 1,
        },
      ],
    }
Product
survey-library
Type
Enhancement
Description
Performance optimization in creating actions in matrix dropdown/dynamic rows

There was a performance issue if there is actions in matrix rows and there are hundreds rows in the matrix

Product
survey-library
Type
Enhancement
Description
Performance optimization: calculate question.displayValue on request only

We calculate question displayValue on loading/creating question and changing value. For complex questions like matrix, it requires to generate rows and perform a lot of task, while question.displayValue could be not requested during survey running at all. We should calculate it on request only.

Add ignoreHtmlProgressing boolean non-serializable property into html question that avoids the text/html processing when it is true (default is undefined).

Requires for Creator V2

Product
survey-library
Type
Enhancement
Description
Peformance optimization: calculate element css objects on requests only

Do not create and update Survey element css objects until they were not requested first time and then start to update them accordingly. It will increase the survey loading/deserialization time. We may do not render a Survey element (it could be located on another page), but SurveyJS updates an element css objects since it is loaded.

Product
survey-library
Type
Enhancement
Description
Performance optimization: Do not render content of collapsed panel

We do not render content of collapsed panel for react, we should not do not it for knockout and vue either.

The issue was created on SurveyJS support desk. Property editor for defaultValue is failed for the following JSON:

    {
     "type": "matrixdropdown",
     "name": "question1",
     "columns": [
      {
       "name": "Column 1",
       "cellType": "boolean"
      },
     ],
     "cellType": "boolean",
     "rows": [
      "Row 1",
      "Row 2"
     ]
    }

It works fine if remove cellType: "boolean" property.

We used deprecated and non-documented itemValue property to generate the next value. We should replace it with value property. Add a unit test on this functionality. The bug was reported on SurveyJS support desk.

Version: v1.8.39, released at Wednesday, March 31, 2021, Total Issue Count: 3

Product Type Description
survey-library Bug Wrong spelled term - "origional" - is used instead of "original" in naming of private API members

A minor issue in private API naming. "origional" is used instead of "original" within some APIs in expressions.ts, survey.ts, and in certain test files.

For instance, in expressions.ts: https://github.com/surveyjs/survey-library/blob/68eb0054dc83d2f45a6daa1042bf7440c8faf007/src/expressions/expressions.ts#L304

survey-library Bug survey.editingObj doesn't work for non serialized properties

survey editingObj functionality doesn't work correctly for question page property since it is non serizable. This functionality is requried for SurveyJS Creator V2.

survey-library Bug Version 1.8.38 breaks survey-angular package

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

Bug

What is the current behavior?

Error: node_modules/survey-angular/survey.angular.d.ts:9291:26 - error TS2307: Cannot find module 'survey-core' or its corresponding type declarations.

9291     get survey(): import("survey-core").ISurvey;

What is the expected behavior?

No crash.

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

Use survey-angular 1.8.38

Specify your

  • browser: Chrome
  • browser version: 89
  • surveyjs platform (angular or react or jquery or knockout or vue): angular
  • surveyjs version: 1.8.38

Version: v1.8.39, released at Wednesday, March 31, 2021, Total Issue Count: 3

A minor issue in private API naming. "origional" is used instead of "original" within some APIs in expressions.ts, survey.ts, and in certain test files.

For instance, in expressions.ts: https://github.com/surveyjs/survey-library/blob/68eb0054dc83d2f45a6daa1042bf7440c8faf007/src/expressions/expressions.ts#L304

Product
survey-library
Type
Bug
Description
survey.editingObj doesn't work for non serialized properties

survey editingObj functionality doesn't work correctly for question page property since it is non serizable. This functionality is requried for SurveyJS Creator V2.

Product
survey-library
Type
Bug
Description
Version 1.8.38 breaks survey-angular package

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

Bug

What is the current behavior?

Error: node_modules/survey-angular/survey.angular.d.ts:9291:26 - error TS2307: Cannot find module 'survey-core' or its corresponding type declarations.

9291     get survey(): import("survey-core").ISurvey;

What is the expected behavior?

No crash.

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

Use survey-angular 1.8.38

Specify your

  • browser: Chrome
  • browser version: 89
  • surveyjs platform (angular or react or jquery or knockout or vue): angular
  • surveyjs version: 1.8.38

Version: v1.8.38, released at Tuesday, March 30, 2021, Total Issue Count: 10

Product Type Description
survey-library Enhancement Clear event handlers on disposing survey objects

On calling survey.dispose() or question.dispose() we should clear all event handlers for survey objects.

survey-library Bug Navigation becomes unresponsive after required error is corrected

I am reporting a bug discovered in "survey-vue": "^1.8.31" and "surveyjs-widgets": "^1.8.31".

The current behavior is:

After the required error state throws (when a user tries to proceed without answering a required question) and is corrected with the user answering that question, the survey navigation only allows the user to move forward one page and then becomes unresponsive and shows that the survey is in error state.

The expected behavior is:

I expect the survey navigation to remain responsive when a required error was thrown and corrected and the next page is navigated to.

To reproduce:

  • navigate to a survey question with a required answer
  • instead of providing the required answer, click next, causing the required error to throw
  • now correctly answer the question
  • click next to proceed to the next question
  • provide a valid answer and try and proceed
  • the navigation has become unresponsive, the survey shows in error state and will not proceed or go back

This resolves 100% when I revert my version back to 1.8.0

Test code

      s.data = this.surveyResult.result;
      s.css = surveyClassOverrides;
      s.showNavigationButtons = false;
      // update sortable widget to rank items within result box instead of dragging from source box
      s.getAllQuestions().forEach((question) => {
        const q = question;
        if (q.getType() === 'sortablelist') {
          q.value = q.choices.map((c) => c.value);
          q.isRequired = false;
        }
      });
      // Set survey variables
      forEach(this.surveyVariables, (value, key) => {
        s.setVariable(key, value);
      });
      s.onPartialSend.add(this.sendDataToServer);
      s.onComplete.add(this.completeSurvey);

      // if this.survey.config?.goNextPageAutomatic is true we want to add a delay between the automatic transitions
      let doDelay = this.survey.config.goNextPageAutomatic;
      s.onCurrentPageChanging
        /* eslint-disable no-param-reassign */
        .add((sender, options) => {
          if (!doDelay) return;
          options.allowChanging = false;
          setTimeout(() => {
            doDelay = false;
            sender.currentPage = options.newCurrentPage;
            /* eslint-enable no-param-reassign */
            doDelay = true;
          }, 500);
        });
      // ensure that the survey will not automatically be completed when user answers final question
      // allowCompleteSurveyAutomatic cannot be set in the JSON without making it serializable.
      // See https://github.com/surveyjs/survey-library/issues/2638 for more info from SurveyJS
      s.allowCompleteSurveyAutomatic = false;
      this.surveyModel = s;
      this.isSurveyComplete = false;
      if (s.currentPageNo === 0) {
        this.$emit('has-navigated-to-first-question', true);
      } else {
        this.$emit('has-navigated-to-first-question', false);
      }
      s.onCurrentPageChanged.add(this.handleNavigation);

Specify your

  • browser: Chrome 89
  • surveyjs platform: Vue
  • surveyjs version: 1.8.31
survey-library Bug key duplication errors does not come up in matrix/panel dynamic

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

bug

What is the current behavior?

when duplicated keys are present surveyJS correctly does not save the data and focus on the question with the error but the error is not shown

What is the expected behavior?

see duplicated key errors

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

https://plnkr.co/edit/uOUHnWVU8EalJWnl

survey-library Bug survey-react - browser autofill doesn't work with react 17.x
survey-library Bug knockout: template error on changing from edit to preview mode for boolean required question in component

We have an incorrect template for question title that works incorrectly if there is a boolean required question in composite component. The related issue on our support desk.

survey-library Enhancement Refactor knockout dispose functions

Make sure to dispose knockout objects on dispose() function.

survey-library Bug Survey editingObj property doesn't work correctly with localizable strings

It requires for Creator V2. It doens't show correctly value for question.title, for example.

survey-creator Enhancement The `allowEdit` option blocks all question/panel adorners

We need to introduce a separate option, let's say allowShowEditor that will control the "Edit/Properties" button visibility

survey-creator Bug SurveyJS Creator get Maximum call stack size exceeded exception under certain circumstances

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

Bug, See the https://surveyjs.answerdesk.io/internal/ticket/details/T6625 thread for more details

What is the current behavior?

Uncaught RangeError: Unable to process binding "template: function(){return { name:templateData.name,data:templateData.data,afterRender:templateData.afterRender} }" Message: Unable to process binding "component: function () " Message: Maximum call stack size exceeded at Object.get (knockout.js:374) at a.o.l (knockout.js:414) at Function.yd (knockout.js:205) at Function.zd (knockout.js:204) at Function.ha (knockout.js:200) at Object.a.o.a.$ (knockout.js:190) at init (knockout.js:413) at knockout.js:336 at Object.G (knockout.js:146) at knockout.js:336

What is the expected behavior?

No exceptions

survey-analytics Enhancement Introduce the unregisterExtension method for TableExtensions

This will allow to remove table actions like language selector See the https://surveyjs.answerdesk.io/ticket/details/t6602/can-i-hide-the-language-selection-box-in-the-survey-analytics-data-table thread for more details

Version: v1.8.38, released at Tuesday, March 30, 2021, Total Issue Count: 10

Product
survey-library
Type
Enhancement
Description
Clear event handlers on disposing survey objects

On calling survey.dispose() or question.dispose() we should clear all event handlers for survey objects.

Product
survey-library
Type
Bug
Description
Navigation becomes unresponsive after required error is corrected

I am reporting a bug discovered in "survey-vue": "^1.8.31" and "surveyjs-widgets": "^1.8.31".

The current behavior is:

After the required error state throws (when a user tries to proceed without answering a required question) and is corrected with the user answering that question, the survey navigation only allows the user to move forward one page and then becomes unresponsive and shows that the survey is in error state.

The expected behavior is:

I expect the survey navigation to remain responsive when a required error was thrown and corrected and the next page is navigated to.

To reproduce:

  • navigate to a survey question with a required answer
  • instead of providing the required answer, click next, causing the required error to throw
  • now correctly answer the question
  • click next to proceed to the next question
  • provide a valid answer and try and proceed
  • the navigation has become unresponsive, the survey shows in error state and will not proceed or go back

This resolves 100% when I revert my version back to 1.8.0

Test code

      s.data = this.surveyResult.result;
      s.css = surveyClassOverrides;
      s.showNavigationButtons = false;
      // update sortable widget to rank items within result box instead of dragging from source box
      s.getAllQuestions().forEach((question) => {
        const q = question;
        if (q.getType() === 'sortablelist') {
          q.value = q.choices.map((c) => c.value);
          q.isRequired = false;
        }
      });
      // Set survey variables
      forEach(this.surveyVariables, (value, key) => {
        s.setVariable(key, value);
      });
      s.onPartialSend.add(this.sendDataToServer);
      s.onComplete.add(this.completeSurvey);

      // if this.survey.config?.goNextPageAutomatic is true we want to add a delay between the automatic transitions
      let doDelay = this.survey.config.goNextPageAutomatic;
      s.onCurrentPageChanging
        /* eslint-disable no-param-reassign */
        .add((sender, options) => {
          if (!doDelay) return;
          options.allowChanging = false;
          setTimeout(() => {
            doDelay = false;
            sender.currentPage = options.newCurrentPage;
            /* eslint-enable no-param-reassign */
            doDelay = true;
          }, 500);
        });
      // ensure that the survey will not automatically be completed when user answers final question
      // allowCompleteSurveyAutomatic cannot be set in the JSON without making it serializable.
      // See https://github.com/surveyjs/survey-library/issues/2638 for more info from SurveyJS
      s.allowCompleteSurveyAutomatic = false;
      this.surveyModel = s;
      this.isSurveyComplete = false;
      if (s.currentPageNo === 0) {
        this.$emit('has-navigated-to-first-question', true);
      } else {
        this.$emit('has-navigated-to-first-question', false);
      }
      s.onCurrentPageChanged.add(this.handleNavigation);

Specify your

  • browser: Chrome 89
  • surveyjs platform: Vue
  • surveyjs version: 1.8.31
Product
survey-library
Type
Bug
Description
key duplication errors does not come up in matrix/panel dynamic

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

bug

What is the current behavior?

when duplicated keys are present surveyJS correctly does not save the data and focus on the question with the error but the error is not shown

What is the expected behavior?

see duplicated key errors

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

https://plnkr.co/edit/uOUHnWVU8EalJWnl

Product
survey-library
Type
Bug
Description
survey-react - browser autofill doesn't work with react 17.x

We have an incorrect template for question title that works incorrectly if there is a boolean required question in composite component. The related issue on our support desk.

Product
survey-library
Type
Enhancement
Description
Refactor knockout dispose functions

Make sure to dispose knockout objects on dispose() function.

It requires for Creator V2. It doens't show correctly value for question.title, for example.

Product
survey-creator
Type
Enhancement
Description
The `allowEdit` option blocks all question/panel adorners

We need to introduce a separate option, let's say allowShowEditor that will control the "Edit/Properties" button visibility

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

Bug, See the https://surveyjs.answerdesk.io/internal/ticket/details/T6625 thread for more details

What is the current behavior?

Uncaught RangeError: Unable to process binding "template: function(){return { name:templateData.name,data:templateData.data,afterRender:templateData.afterRender} }" Message: Unable to process binding "component: function () " Message: Maximum call stack size exceeded at Object.get (knockout.js:374) at a.o.l (knockout.js:414) at Function.yd (knockout.js:205) at Function.zd (knockout.js:204) at Function.ha (knockout.js:200) at Object.a.o.a.$ (knockout.js:190) at init (knockout.js:413) at knockout.js:336 at Object.G (knockout.js:146) at knockout.js:336

What is the expected behavior?

No exceptions

Product
survey-analytics
Type
Enhancement
Description
Introduce the unregisterExtension method for TableExtensions

This will allow to remove table actions like language selector See the https://surveyjs.answerdesk.io/ticket/details/t6602/can-i-hide-the-language-selection-box-in-the-survey-analytics-data-table thread for more details

Version: v1.8.37, released at Tuesday, March 23, 2021, Total Issue Count: 21

Product Type Description
survey-library Bug survey.editingObj property doesn't work for editing matrix column object

Matrix column object is a wrapper for a question, matrix cellType equals to question type. We have to get/set value for this object differently, since matrix column doesn't contain properties values in its hash. They are stored in in template question object.

survey-library Bug changing matrix dropdown/dynamic cellType stops unpdate DOM on changing column properties

The following code doesn't work correctly:

matrix.columns[0].title = "Old Title"; 
matrix.cellType = "checkbox";
matrix.columns[0].title = "New Title"; //column title will render the "Old title"

We should update the html element and render "New Title" text.

survey-library Bug Changing matrix dropdown/dynamic choices doesn't change choices in columns

We do not update column's choices on changing matrix choices property when cell questions use the default choices from matrix and do not have their own choices.

The following code will not update cells questions choices property and as result UI.

matrix.choices.push(new Survey.ItemValue("newItem"));
matrix.choices[0].value = "newValue";
matrix.choices[1].text= "my text";

We should change the cells questions choices immediately.

survey-library Bug Restfull - Wrong spelling in public API names (classes, members, files, example contents)

In survey-library and service repos, there are public API entites (classes, members, files, examples) named with a wrong spelling of word "restfull" - the "restful" should be used instead.

For instance:

File name: choicesRestfull.ts https://github.com/surveyjs/survey-library/blob/master/src/choicesRestfull.ts

Class name: ChoicesRestfull https://github.com/surveyjs/survey-library/blob/master/src/choicesRestfull.ts#L48

Setting name: useCachingForChoicesRestfull https://github.com/surveyjs/survey-library/blob/master/src/settings.ts#L17

Example name: https://surveyjs.io/Examples/Library/?id=questiontype-dropdownrestfull

and etc.

It is worth providing correct names for public API entities, however such a correction should not break backward compatibility and introduce breaking changes. Some kind of 'obsoleteness' comes to mind.

survey-library Bug Composite component can clear question values on showing preview

If component use visibleIf in their questions and survey clearInvisibleValues property is to "onHiddenContainer" then on showing preview a question value becomes empty. It should be fixed.

survey-library Bug Dynamic properties doesn't work for editing values by using editingObj property

We need this functionality for SurveyJS Creator V2. Dynamic properties are not exists in a class definition and as result we do get values and do not set values. We need set values directly into object if property doesn't exists.

survey-library Enhancement Add inSurvey property into Base class

inSurvey boolean property will return true if the object is a part of the survey model or it is a survey object itself. It returns true, if this object is not inserted into survey model or it has been deleted from it, or a parent object has been deleted from it. For example if a page is removed from the survey, then all its questions and objects, like matrix columns, will start to return false on getting inSurvey property.

survey-library Bug Fix the misspelling restfull ->restful

Rename class ChoicesRestfull into ChoicesRestful keep ChoicesRestfull as a descendant for compatibility.

survey-library Bug We do not serialize into JSON localizable strings with white spaces only

The following code will produce incorrect result:

var question = new Question("q1");
question.title = " ";
var json = question.toJSON();

"json" variable will be equal to {name: "q1"}. The correct value {name: "q1", title: " "}.

survey-library Enhancement Trim strings on comparing question value and question correctValue

We do not trim value on comparing the question value and correctValue propertiy It makes sense to trim string value, before comparing them.

survey-library Bug Component question do not update it's content on changing survey locale

Single and composite components do not send notification on changing locale into contentQuestion and contentPanel as result if internal elements are localized, they do not renders their localizable strings with the correct locale.

Here is the code that doesn't work correctly:

  ComponentCollection.Instance.add({
    name: "newquestion",
    questionJSON: 
      {
        type: "dropdown",
        choices: [{ value: 1, text: { default: "item en", de: "item de" } }],
      },
  });

On changing survey locale property to "de", dropdown will continue to render the first item as "item en", instead of "item de".

survey-library Bug Expression parser doesn't parse correctly empty strings

When a user uses empty strings, the expression parser stops working. The following simple unit test is failed.

QUnit.test("parse iif with empty parameter", function(assert) {
  var expression = parse("iif(1, 'yes', '')");
  assert.ok(expression, "Expression parse correctly");
  expression = parse('iif(1, "yes", "")');
  assert.ok(expression, "Expression parse correctly, #2");
});
survey-library Bug [Vue warn]: Do not use built-in or reserved HTML elements as component id: Text/Image

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

Bug

What is the current behavior?

Receiving warnings when using the package. [Vue warn]: Do not use built-in or reserved HTML elements as component id: Text and [Vue warn]: Do not use built-in or reserved HTML elements as component id: Image are displayed with every refresh of the page.

What is the expected behavior?

No warnings are shown in the console when using surveyJs.

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

Run attached project and see error appears, even without any survey used.

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

My package.json in the clean project:

{
  "name": "surveyjs",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@vue/cli-service": "^4.5.12",
    "survey-vue": "^1.8.36",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "vue-template-compiler": "^2.6.11"
  }
}

Full project can be found attached.

Specify your

  • browser: Chrome
  • browser version: 89.0.4389.90
  • surveyjs platform (angular or react or jquery or knockout or vue): vue
  • surveyjs version: 1.8.36
survey-library Bug choices loaded from the web do not support survey.locale changing.

If choices loaded from web supports several languages, then on changing survey.locale, we do not change the rendering text for these choices accordingly. However, we should do it.

survey-library Enhancement Support localized choices loaded from the web out of the box

Currently, if an item from restful API comes in the following format:

{ 
   value: "item", 
    title: {
          en: "item in English", 
          de: "item in Deutch"
    }
}

We do not recognize title object as a valid object and do not set it to the choice item text property. It will be nice to support it.

survey-library Bug Invalid loops in matrix dynamic/dropdown events

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

Bug

What is the current behavior?

getQuestion functions have invalid for loop conditions. Causing issues where more than available columns are checked and causing errors. The condition in the following for loop is just the length of an array (self.columns.length), instead of something like i<self.columns.length.

What is the expected behavior?

For loops have a valid condition.

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

We noticed this when we created the following situation: See: https://plnkr.co/edit/PKywNO0UKjHPBVNF

  1. Create a matrixdynamic with a dropdown column, with hasOther.
  2. Add a onMatrixCellValueChanged handler, where you use options.getCellQuestion
  3. Select Other in dropdown
  4. Start typing description in comment field

This triggers a TypeError: self.columns[i] is undefined per typed character.

This because the column name doesn't exist but the for loops keeps running untill it into an error because it requests props from columns that don't exist.

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

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

Specify your

  • browser: Firefox / Chrome
  • browser version: Firefox: 86.0, Chrome: 89.0.4389.82
  • surveyjs platform (angular or react or jquery or knockout or vue):
  • surveyjs version: Above test is using 1.8.20, but the invalid for loops are currently on master.
survey-creator Enhancement Implement inplace editing for ranking question
survey-creator Enhancement Update expressions on copying panels/pages in creator

You can copy questions/panels/pages in Creator by using fast copy functionality or add an element into toolbar and then insert it into survey. These elements can contains expressions with links on questions inside them, for example:

    {
     "type": "panel",
     "name": "panel1",
     "elements": [
      {
       "type": "text",
       "name": "question1",
       "visibleIf": "{question2} = 'item1'"
      },
      {
       "type": "radiogroup",
       "name": "question2",
       "choices": [
        "item1",
        "item2",
        "item3"
       ]
      }
     ]
    }

The panel has two questions: question1 and question2. question1 refers to "question2" inside an expression. On copying this panel, if question1 and question2 already exists, these questions will have new names, for example question5 and question6. However expression will not be updated. We have to update it into " = 'item1':.

survey-creator Bug version 1.8.36 build issue

.d.ts file contains the following code:

createTemplateObject: (element: Survey.Base) => import("../objectProperty").SurveyObjectProperty;
survey-creator Bug Survey Creator enables inplace editing for rating in a matrix question
survey-creator Bug checkbox question maxSelectedChoices property is in "other" category

maxSelectedChoices property should be in "Choices" category.

Version: v1.8.37, released at Tuesday, March 23, 2021, Total Issue Count: 21

Matrix column object is a wrapper for a question, matrix cellType equals to question type. We have to get/set value for this object differently, since matrix column doesn't contain properties values in its hash. They are stored in in template question object.

The following code doesn't work correctly:

matrix.columns[0].title = "Old Title"; 
matrix.cellType = "checkbox";
matrix.columns[0].title = "New Title"; //column title will render the "Old title"

We should update the html element and render "New Title" text.

We do not update column's choices on changing matrix choices property when cell questions use the default choices from matrix and do not have their own choices.

The following code will not update cells questions choices property and as result UI.

matrix.choices.push(new Survey.ItemValue("newItem"));
matrix.choices[0].value = "newValue";
matrix.choices[1].text= "my text";

We should change the cells questions choices immediately.

In survey-library and service repos, there are public API entites (classes, members, files, examples) named with a wrong spelling of word "restfull" - the "restful" should be used instead.

For instance:

File name: choicesRestfull.ts https://github.com/surveyjs/survey-library/blob/master/src/choicesRestfull.ts

Class name: ChoicesRestfull https://github.com/surveyjs/survey-library/blob/master/src/choicesRestfull.ts#L48

Setting name: useCachingForChoicesRestfull https://github.com/surveyjs/survey-library/blob/master/src/settings.ts#L17

Example name: https://surveyjs.io/Examples/Library/?id=questiontype-dropdownrestfull

and etc.

It is worth providing correct names for public API entities, however such a correction should not break backward compatibility and introduce breaking changes. Some kind of 'obsoleteness' comes to mind.

Product
survey-library
Type
Bug
Description
Composite component can clear question values on showing preview

If component use visibleIf in their questions and survey clearInvisibleValues property is to "onHiddenContainer" then on showing preview a question value becomes empty. It should be fixed.

We need this functionality for SurveyJS Creator V2. Dynamic properties are not exists in a class definition and as result we do get values and do not set values. We need set values directly into object if property doesn't exists.

Product
survey-library
Type
Enhancement
Description
Add inSurvey property into Base class

inSurvey boolean property will return true if the object is a part of the survey model or it is a survey object itself. It returns true, if this object is not inserted into survey model or it has been deleted from it, or a parent object has been deleted from it. For example if a page is removed from the survey, then all its questions and objects, like matrix columns, will start to return false on getting inSurvey property.

Product
survey-library
Type
Bug
Description
Fix the misspelling restfull ->restful

Rename class ChoicesRestfull into ChoicesRestful keep ChoicesRestfull as a descendant for compatibility.

The following code will produce incorrect result:

var question = new Question("q1");
question.title = " ";
var json = question.toJSON();

"json" variable will be equal to {name: "q1"}. The correct value {name: "q1", title: " "}.

Product
survey-library
Type
Enhancement
Description
Trim strings on comparing question value and question correctValue

We do not trim value on comparing the question value and correctValue propertiy It makes sense to trim string value, before comparing them.

Single and composite components do not send notification on changing locale into contentQuestion and contentPanel as result if internal elements are localized, they do not renders their localizable strings with the correct locale.

Here is the code that doesn't work correctly:

  ComponentCollection.Instance.add({
    name: "newquestion",
    questionJSON: 
      {
        type: "dropdown",
        choices: [{ value: 1, text: { default: "item en", de: "item de" } }],
      },
  });

On changing survey locale property to "de", dropdown will continue to render the first item as "item en", instead of "item de".

Product
survey-library
Type
Bug
Description
Expression parser doesn't parse correctly empty strings

When a user uses empty strings, the expression parser stops working. The following simple unit test is failed.

QUnit.test("parse iif with empty parameter", function(assert) {
  var expression = parse("iif(1, 'yes', '')");
  assert.ok(expression, "Expression parse correctly");
  expression = parse('iif(1, "yes", "")');
  assert.ok(expression, "Expression parse correctly, #2");
});

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

Bug

What is the current behavior?

Receiving warnings when using the package. [Vue warn]: Do not use built-in or reserved HTML elements as component id: Text and [Vue warn]: Do not use built-in or reserved HTML elements as component id: Image are displayed with every refresh of the page.

What is the expected behavior?

No warnings are shown in the console when using surveyJs.

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

Run attached project and see error appears, even without any survey used.

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

My package.json in the clean project:

{
  "name": "surveyjs",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@vue/cli-service": "^4.5.12",
    "survey-vue": "^1.8.36",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "vue-template-compiler": "^2.6.11"
  }
}

Full project can be found attached.

Specify your

  • browser: Chrome
  • browser version: 89.0.4389.90
  • surveyjs platform (angular or react or jquery or knockout or vue): vue
  • surveyjs version: 1.8.36
Product
survey-library
Type
Bug
Description
choices loaded from the web do not support survey.locale changing.

If choices loaded from web supports several languages, then on changing survey.locale, we do not change the rendering text for these choices accordingly. However, we should do it.

Product
survey-library
Type
Enhancement
Description
Support localized choices loaded from the web out of the box

Currently, if an item from restful API comes in the following format:

{ 
   value: "item", 
    title: {
          en: "item in English", 
          de: "item in Deutch"
    }
}

We do not recognize title object as a valid object and do not set it to the choice item text property. It will be nice to support it.

Product
survey-library
Type
Bug
Description
Invalid loops in matrix dynamic/dropdown events

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

Bug

What is the current behavior?

getQuestion functions have invalid for loop conditions. Causing issues where more than available columns are checked and causing errors. The condition in the following for loop is just the length of an array (self.columns.length), instead of something like i<self.columns.length.

What is the expected behavior?

For loops have a valid condition.

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

We noticed this when we created the following situation: See: https://plnkr.co/edit/PKywNO0UKjHPBVNF

  1. Create a matrixdynamic with a dropdown column, with hasOther.
  2. Add a onMatrixCellValueChanged handler, where you use options.getCellQuestion
  3. Select Other in dropdown
  4. Start typing description in comment field

This triggers a TypeError: self.columns[i] is undefined per typed character.

This because the column name doesn't exist but the for loops keeps running untill it into an error because it requests props from columns that don't exist.

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

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

Specify your

  • browser: Firefox / Chrome
  • browser version: Firefox: 86.0, Chrome: 89.0.4389.82
  • surveyjs platform (angular or react or jquery or knockout or vue):
  • surveyjs version: Above test is using 1.8.20, but the invalid for loops are currently on master.
Product
survey-creator
Type
Enhancement
Description
Implement inplace editing for ranking question
Product
survey-creator
Type
Enhancement
Description
Update expressions on copying panels/pages in creator

You can copy questions/panels/pages in Creator by using fast copy functionality or add an element into toolbar and then insert it into survey. These elements can contains expressions with links on questions inside them, for example:

    {
     "type": "panel",
     "name": "panel1",
     "elements": [
      {
       "type": "text",
       "name": "question1",
       "visibleIf": "{question2} = 'item1'"
      },
      {
       "type": "radiogroup",
       "name": "question2",
       "choices": [
        "item1",
        "item2",
        "item3"
       ]
      }
     ]
    }

The panel has two questions: question1 and question2. question1 refers to "question2" inside an expression. On copying this panel, if question1 and question2 already exists, these questions will have new names, for example question5 and question6. However expression will not be updated. We have to update it into " = 'item1':.

Product
survey-creator
Type
Bug
Description
version 1.8.36 build issue

.d.ts file contains the following code:

createTemplateObject: (element: Survey.Base) => import("../objectProperty").SurveyObjectProperty;
Product
survey-creator
Type
Bug
Description
checkbox question maxSelectedChoices property is in "other" category

maxSelectedChoices property should be in "Choices" category.

Version: v1.8.36, released at Monday, March 15, 2021, Total Issue Count: 7

Product Type Description
survey-library Enhancement Single choice hasNone option

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

Feature

What is the current behavior?

Single choice question (dropdown / radio) doesn't have a none of the above option.

What is the expected behavior?

In market research questions are often mandatory but still want to have an escape option to prevent participants just clicking next. Such a none should work the same for single choice as it does for multiple choice; always be at the bottom and not randomized.

survey-library Enhancement Add diffDays function that you can use in expression

You can use this function as: "diffDays(, ) < 7", it will return true if question dateFrom and dateTo has date that differs less then in seven days.

survey-library Bug size property in text question doesn't work

Since the defualt css width for input in the text question is "100%", the size property is completely ignored. We have to remove the default value for size property from 25 to undefined (0) and set the input width to "auto" and size attribute to question size if it is more than 0.

survey-library Bug itemSize property doesn't work for multipleText question

This property simply doesn't used in text item. Plus we need to introduce "size" property into text item to allow setting different size for different text items.

survey-creator Bug Add valueTrue/valueFalse and labelTrue/labelFalse for boolean column in property grid

Use could not set valueTrue, valueFalse, labelTrue and labelFalse properties for boolean column in property grid.

survey-creator Enhancement Add parentObj and parentProperty into onGetPropertyReadOnly event.

We need this properties in options to find out the master object and property if we want to make readOnly a nested property. For example the next code will make "value" column for editing "rows" property in matrix dropdown question read-only:

    creator.onGetPropertyReadOnly.add(function (editor, options) {
      if (!options.parentObj || !options.parentProperty) return;
      options.readOnly =
        options.propertyName === "value" &&
        options.parentObj.getType() === "matrixdropdown" &&
        options.parentProperty.name == "rows";
    });
survey-analytics Bug Empty ranking result breaks the analytics

Version: v1.8.36, released at Monday, March 15, 2021, Total Issue Count: 7

Product
survey-library
Type
Enhancement
Description
Single choice hasNone option

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

Feature

What is the current behavior?

Single choice question (dropdown / radio) doesn't have a none of the above option.

What is the expected behavior?

In market research questions are often mandatory but still want to have an escape option to prevent participants just clicking next. Such a none should work the same for single choice as it does for multiple choice; always be at the bottom and not randomized.

Product
survey-library
Type
Enhancement
Description
Add diffDays function that you can use in expression

You can use this function as: "diffDays(, ) < 7", it will return true if question dateFrom and dateTo has date that differs less then in seven days.

Product
survey-library
Type
Bug
Description
size property in text question doesn't work

Since the defualt css width for input in the text question is "100%", the size property is completely ignored. We have to remove the default value for size property from 25 to undefined (0) and set the input width to "auto" and size attribute to question size if it is more than 0.

Product
survey-library
Type
Bug
Description
itemSize property doesn't work for multipleText question

This property simply doesn't used in text item. Plus we need to introduce "size" property into text item to allow setting different size for different text items.

Use could not set valueTrue, valueFalse, labelTrue and labelFalse properties for boolean column in property grid.

Product
survey-creator
Type
Enhancement
Description
Add parentObj and parentProperty into onGetPropertyReadOnly event.

We need this properties in options to find out the master object and property if we want to make readOnly a nested property. For example the next code will make "value" column for editing "rows" property in matrix dropdown question read-only:

    creator.onGetPropertyReadOnly.add(function (editor, options) {
      if (!options.parentObj || !options.parentProperty) return;
      options.readOnly =
        options.propertyName === "value" &&
        options.parentObj.getType() === "matrixdropdown" &&
        options.parentProperty.name == "rows";
    });
Product
survey-analytics
Type
Bug
Description
Empty ranking result breaks the analytics

Version: v1.8.35, released at Friday, March 12, 2021, Total Issue Count: 6

Product Type Description
survey-library Bug Error on build with VueJS: Individual declarations in merged declaration 'ActionBarItem' must be all exported or all local.

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

Bug

What is the current behavior?

Using VueJS 2.6.12 with yarn serve or yarn build leads to an error (see screenshot). Screenshot from 2021-03-05 14-31-04

It seems as if ActionBarItem is declared twice in the build node_modules/survey-vue/survey.vue.d.ts

What is the expected behavior?

Compile without errors.

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

Starting from v1.8.29 until present v1.8.34 using VueJS 2.6.12 with yarn serve or yarn build.

Specify your

survey-library Bug react: Dropdown question may not set value correctly in panel dynamic if survey.StoreOtherAsComment is false

The original issue was created on SurveyJS support desk. The following code doesn't work in react:

var json =  {
  storeOthersAsComment: false,
   elements: [
    {
     type: "paneldynamic",
     name: "panel1",
     templateElements: [
      {
       type: "dropdown",
       name: "question1",
       choices: [ "item1", "item2", "item3"],
       hasOther: true
    },
   ]
  }
]
};
var survey = new Survey.Model(json);
survey.data = {"panel1":[{"question1":"ABCD"}]};

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

ReactDOM.render(
  <Survey.Survey model={survey} />,
  document.getElementById("surveyElement")
);
survey-library Enhancement Improve responsive matrix rendering
survey-creator Bug Custom property editors doesn't work in Logic tab

The original issue was created in SurveyJS support desk. Custom widget doesn't work in logic tab. Instead of CK Editor, like in this example, the standard text area is rendred in logic tab.

survey-creator Bug Add "Rate Values" category for rating column cell type

We missed "Minimum rate", "Maximum rate" and "Rate step" properties in property grid for column with cell type equals to "rating".

survey-analytics Enhancement Support Ranking question type

Ranking question type support for the Survey Analytics.

Version: v1.8.35, released at Friday, March 12, 2021, Total Issue Count: 6

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

Bug

What is the current behavior?

Using VueJS 2.6.12 with yarn serve or yarn build leads to an error (see screenshot). Screenshot from 2021-03-05 14-31-04

It seems as if ActionBarItem is declared twice in the build node_modules/survey-vue/survey.vue.d.ts

What is the expected behavior?

Compile without errors.

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

Starting from v1.8.29 until present v1.8.34 using VueJS 2.6.12 with yarn serve or yarn build.

Specify your

The original issue was created on SurveyJS support desk. The following code doesn't work in react:

var json =  {
  storeOthersAsComment: false,
   elements: [
    {
     type: "paneldynamic",
     name: "panel1",
     templateElements: [
      {
       type: "dropdown",
       name: "question1",
       choices: [ "item1", "item2", "item3"],
       hasOther: true
    },
   ]
  }
]
};
var survey = new Survey.Model(json);
survey.data = {"panel1":[{"question1":"ABCD"}]};

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

ReactDOM.render(
  <Survey.Survey model={survey} />,
  document.getElementById("surveyElement")
);
Product
survey-library
Type
Enhancement
Description
Improve responsive matrix rendering
Product
survey-creator
Type
Bug
Description
Custom property editors doesn't work in Logic tab

The original issue was created in SurveyJS support desk. Custom widget doesn't work in logic tab. Instead of CK Editor, like in this example, the standard text area is rendred in logic tab.

Product
survey-creator
Type
Bug
Description
Add "Rate Values" category for rating column cell type

We missed "Minimum rate", "Maximum rate" and "Rate step" properties in property grid for column with cell type equals to "rating".

Product
survey-analytics
Type
Enhancement
Description
Support Ranking question type

Ranking question type support for the Survey Analytics.

Version: v1.8.34, released at Monday, March 8, 2021, Total Issue Count: 4

Product Type Description
survey-library Bug Simple custom component doesn't work in matrixdynamic

A simple custom dropdown component (like country) in matrixdynamic produces no value:

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

survey-library Bug Adaptive matrix dropdown rendered incorrectly when the showInMultipleColumns==true
survey-creator Bug Move page requiredIf property into "Logic" section

requiredIf in the other section for the page object. It should be located in "Logic" section.

survey-creator Bug Fast Entry still works slow for longer lists of items

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

Reporting a bug.

What is the current behavior?

When using the fast entry feature of certain widgets in the survey editor, pasting a long list of items into the Fast Entry box causes the page to become very slow and unresponsive. Clicking on elements in the editor is delayed while the text from the clipboard is being processed, though these clicks are applied once the loading is done. This can be seen towards the end of the repro video (from 01:07). List of items example: https://pastebin.com/raw/Hy9nuyP4

Video of bug in action:

https://user-images.githubusercontent.com/51411356/109994915-1200f980-7d0e-11eb-8da5-594b3840028f.mp4

What is the expected behavior?

Page and survey editor should not slow down to this extent when pasting longer text from clipboard.

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

  1. Create a dropdown question in the survey editor.
  2. Go to choices, paste above list of items into Fast Entry field.
  3. Observe editor and page slowing down drastically.

Specify your

  • Browser: Firefox, Chrome
  • Editor version: 1.8.23

Other

I am aware this bug was found and supposedly fixed in another issue (https://github.com/surveyjs/survey-creator/issues/903), though it still seems to persist. This was tested on multiple different machines so it's unlikely to be hardware related.

Version: v1.8.34, released at Monday, March 8, 2021, Total Issue Count: 4

Product
survey-library
Type
Bug
Description
Simple custom component doesn't work in matrixdynamic

A simple custom dropdown component (like country) in matrixdynamic produces no value:

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

Product
survey-creator
Type
Bug
Description
Move page requiredIf property into "Logic" section

requiredIf in the other section for the page object. It should be located in "Logic" section.

Product
survey-creator
Type
Bug
Description
Fast Entry still works slow for longer lists of items

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

Reporting a bug.

What is the current behavior?

When using the fast entry feature of certain widgets in the survey editor, pasting a long list of items into the Fast Entry box causes the page to become very slow and unresponsive. Clicking on elements in the editor is delayed while the text from the clipboard is being processed, though these clicks are applied once the loading is done. This can be seen towards the end of the repro video (from 01:07). List of items example: https://pastebin.com/raw/Hy9nuyP4

Video of bug in action:

https://user-images.githubusercontent.com/51411356/109994915-1200f980-7d0e-11eb-8da5-594b3840028f.mp4

What is the expected behavior?

Page and survey editor should not slow down to this extent when pasting longer text from clipboard.

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

  1. Create a dropdown question in the survey editor.
  2. Go to choices, paste above list of items into Fast Entry field.
  3. Observe editor and page slowing down drastically.

Specify your

  • Browser: Firefox, Chrome
  • Editor version: 1.8.23

Other

I am aware this bug was found and supposedly fixed in another issue (https://github.com/surveyjs/survey-creator/issues/903), though it still seems to persist. This was tested on multiple different machines so it's unlikely to be hardware related.

Version: v1.8.33, released at Wednesday, March 3, 2021, Total Issue Count: 7

Product Type Description
survey-library Bug visibleIf doesn't work in composite component on calling showPreview()/cancelPreview()

The original bug was posted into SurveyJS support desk. Here is the simple composite component:

  ComponentCollection.Instance.add({
    name: "fullname",
    title: "Full Name",
    elementsJSON: [
      {
        type: "text",
        name: "firstName",
        isRequired: true,
      },
      {
        type: "text",
        name: "lastName",
        visibleIf: "{composite.firstName} notempty",
        isRequired: true,
      },
    ],
  });

visibleIf property doesn't work on calling survey.showPreview(); function.

survey-library Bug Vue: on changing Survey Model can cause to issues in navigation

The following code will cause issues with navigation

      var app = new Vue({
        el: "#surveyElement",
        data() {
          return {
            //create empty survey by default
            survey: new Survey.Model(),
          };
        },
        created() {
          //this has glitchy "Previous", "Next" and  "Complete" buttons
          //if survey model assign into vue class props after onMounted 
          this.loadSurvey();
        },
        methods: {
          },
          loadSurvey() {
            setTimeout(() => {
              this.survey = new Survey.Model(
                  '{"pages": [{"name": "page1","elements": [{"type": "radiogroup","name": "question1","choices": ["item1","item2"]}]},{"name": "page2","elements": [{"type": "radiogroup","name": "question2","choices": ["item1","item2"]}]}]}'
                );
            }, 1000);
          },
        },
      });

survey-library Bug displayValue property doesn't work correctly for components (single and composite)

We do not implmenet displayValue functionality for components. For example a simple component below on setting it's value to [1, 3] will return displayValue as "1, 3" instead of "text 1, text 3"

Survey.ComponentCollection.Instance.add({
    name: "newquestion",
    questionJSON: {
      type: "checkbox",
      choices: [
        { value: 1, text: "text 1" },
        { value: 2, text: "text 2" },
        { value: 3, text: "text 3" },
      ],
    },
  });
survey-library Bug hideRequiredErrors not working as expected

Reporting a bug

hideRequiredErrors property does not work as expected.

What is the current behavior?

In my survey model, I set survey.hideRequiredErrors = true;, but error messages still appear on the page. The values in the AnswerRequiredError class look like this:

{text: "My custom error message text", errorOwner: QuestionDropdownModel, visible: false, locTextValue: LocalizableString}

Notice that visible: false is correctly set in the error class, but the error message is still visible on the web page. I am using the default "checkErrorsMode", which is "onNextPage".

What is the expected behavior?

By setting survey.hideRequiredErrors = true;, I expect that the error messages will not appear on the page. Validation events should still fire.

survey-library Bug Ranking questions draggable when survey mode is "display"

Ranking questions can still be dragged when survey mode is set to "display". This seems strange user experience.

survey-library Bug Missing fieldset for rating question rendering
survey-creator Bug Changing SurveyCreator.settings.operators can do not change the UI behavior

We moved logical operators definition from SurveyCreator.SurveyPropertyEditorFactory.operators into SurveyCreator.settings.operators, but keep SurveyCreator.SurveyPropertyEditorFactory.operators for compatibility. However, we should make it property get/set instead of property field assigned from settings on starting, since it could be initialized before a developer change SurveyCreator.SurveyPropertyEditorFactory.operators variable.

Version: v1.8.33, released at Wednesday, March 3, 2021, Total Issue Count: 7

The original bug was posted into SurveyJS support desk. Here is the simple composite component:

  ComponentCollection.Instance.add({
    name: "fullname",
    title: "Full Name",
    elementsJSON: [
      {
        type: "text",
        name: "firstName",
        isRequired: true,
      },
      {
        type: "text",
        name: "lastName",
        visibleIf: "{composite.firstName} notempty",
        isRequired: true,
      },
    ],
  });

visibleIf property doesn't work on calling survey.showPreview(); function.

Product
survey-library
Type
Bug
Description
Vue: on changing Survey Model can cause to issues in navigation

The following code will cause issues with navigation

      var app = new Vue({
        el: "#surveyElement",
        data() {
          return {
            //create empty survey by default
            survey: new Survey.Model(),
          };
        },
        created() {
          //this has glitchy "Previous", "Next" and  "Complete" buttons
          //if survey model assign into vue class props after onMounted 
          this.loadSurvey();
        },
        methods: {
          },
          loadSurvey() {
            setTimeout(() => {
              this.survey = new Survey.Model(
                  '{"pages": [{"name": "page1","elements": [{"type": "radiogroup","name": "question1","choices": ["item1","item2"]}]},{"name": "page2","elements": [{"type": "radiogroup","name": "question2","choices": ["item1","item2"]}]}]}'
                );
            }, 1000);
          },
        },
      });

We do not implmenet displayValue functionality for components. For example a simple component below on setting it's value to [1, 3] will return displayValue as "1, 3" instead of "text 1, text 3"

Survey.ComponentCollection.Instance.add({
    name: "newquestion",
    questionJSON: {
      type: "checkbox",
      choices: [
        { value: 1, text: "text 1" },
        { value: 2, text: "text 2" },
        { value: 3, text: "text 3" },
      ],
    },
  });
Product
survey-library
Type
Bug
Description
hideRequiredErrors not working as expected

Reporting a bug

hideRequiredErrors property does not work as expected.

What is the current behavior?

In my survey model, I set survey.hideRequiredErrors = true;, but error messages still appear on the page. The values in the AnswerRequiredError class look like this:

{text: "My custom error message text", errorOwner: QuestionDropdownModel, visible: false, locTextValue: LocalizableString}

Notice that visible: false is correctly set in the error class, but the error message is still visible on the web page. I am using the default "checkErrorsMode", which is "onNextPage".

What is the expected behavior?

By setting survey.hideRequiredErrors = true;, I expect that the error messages will not appear on the page. Validation events should still fire.

Product
survey-library
Type
Bug
Description
Ranking questions draggable when survey mode is "display"

Ranking questions can still be dragged when survey mode is set to "display". This seems strange user experience.

Product
survey-library
Type
Bug
Description
Missing fieldset for rating question rendering

We moved logical operators definition from SurveyCreator.SurveyPropertyEditorFactory.operators into SurveyCreator.settings.operators, but keep SurveyCreator.SurveyPropertyEditorFactory.operators for compatibility. However, we should make it property get/set instead of property field assigned from settings on starting, since it could be initialized before a developer change SurveyCreator.SurveyPropertyEditorFactory.operators variable.

Version: v1.8.32, released at Wednesday, February 24, 2021, Total Issue Count: 6

Product Type Description
survey-library Bug Wrong PT and PT-BR Translation
survey-library Enhancement Execute minValueExpression/maxValueExpression expressions in text question on running survey

Right now, we are executing "minValueExpression"/"maxValueExpression" on survey loading only. We will need to execute them when corresponded question value is changed, to make the following JSON working.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "startDate",
     "inputType": "date"
    },
    {
     "type": "text",
     "name": "endDate",
     "inputType": "date",
     "minValueExpression": "{startDate}"
    }
   ]
  }
 ]
}
survey-library Bug VueJS large survey performance issue
survey-creator Bug The creator.onElementAllowOperations event doesn't fire for pages
survey-creator Enhancement Incompatible typings in survey-creator and survey-library
survey-creator Enhancement Allow to limit the number of columns in matrix dynamic / matrix dropdown

Add an option: maximumColumnsCount. If it is more than 0 then creator will not allow to create more columns than this number. "Add Column" button becomes invisible when the number of columns becomes equal to this value.

Version: v1.8.32, released at Wednesday, February 24, 2021, Total Issue Count: 6

Product
survey-library
Type
Bug
Description
Wrong PT and PT-BR Translation

Right now, we are executing "minValueExpression"/"maxValueExpression" on survey loading only. We will need to execute them when corresponded question value is changed, to make the following JSON working.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "startDate",
     "inputType": "date"
    },
    {
     "type": "text",
     "name": "endDate",
     "inputType": "date",
     "minValueExpression": "{startDate}"
    }
   ]
  }
 ]
}
Product
survey-library
Type
Bug
Description
VueJS large survey performance issue
Product
survey-creator
Type
Bug
Description
The creator.onElementAllowOperations event doesn't fire for pages
Product
survey-creator
Type
Enhancement
Description
Incompatible typings in survey-creator and survey-library
Product
survey-creator
Type
Enhancement
Description
Allow to limit the number of columns in matrix dynamic / matrix dropdown

Add an option: maximumColumnsCount. If it is more than 0 then creator will not allow to create more columns than this number. "Add Column" button becomes invisible when the number of columns becomes equal to this value.

Version: v1.8.31, released at Wednesday, February 17, 2021, Total Issue Count: 2

Product Type Description
survey-library Enhancement Show placeHolder property in text question for several inputType

Right now we make property placeHolder visible when inputType property equals to "text". However, place holder can be show for input types: email, number, password, tel,url as well. We should update the property visibility accordingly.

custom-widgets Enhancement Support maxSelectedChoices property in tagbox

We have maxSelectedChoices property in checkbox. We do not currently support it in tagbox. However, select2 has maximumSelectionLength attribute in settings. We can just set the select2 attribute question.maxSelectedChoices value.

Version: v1.8.31, released at Wednesday, February 17, 2021, Total Issue Count: 2

Product
survey-library
Type
Enhancement
Description
Show placeHolder property in text question for several inputType

Right now we make property placeHolder visible when inputType property equals to "text". However, place holder can be show for input types: email, number, password, tel,url as well. We should update the property visibility accordingly.

Product
custom-widgets
Type
Enhancement
Description
Support maxSelectedChoices property in tagbox

We have maxSelectedChoices property in checkbox. We do not currently support it in tagbox. However, select2 has maximumSelectionLength attribute in settings. We can just set the select2 attribute question.maxSelectedChoices value.

Version: v1.8.30, released at Saturday, February 13, 2021, Total Issue Count: 11

Product Type Description
survey-library Enhancement Add base.getSurvey() function

Add 'getSurvey()' function that will return survey model for all base classes, like triggers, validators, itemvalues and others.

survey-library Bug Ranking Question doesn't work properly with carry forward

The example: https://surveyjs.io/Examples/Library?id=survey-carry-forward&platform=jQuery&theme=modern

steps to reproduce:

  • choose two items;
  • rank them
  • add a new one and see the "indeterminate" state of the new number (dash symbol)

also after the rank action new items can be added in the middle of the list and it break the ranking value

survey-library Enhancement Add isUnique property into column for matrix dynamic/dropdown

We have keyName property for matrix dynamic question. If there is a duplicated value in a column with name equals to 'keyName' then error is shown. Sometimes, there are requirements to check for duplicated values for more then in one column and in matrix dropdown question as well. By setting column.isUnique you tell survey to show errors for duplicated values in this column.

survey-library Bug property min in text question doesn't work if it equals to 0

Survey ignores property min if it equals to 0 and allows to enter negative values.

survey-library Bug Carry forward doesn't work properly with the predefined survey.data
survey-library Bug (bootstrap theme) Single Questions or Panel in a row -- Flex property still applied to element.style

Looks like this is still happening to a single Question on a row.
Found closed Issue #2559

image

Should also apply to a single Panel on row as well.

Tested page URL: https://plnkr.co/edit/7xNd7W1vNeuvg80s

Specify your

  • browser: Chrome / Edge
  • browser version: recent
  • surveyjs platform: Knockout / Bootstrap 3.3.7
  • surveyjs version: 1.8.26 and tested latest with Plunker
survey-library Bug survey.editingObj doesn't work correctly with custom properties

If a custom property has onGetValue function, then it is not called in most cases when we use survey.editingObj.

This functionality is required for SurveyJS Creator v2.

survey-library Bug Setting matrix column readOnly property generates a console error

The following code will generate console error:

matrixQuestion.columns[0].readOnly = true;

However, the application will continue to work correctly.

survey-creator Bug Get a "non unique name" error on editing pages in Survey Settings Modal window

If Modal Window is used on editing survey elements, then on editing pages in Modal Window for "Survey Settings" an error: "Please enter a unique name" is shown even for pages name that are unique.

survey-pdf Enhancement Compatibility with jspdf v2.0.0
survey-analytics Enhancement Introduce the `stripHtmlFromTitles` option

This option will allow to strip html tags from question titles

See the https://surveyjs.answerdesk.io/ticket/details/t6246/survey-analytics-question-title-showing-html-tags thread for more details

This option is set to true by default

Version: v1.8.30, released at Saturday, February 13, 2021, Total Issue Count: 11

Product
survey-library
Type
Enhancement
Description
Add base.getSurvey() function

Add 'getSurvey()' function that will return survey model for all base classes, like triggers, validators, itemvalues and others.

Product
survey-library
Type
Bug
Description
Ranking Question doesn't work properly with carry forward

The example: https://surveyjs.io/Examples/Library?id=survey-carry-forward&platform=jQuery&theme=modern

steps to reproduce:

  • choose two items;
  • rank them
  • add a new one and see the "indeterminate" state of the new number (dash symbol)

also after the rank action new items can be added in the middle of the list and it break the ranking value

Product
survey-library
Type
Enhancement
Description
Add isUnique property into column for matrix dynamic/dropdown

We have keyName property for matrix dynamic question. If there is a duplicated value in a column with name equals to 'keyName' then error is shown. Sometimes, there are requirements to check for duplicated values for more then in one column and in matrix dropdown question as well. By setting column.isUnique you tell survey to show errors for duplicated values in this column.

Product
survey-library
Type
Bug
Description
property min in text question doesn't work if it equals to 0

Survey ignores property min if it equals to 0 and allows to enter negative values.

Product
survey-library
Type
Bug
Description
Carry forward doesn't work properly with the predefined survey.data

Looks like this is still happening to a single Question on a row.
Found closed Issue #2559

image

Should also apply to a single Panel on row as well.

Tested page URL: https://plnkr.co/edit/7xNd7W1vNeuvg80s

Specify your

  • browser: Chrome / Edge
  • browser version: recent
  • surveyjs platform: Knockout / Bootstrap 3.3.7
  • surveyjs version: 1.8.26 and tested latest with Plunker
Product
survey-library
Type
Bug
Description
survey.editingObj doesn't work correctly with custom properties

If a custom property has onGetValue function, then it is not called in most cases when we use survey.editingObj.

This functionality is required for SurveyJS Creator v2.

Product
survey-library
Type
Bug
Description
Setting matrix column readOnly property generates a console error

The following code will generate console error:

matrixQuestion.columns[0].readOnly = true;

However, the application will continue to work correctly.

If Modal Window is used on editing survey elements, then on editing pages in Modal Window for "Survey Settings" an error: "Please enter a unique name" is shown even for pages name that are unique.

Product
survey-pdf
Type
Enhancement
Description
Compatibility with jspdf v2.0.0
Product
survey-analytics
Type
Enhancement
Description
Introduce the `stripHtmlFromTitles` option

This option will allow to strip html tags from question titles

See the https://surveyjs.answerdesk.io/ticket/details/t6246/survey-analytics-question-title-showing-html-tags thread for more details

This option is set to true by default

Version: v1.8.29, released at Thursday, February 4, 2021, Total Issue Count: 8

Product Type Description
survey-library Bug Angular package (survey-angular) should not have a dependency on knockout

Regarding Issue: Angular package (survey-angular) has dependency on knockout? ko not defined (https://github.com/surveyjs/surveyjs_angular_cli/issues/33)

It looks like this issue is occurring again in the latest release... Survey JavaScript library v1.8.26. It is requiring knockout. Is there a fix for this on the way?

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

What is the current behavior? Expects to import Knockout

What is the expected behavior? Does not need

How would you reproduce the current behavior (if this is a bug)? Added latest survey-angular and try to start the serve

survey-library Enhancement Make value property in itemvalue type required

We need it for SurveyJS Creator V2

survey-library Enhancement Ranking Question Improvements
  • add ranking class to api doc for the surveyjs.io
  • implement "indeterminate" ui state for better ux
  • make whole ranking item draggable not only drag icon for better usability
  • fix icon accidental disappearance for the mobile devices if you have any problem we will help you
survey-library Bug matrix dynamic onGetValueForNewRowCallBack callback doesn't work if editing array is empty

If editing array is empty then matrixdynamic.onGetValueForNewRowCallBack callback function doesn't work. In fact, it is not fired at all. It should be fired in any case.

survey-library Bug detailPanel in matrix dynamic doesn't work correctly with editing object if there is same name in the colum

If a question in detailPanel has the same name as a column name, then only row cell is updated on changing the editing object property.

survey-library Enhancement Introduce ILocalizableString inteface

This inteface will be used by LocalizabeString and LocalizabeStrings (the array of localizable strings).

export interface ILocalizableString {
  getLocaleText(loc: string): string;
  setLocaleText(loc: string, newValue: string): any;
  getLocales(): Array<string>;
}
survey-creator Enhancement Add expandAll() and collapseAll() functions to translation object

Use the following code to expand all items in translation tab:

creator.translation.expandAll();
survey-analytics Bug Scatter chart axis X labels are cut

Version: v1.8.29, released at Thursday, February 4, 2021, Total Issue Count: 8

Regarding Issue: Angular package (survey-angular) has dependency on knockout? ko not defined (https://github.com/surveyjs/surveyjs_angular_cli/issues/33)

It looks like this issue is occurring again in the latest release... Survey JavaScript library v1.8.26. It is requiring knockout. Is there a fix for this on the way?

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

What is the current behavior? Expects to import Knockout

What is the expected behavior? Does not need

How would you reproduce the current behavior (if this is a bug)? Added latest survey-angular and try to start the serve

Product
survey-library
Type
Enhancement
Description
Make value property in itemvalue type required

We need it for SurveyJS Creator V2

Product
survey-library
Type
Enhancement
Description
Ranking Question Improvements
  • add ranking class to api doc for the surveyjs.io
  • implement "indeterminate" ui state for better ux
  • make whole ranking item draggable not only drag icon for better usability
  • fix icon accidental disappearance for the mobile devices if you have any problem we will help you

If editing array is empty then matrixdynamic.onGetValueForNewRowCallBack callback function doesn't work. In fact, it is not fired at all. It should be fired in any case.

If a question in detailPanel has the same name as a column name, then only row cell is updated on changing the editing object property.

Product
survey-library
Type
Enhancement
Description
Introduce ILocalizableString inteface

This inteface will be used by LocalizabeString and LocalizabeStrings (the array of localizable strings).

export interface ILocalizableString {
  getLocaleText(loc: string): string;
  setLocaleText(loc: string, newValue: string): any;
  getLocales(): Array<string>;
}
Product
survey-creator
Type
Enhancement
Description
Add expandAll() and collapseAll() functions to translation object

Use the following code to expand all items in translation tab:

creator.translation.expandAll();
Product
survey-analytics
Type
Bug
Description
Scatter chart axis X labels are cut

Version: v1.8.28, released at Friday, January 29, 2021, Total Issue Count: 1

Product Type Description
survey-creator Bug Unable to switch pages in Test Survey

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

In the current version it does not work to change pages in test survey tab

Specify your

  • browser:
    • Safari macOS Big Sur
    • Chrome 88 Windows 10
  • editor version:
    • 1.8.27

Version: v1.8.28, released at Friday, January 29, 2021, Total Issue Count: 1

Product
survey-creator
Type
Bug
Description
Unable to switch pages in Test Survey

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

In the current version it does not work to change pages in test survey tab

Specify your

  • browser:
    • Safari macOS Big Sur
    • Chrome 88 Windows 10
  • editor version:
    • 1.8.27

Version: v1.8.27, released at Thursday, January 28, 2021, Total Issue Count: 13

Product Type Description
survey-library Enhancement Ranking Question

A question for drag and drop ranking. Allows respondents to rank items against each other by placing them in order of preference. Is appropriate for short lists (e.g. 5-7 items). Is optimized for use with keyboard (Tab, Shift-Tab, and Up/Down arrow keys) and under mobile devices.

const json = {
  "questions": [
    {
      "type": "ranking",
      "name": "smartphone-features",
      "title": "Please rank the following smartphone features in order of importance:",
      "isRequired": true,
      "choices": [
        "Battery life",
        "Screen size",
        "Storage space",
        "Camera quality",
        "Durability",
        "Processor power",
        "Price"
      ]
    }
  ]
};

new Survey.Model(json);

here the example: https://surveyjs.io/Examples/Library?id=questiontype-ranking

survey-library Enhancement Add hideColumnsIfEmpty property into matrix dynamic question

It will be a better UI if we display a custom text and a link/button for adding a new row instead of columns and empty rows when there is no rows in matrix dynamic. hideColumnsIfEmpty: boolean, false by default.

survey-library Bug question.valueToDataCallback doesn't work correct if survey.checkErrorsMode is "onValueChanging"

When survey has checkErrorsMode equals to "onValueChanging", then we check question value with question value stored in survey, when we have to use question value after processing question.valueToDataCallback function.

survey-library Bug Allows to enter empty value into required question when survey.checkErrorsMode equals 'onValueChanging'

After setting survey.checkErrorsMode to 'onValueChanging', survey doesn't allow to set into survey.data incorrect data. However, question.isRequried property is totally ignored.

survey-library Enhancement Do not allow to set text question values into survey.data if they are less than min and greater than max properties

Right now users set min/max properties to text question and expect that end-user could not enter values that are less than min value and greater than max value. We should not allow to set this values into survey.data and show errors on "next page" and "complete survey" actions if the value is incorrect. The additional properties that can be used to show the errors are: minErrorText and maxErrorText.

survey-library Enhancement Add minDate and maxDate into global settings as default values for min/max properties for date inputs

By setting the following code:

Survey.settings.minDate = "1900-01-01"
Survey.settings.maxDate = "2099-12-31"

You do not allow end-users to set value into text question with inputType equals to "date" the value that less that January 1, 1900 and greater than December 31, 2099. It works in the same way if all these questions you would set the min and max properties

survey-creator Bug Translation tab: group property name is not localized

Group property name is displayed in english, even if Creator default language is different from "en".

survey-creator Bug SurveyCreator: koShowPagesToolbox is not a function
survey-creator Bug showDesignTab: false not working

What is the current behavior?

showDesignTab: false not displaying form

What is the expected behavior?

We just want to display test survey form. To do this I set all the other options false except showTestSurveyTab. Then it shows me the form is not available. It was working on the previous version. 1.7.4 We are migrating to latest version and encountered this problem.

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

Test code

  const surveyOptions = {
    showJSONEditorTab: false,
    showLogicTab: false,
    showTestSurveyTab: true,
    showDesignerTab: false,
    readOnly: true,
  };

  const surveyLogicViewer = new SurveyJSCreator.SurveyCreator(
    'formLogicViewerContainer',
    surveyOptions
  );

survey-creator Bug onElementNameChanged event is not fired on editing element in modal window

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

Bug

What is the current behavior?

Error when we are triggering the following events onElementNameChanged onPropertyAfterRender when the showPropertyGrid is false idk what others events are not working

What is the expected behavior?

Trigger events normally

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

https://plnkr.co/edit/2FustyniUAd9NsZO

Specify your

  • browser:
  • editor version: last
survey-creator Bug Sort locales by display text instead of locale value

Right now locales are sorted by locale values and not by display text. It is incorrect.

survey-creator Bug Creator fails after setting survey locale in private mode

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

Reporting a bug.

What is the current behavior?

After I change to a non-default locale in survey settings, I cannot edit my survey anymore:

  • Properties panel turns empty,
  • questions disappear when I add/move them,
  • survey not being saved,
  • JS errors appear in Console on every operation (question select/add/move).

(Detailed below at reproducing steps.)

What is the expected behavior?

I expect to be able to edit my survey regardless of survey locale settings.

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

  1. Open https://surveyjs.io/create-survey in Chrome incognito mode.
  2. Add a Single Input question to the survey.
  3. Click on Survey Settings.
  4. Modify the locale from "Default (English)" to anything else. (I wanted to use "magyar" (Hungarian), but tried others too for this report.)
  5. Click on your previously added Single Input -> Properties panel is now empty. Error 1 appears in Console.
  6. Add another Single Input -> It disappears. Error 2 appears in Console.

Error 1:

Uncaught TypeError: Cannot read property 'join' of undefined
    at LocalizableStrings.get [as text] (localizablestring.ts:259)
    at JsonObjectProperty.getPropertyValue (jsonobject.ts:240)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.getValue (propertyEditorBase.ts:440)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.updateValue (propertyEditorBase.ts:426)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.setObjectCore (propertyEditorBase.ts:262)
    at SurveyPropertyStringsEditor.set [as object] (propertyEditorBase.ts:228)
    at SurveyObjectProperty.set [as object] (objectProperty.ts:74)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.createEditor (questionEditor.ts:488)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.buildEditorProperties (questionEditor.ts:483)
    at new SurveyElementEditorTabModel (questionEditor.ts:395)

Error 2:

Uncaught TypeError: Cannot read property 'join' of undefined
    at LocalizableStrings.get [as text] (survey.ko.js:6939)
    at JsonObjectProperty.getPropertyValue (survey.ko.js:347)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.getValue (survey-creator.js:28094)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.updateValue (survey-creator.js:28079)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.setObjectCore (survey-creator.js:27909)
    at SurveyPropertyStringsEditor.set [as object] (survey-creator.js:27862)
    at SurveyObjectProperty.set [as object] (survey-creator.js:22759)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.createEditor (survey-creator.js:31571)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.buildEditorProperties (survey-creator.js:31566)
    at new SurveyElementEditorTabModel (survey-creator.js:31451)

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

Tested page URL: https://surveyjs.io/create-survey

Specify your

survey-creator Bug Error on visible if on matrix questions when it is located in panel dynamic

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

Bug

What is the current behavior?

When the matrix questions are inside of a panel dynamic question , the logic builder have a different behavior, and got a exception

image

What is the expected behavior?

image

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

If you create all the matrix type questions inside of surveyjs and try to create a visible if condition through the builder , you got this wrong behavior

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

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

Specify your

  • browser: last
  • editor version: last

Version: v1.8.27, released at Thursday, January 28, 2021, Total Issue Count: 13

Product
survey-library
Type
Enhancement
Description
Ranking Question

A question for drag and drop ranking. Allows respondents to rank items against each other by placing them in order of preference. Is appropriate for short lists (e.g. 5-7 items). Is optimized for use with keyboard (Tab, Shift-Tab, and Up/Down arrow keys) and under mobile devices.

const json = {
  "questions": [
    {
      "type": "ranking",
      "name": "smartphone-features",
      "title": "Please rank the following smartphone features in order of importance:",
      "isRequired": true,
      "choices": [
        "Battery life",
        "Screen size",
        "Storage space",
        "Camera quality",
        "Durability",
        "Processor power",
        "Price"
      ]
    }
  ]
};

new Survey.Model(json);

here the example: https://surveyjs.io/Examples/Library?id=questiontype-ranking

Product
survey-library
Type
Enhancement
Description
Add hideColumnsIfEmpty property into matrix dynamic question

It will be a better UI if we display a custom text and a link/button for adding a new row instead of columns and empty rows when there is no rows in matrix dynamic. hideColumnsIfEmpty: boolean, false by default.

When survey has checkErrorsMode equals to "onValueChanging", then we check question value with question value stored in survey, when we have to use question value after processing question.valueToDataCallback function.

After setting survey.checkErrorsMode to 'onValueChanging', survey doesn't allow to set into survey.data incorrect data. However, question.isRequried property is totally ignored.

Right now users set min/max properties to text question and expect that end-user could not enter values that are less than min value and greater than max value. We should not allow to set this values into survey.data and show errors on "next page" and "complete survey" actions if the value is incorrect. The additional properties that can be used to show the errors are: minErrorText and maxErrorText.

By setting the following code:

Survey.settings.minDate = "1900-01-01"
Survey.settings.maxDate = "2099-12-31"

You do not allow end-users to set value into text question with inputType equals to "date" the value that less that January 1, 1900 and greater than December 31, 2099. It works in the same way if all these questions you would set the min and max properties

Product
survey-creator
Type
Bug
Description
Translation tab: group property name is not localized

Group property name is displayed in english, even if Creator default language is different from "en".

Product
survey-creator
Type
Bug
Description
SurveyCreator: koShowPagesToolbox is not a function
Product
survey-creator
Type
Bug
Description
showDesignTab: false not working

What is the current behavior?

showDesignTab: false not displaying form

What is the expected behavior?

We just want to display test survey form. To do this I set all the other options false except showTestSurveyTab. Then it shows me the form is not available. It was working on the previous version. 1.7.4 We are migrating to latest version and encountered this problem.

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

Test code

  const surveyOptions = {
    showJSONEditorTab: false,
    showLogicTab: false,
    showTestSurveyTab: true,
    showDesignerTab: false,
    readOnly: true,
  };

  const surveyLogicViewer = new SurveyJSCreator.SurveyCreator(
    'formLogicViewerContainer',
    surveyOptions
  );

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

Bug

What is the current behavior?

Error when we are triggering the following events onElementNameChanged onPropertyAfterRender when the showPropertyGrid is false idk what others events are not working

What is the expected behavior?

Trigger events normally

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

https://plnkr.co/edit/2FustyniUAd9NsZO

Specify your

  • browser:
  • editor version: last
Product
survey-creator
Type
Bug
Description
Sort locales by display text instead of locale value

Right now locales are sorted by locale values and not by display text. It is incorrect.

Product
survey-creator
Type
Bug
Description
Creator fails after setting survey locale in private mode

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

Reporting a bug.

What is the current behavior?

After I change to a non-default locale in survey settings, I cannot edit my survey anymore:

  • Properties panel turns empty,
  • questions disappear when I add/move them,
  • survey not being saved,
  • JS errors appear in Console on every operation (question select/add/move).

(Detailed below at reproducing steps.)

What is the expected behavior?

I expect to be able to edit my survey regardless of survey locale settings.

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

  1. Open https://surveyjs.io/create-survey in Chrome incognito mode.
  2. Add a Single Input question to the survey.
  3. Click on Survey Settings.
  4. Modify the locale from "Default (English)" to anything else. (I wanted to use "magyar" (Hungarian), but tried others too for this report.)
  5. Click on your previously added Single Input -> Properties panel is now empty. Error 1 appears in Console.
  6. Add another Single Input -> It disappears. Error 2 appears in Console.

Error 1:

Uncaught TypeError: Cannot read property 'join' of undefined
    at LocalizableStrings.get [as text] (localizablestring.ts:259)
    at JsonObjectProperty.getPropertyValue (jsonobject.ts:240)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.getValue (propertyEditorBase.ts:440)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.updateValue (propertyEditorBase.ts:426)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.setObjectCore (propertyEditorBase.ts:262)
    at SurveyPropertyStringsEditor.set [as object] (propertyEditorBase.ts:228)
    at SurveyObjectProperty.set [as object] (objectProperty.ts:74)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.createEditor (questionEditor.ts:488)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.buildEditorProperties (questionEditor.ts:483)
    at new SurveyElementEditorTabModel (questionEditor.ts:395)

Error 2:

Uncaught TypeError: Cannot read property 'join' of undefined
    at LocalizableStrings.get [as text] (survey.ko.js:6939)
    at JsonObjectProperty.getPropertyValue (survey.ko.js:347)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.getValue (survey-creator.js:28094)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.updateValue (survey-creator.js:28079)
    at SurveyPropertyStringsEditor../src/propertyEditors/propertyEditorBase.ts.SurveyPropertyEditorBase.setObjectCore (survey-creator.js:27909)
    at SurveyPropertyStringsEditor.set [as object] (survey-creator.js:27862)
    at SurveyObjectProperty.set [as object] (survey-creator.js:22759)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.createEditor (survey-creator.js:31571)
    at SurveyElementEditorTabModel../src/questionEditors/questionEditor.ts.SurveyElementEditorTabModel.buildEditorProperties (survey-creator.js:31566)
    at new SurveyElementEditorTabModel (survey-creator.js:31451)

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

Tested page URL: https://surveyjs.io/create-survey

Specify your

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

Bug

What is the current behavior?

When the matrix questions are inside of a panel dynamic question , the logic builder have a different behavior, and got a exception

image

What is the expected behavior?

image

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

If you create all the matrix type questions inside of surveyjs and try to create a visible if condition through the builder , you got this wrong behavior

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

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

Specify your

  • browser: last
  • editor version: last

Version: v1.8.26, released at Wednesday, January 20, 2021, Total Issue Count: 8

Product Type Description
survey-library Bug Vue: Set survey property value break survey navigation after version 1.8.9

What is the current behavior?

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

  1. go to https://9yhjm.csb.app/
  2. click nextpage button, goto 2nd page.
  3. click prevpage, click does not work any more.

image

PrevPage button does not work.

What is the expected behavior?

prevPage button should work.

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

works in 1.8.9 https://codesandbox.io/s/surveyjs-vue-forked-wmuzw?file=/src/components/SurveyComponent.vue fail in 1.8.10 https://codesandbox.io/s/surveyjs-vue-forked-9yhjm

    this.survey = new Survey.Model(json);
    // after version  1.8.9, set locale break navigation 
    // How to reproduce:
    // chose a version after 1.8.9. say 1.8.10.
    // click nextpage button, goto 2 page.
    // then click prevpage, click does not work any more.
    this.survey.locale = "ja";

I tracked the code and find this change might related to this bug.

https://github.com/surveyjs/survey-library/commit/cc67fbfe766fdb8f83c553e305e14aa5b2e26548

survey-library Enhancement Add Croatian language translation
survey-library BreakingChange Remove question from it's previous parent container before adding into a new one

Right now this code will duplication question1 if it belongs to the first page: js survey.pages[1].addElement(survey.getQuestionByName("question1")); We should remove it from the previous parent container before adding to the new one.

survey-library Bug Do not reset dropdown question value in survey data on loading items from the web services

On using "choicesByUrl" property when choices are loaded from the web service, we reset the value to "undefined" before setting the value from choices. It requires to notify UI about value change, otherwise UI elements doesn't know that they need to update their value. In early versions, we took the question value directly from survey. During performance optimizations about a year ago we started to cache the question value in the question object and synchronize question value property and survey data. It means if the previous value exists in new choices, that came from the web service, we don't need to notify survey about question value changing and reset (make undefined and then set the value back) the question value property only. It will be enough to notify UI about the change and update the UI elements accordingly.

survey-library Bug question defaultValueExpression doesn't support async functions

The current version executes defaultValueExpression in a non async mode and as result if there are async functions in this expression, then the result will be incorrect.

survey-creator Enhancement Add croation language translation
survey-creator Enhancement Sort by text (question/panel/page title) elements in elementSelector widget

We do not currently sort elements and it is hard to select an element if there are a lot of items in a dropdown. We should sort them by displaying text.

survey-analytics Enhancement Gauge Customization

need to create an example

based on https://surveyjs.answerdesk.io/ticket/details/T5980

Version: v1.8.26, released at Wednesday, January 20, 2021, Total Issue Count: 8

What is the current behavior?

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

  1. go to https://9yhjm.csb.app/
  2. click nextpage button, goto 2nd page.
  3. click prevpage, click does not work any more.

image

PrevPage button does not work.

What is the expected behavior?

prevPage button should work.

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

works in 1.8.9 https://codesandbox.io/s/surveyjs-vue-forked-wmuzw?file=/src/components/SurveyComponent.vue fail in 1.8.10 https://codesandbox.io/s/surveyjs-vue-forked-9yhjm

    this.survey = new Survey.Model(json);
    // after version  1.8.9, set locale break navigation 
    // How to reproduce:
    // chose a version after 1.8.9. say 1.8.10.
    // click nextpage button, goto 2 page.
    // then click prevpage, click does not work any more.
    this.survey.locale = "ja";

I tracked the code and find this change might related to this bug.

https://github.com/surveyjs/survey-library/commit/cc67fbfe766fdb8f83c553e305e14aa5b2e26548

Product
survey-library
Type
Enhancement
Description
Add Croatian language translation
Product
survey-library
Type
BreakingChange
Description
Remove question from it's previous parent container before adding into a new one

Right now this code will duplication question1 if it belongs to the first page: js survey.pages[1].addElement(survey.getQuestionByName("question1")); We should remove it from the previous parent container before adding to the new one.

On using "choicesByUrl" property when choices are loaded from the web service, we reset the value to "undefined" before setting the value from choices. It requires to notify UI about value change, otherwise UI elements doesn't know that they need to update their value. In early versions, we took the question value directly from survey. During performance optimizations about a year ago we started to cache the question value in the question object and synchronize question value property and survey data. It means if the previous value exists in new choices, that came from the web service, we don't need to notify survey about question value changing and reset (make undefined and then set the value back) the question value property only. It will be enough to notify UI about the change and update the UI elements accordingly.

Product
survey-library
Type
Bug
Description
question defaultValueExpression doesn't support async functions

The current version executes defaultValueExpression in a non async mode and as result if there are async functions in this expression, then the result will be incorrect.

Product
survey-creator
Type
Enhancement
Description
Add croation language translation
Product
survey-creator
Type
Enhancement
Description
Sort by text (question/panel/page title) elements in elementSelector widget

We do not currently sort elements and it is hard to select an element if there are a lot of items in a dropdown. We should sort them by displaying text.

Product
survey-analytics
Type
Enhancement
Description
Gauge Customization

need to create an example

based on https://surveyjs.answerdesk.io/ticket/details/T5980

Version: v1.8.25, released at Sunday, January 17, 2021, Total Issue Count: 1

Product Type Description
survey-analytics Enhancement unable to setup Plotly chart options in PlotlyGaugeAdapter

Version: v1.8.25, released at Sunday, January 17, 2021, Total Issue Count: 1

Product
survey-analytics
Type
Enhancement
Description
unable to setup Plotly chart options in PlotlyGaugeAdapter

Version: v1.8.24, released at Wednesday, January 13, 2021, Total Issue Count: 13

Product Type Description
survey-library Bug Composite question doesn't set empty value into editing object

The functionality is required for Creator v2.

survey-library Bug Complete trigger doesn't work on calculated value

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

Bug

What is the current behavior?

The complete trigger that ends the survey does not work on calculated values. Interestingly, if I add an expression type question and set that to the value of the calculatedValue, then add the trigger to that expression question it does work as expected.

What is the expected behavior?

It should work on calculated values too.

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

Load the JSON below, choose option 1 and see that you can continue to the next page(s) which shouldn't be possible.

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

{
 "title": "survey title",
 "description": "test123 descr",
 "logoWidth": 0,
 "focusFirstQuestionAutomatic": false,
 "completedHtmlOnCondition": [
  {
   "expression": "{result} = 'screenout'",
   "html": "result trigger!!!"
  }
 ],
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "radiogroup",
     "name": "question1",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    },
    {
     "type": "expression",
     "name": "expr",
     "title": "This expression contains the result variable, which is a calculatedValue",
     "expression": "{result}"
    },
    {
     "type": "html",
     "name": "question2",
     "html": "This is the value of the result calculated value:\n{result}\n\nThis is the value of the expression:\n{expr}"
    }
   ]
  },
  {
   "name": "page2",
   "elements": [
    {
     "type": "html",
     "name": "question7",
     "html": "This is the value of the result calculated value:\n{result}\n\nThis is the value of the expression:\n{expr}"
    }
   ]
  },
  {
   "name": "page3",
   "elements": [
    {
     "type": "html",
     "name": "question3",
     "html": "This is the value of the result calculated value:\n{result}\n\nThis is the value of the expression:\n{expr}"
    }
   ]
  }
 ],
 "triggers": [
  {
   "type": "complete",
   "expression": "{result} = 'screenout'"
  }
 ],
 "calculatedValues": [
  {
   "name": "result",
   "expression": "iif({question1} = 'item1', 'screenout', 'complete')",
   "includeIntoResult": true
  }
 ],
 "showPageNumbers": true
}

Tested page URL: https://surveyjs.io/create-survey

survey-library Enhancement Feature Request: Add support for datalist

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

Feature request

What is the current behavior?

There isn't a way to search the choices of the dropdown list. datalist supports this

survey-library Bug Triggers referencing question names with dot not working. Second Example

There is still an issue with dots in triggers. A slightly different example to the above is not working correctly:

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "dropdown",
     "name": "question.name1",
     "choices": [
      "item1",
      "item2",
      "item3",
      "item4"
     ]
    },
    {
     "type": "text",
     "name": "question.name2"
    }
   ]
  }
 ],
 "triggers": [
  {
   "type": "setvalue",
   "expression": "{question.name1} anyof ['item1', 'item2']",
   "setToName": "question.name2",
   "setValue": "one"
  },
  {
   "type": "setvalue",
   "expression": "{question.name1} anyof ['item3', 'item4']",
   "setToName": "question.name2",
   "setValue": "two"
  }
 ]
}

Originally posted by @dasboe in https://github.com/surveyjs/survey-library/issues/2420#issuecomment-753942148

survey-library Bug Maximum stack size exceeded error with some JSON with progressBarType equals to "buttons"

The following JSON will generate the error:

{
      elements: [
        {
          type: "boolean",
          name: "q1",
        },
        {
          type: "matrixdynamic",
          name: "q2",
          columns: [
            {
              name: "q3",
              visibleIf: "{q1} = true",
            },
          ],
          rowCount: 1,
        },
      ],
      progressBarType: "buttons",
    }

The origional error was reported in SurveyJS support desk

survey-library Bug ImagePicker question can includes otherItem if it contains in JSON and it generates JavaScript error

The original issue was created in SurveyJS support desk. Converting "radiogroup" question with hasOther property set to true to "imagepicker" generates JavaScript error. The reason that image picker contains a wrong item type - "other item". Imagepicker should have it at the first place.

survey-library Bug Changing properties in CalculatedValue object doesn't call survey.onPropertyValueChangedCallback function

Since changing properties in CalculatedValue object doesn't call survey.onPropertyValueChangedCallback function, creator.onMofied event doesn't call eigther. The original issue was reported into SurveyJS Support Desk.

survey-library Enhancement Support editing question text dataList property in Survey

The functionality is required for Creator V2. We use Survey as property grid to edit Survey objects.