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

Version: v1.9.0, released at Wednesday, December 1, 2021, Total Issue Count: 20

Product Type Description
survey-library Enhancement selectBase otherPlaceholder doesn't respect localization

I am using surveyjs (1.8.78) for Angular, and otherPlaceholder seems to be ignored:

"name": "page1",
   "elements": [
    {   
     "type": "radiogroup",
     "name": "primary_reason",
     "title": {
      "da": "Vælg din primære årsag",
      "en": "Choose your primary reason?"
     },  
     "isRequired": true,
     "hasOther": true,
     "otherPlaceholder": {
      "da":"Skriv din begrundelse her...",
      "en":"Write your reason here..."
     }, 
     [...]
   }
[...]

Originally posted by @marie-dk in https://github.com/surveyjs/survey-library/issues/1703#issuecomment-976753413

survey-library Bug knockout: incorrect rendering of footer cells

There is incorrect template for renderign footer cells in matrices. As result we have

element inside another .

survey-library Bug SurveyJS doesn't reload choices on changing locale that uses as a parameter

If a variable used as a parameter in choices from web url: "https://surveyjs.io/api/CountriesExample?region/?locale=", SurveyJS doesn't reload locale on changing it.

survey-library Enhancement Refactor default string in localization strings

Instead of the following code:

//in constructor
   var locRemoveRowText = this.createLocalizableString("removeRowText", this);
    locRemoveRowText.onGetTextCallback = (text: string): string => {
      return !!text ? text : surveyLocalization.getString("removeRow");
    };

and on property getter:

  public get confirmDeleteText() {
    return this.getLocalizableStringText(
      "confirmDeleteText",
      surveyLocalization.getString("confirmDelete")
    );
  }

Use the following code:

//in constructor
this.createLocalizableString("confirmDeleteText", this, false, "confirmDelete");

and on property getter

public get confirmDeleteText() {
  return this.getLocalizableStringText("confirmDeleteText");
}
survey-library Bug question isAnswered is not updated on setting value via survey.setValue function

The following code:

survey.setValue("question1", "value");

Doesn't update question isAnswered property and as result visually quesiton is not rendered as answered.

survey-library Enhancement Do not allow popup be shown outside the viewport
survey-library Enhancement Add obj: Base property into options parameter in survey.onErrorCustomText event

There is no way to find out to which object error is belong in survey.onErrorCustomText event. As result, there is no way to include question title into error text. Please refer to this issue for more information. Here is the example

  survey.onErrorCustomText.add(function (sender, options) {
    if (options.name == "required") {
      options.text = "Value is missed in question: '" + options.obj.title + "'.";
    }
  });
survey-library Bug checkbox question: default value not working with other option and visibleIf

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

What is the current behavior? if a question has a option with visibleif, the default value is checking multiple questions

What is the expected behavior? we could check/uncheck options with default value active

Tested page URL: https://plnkr.co/edit/LEwOG0YQZYyfP8Mt Test code

Specify your

  • browser:
  • browser version:
  • surveyjs platform (angular or react or jquery or knockout or vue):
  • surveyjs version:
survey-creator Enhancement TestSurvey page switcher should contain page titles intead of Page names

Exisiting design: image

Maybe it is useful to set "(3 of 12)"

survey-creator Enhancement CV2: improve ResizeManager, add ability to resize content on the right side
survey-creator Enhancement [V2] SVG Icon usage improvements

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

Bug

Hidden div

A hidden div is added to the head tag, this contains all svg icons. The head element does not allow flow content afaik: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head A simple fix is to use a template tag instead of a hidden div. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template

Use href

Use href, xlink:href is deprecated: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href

Icon id collisions

The icons don't have a sv prefix in their ids, this can lead to collisions with pages already using those IDs. The solution for other ids and classes is to always prefix with sv-.

Keep DOM element as local as possible

This is mostly inspired by me trying to render it in a shadow DOM (and thus preventing my own CSS from leaking into the creator). When adding elements dynamically using javascript, I think it's cleaner to add them in your own element root. After all I'm calling creator.render(someElem), it seems reasonable to render everything inside that element if at all possible.

survey-creator Enhancement Remove references on modern theme in CreatorV2
survey-creator Bug Creator V2: Right sidebar design
  • css-fixes
  • #2268
  • surveyjs/survey-library#3690
survey-creator Enhancement Allow to change the indentation in JSON Editor

You can use the following code to change the indentation in JSON Editor:

SurveyCreator.settings.jsonEditor.indentation = 3;
survey-creator Enhancement Always keep Expand Property Grid action in the end of toolbar

image

survey-creator Enhancement visual regression testing: devextreme-screenshot-comparer
survey-creator Bug Creator V2: Logic items have wrong paddings.
survey-creator Bug Creator V2: Unable process binding error if using survey-creator-knockout in a Vue 3 app
survey-creator Bug Check isRequired for property in Creator StringEditor

Survey.Serializer.getProperty("survey","title").isRequired = true;

survey-analytics Bug Histogram visualizer doesn't allow custom question types
SurveyAnalytics.VisualizationManager.registerVisualizer("nouislider", SurveyAnalytics.HistogramPlotly);

image

Version: v1.9.0, released at Wednesday, December 1, 2021, Total Issue Count: 20

Product
survey-library
Type
Enhancement
Description
selectBase otherPlaceholder doesn't respect localization

I am using surveyjs (1.8.78) for Angular, and otherPlaceholder seems to be ignored:

"name": "page1",
   "elements": [
    {   
     "type": "radiogroup",
     "name": "primary_reason",
     "title": {
      "da": "Vælg din primære årsag",
      "en": "Choose your primary reason?"
     },  
     "isRequired": true,
     "hasOther": true,
     "otherPlaceholder": {
      "da":"Skriv din begrundelse her...",
      "en":"Write your reason here..."
     }, 
     [...]
   }
[...]

Originally posted by @marie-dk in https://github.com/surveyjs/survey-library/issues/1703#issuecomment-976753413

Product
survey-library
Type
Bug
Description
knockout: incorrect rendering of footer cells

There is incorrect template for renderign footer cells in matrices. As result we have element inside another .

If a variable used as a parameter in choices from web url: "https://surveyjs.io/api/CountriesExample?region/?locale=", SurveyJS doesn't reload locale on changing it.

Product
survey-library
Type
Enhancement
Description
Refactor default string in localization strings

Instead of the following code:

//in constructor
   var locRemoveRowText = this.createLocalizableString("removeRowText", this);
    locRemoveRowText.onGetTextCallback = (text: string): string => {
      return !!text ? text : surveyLocalization.getString("removeRow");
    };

and on property getter:

  public get confirmDeleteText() {
    return this.getLocalizableStringText(
      "confirmDeleteText",
      surveyLocalization.getString("confirmDelete")
    );
  }

Use the following code:

//in constructor
this.createLocalizableString("confirmDeleteText", this, false, "confirmDelete");

and on property getter

public get confirmDeleteText() {
  return this.getLocalizableStringText("confirmDeleteText");
}

The following code:

survey.setValue("question1", "value");

Doesn't update question isAnswered property and as result visually quesiton is not rendered as answered.

Product
survey-library
Type
Enhancement
Description
Do not allow popup be shown outside the viewport
Product
survey-library
Type
Enhancement
Description
Add obj: Base property into options parameter in survey.onErrorCustomText event

There is no way to find out to which object error is belong in survey.onErrorCustomText event. As result, there is no way to include question title into error text. Please refer to this issue for more information. Here is the example

  survey.onErrorCustomText.add(function (sender, options) {
    if (options.name == "required") {
      options.text = "Value is missed in question: '" + options.obj.title + "'.";
    }
  });

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

What is the current behavior? if a question has a option with visibleif, the default value is checking multiple questions

What is the expected behavior? we could check/uncheck options with default value active

Tested page URL: https://plnkr.co/edit/LEwOG0YQZYyfP8Mt Test code

Specify your

  • browser:
  • browser version:
  • surveyjs platform (angular or react or jquery or knockout or vue):
  • surveyjs version:
Product
survey-creator
Type
Enhancement
Description
TestSurvey page switcher should contain page titles intead of Page names

Exisiting design: image

Maybe it is useful to set "(3 of 12)"

Product
survey-creator
Type
Enhancement
Description
CV2: improve ResizeManager, add ability to resize content on the right side
Product
survey-creator
Type
Enhancement
Description
[V2] SVG Icon usage improvements

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

Bug

Hidden div

A hidden div is added to the head tag, this contains all svg icons. The head element does not allow flow content afaik: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head A simple fix is to use a template tag instead of a hidden div. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template

Use href

Use href, xlink:href is deprecated: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href

Icon id collisions

The icons don't have a sv prefix in their ids, this can lead to collisions with pages already using those IDs. The solution for other ids and classes is to always prefix with sv-.

Keep DOM element as local as possible

This is mostly inspired by me trying to render it in a shadow DOM (and thus preventing my own CSS from leaking into the creator). When adding elements dynamically using javascript, I think it's cleaner to add them in your own element root. After all I'm calling creator.render(someElem), it seems reasonable to render everything inside that element if at all possible.

Product
survey-creator
Type
Enhancement
Description
Remove references on modern theme in CreatorV2
Product
survey-creator
Type
Bug
Description
Creator V2: Right sidebar design
  • css-fixes
  • #2268
  • surveyjs/survey-library#3690
Product
survey-creator
Type
Enhancement
Description
Allow to change the indentation in JSON Editor

You can use the following code to change the indentation in JSON Editor:

SurveyCreator.settings.jsonEditor.indentation = 3;
Product
survey-creator
Type
Enhancement
Description
Always keep Expand Property Grid action in the end of toolbar

image

Product
survey-creator
Type
Enhancement
Description
visual regression testing: devextreme-screenshot-comparer
Product
survey-creator
Type
Bug
Description
Creator V2: Logic items have wrong paddings.
Product
survey-creator
Type
Bug
Description
Check isRequired for property in Creator StringEditor

Survey.Serializer.getProperty("survey","title").isRequired = true;

Product
survey-analytics
Type
Bug
Description
Histogram visualizer doesn't allow custom question types
SurveyAnalytics.VisualizationManager.registerVisualizer("nouislider", SurveyAnalytics.HistogramPlotly);

image

Version: v1.8.79, released at Thursday, November 25, 2021, Total Issue Count: 32

Product Type Description
survey-library Enhancement DnD: implement "long tap" for touch devices

according to the design all drag and drop actions on touch devices should start after the "long tap"

survey-library Bug choicesByUrl ignores parentpanel

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

bug, I think

What is the current behavior?

choicesByUrl ignore parentpanel

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

https://plnkr.co/edit/kuhd1FgkyhIweh6d

survey-library Enhancement Do not calculate currentPage on getter in survey model

We used to calculate currentPage on currentPage getter property. It creates issues in react and vue since currentPage could be changed during rendering which is incorrect approach for both these frameworks. It is better always have the correct currentPage and change it on adding/removing pages and change page visibility. This approach should increase perfomance for surveys with 100+ pages surveys.

survey-library Bug Dynamic panel in component should work as in run-time in designer

Dynamic panel inside component should work in running mode even in SurveyJS Creator.

survey-library Enhancement Ensure all buttons have the type="button" attribute

Otherwise by default it will submit users form

survey-library Bug checkbox question: default value not working with visibleif

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

bug

What is the current behavior?

if a question has a option with visibleif, the default value is checking multiple questions

What is the expected behavior?

we could check/uncheck options with default value active

Tested page URL: https://plnkr.co/edit/etOSdafU7i7GRqmA?preview Test code


### Specify your

* browser:
* browser version:
* surveyjs platform: jquery
* surveyjs version: 1.8
survey-library Enhancement Ranking shortcut: add css class

Need for the customization. See https://surveyjs.answerdesk.io/ticket/details/T8211

survey-library Bug Expression validation with 'getDate' and 'today', does not work.

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

  • Possible bug

What is the current behavior?

The following validation in a expression question return valid:

{
     "type": "text",
     "name": "date_ok",
     "title": "Date with validation works with less than today",
     "isRequired": true,
     "validators": [
      {
       "type": "expression",
       "expression": "getDate({date_ok})<=today()"
      }
     ],
     "inputType": "date"
}

Current date: 2021-11-20 Input: 2021-11-21 Result: Valid input

What is the expected behavior?

{
     "type": "text",
     "name": "date_ok",
     "title": "Date with validation works with less than today",
     "isRequired": true,
     "validators": [
      {
       "type": "expression",
       "expression": "getDate({date_ok})<=today()"
      }
     ],
     "inputType": "date"
}

Current date: 2021-11-20 Input: 2021-11-21 Result: Invalid input

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

Using plnkr.co

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

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

Specify your

  • browser: Google Chrome
  • browser version: 96.0.4664.45
  • surveyjs platform (angular or react or jquery or knockout or vue): react and agular
  • surveyjs version: 1.8.78
survey-library Enhancement Accessibility issue: radiogroup aria child and focusable

For detailed information see the ticket

image

image

survey-library Bug Vue infinite loop when referencing questions that don't exist

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

What is the current behavior? Changing the value of the choice box, when the title references a question that doesn't exist causes an infinite render loop.

vue.js:634 [Vue warn]: You may have an infinite update loop in a component render function.

found in

---> at src/vue/elementheader.vue at src/vue/element.vue at src/vue/row.vue at src/vue/page.vue at src/vue/survey.vue

Test URL: https://plnkr.co/edit/L1DW8eT9lrxPPppe

Specify your browser: Chrome browser version: 96.0.4664.45 surveyjs platform (angular or react or jquery or knockout or vue): Vue surveyjs version: 1.8.71

Note: I've seen other infinite update loops happen when a question is referenced, but doesn't exist. This locks up the survey entirely on production mode and freezes the browser.

survey-library Bug Theme dynamic style sheet id contains trailing spaces
survey-library Bug Do not set td width/minWidth for totals in matrices

We should set width/minWidth for td elements in total row in matrices.

survey-library Bug Do not send notification about adding questions on randomizing existing questions on a page

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

Bug

What is the current behavior?

I originally found this because I had some issues with infinite recursion in the event handler for the currentPageChange event.

If I try to read something like survey.currentPageNo I might trigger an infinite recursion:

public get currentPageNo(): number {
    return this.visiblePages.indexOf(this.currentPage);
  }

public get currentPage(): any {
    if (this.currentPageValue != null) {
      if (!this.isPageInVisibleList(this.currentPageValue) || this.pages.indexOf(this.currentPageValue) < 0) {
        if (
          !this.onContainsPageCallback ||
          !this.onContainsPageCallback(this.currentPageValue)
        ) {
          this.currentPage = null;
        }
      }
    }
    if (this.currentPageValue == null && !!this.firstVisiblePage) {
      this.currentPage = this.firstVisiblePage;
    }
    return this.currentPageValue;
  }

The issue here is that calling a getter in some circumstances also calls the getter, which then executes the onCurrentPageChanging callback again.

Doing some more research in the stack traces leads me to believe that this is possible regardless of

What is the expected behavior?

Never

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

Unclear; I know that on some larger surveys it is null and if the move is allowed the survey resets from the start.

Okay, bear with me, this is going to be hard to fathom.

  • We have a panel with randomized questions inside, from these questions a subset is visible (this is done using a condition, but this doesn't change after initial load).
randomizeElements(isRandom: boolean): void {
    if (!this.canRandomize(isRandom) || this.isRandomizing) return;
    this.isRandomizing = true;
    var oldElements = [];
    var elements = this.elements;
    for (var i = 0; i < elements.length; i++) {
      oldElements.push(elements[i]);
    }
    var newElements = Helpers.randomizeArray<IElement>(oldElements);
    this.elements.splice(0, this.elements.length);
    for (var i = 0; i < newElements.length; i++) {
      this.elements.push(newElements[i]);
    }
    this.isRandomizing = false;
  }

This randomization function has some nasty side effects. First of all, it clears the questions inside the panel. This means the panel becomes invisible and so does the page it is contained in (the panel is the only question on the page).

Then questionAdded is triggered for every element (this is very inefficient, I think you could in this case, since you're just reordering, do a single assign without that event).

The questionAdded code updates the visible page indexes; so now the current page at a moment in time becomes not visible.

Then code later on that tries to check if the prev button should be shown (here we have entered knockout specific territory, this is triggered from some observable). isShowPrevButton() calls get state(), which in turn calls get currentPage().

At this point the logic in there checks if the current page is visible, which it is not, and thus it resets the current page to the first visible page.

This restarts the loop with a different page, which might also have a randomized panel inside...

I've spend a couple of hours on debugging this; I'll try to get some simple reproduction example another time.

survey-creator Enhancement drag-drop "shadow styles" for imagepicker
survey-creator Enhancement DnD: Toolbox Item (tablet): first tap works like hover but add a question same time.
survey-creator Enhancement DnD: Toolbox Item/Drag Survey Elements: (tablet): drag interrupted by scroll
survey-creator Enhancement DnD: Drag Survey Elements (mobile/tablet): hard to start drag because drag icon very small. Need to allow drag whole item
survey-creator Enhancement Drag Survey Elements (tablet): selection while dragging. Probably we should create global root class (--dragging) and disable selection.
survey-creator Enhancement Is there a way to hide specific fields in the translation tab and/or disable the 'show all pages' dropdown?

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

Asking a question

What is the current behavior?

When the 'show all pages' option is selected rather than a specific page, the title of the survey is editable image If 'page1' is selected, the title field no longer appears: image

We currently change the titles of the surveys as part of a different process, and do not want the title to be editable in the Survey Creator. Is there either:

A way to set 'show all pages': false in config, and hide the dropdown

or

A way to hide specific fields in the translation tab?

Thanks

survey-creator Bug СV2: non-latin charachters break the font

image

survey-creator Enhancement Implement design for Toolbar and Property Grid on one pane on the left and on the right sides
  • the ability to change toolbox location (left/right)
  • the ability to change property panel location (left/right)
  • toolbox & property panel in one panel
survey-creator Bug Toolbox floating item and survey title overlapped icorrectly

MicrosoftTeams-image (5)

survey-creator Bug CV2 React Warnings (DnD new page key)

Sometimes drag and drop caused two type of react warnings

  1. Render should be a pure function - see https://github.com/surveyjs/survey-creator/issues/2215
  2. Same key
survey-creator Bug Wrong question button margins and paddings
  • Align buttons by icons, not by invisible border (see fig. 1):
  • Align panel buttons to right (see fig. 2 and just apply the css):

Fig 1: image

Fig 2: image

.svc-question__content-actions {
  .sv-action:first-child:not(.sv-action--first) {
    margin-left: auto;
  }
}
survey-creator Bug Fix PropertyGrid padding for non-mobile view

Current view: image

Need to be: image

survey-creator Bug React warning about pure "render" function

get currentPage getter has side effects which caused react warning:

Warning: Cannot update during an existing state transition (such as within render). Render methods should be a pure function...

  public get currentPage(): any {
    if (this.currentPageValue != null) {
      if (!this.isPageInVisibleList(this.currentPageValue) || this.pages.indexOf(this.currentPageValue) < 0) {
        if (
          !this.onContainsPageCallback ||
          !this.onContainsPageCallback(this.currentPageValue)
        ) {
          this.currentPage = null;
        }
      }
    }
    if (this.currentPageValue == null && !!this.firstVisiblePage) {
      this.currentPage = this.firstVisiblePage;
    }
    return this.currentPageValue;
  }

could be reproduced by drag drop question from the toolbox to the first position (the page should contain some questions before it)

survey-creator Enhancement Drag Drop on Tablet and Mobile devices (research)

need to investigate current state and give the estimations

found problems:

  • #2221
  • #2222
  • #2223
  • #2224
survey-creator Bug Creator V2: wrong logo position on the test survey tab

image

survey-creator Enhancement CV2: update icon for dynamic panel in toolbox
survey-creator Enhancement Creator V2: survey logo has different position in creator and customer survey
survey-pdf Bug TITLE_PANEL_FONT_SIZE_SCALE variable is used in page title

Changes of this variable cause the following behavior

image

survey-analytics Bug Percentage marks are rounded to int values and lose accuracy

See the https://surveyjs.answerdesk.io/ticket/details/t8244/survey-analytics-charts-issue thread for more details

image

Percentages sum = 101, that is wrong

Version: v1.8.79, released at Thursday, November 25, 2021, Total Issue Count: 32

Product
survey-library
Type
Enhancement
Description
DnD: implement "long tap" for touch devices

according to the design all drag and drop actions on touch devices should start after the "long tap"

Product
survey-library
Type
Bug
Description
choicesByUrl ignores parentpanel

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

bug, I think

What is the current behavior?

choicesByUrl ignore parentpanel

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

https://plnkr.co/edit/kuhd1FgkyhIweh6d

Product
survey-library
Type
Enhancement
Description
Do not calculate currentPage on getter in survey model

We used to calculate currentPage on currentPage getter property. It creates issues in react and vue since currentPage could be changed during rendering which is incorrect approach for both these frameworks. It is better always have the correct currentPage and change it on adding/removing pages and change page visibility. This approach should increase perfomance for surveys with 100+ pages surveys.

Product
survey-library
Type
Bug
Description
Dynamic panel in component should work as in run-time in designer

Dynamic panel inside component should work in running mode even in SurveyJS Creator.

Product
survey-library
Type
Enhancement
Description
Ensure all buttons have the type="button" attribute

Otherwise by default it will submit users form

Product
survey-library
Type
Bug
Description
checkbox question: default value not working with visibleif

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

bug

What is the current behavior?

if a question has a option with visibleif, the default value is checking multiple questions

What is the expected behavior?

we could check/uncheck options with default value active

Tested page URL: https://plnkr.co/edit/etOSdafU7i7GRqmA?preview Test code


### Specify your

* browser:
* browser version:
* surveyjs platform: jquery
* surveyjs version: 1.8
Product
survey-library
Type
Enhancement
Description
Ranking shortcut: add css class

Need for the customization. See https://surveyjs.answerdesk.io/ticket/details/T8211

Product
survey-library
Type
Bug
Description
Expression validation with 'getDate' and 'today', does not work.

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

  • Possible bug

What is the current behavior?

The following validation in a expression question return valid:

{
     "type": "text",
     "name": "date_ok",
     "title": "Date with validation works with less than today",
     "isRequired": true,
     "validators": [
      {
       "type": "expression",
       "expression": "getDate({date_ok})<=today()"
      }
     ],
     "inputType": "date"
}

Current date: 2021-11-20 Input: 2021-11-21 Result: Valid input

What is the expected behavior?

{
     "type": "text",
     "name": "date_ok",
     "title": "Date with validation works with less than today",
     "isRequired": true,
     "validators": [
      {
       "type": "expression",
       "expression": "getDate({date_ok})<=today()"
      }
     ],
     "inputType": "date"
}

Current date: 2021-11-20 Input: 2021-11-21 Result: Invalid input

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

Using plnkr.co

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

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

Specify your

  • browser: Google Chrome
  • browser version: 96.0.4664.45
  • surveyjs platform (angular or react or jquery or knockout or vue): react and agular
  • surveyjs version: 1.8.78
Product
survey-library
Type
Enhancement
Description
Accessibility issue: radiogroup aria child and focusable

For detailed information see the ticket

image

image

Product
survey-library
Type
Bug
Description
Vue infinite loop when referencing questions that don't exist

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

What is the current behavior? Changing the value of the choice box, when the title references a question that doesn't exist causes an infinite render loop.

vue.js:634 [Vue warn]: You may have an infinite update loop in a component render function.

found in

---> at src/vue/elementheader.vue at src/vue/element.vue at src/vue/row.vue at src/vue/page.vue at src/vue/survey.vue

Test URL: https://plnkr.co/edit/L1DW8eT9lrxPPppe

Specify your browser: Chrome browser version: 96.0.4664.45 surveyjs platform (angular or react or jquery or knockout or vue): Vue surveyjs version: 1.8.71

Note: I've seen other infinite update loops happen when a question is referenced, but doesn't exist. This locks up the survey entirely on production mode and freezes the browser.

Product
survey-library
Type
Bug
Description
Theme dynamic style sheet id contains trailing spaces
Product
survey-library
Type
Bug
Description
Do not set td width/minWidth for totals in matrices

We should set width/minWidth for td elements in total row in matrices.

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

Bug

What is the current behavior?

I originally found this because I had some issues with infinite recursion in the event handler for the currentPageChange event.

If I try to read something like survey.currentPageNo I might trigger an infinite recursion:

public get currentPageNo(): number {
    return this.visiblePages.indexOf(this.currentPage);
  }

public get currentPage(): any {
    if (this.currentPageValue != null) {
      if (!this.isPageInVisibleList(this.currentPageValue) || this.pages.indexOf(this.currentPageValue) < 0) {
        if (
          !this.onContainsPageCallback ||
          !this.onContainsPageCallback(this.currentPageValue)
        ) {
          this.currentPage = null;
        }
      }
    }
    if (this.currentPageValue == null && !!this.firstVisiblePage) {
      this.currentPage = this.firstVisiblePage;
    }
    return this.currentPageValue;
  }

The issue here is that calling a getter in some circumstances also calls the getter, which then executes the onCurrentPageChanging callback again.

Doing some more research in the stack traces leads me to believe that this is possible regardless of

What is the expected behavior?

Never

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

Unclear; I know that on some larger surveys it is null and if the move is allowed the survey resets from the start.

Okay, bear with me, this is going to be hard to fathom.

  • We have a panel with randomized questions inside, from these questions a subset is visible (this is done using a condition, but this doesn't change after initial load).
randomizeElements(isRandom: boolean): void {
    if (!this.canRandomize(isRandom) || this.isRandomizing) return;
    this.isRandomizing = true;
    var oldElements = [];
    var elements = this.elements;
    for (var i = 0; i < elements.length; i++) {
      oldElements.push(elements[i]);
    }
    var newElements = Helpers.randomizeArray<IElement>(oldElements);
    this.elements.splice(0, this.elements.length);
    for (var i = 0; i < newElements.length; i++) {
      this.elements.push(newElements[i]);
    }
    this.isRandomizing = false;
  }

This randomization function has some nasty side effects. First of all, it clears the questions inside the panel. This means the panel becomes invisible and so does the page it is contained in (the panel is the only question on the page).

Then questionAdded is triggered for every element (this is very inefficient, I think you could in this case, since you're just reordering, do a single assign without that event).

The questionAdded code updates the visible page indexes; so now the current page at a moment in time becomes not visible.

Then code later on that tries to check if the prev button should be shown (here we have entered knockout specific territory, this is triggered from some observable). isShowPrevButton() calls get state(), which in turn calls get currentPage().

At this point the logic in there checks if the current page is visible, which it is not, and thus it resets the current page to the first visible page.

This restarts the loop with a different page, which might also have a randomized panel inside...

I've spend a couple of hours on debugging this; I'll try to get some simple reproduction example another time.

Product
survey-creator
Type
Enhancement
Description
drag-drop "shadow styles" for imagepicker
Product
survey-creator
Type
Enhancement
Description
DnD: Toolbox Item/Drag Survey Elements: (tablet): drag interrupted by scroll

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

Asking a question

What is the current behavior?

When the 'show all pages' option is selected rather than a specific page, the title of the survey is editable image If 'page1' is selected, the title field no longer appears: image

We currently change the titles of the surveys as part of a different process, and do not want the title to be editable in the Survey Creator. Is there either:

A way to set 'show all pages': false in config, and hide the dropdown

or

A way to hide specific fields in the translation tab?

Thanks

Product
survey-creator
Type
Bug
Description
СV2: non-latin charachters break the font

image

  • the ability to change toolbox location (left/right)
  • the ability to change property panel location (left/right)
  • toolbox & property panel in one panel
Product
survey-creator
Type
Bug
Description
Toolbox floating item and survey title overlapped icorrectly

MicrosoftTeams-image (5)

Product
survey-creator
Type
Bug
Description
CV2 React Warnings (DnD new page key)

Sometimes drag and drop caused two type of react warnings

  1. Render should be a pure function - see https://github.com/surveyjs/survey-creator/issues/2215
  2. Same key
Product
survey-creator
Type
Bug
Description
Wrong question button margins and paddings
  • Align buttons by icons, not by invisible border (see fig. 1):
  • Align panel buttons to right (see fig. 2 and just apply the css):

Fig 1: image

Fig 2: image

.svc-question__content-actions {
  .sv-action:first-child:not(.sv-action--first) {
    margin-left: auto;
  }
}
Product
survey-creator
Type
Bug
Description
Fix PropertyGrid padding for non-mobile view

Current view: image

Need to be: image

Product
survey-creator
Type
Bug
Description
React warning about pure "render" function

get currentPage getter has side effects which caused react warning:

Warning: Cannot update during an existing state transition (such as within render). Render methods should be a pure function...

  public get currentPage(): any {
    if (this.currentPageValue != null) {
      if (!this.isPageInVisibleList(this.currentPageValue) || this.pages.indexOf(this.currentPageValue) < 0) {
        if (
          !this.onContainsPageCallback ||
          !this.onContainsPageCallback(this.currentPageValue)
        ) {
          this.currentPage = null;
        }
      }
    }
    if (this.currentPageValue == null && !!this.firstVisiblePage) {
      this.currentPage = this.firstVisiblePage;
    }
    return this.currentPageValue;
  }

could be reproduced by drag drop question from the toolbox to the first position (the page should contain some questions before it)

Product
survey-creator
Type
Enhancement
Description
Drag Drop on Tablet and Mobile devices (research)

need to investigate current state and give the estimations

found problems:

  • #2221
  • #2222
  • #2223
  • #2224
Product
survey-creator
Type
Bug
Description
Creator V2: wrong logo position on the test survey tab

image

Product
survey-creator
Type
Enhancement
Description
CV2: update icon for dynamic panel in toolbox
Product
survey-creator
Type
Enhancement
Description
Creator V2: survey logo has different position in creator and customer survey
Product
survey-pdf
Type
Bug
Description
TITLE_PANEL_FONT_SIZE_SCALE variable is used in page title

Changes of this variable cause the following behavior

image

Product
survey-analytics
Type
Bug
Description
Percentage marks are rounded to int values and lose accuracy

See the https://surveyjs.answerdesk.io/ticket/details/t8244/survey-analytics-charts-issue thread for more details

image

Percentages sum = 101, that is wrong

Version: v1.8.78, released at Wednesday, November 17, 2021, Total Issue Count: 17

Product Type Description
survey-library Enhancement Matrix question options have incorrect aria-label

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

Reporting an accessibility bug

What is the current behavior?

On matrix questions, options are given the incorrect aria-label value, and the span embedded in the label has the incorrect value.

What is the expected behavior?

The generated aria-label and hidden span should have a value that matches the title of the column, not the name of the question

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

See codesandbox. You can reproduce this by creating a matrix question using the Survey Designer

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

Tested page URL: Codesandbox example

Test code

import ReactDOM from "react-dom";
import * as Survey from "survey-react";

Survey.StylesManager.applyTheme("modern");

var surveyJSON = {
  pages: [
    {
      name: "page1",
      elements: [
        {
          type: "matrix",
          name: "question1",
          columns: ["Column 1", "Column 2", "Column 3"],
          rows: ["Row 1", "Row 2"]
        }
      ]
    }
  ]
};

function sendDataToServer(survey) {
  //send Ajax request to your web server.
  alert("The results are:" + JSON.stringify(survey.data));
}

ReactDOM.render(
  <Survey.Survey json={surveyJSON} onComplete={sendDataToServer} />,
  document.getElementById("surveyContainer")
);


Specify your

  • browser: Brave
  • browser version: 1.30.89 - Chromium 94.0.4606.81
  • surveyjs platform (angular or react or jquery or knockout or vue): example is in react, but have observed the issue in vue as well
  • surveyjs version: 1.8.72
survey-library Bug Can't change default value for question isRequried

The following code does nothing:

Survey.Serializer.findProperty("question", "isRequired").defaultValue = true;

This code should make all questions requried by default.

survey-library Bug Ranking: ko: not stable functional testcafe tests

sometimes tests failed in knockout framework

survey-library Bug Survey data of questions with valueName in a panel that is hidden during survey editing is not removed

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

Bug

What is the current behavior?

When a panel with filled in matrixdynamic is hidden, the data does not get removed from the survey data. Unlike when specific fields get hidden, then this does work.

What is the expected behavior?

Data in matrixdynamic in hidden panel should also be removed.

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

Create a checkbox, add a panel with a matrixdynamic question. Fill in the panel questions. Make the panel hide on checkbox selection. Check that the data still contains the hidden panel questions data.

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

https://plnkr.co/edit/Bpcs5SzLpPSzhLmM

Select both target types, fill in a row in each panel. Then deselect one of the target types, submit and see all data still present in the survey_data.

Specify your

  • browser: Firefox
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.76
survey-library Bug Panel layout problem
survey-creator Enhancement CV2: test tab responsive for mobile devices
survey-creator Bug Focus is lost during hit Enter on kanji selection

In order to get "かんじ感じ漢字" as a result, you need to type "kanjikanjikanji" while following these steps:

type "kanji" select "かんじ" (this is hiragana) within IME hit enter to validate your choice and to differentiate it as as single word type "kanji" select "感じ" (this is kanji + hiragana) within IME hit enter to validate your choice and to differentiate it as as single word type "kanji" select "漢字" (this is kanji only) within IME hit enter to validate your choice hit enter again to leave the input field (unfocus)

survey-creator Enhancement v2: DnD: added corresponding "question type icon" to dragged element shortcut
survey-creator Enhancement v2: DnD: while dragging existing element it should become "gray" until drag drop ends
survey-creator Enhancement v2: DnD: while dragging selected element the "selection"(orange border) should go to the shortcut and moved to element after drag
survey-creator Enhancement CV2: Survey position is not correct on mobile

image

survey-creator Bug CV1: onPropertyValidationCustomError doesn't work for modal element editor

If showPropertyGrid option is false, property grid shows as modal, onPropertyValidationCustomError event doesn't work

survey-creator Bug CV2: Do not start dragging choices on editing text

Click to edit choice text in designer and start to drag text. Choice item and text will be dragging. It looks confusing.

survey-creator Bug CV2: VisibleIf and dropdown property editor doesn't work in choices property editor

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

bug

What is the current behavior?

Adding a new property with visibleIf does not change the visibility within choices

What is the expected behavior?

Item should not be visible unless condition is met

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

SurveyKo.Serializer.addProperty('itemvalue', {name: 'extrasType:dropdown', choices: ['fixed-price', 'hourly']});
SurveyKo.Serializer.addProperty('itemvalue', {
    name: 'proPay:number',
    dependsOn: ['extrasType'],
    visibleIf: function(obj) {
      return obj.extrasType == 'fixed-price';
    }
  });
SurveyCreator.SurveyQuestionEditorDefinition.definition['itemvalue[]@choices'].properties.push('proPay');

Specify your

  • browser: Chrome
  • browser version: 94
  • surveyjs platform (angular or react or jquery or knockout or vue): Vue
  • surveyjs version: 1.8.68
survey-creator Bug CV2: knockout v2 doesn't work in vue-cli application

There is a console error in vue-cli application with Knockout V2

survey-analytics Enhancement Implement `showOnlyPercentages` property
custom-widgets Bug Select2-Tagbox `allowAddNewTag` bug

using allowAddNewTag works incorrect. If we have only one answer and it is "custom" then it removes from the survey.data

var json = {
    "elements": [
        {
            "type": "tagbox",
            "isRequired": true,
            "choicesByUrl": {
                "url": "https://surveyjs.io/api/CountriesExample"
            },
            "allowAddNewTag": true,
            "name": "countries",
            "title": "Please select all countries you have been for the last 3 years."
        }
    ]
};

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

Version: v1.8.78, released at Wednesday, November 17, 2021, Total Issue Count: 17

Product
survey-library
Type
Enhancement
Description
Matrix question options have incorrect aria-label

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

Reporting an accessibility bug

What is the current behavior?

On matrix questions, options are given the incorrect aria-label value, and the span embedded in the label has the incorrect value.

What is the expected behavior?

The generated aria-label and hidden span should have a value that matches the title of the column, not the name of the question

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

See codesandbox. You can reproduce this by creating a matrix question using the Survey Designer

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

Tested page URL: Codesandbox example

Test code

import ReactDOM from "react-dom";
import * as Survey from "survey-react";

Survey.StylesManager.applyTheme("modern");

var surveyJSON = {
  pages: [
    {
      name: "page1",
      elements: [
        {
          type: "matrix",
          name: "question1",
          columns: ["Column 1", "Column 2", "Column 3"],
          rows: ["Row 1", "Row 2"]
        }
      ]
    }
  ]
};

function sendDataToServer(survey) {
  //send Ajax request to your web server.
  alert("The results are:" + JSON.stringify(survey.data));
}

ReactDOM.render(
  <Survey.Survey json={surveyJSON} onComplete={sendDataToServer} />,
  document.getElementById("surveyContainer")
);


Specify your

  • browser: Brave
  • browser version: 1.30.89 - Chromium 94.0.4606.81
  • surveyjs platform (angular or react or jquery or knockout or vue): example is in react, but have observed the issue in vue as well
  • surveyjs version: 1.8.72
Product
survey-library
Type
Bug
Description
Can't change default value for question isRequried

The following code does nothing:

Survey.Serializer.findProperty("question", "isRequired").defaultValue = true;

This code should make all questions requried by default.

Product
survey-library
Type
Bug
Description
Ranking: ko: not stable functional testcafe tests

sometimes tests failed in knockout framework

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

Bug

What is the current behavior?

When a panel with filled in matrixdynamic is hidden, the data does not get removed from the survey data. Unlike when specific fields get hidden, then this does work.

What is the expected behavior?

Data in matrixdynamic in hidden panel should also be removed.

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

Create a checkbox, add a panel with a matrixdynamic question. Fill in the panel questions. Make the panel hide on checkbox selection. Check that the data still contains the hidden panel questions data.

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

https://plnkr.co/edit/Bpcs5SzLpPSzhLmM

Select both target types, fill in a row in each panel. Then deselect one of the target types, submit and see all data still present in the survey_data.

Specify your

  • browser: Firefox
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.76
Product
survey-library
Type
Bug
Description
Panel layout problem
Product
survey-creator
Type
Enhancement
Description
CV2: test tab responsive for mobile devices
Product
survey-creator
Type
Bug
Description
Focus is lost during hit Enter on kanji selection

In order to get "かんじ感じ漢字" as a result, you need to type "kanjikanjikanji" while following these steps:

type "kanji" select "かんじ" (this is hiragana) within IME hit enter to validate your choice and to differentiate it as as single word type "kanji" select "感じ" (this is kanji + hiragana) within IME hit enter to validate your choice and to differentiate it as as single word type "kanji" select "漢字" (this is kanji only) within IME hit enter to validate your choice hit enter again to leave the input field (unfocus)

Product
survey-creator
Type
Enhancement
Description
v2: DnD: added corresponding "question type icon" to dragged element shortcut
Product
survey-creator
Type
Enhancement
Description
CV2: Survey position is not correct on mobile

image

If showPropertyGrid option is false, property grid shows as modal, onPropertyValidationCustomError event doesn't work

Product
survey-creator
Type
Bug
Description
CV2: Do not start dragging choices on editing text

Click to edit choice text in designer and start to drag text. Choice item and text will be dragging. It looks confusing.

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

bug

What is the current behavior?

Adding a new property with visibleIf does not change the visibility within choices

What is the expected behavior?

Item should not be visible unless condition is met

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

SurveyKo.Serializer.addProperty('itemvalue', {name: 'extrasType:dropdown', choices: ['fixed-price', 'hourly']});
SurveyKo.Serializer.addProperty('itemvalue', {
    name: 'proPay:number',
    dependsOn: ['extrasType'],
    visibleIf: function(obj) {
      return obj.extrasType == 'fixed-price';
    }
  });
SurveyCreator.SurveyQuestionEditorDefinition.definition['itemvalue[]@choices'].properties.push('proPay');

Specify your

  • browser: Chrome
  • browser version: 94
  • surveyjs platform (angular or react or jquery or knockout or vue): Vue
  • surveyjs version: 1.8.68
Product
survey-creator
Type
Bug
Description
CV2: knockout v2 doesn't work in vue-cli application

There is a console error in vue-cli application with Knockout V2

Product
survey-analytics
Type
Enhancement
Description
Implement `showOnlyPercentages` property
Product
custom-widgets
Type
Bug
Description
Select2-Tagbox `allowAddNewTag` bug

using allowAddNewTag works incorrect. If we have only one answer and it is "custom" then it removes from the survey.data

var json = {
    "elements": [
        {
            "type": "tagbox",
            "isRequired": true,
            "choicesByUrl": {
                "url": "https://surveyjs.io/api/CountriesExample"
            },
            "allowAddNewTag": true,
            "name": "countries",
            "title": "Please select all countries you have been for the last 3 years."
        }
    ]
};

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

Version: v1.8.77, released at Tuesday, November 9, 2021, Total Issue Count: 9

Product Type Description
survey-library Enhancement Use VIDEO element instead of EMBED

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

Feature

What is the current behavior?

When an image question uses contentMode === 'video', SurveyJS uses an <embed> tag. In 2021 the video tag is well supported and the <embed> tag has been deprecated for a while.

I only noticed this behavior when looking into adding a feature for blocking the survey until a movie has finished playing.

What is the expected behavior?

I'd expect SurveyJS to use a video tag.

For illustration, this is the template for knockout:

<script type="text/html" id="survey-question-image">
  <div data-bind="css: question.koCss().root">
    <!-- ko if: question.contentMode === "image" -->
    <img data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined, alt: question.text || question.title }, style: { objectFit: question.imageFit }"/>
    <!-- /ko -->
    <!-- ko if: question.contentMode === "video" -->
    <embed data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
    <!-- /ko -->
  </div>
</script>
survey-library Bug Dynamic Matrix Totals do not work in jQuery

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

Reporting a bug.

What is the current behavior?

Adding a totals row to a dynamic matrix produces a working total row in React. However, the same configuration in jQuery does not show the totals row when data is changed.

What is the expected behavior?

The totals row should display in jQuery.

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

Create a survey for use with jQuery SurveyJS, with a dynamic matrix question with an input type of number. Add a totals row with total type "sum". Enter a value in the field. The totals row disappears.

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

Tested page URL (React, working - change a value to check): https://plnkr.co/edit/ac4QL6tSPWrByH8Q Tested page URL (jQuery, not working - change a value to check): https://plnkr.co/edit/jldAIrxUvIjguLYv

Specify your

  • browser: Chrome
  • browser version: 95.0.4638.54
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.75 (NOTE: this worked in 1.8.70 and stopped working in 1.8.71)
survey-library Bug Lazy rendering is slow in knockout
survey-library Bug CompileError: Begins at CSS selector undefined
survey-library Bug Page-level hasErrors behaves inconsistently for pages with dynamic matrix questions

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

Reporting a bug.

What is the current behavior?

survey.pages[i].hasErrors(true) behaves inconsistently for pages that have not yet been visited when using dynamic matrix questions.

When pre-populating some survey data with survey.data = {data}, survey.pages[i].hasErrors(true) returns false for pages containing only dynamic matrix questions until you physically view the page (by navigating to it using the Next button or using survey.currentPage = i). If you do not pre-populate any data then it returns true for pages with errors as expected. For other fields (e.g. single input) it appears to behave consistently.

What is the expected behavior?

survey.pages[i].hasErrors(true) should indicate whether or not a page has any errors, regardless of question type or if data was preloaded.

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

  1. Create a survey configuration with a dynamic matrix question on a second page
  2. Preload some data with survey.data =
  3. Execute survey.pages[1].hasErrors(true), it will incorrectly return false

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

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

All three pages have errors (missing required fields). Click the "Validate - Click Me" button. Only pages 1 and 3 return hasErrors == true, page 2 returns false. Note that this behaved consistently in version 1.8.39 and stopped working in 1.8.40. If you fill in a value for question1 and proceed to page 2, clicking the "Validate - Click Me" button will now show page 2 hasErrors == true as expected.

Specify your

  • browser: Chrome
  • browser version: 95.0.4638.69
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.76 (worked in 1.8.39, stopped working in 1.8.40)
survey-library Bug TextValidator object is not serialized correctly

TextValidator serialized default values for minLength and maxLength and doesn't serialized allowDigits property at all.

survey-creator Enhancement CV2: DnD: choices(include imagepicker) and ranking items should be draggable by whole item.
  1. Drag Icon should be shown by hover just for indication that DnD is possible here

2.Whole item should be draggable but we need to differ drag start and click on actions (like in the toolbox)

survey-creator Bug CV2: DnD: Empty Panel problem

When drag inside empty panel and then try to drag next to panel nothing happens. But drag indication should changed ( from green background to the orange strip )

survey-creator Enhancement v2: DnD: refactoring: create IShortcutText

create IShortcutText interface and implement it in every drag drop consumer (for example survey-element or ItemValue) to make drag drop know less about the consumers

Version: v1.8.77, released at Tuesday, November 9, 2021, Total Issue Count: 9

Product
survey-library
Type
Enhancement
Description
Use VIDEO element instead of EMBED

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

Feature

What is the current behavior?

When an image question uses contentMode === 'video', SurveyJS uses an <embed> tag. In 2021 the video tag is well supported and the <embed> tag has been deprecated for a while.

I only noticed this behavior when looking into adding a feature for blocking the survey until a movie has finished playing.

What is the expected behavior?

I'd expect SurveyJS to use a video tag.

For illustration, this is the template for knockout:

<script type="text/html" id="survey-question-image">
  <div data-bind="css: question.koCss().root">
    <!-- ko if: question.contentMode === "image" -->
    <img data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined, alt: question.text || question.title }, style: { objectFit: question.imageFit }"/>
    <!-- /ko -->
    <!-- ko if: question.contentMode === "video" -->
    <embed data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
    <!-- /ko -->
  </div>
</script>
Product
survey-library
Type
Bug
Description
Dynamic Matrix Totals do not work in jQuery

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

Reporting a bug.

What is the current behavior?

Adding a totals row to a dynamic matrix produces a working total row in React. However, the same configuration in jQuery does not show the totals row when data is changed.

What is the expected behavior?

The totals row should display in jQuery.

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

Create a survey for use with jQuery SurveyJS, with a dynamic matrix question with an input type of number. Add a totals row with total type "sum". Enter a value in the field. The totals row disappears.

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

Tested page URL (React, working - change a value to check): https://plnkr.co/edit/ac4QL6tSPWrByH8Q Tested page URL (jQuery, not working - change a value to check): https://plnkr.co/edit/jldAIrxUvIjguLYv

Specify your

  • browser: Chrome
  • browser version: 95.0.4638.54
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.75 (NOTE: this worked in 1.8.70 and stopped working in 1.8.71)
Product
survey-library
Type
Bug
Description
Lazy rendering is slow in knockout
Product
survey-library
Type
Bug
Description
CompileError: Begins at CSS selector undefined

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

Reporting a bug.

What is the current behavior?

survey.pages[i].hasErrors(true) behaves inconsistently for pages that have not yet been visited when using dynamic matrix questions.

When pre-populating some survey data with survey.data = {data}, survey.pages[i].hasErrors(true) returns false for pages containing only dynamic matrix questions until you physically view the page (by navigating to it using the Next button or using survey.currentPage = i). If you do not pre-populate any data then it returns true for pages with errors as expected. For other fields (e.g. single input) it appears to behave consistently.

What is the expected behavior?

survey.pages[i].hasErrors(true) should indicate whether or not a page has any errors, regardless of question type or if data was preloaded.

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

  1. Create a survey configuration with a dynamic matrix question on a second page
  2. Preload some data with survey.data =
  3. Execute survey.pages[1].hasErrors(true), it will incorrectly return false

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

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

All three pages have errors (missing required fields). Click the "Validate - Click Me" button. Only pages 1 and 3 return hasErrors == true, page 2 returns false. Note that this behaved consistently in version 1.8.39 and stopped working in 1.8.40. If you fill in a value for question1 and proceed to page 2, clicking the "Validate - Click Me" button will now show page 2 hasErrors == true as expected.

Specify your

  • browser: Chrome
  • browser version: 95.0.4638.69
  • surveyjs platform (angular or react or jquery or knockout or vue): jQuery
  • surveyjs version: 1.8.76 (worked in 1.8.39, stopped working in 1.8.40)
Product
survey-library
Type
Bug
Description
TextValidator object is not serialized correctly

TextValidator serialized default values for minLength and maxLength and doesn't serialized allowDigits property at all.

  1. Drag Icon should be shown by hover just for indication that DnD is possible here

2.Whole item should be draggable but we need to differ drag start and click on actions (like in the toolbox)

Product
survey-creator
Type
Bug
Description
CV2: DnD: Empty Panel problem

When drag inside empty panel and then try to drag next to panel nothing happens. But drag indication should changed ( from green background to the orange strip )

Product
survey-creator
Type
Enhancement
Description
v2: DnD: refactoring: create IShortcutText

create IShortcutText interface and implement it in every drag drop consumer (for example survey-element or ItemValue) to make drag drop know less about the consumers

Version: v1.8.76, released at Wednesday, November 3, 2021, Total Issue Count: 13

Product Type Description
survey-library Enhancement Knockout: Performance issues with survey that has many pages with visibleIf logic

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

Bug / performance issue

What is the current behavior?

Imagine a survey with 40 pages, each having 20 questions. When the navigation mode is set to question per page mode the initial startup is very slow. Furthermore, any logic on a first page that hides one of the 40 initial pages now hides 20 pages; this magnification while expected makes it very slow very quickly.

What is the expected behavior?

While not all performance issues can be tackled easily and there will always be limits, logic handling should not block the UI. Currently what happens is a multiple choice option gets selected and the window freezes for 5+ seconds.

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

I can't provide the original survey (since it is not mine) but will look into create a big sample.

Solution

Several solutions exist, one simple one that'll work with a caveat is delaying evaluation of page visibileIf until a navigation event. This will break the live updates of the progress bar, but in these cases that could be acceptable. Another good solution is to move these calculations to a web worker, that way it happens asynchronously without blocking the main thread.

survey-library Enhancement Perform optimization on loading large JSON

There are several functions that doesn't performs well for large surveys, for example, survey.getComment, removing page with a lot of questions and some others.

survey-library Bug Progress text is incorrect for pages in design mode

We set the progress text in design mode always as: "Page 1 from N", but progress indicator takes into account the current page.

survey-creator Enhancement Property grid sections collapse after changing the selection object
survey-creator Enhancement Support responsive design - property panel
survey-creator Bug CV2: Logic tab broken font

image

survey-creator Enhancement Two clicks needed for the edition in CreatorV1
survey-creator Bug Add missed properties into english localization

We do not have all properties in english localization file. We need them to help translate them into other languages.

Here is a plunker code that checks missed strings in english translation.

survey-creator Enhancement CV2: designer tab responsive for mobile devices
survey-creator Bug CV2 React: throw exception if you go to the "Test" tab and return to the "Designer" tab in adaptive mode
survey-creator Bug CV2: Custom widget add question bug
  • Question type caption displayed wrongly.
  • Adding question raises the console error. image

https://surveyjs.answerdesk.io/ticket/details/t8078/custom-widgets-with-survey-creator-react-v2

survey-creator Enhancement V2: Allow dragging from the toolbox responsivity popup
survey-analytics Bug Histogram visualizer throws an error if question is used inside a matrixdropdown or matrixdynamic

In this case all inner questions are decorated with series:

    options.seriesValues = question.rows.map((row: ItemValue) => row.value);
    options.seriesLabels = question.rows.map((row: ItemValue) => row.text);

and this causes an exception in the histogram visualizer

Version: v1.8.76, released at Wednesday, November 3, 2021, Total Issue Count: 13

Product
survey-library
Type
Enhancement
Description
Knockout: Performance issues with survey that has many pages with visibleIf logic

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

Bug / performance issue

What is the current behavior?

Imagine a survey with 40 pages, each having 20 questions. When the navigation mode is set to question per page mode the initial startup is very slow. Furthermore, any logic on a first page that hides one of the 40 initial pages now hides 20 pages; this magnification while expected makes it very slow very quickly.

What is the expected behavior?

While not all performance issues can be tackled easily and there will always be limits, logic handling should not block the UI. Currently what happens is a multiple choice option gets selected and the window freezes for 5+ seconds.

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

I can't provide the original survey (since it is not mine) but will look into create a big sample.

Solution

Several solutions exist, one simple one that'll work with a caveat is delaying evaluation of page visibileIf until a navigation event. This will break the live updates of the progress bar, but in these cases that could be acceptable. Another good solution is to move these calculations to a web worker, that way it happens asynchronously without blocking the main thread.

Product
survey-library
Type
Enhancement
Description
Perform optimization on loading large JSON

There are several functions that doesn't performs well for large surveys, for example, survey.getComment, removing page with a lot of questions and some others.

Product
survey-library
Type
Bug
Description
Progress text is incorrect for pages in design mode

We set the progress text in design mode always as: "Page 1 from N", but progress indicator takes into account the current page.

Product
survey-creator
Type
Enhancement
Description
Property grid sections collapse after changing the selection object
Product
survey-creator
Type
Enhancement
Description
Support responsive design - property panel
Product
survey-creator
Type
Bug
Description
CV2: Logic tab broken font

image

Product
survey-creator
Type
Enhancement
Description
Two clicks needed for the edition in CreatorV1
Product
survey-creator
Type
Bug
Description
Add missed properties into english localization

We do not have all properties in english localization file. We need them to help translate them into other languages.

Here is a plunker code that checks missed strings in english translation.

Product
survey-creator
Type
Enhancement
Description
CV2: designer tab responsive for mobile devices
Product
survey-creator
Type
Bug
Description
CV2: Custom widget add question bug
  • Question type caption displayed wrongly.
  • Adding question raises the console error. image

https://surveyjs.answerdesk.io/ticket/details/t8078/custom-widgets-with-survey-creator-react-v2

Product
survey-creator
Type
Enhancement
Description
V2: Allow dragging from the toolbox responsivity popup

In this case all inner questions are decorated with series:

    options.seriesValues = question.rows.map((row: ItemValue) => row.value);
    options.seriesLabels = question.rows.map((row: ItemValue) => row.text);

and this causes an exception in the histogram visualizer

Version: v1.8.74, released at Wednesday, October 27, 2021, Total Issue Count: 20

Product Type Description
survey-library Bug parentQuestion property is null for questions in template panel in dynamic panel

parentQuestion property is null for questions in template panel and for questions in panels created by adding them into template panel in code. All questions in template and dynamic panels should have correct parentQuestion that equals to panel dynamic.

survey-library Enhancement New settings property itemValueAlwaysSerializeAsObject
  /**
   * Set it to true to serialize itemvalue instance always as object even if text property is empty
   * const item = new Survey.ItemValue(5);
   * item.toJSON(); //will return {value: 5}, instead of 5 by default.
   */
  itemValueAlwaysSerializeAsObject: false

The example of using: Survey.settings.itemValueAlwaysSerializeAsObject = true;

survey-library Bug String concatenation does not work if there is a point

If there is a "point" character in the string. Example: try { const r = m.runExpression('"p1. " + "p2"'); console.log('result: ', r); } catch (err) { console.log('error: ', err); }

survey-library Bug Avoid double timer event execution on running survey the second time

The following example doesn't work correctly. On running survey the second time, the timer executed twice on every second.

survey-library Bug marix dynamic allowRowsDragAndDrop doens't work if matrix has less then two columns

The following question JSON doesn't work:

        {
            name: 'names',
            type: 'matrixdynamic',
            valueName: "names",
            allowRowsDragAndDrop: true,
            columns: [
                {
                    cellType: 'text',
                    name: 'name',
                },
            ],
        }
survey-library Bug Expression sum([0.3, 0.6]) returns incorrect value

The expression "sum([0.3, 0.6])" returns 0.89999999999999999999 due the way JavaScript works with decimal values. We have to fix it.

survey-creator Enhancement Support responsive design - toolbox
survey-creator Enhancement Test tab: move some actions into toolbar.
survey-creator Bug If a Comment question's multiLine option is disabled, the defaultValue option's property editor cannot be invoked

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

Bug

What is the current behavior?

No ability to enter the default value for a Comment question if its Multi line option is disabled.

What is the expected behavior?

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

Open an example: https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=options&platform=ReactjsV2#content-result

Add a new Comment question to the Design surface. Uncheck the question's Multi line option in the Layout category within the Properties grid. Go to the Data category in the Properties grid and try to open an editor for the Default value property. No editor is invoked and exceptions occur in the Developer Tools' Console.

image

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

Tested page URL: https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=options&platform=ReactjsV2#content-result

survey-creator Enhancement Rename the Comment question's multiLine option and hide it in the Properties grid

We can rename the QuestionCommentModel.multiLine property to, say, acceptCarriageReturn one. This name seems to better describe what the property does (accepts pressing the Enter key by end-users and accepts carriage return symbols - \n - in the question value assigned).

It is also worth to hide this property in the Survey Creator's Properties grid - currently, no good use case comes to mind to make this property available there.
We can internally set this property to false just for the Survey Creator's Transcription tab to overcome #1739 originated from a user question (https://surveyjs.answerdesk.io/ticket/details/t7713).

survey-creator Bug CV2: Matrix remove button is displayed instead of "trash" in React Matrix Dynamic

Code to reproduce:

const creator = new SurveyCreator.SurveyCreator(options);

ReactDOM.render(
  <React.StrictMode>
    <SurveyCreator.SurveyCreatorComponent creator={creator} />
  </React.StrictMode>,
  document.getElementById("root")
);

creator.JSON = {
  elements: [
      {
          type: "matrixdynamic",
          name: "question1",
      }
  ]
};

https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=component-ordergrid&platform=ReactjsV2&theme=modern image

survey-creator Bug CV2: composite question asymmetry
survey-creator Bug List search doesn't react on uppercase letters

image

survey-creator Enhancement Add minWidth property into creator column properties

There is no way to setup "minWidth" property for matrices columns. We should add this property into column property grid.

survey-creator Bug CV2: String editor for question is enabled even if question set to readonly
survey-creator Bug Strings inside matrixdropdown question columns are editable

image

survey-creator Bug Creator v1: the survey logo has an incorrect position if the property Logo position set left value

image

survey-creator Bug Radio/Checkboxes bug on label renaming in Japanese
survey-pdf Bug Text in acroforms doesn't escape special symbols

For more information see the ticket in support center

survey-analytics Enhancement Export to excel or csv file contains html tags for question type file
Screenshot 2021-09-16 at 11 46 23 AM Screenshot 2021-09-16 at 12 01 46 PM

Version: v1.8.74, released at Wednesday, October 27, 2021, Total Issue Count: 20

parentQuestion property is null for questions in template panel and for questions in panels created by adding them into template panel in code. All questions in template and dynamic panels should have correct parentQuestion that equals to panel dynamic.

Product
survey-library
Type
Enhancement
Description
New settings property itemValueAlwaysSerializeAsObject
  /**
   * Set it to true to serialize itemvalue instance always as object even if text property is empty
   * const item = new Survey.ItemValue(5);
   * item.toJSON(); //will return {value: 5}, instead of 5 by default.
   */
  itemValueAlwaysSerializeAsObject: false

The example of using: Survey.settings.itemValueAlwaysSerializeAsObject = true;

Product
survey-library
Type
Bug
Description
String concatenation does not work if there is a point

If there is a "point" character in the string. Example: try { const r = m.runExpression('"p1. " + "p2"'); console.log('result: ', r); } catch (err) { console.log('error: ', err); }

Product
survey-library
Type
Bug
Description
Avoid double timer event execution on running survey the second time

The following example doesn't work correctly. On running survey the second time, the timer executed twice on every second.

The following question JSON doesn't work:

        {
            name: 'names',
            type: 'matrixdynamic',
            valueName: "names",
            allowRowsDragAndDrop: true,
            columns: [
                {
                    cellType: 'text',
                    name: 'name',
                },
            ],
        }
Product
survey-library
Type
Bug
Description
Expression sum([0.3, 0.6]) returns incorrect value

The expression "sum([0.3, 0.6])" returns 0.89999999999999999999 due the way JavaScript works with decimal values. We have to fix it.

Product
survey-creator
Type
Enhancement
Description
Support responsive design - toolbox
Product
survey-creator
Type
Enhancement
Description
Test tab: move some actions into toolbar.

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

Bug

What is the current behavior?

No ability to enter the default value for a Comment question if its Multi line option is disabled.

What is the expected behavior?

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

Open an example: https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=options&platform=ReactjsV2#content-result

Add a new Comment question to the Design surface. Uncheck the question's Multi line option in the Layout category within the Properties grid. Go to the Data category in the Properties grid and try to open an editor for the Default value property. No editor is invoked and exceptions occur in the Developer Tools' Console.

image

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

Tested page URL: https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=options&platform=ReactjsV2#content-result

Product
survey-creator
Type
Enhancement
Description
Rename the Comment question's multiLine option and hide it in the Properties grid

We can rename the QuestionCommentModel.multiLine property to, say, acceptCarriageReturn one. This name seems to better describe what the property does (accepts pressing the Enter key by end-users and accepts carriage return symbols - \n - in the question value assigned).

It is also worth to hide this property in the Survey Creator's Properties grid - currently, no good use case comes to mind to make this property available there.
We can internally set this property to false just for the Survey Creator's Transcription tab to overcome #1739 originated from a user question (https://surveyjs.answerdesk.io/ticket/details/t7713).

Code to reproduce:

const creator = new SurveyCreator.SurveyCreator(options);

ReactDOM.render(
  <React.StrictMode>
    <SurveyCreator.SurveyCreatorComponent creator={creator} />
  </React.StrictMode>,
  document.getElementById("root")
);

creator.JSON = {
  elements: [
      {
          type: "matrixdynamic",
          name: "question1",
      }
  ]
};

https://surveyjstest.azurewebsites.net/Examples/Survey-Creator?id=component-ordergrid&platform=ReactjsV2&theme=modern image

Product
survey-creator
Type
Bug
Description
CV2: composite question asymmetry
Product
survey-creator
Type
Bug
Description
List search doesn't react on uppercase letters

image

Product
survey-creator
Type
Enhancement
Description
Add minWidth property into creator column properties

There is no way to setup "minWidth" property for matrices columns. We should add this property into column property grid.

Product
survey-creator
Type
Bug
Description
Strings inside matrixdropdown question columns are editable

image

image

Product
survey-creator
Type
Bug
Description
Radio/Checkboxes bug on label renaming in Japanese
Product
survey-pdf
Type
Bug
Description
Text in acroforms doesn't escape special symbols

For more information see the ticket in support center

Product
survey-analytics
Type
Enhancement
Description
Export to excel or csv file contains html tags for question type file
Screenshot 2021-09-16 at 11 46 23 AM Screenshot 2021-09-16 at 12 01 46 PM

Version: v1.8.73, released at Thursday, October 21, 2021, Total Issue Count: 28

Product Type Description
survey-library Enhancement Implement "width mode" option for survey

Needed to show wide surveys both in Survey and Creator.

  1. Add option to library - fixed, responsive, auto (default) - S
  2. Implement actual width estimation for survey -L
  3. Support option in Creator - S
survey-library Bug Typescript error with release 1.8.72

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

Bug

What is the current behavior?

Error when building for production

Error: node_modules/survey-angular/survey.angular.d.ts:8:1 - error TS1046: Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.

8 const innerKo: any;

What is the expected behavior?

Should succeed when building for production

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

run

ng build

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

Tested page URL:

Test code

your_code_here

Specify your

  • surveyjs platform (angular or react or jquery or knockout or vue): angular-survey
  • surveyjs version: 1.8.72
survey-library Enhancement Implement actual width estimation for survey
survey-library Bug We should not set question title value if it equals to question name

If a question has name "question1" on calling question.title = "question1" we should not set question title value to "question1" since it took the default value from question.name anyway. The bug was found during testing Creator V2. Here is the scenario:

question.name = "question1";
//question title will be rendered as question1 now, if it is empty
question.title = "question1";
question.name = "question2";
//question title renders as question1 now and it leads to confusions.
survey-library Enhancement Modify drag-drop behavior for CV2

Solve "startWithNewLine" problem

survey-library Enhancement beginUpdate()/endUpdate() function for dynamic and dropdown matrices

If a matrix has been already rendered and you need to make several changes: add/remove several columns, modify column cell types, add/remove rows and so on, it would trigger multiple changes and re-rendering. In this case, to improve the performance you can use beginUpdate() and endUpdate() functions. For example:

questionMatrix.beginUpdate();
questionMatrix.columns.splice(0, 1);
questionMatrix.columns[1].cellType = "text";
questionMatrix.addColumn("col4");
questionMatrix.rowCount = 5;
questionMatrix.endUpdate();

We need this functionality for Creator V2, translation tab. We have to modify hundreds matrices and without this functionality the performance is bad.

survey-library Bug @property doesn't work correctly with defaultValue for localizable strings

We can't use defaultValue for declearing localizable properties. A new attribute defaultStr has been introduced. Here is the example of using:

@property({ localizable: { defaultStr: "confirmRemoveFile" } }) confirmRemoveMessage: string;

This code will create localizable property and get the default value from localizable strings using the function in the gettter, istead of setting the default value from localization property on creating object.

survey-library Bug Knockout: Custom widget in matrices

SurveyJS in knockout pass incorrect root element into custom widget. It is a td, instead of div element inside this td element. It works correctly in react and vue.

survey-library Bug CV2: Matrix (multiply choice, dynamic) do not make widthMode=responsive
survey-creator Enhancement v2: Implement Delete key shortcut
survey-creator Bug v2: ImagePicker labels are nor editable with string editor - implement drag icon

No string editor hover. image

survey-creator Bug v2: Image Picker - broken drag-n-drop in items
survey-creator Bug v2: Creator fails if showDesignerTab is set to false
survey-creator Bug v2: Ranking DnD broken fonts

image

survey-creator Bug v2: Image Picker drop line should be vertical

image

survey-creator Bug v2: Question blinks while drag another question over it

Steps: Catch second question on page Drag it over first question When mouse is above the middle of first question, first question blinks

survey-creator Bug v2: Broken DnD when "startWithNewLine"

image

  • react: question duplicate after drop
  • scroll doesn't work
  • auto change startWithNewLine property according to DnD position
survey-creator Bug v2: Page and Question "hover" line should differ from selection by color and have the same width

image

survey-creator Bug v2: DnD should not react on right mouse click
survey-creator Bug Scroll while DnD sometimes doesn't work properly

should detect the "scrollable parent" better

survey-creator Enhancement Support survey width option in Creator
survey-creator Bug V2: Fix Property grid customization in React

image

survey-creator Enhancement V2: Implement Property grid customization in Knockout
survey-analytics Bug Support filtering for questions with complex structure (matrices)
survey-analytics Enhancement support "Bar" graph for the datetime questions
survey-analytics Bug Tabulator: cyrillic is displayed incorrectly when exporting to pdf
survey-analytics Enhancement Text question: number and date types - implement histogram visualizer

We need to implement histogram calculation and visualization for number and date types: how many surveyees select the certain date or number (e.g. number is one's age)

Options to implement:

  • min/max values - auto and set
  • intervals - auto and set
  • labels for intervals
custom-widgets Bug Easy-autocomplete doesn't work correctly with choicesByUrl

It doesn't work correctly when object returns from a web service.

Version: v1.8.73, released at Thursday, October 21, 2021, Total Issue Count: 28

Product
survey-library
Type
Enhancement
Description
Implement "width mode" option for survey

Needed to show wide surveys both in Survey and Creator.

  1. Add option to library - fixed, responsive, auto (default) - S
  2. Implement actual width estimation for survey -L
  3. Support option in Creator - S
Product
survey-library
Type
Bug
Description
Typescript error with release 1.8.72

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

Bug

What is the current behavior?

Error when building for production

Error: node_modules/survey-angular/survey.angular.d.ts:8:1 - error TS1046: Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.

8 const innerKo: any;

What is the expected behavior?

Should succeed when building for production

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

run

ng build

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

Tested page URL:

Test code

your_code_here

Specify your

  • surveyjs platform (angular or react or jquery or knockout or vue): angular-survey
  • surveyjs version: 1.8.72
Product
survey-library
Type
Enhancement
Description
Implement actual width estimation for survey
Product
survey-library
Type
Bug
Description
We should not set question title value if it equals to question name

If a question has name "question1" on calling question.title = "question1" we should not set question title value to "question1" since it took the default value from question.name anyway. The bug was found during testing Creator V2. Here is the scenario:

question.name = "question1";
//question title will be rendered as question1 now, if it is empty
question.title = "question1";
question.name = "question2";
//question title renders as question1 now and it leads to confusions.
Product
survey-library
Type
Enhancement
Description
Modify drag-drop behavior for CV2

Solve "startWithNewLine" problem

Product
survey-library
Type
Enhancement
Description
beginUpdate()/endUpdate() function for dynamic and dropdown matrices

If a matrix has been already rendered and you need to make several changes: add/remove several columns, modify column cell types, add/remove rows and so on, it would trigger multiple changes and re-rendering. In this case, to improve the performance you can use beginUpdate() and endUpdate() functions. For example:

questionMatrix.beginUpdate();
questionMatrix.columns.splice(0, 1);
questionMatrix.columns[1].cellType = "text";
questionMatrix.addColumn("col4");
questionMatrix.rowCount = 5;
questionMatrix.endUpdate();

We need this functionality for Creator V2, translation tab. We have to modify hundreds matrices and without this functionality the performance is bad.

We can't use defaultValue for declearing localizable properties. A new attribute defaultStr has been introduced. Here is the example of using:

@property({ localizable: { defaultStr: "confirmRemoveFile" } }) confirmRemoveMessage: string;

This code will create localizable property and get the default value from localizable strings using the function in the gettter, istead of setting the default value from localization property on creating object.

Product
survey-library
Type
Bug
Description
Knockout: Custom widget in matrices

SurveyJS in knockout pass incorrect root element into custom widget. It is a td, instead of div element inside this td element. It works correctly in react and vue.

Product
survey-creator
Type
Enhancement
Description
v2: Implement Delete key shortcut

No string editor hover. image

Product
survey-creator
Type
Bug
Description
v2: Image Picker - broken drag-n-drop in items
Product
survey-creator
Type
Bug
Description
v2: Creator fails if showDesignerTab is set to false
Product
survey-creator
Type
Bug
Description
v2: Ranking DnD broken fonts

image

Product
survey-creator
Type
Bug
Description
v2: Image Picker drop line should be vertical

image

Product
survey-creator
Type
Bug
Description
v2: Question blinks while drag another question over it

Steps: Catch second question on page Drag it over first question When mouse is above the middle of first question, first question blinks

Product
survey-creator
Type
Bug
Description
v2: Broken DnD when "startWithNewLine"

image

  • react: question duplicate after drop
  • scroll doesn't work
  • auto change startWithNewLine property according to DnD position

image

Product
survey-creator
Type
Bug
Description
v2: DnD should not react on right mouse click
Product
survey-creator
Type
Bug
Description
Scroll while DnD sometimes doesn't work properly

should detect the "scrollable parent" better

Product
survey-creator
Type
Enhancement
Description
Support survey width option in Creator
Product
survey-creator
Type
Bug
Description
V2: Fix Property grid customization in React

image

Product
survey-creator
Type
Enhancement
Description
V2: Implement Property grid customization in Knockout
Product
survey-analytics
Type
Bug
Description
Support filtering for questions with complex structure (matrices)
Product
survey-analytics
Type
Enhancement
Description
support "Bar" graph for the datetime questions
Product
survey-analytics
Type
Bug
Description
Tabulator: cyrillic is displayed incorrectly when exporting to pdf
Product
survey-analytics
Type
Enhancement
Description
Text question: number and date types - implement histogram visualizer

We need to implement histogram calculation and visualization for number and date types: how many surveyees select the certain date or number (e.g. number is one's age)

Options to implement:

  • min/max values - auto and set
  • intervals - auto and set
  • labels for intervals
Product
custom-widgets
Type
Bug
Description
Easy-autocomplete doesn't work correctly with choicesByUrl

It doesn't work correctly when object returns from a web service.

Version: v1.8.72, released at Tuesday, October 12, 2021, Total Issue Count: 10

Product Type Description
survey-library Enhancement Change Default Error Required Text (make it more English)

Base proposal is to change: "Please answer the question." to "Response required."

we have the following props:

  requiredError: "Please answer the question.",
  requiredErrorInPanel: "Please answer at least one question.",
  requiredInAllRowsError: "Please answer questions in all rows.",

Here the src: https://github.com/surveyjs/survey-library/blob/4084fc31e0773980d4a7621eb3d79ba4354172e8/src/localization/english.ts#L24

Another potential candidate is the following prop:

  otherRequiredError: "Please enter the other value.",
survey-library Bug react: content question in custom question (component) is not reactive

The following component doesn't work in react.

Survey
    .ComponentCollection
    .Instance
    .add({
        //Unique component name. It becomes a new question type. Please note, it should be written in lowercase.
        name: "country",
        //The text that shows on toolbox
        title: "Country",
        //The actual question that will do the job
        questionJSON: {
            type: "dropdown",
            optionsCaption: "Select a country...",
            choicesByUrl: {
                url: "https://surveyjs.io/api/CountriesExample"
            }
        }
    });    

On loading choices from web, content question changed "visibleChoices" property, but content question is not reactive and nothing is changed.

survey-library Bug Do not run triggers in display mode

SurveyJS continue to run triggers in display mode (survey.mode="display"). All triggers should be disabled.

survey-library Bug Wrong render for footer actions in matrix with vertical columns

image

survey-library Bug "Preview before complete" setting being ignored when auto navigating from completed pages

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

Reporting a bug

What is the current behavior?

Currently when you have the following options set on the survey. It will auto navigate to the next page after completing the questions and submit the data, but on the final page it won't respect the preview setting, and instead will go straight to completing the survey once the final question has been answered.

{
  "sendResultOnPageNext": true,
  "goNextPageAutomatic": true,
  "showPreviewBeforeComplete": "showAnsweredQuestions"
}

What is the expected behavior?

I would expect one of two behaviours

  1. Submits nothing, and proceeds to the preview. It then fires the onComplete event when the user clicks complete.
  2. Fires of an onPartialSend event to save the current answer state, and proceeds to the preview. Then fires onComplete when the user clicks complete.

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

Using react-survey v1.8.71 I am able to recreate this behaviour using this simple survey JSON.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "radiogroup",
     "name": "question1",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  },
  {
   "name": "page2",
   "elements": [
    {
     "type": "checkbox",
     "name": "question2",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  },
  {
   "name": "page3",
   "elements": [
    {
     "type": "radiogroup",
     "name": "question3",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  }
 ],
 "sendResultOnPageNext": true,
 "goNextPageAutomatic": true,
 "showPreviewBeforeComplete": "showAnsweredQuestions"
}

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

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

Specify your

  • browser: Brave
  • browser version: Version 1.30.87 Chromium: 94.0.4606.71 (Official Build) (64-bit)
  • surveyjs platform (angular or react or jquery or knockout or vue): react
  • surveyjs version: 1.8.71
survey-library Bug maxSize property is serializied with default value in file question

The following code should show in console {name: "q1"}.

const fileQuestion = new Survey.QuestionFile("q1");
console.log(fileQuestion.toJSON());

However it shows: {name: "q1", maxSize: 0}. maxSize should not be here.

survey-library Enhancement add isEqual() function into condition Operand class

We need the way to compare two expressions. These two expressions are equal: " == 1" and "=1", but we can't compare them as strings. It could be checked as:

const op1 = new ConditionsParser().parseExpression("{queston1} ==   1");
const op2 = new ConditionsParser().parseExpression("{queston1} =1");
console.log(op1.isEqual(op2)); //it returns true
survey-library Enhancement Cannot find module knockout

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

Bug

What is the current behavior?

Compiler is crashing with survey-angular 1.8.71. The older version 1.8.68 was working fine.

Error: node_modules/survey-angular/survey.angular.d.ts:9:21 - error TS2307: Cannot find module 'knockout' or its corresponding type declarations.

9 import * as ko from "knockout";

What is the expected behavior?

Compiler should not crash

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

Use survey-angular and compile your project.

Specify your

  • browser: Chrome
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): angular
  • surveyjs version: 1.8.71
survey-library Enhancement Add survey onVariableChanged event
  /**
   * The event is fired when setVariable function is called. It can be called on changing a calculated value.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.name` - the variable name that has been changed.
   * <br/> `options.value` - a new value.
   * @see setVariable
   * @see onValueChanged
   * @see calculatedValues
   */
  public onVariableChanged: EventBase<SurveyModel> = this.addEvent<SurveyModel>();

survey-library Enhancement Add ability to customize css classes for an individual choice item

We do not have an easy way to override css classes for an individual choice item.

  /**
   * The event is fired before rendering a choice item in radiogroup, checkbox or dropdown questions. Use it to override the default choice item css.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - a question where choice item is rendered.
   * <br/> `options.item` - a choice item of ItemValue type. You can get value or text choice properties as options.item.value or options.item.text
   * <br/> `options.css` - a string with css classes divided by space. You can change it.
   */
   public onUpdateChoiceItemCss: EventBase<SurveyModel>

Here is the example of using. The example adds a new class for a negative values:

survey.onUpdateChoiceItemCss.add((sender, options) => {
    if(options.item.value < 0) {
      options.css = options.css + " negative_value";
    }
});

Version: v1.8.72, released at Tuesday, October 12, 2021, Total Issue Count: 10

Product
survey-library
Type
Enhancement
Description
Change Default Error Required Text (make it more English)

Base proposal is to change: "Please answer the question." to "Response required."

we have the following props:

  requiredError: "Please answer the question.",
  requiredErrorInPanel: "Please answer at least one question.",
  requiredInAllRowsError: "Please answer questions in all rows.",

Here the src: https://github.com/surveyjs/survey-library/blob/4084fc31e0773980d4a7621eb3d79ba4354172e8/src/localization/english.ts#L24

Another potential candidate is the following prop:

  otherRequiredError: "Please enter the other value.",

The following component doesn't work in react.

Survey
    .ComponentCollection
    .Instance
    .add({
        //Unique component name. It becomes a new question type. Please note, it should be written in lowercase.
        name: "country",
        //The text that shows on toolbox
        title: "Country",
        //The actual question that will do the job
        questionJSON: {
            type: "dropdown",
            optionsCaption: "Select a country...",
            choicesByUrl: {
                url: "https://surveyjs.io/api/CountriesExample"
            }
        }
    });    

On loading choices from web, content question changed "visibleChoices" property, but content question is not reactive and nothing is changed.

Product
survey-library
Type
Bug
Description
Do not run triggers in display mode

SurveyJS continue to run triggers in display mode (survey.mode="display"). All triggers should be disabled.

Product
survey-library
Type
Bug
Description
Wrong render for footer actions in matrix with vertical columns

image

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

Reporting a bug

What is the current behavior?

Currently when you have the following options set on the survey. It will auto navigate to the next page after completing the questions and submit the data, but on the final page it won't respect the preview setting, and instead will go straight to completing the survey once the final question has been answered.

{
  "sendResultOnPageNext": true,
  "goNextPageAutomatic": true,
  "showPreviewBeforeComplete": "showAnsweredQuestions"
}

What is the expected behavior?

I would expect one of two behaviours

  1. Submits nothing, and proceeds to the preview. It then fires the onComplete event when the user clicks complete.
  2. Fires of an onPartialSend event to save the current answer state, and proceeds to the preview. Then fires onComplete when the user clicks complete.

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

Using react-survey v1.8.71 I am able to recreate this behaviour using this simple survey JSON.

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "radiogroup",
     "name": "question1",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  },
  {
   "name": "page2",
   "elements": [
    {
     "type": "checkbox",
     "name": "question2",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  },
  {
   "name": "page3",
   "elements": [
    {
     "type": "radiogroup",
     "name": "question3",
     "choices": [
      "item1",
      "item2",
      "item3"
     ]
    }
   ]
  }
 ],
 "sendResultOnPageNext": true,
 "goNextPageAutomatic": true,
 "showPreviewBeforeComplete": "showAnsweredQuestions"
}

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

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

Specify your

  • browser: Brave
  • browser version: Version 1.30.87 Chromium: 94.0.4606.71 (Official Build) (64-bit)
  • surveyjs platform (angular or react or jquery or knockout or vue): react
  • surveyjs version: 1.8.71
Product
survey-library
Type
Bug
Description
maxSize property is serializied with default value in file question

The following code should show in console {name: "q1"}.

const fileQuestion = new Survey.QuestionFile("q1");
console.log(fileQuestion.toJSON());

However it shows: {name: "q1", maxSize: 0}. maxSize should not be here.

Product
survey-library
Type
Enhancement
Description
add isEqual() function into condition Operand class

We need the way to compare two expressions. These two expressions are equal: " == 1" and "=1", but we can't compare them as strings. It could be checked as:

const op1 = new ConditionsParser().parseExpression("{queston1} ==   1");
const op2 = new ConditionsParser().parseExpression("{queston1} =1");
console.log(op1.isEqual(op2)); //it returns true
Product
survey-library
Type
Enhancement
Description
Cannot find module knockout

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

Bug

What is the current behavior?

Compiler is crashing with survey-angular 1.8.71. The older version 1.8.68 was working fine.

Error: node_modules/survey-angular/survey.angular.d.ts:9:21 - error TS2307: Cannot find module 'knockout' or its corresponding type declarations.

9 import * as ko from "knockout";

What is the expected behavior?

Compiler should not crash

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

Use survey-angular and compile your project.

Specify your

  • browser: Chrome
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): angular
  • surveyjs version: 1.8.71
Product
survey-library
Type
Enhancement
Description
Add survey onVariableChanged event
  /**
   * The event is fired when setVariable function is called. It can be called on changing a calculated value.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.name` - the variable name that has been changed.
   * <br/> `options.value` - a new value.
   * @see setVariable
   * @see onValueChanged
   * @see calculatedValues
   */
  public onVariableChanged: EventBase<SurveyModel> = this.addEvent<SurveyModel>();

Product
survey-library
Type
Enhancement
Description
Add ability to customize css classes for an individual choice item

We do not have an easy way to override css classes for an individual choice item.

  /**
   * The event is fired before rendering a choice item in radiogroup, checkbox or dropdown questions. Use it to override the default choice item css.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - a question where choice item is rendered.
   * <br/> `options.item` - a choice item of ItemValue type. You can get value or text choice properties as options.item.value or options.item.text
   * <br/> `options.css` - a string with css classes divided by space. You can change it.
   */
   public onUpdateChoiceItemCss: EventBase<SurveyModel>

Here is the example of using. The example adds a new class for a negative values:

survey.onUpdateChoiceItemCss.add((sender, options) => {
    if(options.item.value < 0) {
      options.css = options.css + " negative_value";
    }
});

Version: v1.8.71, released at Thursday, October 7, 2021, Total Issue Count: 12

Product Type Description
survey-library Enhancement Warn if value is set in a disposed object
protected setPropertyValueCore(propertiesHash: any, name: string, val: any) {
    if (this.setPropertyValueCoreHandler) {
      if (!this.isDisposedValue) {
        this.setPropertyValueCoreHandler(propertiesHash, name, val);
      } else {
        // eslint-disable-next-line no-console
        console.warn("Attempt to set property '%s' of a disposed object %o", name, this);
      }
    }
    else propertiesHash[name] = val;
  }
survey-library Bug knockout: Refactor row rendering, use visibleElements

Use visibleElements in rendering instead of "elements" and "element.isVisible" property. It fixes the issue in Creator V2 and we use "visibleElements" in React and Vue.

survey-library Enhancement Introduce skeleton placeholder for lazy rendered rows

This will allow to have adequate scrollbar state for long surveys with invisible elements. Sometimes small scrollers lead to misunderstanding whether a view has another elements below view port.

See also https://github.com/surveyjs/survey-creator/issues/1822

survey-library Enhancement Add ability to have different question types in a column in matrices (dynamic/dropdown)

Introduce the following new event into Survey.

  /**
   * The event is fired before creating cell question in the matrix. You can change the cell question type by setting different options.cellType.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - the matrix question.
   * <br/> `options.cellType` - the cell question type. You can change it.
   * <br/> `options.rowValue` - the value of the current row. To access a particular column's value within the current row, use: `options.rowValue["columnValue"]`.
   * <br/> `options.column` - the matrix column object.
   * <br/> `options.columnName` - the matrix column name.
   * <br/> `options.row` - the matrix row object.
   * @see onMatrixBeforeRowAdded
   * @see onMatrixCellCreated
   * @see QuestionMatrixDynamicModel
   * @see QuestionMatrixDropdownModel
   */
   public onMatrixCellCreating: EventBase<SurveyModel>

Example of using in "bloodtest" dropdown matrix :

//Create "text" question for several rows in "value" column
survey.onMatrixCellCreating.add((sender, options) => {
  if(options.question.name !== "bloodtest" && options.column.name !== "value") return;
  //The default cellType is dropdown, we need text type for several rows.
  if(["Hemoglobin", "Ultrasound"].indexOf(options.row.rowName) > -1) {
     options.cellType = "text";
  }
});
//Setup cell questions after their creation
survey.onMatrixCellCreated.add((sender, options) => {
  if(options.question.name !== "bloodtest" && options.column.name !== "value") return;
  if(options.row.rowName == "Vitamin level") options.cellQuestion.choices = ["level 1", "level 2", "level 3"];
  if(options.row.rowName == "kidney") options.cellQuestion.choices = ["normal", "abnormal", "positive", "negative"];
});
survey-library Enhancement Hide selectAllText property for checkbox question if hasSelectAll is false

We need to add visibleIf attribute for "selectAllText" property to hide it if "hasSelectAll" property is false.

survey-library Bug survey-vue warnings: "Duplicate keys detected: 'nav1'

for an app developed last year, without significant changes to our code, since updating survey-vue from 1.8.13 to 1.8.70 these messages have started to appear in the console log:

vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: 'nav1'. This may cause an update error.

found in

---> <Survey> at src/vue/survey.vue
       <Survey> at src/pages/Survey.vue
         <App> at src/App.vue
           <Root>

the messages cause no harm (the app works well)

we tried a naÏve fix by adding distinct id fields in the page array objects in the survey config JSON, but that did not help

we can share the code in a DM (its open source although not yet on a public repo) or bisect it to a narrower version range ...

survey-library Enhancement Introduce updater for dependent model properties

Sometimes model properties are calculated from other model properties from the same or other objects. In this case we need to subscribe their changes using the onPropertyChanged event or registerFunctionOnPropertyValueChanged method. I'd like to simplify this and create a helper object incapsulating this functionality:

  const base1 = new BaseTester1();
  const base2 = new BaseTester2();
  const base3 = new BaseTester3();
  const updater = new ComputedUpdater<number>(() => {
    return base1.propA + base2.propB;
  });
  base3.propC = <any>updater;
survey-library Bug Expression "3 * 0.6" returns incorrect value

We are using JavaScript floating operation and it doesn't work as expected. Here is the related issue, Our expression engine should fix it manually.

survey-library Bug Update comment and other text html element value after trimming

SurveyJS trim the question comment and other text. However, html element, text area still have white spaces. These spaces should be disappeared on loosing text area element focus.

survey-library Bug Matrix dropdown question getDisplayText doesn't work for filtered rows

If rows are filtered in matrix dropdown then "getDisplayText" function returns incorrect value. It leads to errors in text pre-processing.

survey-creator Bug V1: question page property doesn't work in modal question editor

Creator with option showElementEditorAsPropertyGrid: false, when question editor shows as a modal window, changing question page property doesn't work. The bug was initially created in SurveyJS Support Forum.

survey-creator Bug Condition editor does not work after re-open in modal window with tabs

Version: v1.8.71, released at Thursday, October 7, 2021, Total Issue Count: 12

Product
survey-library
Type
Enhancement
Description
Warn if value is set in a disposed object
protected setPropertyValueCore(propertiesHash: any, name: string, val: any) {
    if (this.setPropertyValueCoreHandler) {
      if (!this.isDisposedValue) {
        this.setPropertyValueCoreHandler(propertiesHash, name, val);
      } else {
        // eslint-disable-next-line no-console
        console.warn("Attempt to set property '%s' of a disposed object %o", name, this);
      }
    }
    else propertiesHash[name] = val;
  }
Product
survey-library
Type
Bug
Description
knockout: Refactor row rendering, use visibleElements

Use visibleElements in rendering instead of "elements" and "element.isVisible" property. It fixes the issue in Creator V2 and we use "visibleElements" in React and Vue.

Product
survey-library
Type
Enhancement
Description
Introduce skeleton placeholder for lazy rendered rows

This will allow to have adequate scrollbar state for long surveys with invisible elements. Sometimes small scrollers lead to misunderstanding whether a view has another elements below view port.

See also https://github.com/surveyjs/survey-creator/issues/1822

Introduce the following new event into Survey.

  /**
   * The event is fired before creating cell question in the matrix. You can change the cell question type by setting different options.cellType.
   * <br/> `sender` - the survey object that fires the event.
   * <br/> `options.question` - the matrix question.
   * <br/> `options.cellType` - the cell question type. You can change it.
   * <br/> `options.rowValue` - the value of the current row. To access a particular column's value within the current row, use: `options.rowValue["columnValue"]`.
   * <br/> `options.column` - the matrix column object.
   * <br/> `options.columnName` - the matrix column name.
   * <br/> `options.row` - the matrix row object.
   * @see onMatrixBeforeRowAdded
   * @see onMatrixCellCreated
   * @see QuestionMatrixDynamicModel
   * @see QuestionMatrixDropdownModel
   */
   public onMatrixCellCreating: EventBase<SurveyModel>

Example of using in "bloodtest" dropdown matrix :

//Create "text" question for several rows in "value" column
survey.onMatrixCellCreating.add((sender, options) => {
  if(options.question.name !== "bloodtest" && options.column.name !== "value") return;
  //The default cellType is dropdown, we need text type for several rows.
  if(["Hemoglobin", "Ultrasound"].indexOf(options.row.rowName) > -1) {
     options.cellType = "text";
  }
});
//Setup cell questions after their creation
survey.onMatrixCellCreated.add((sender, options) => {
  if(options.question.name !== "bloodtest" && options.column.name !== "value") return;
  if(options.row.rowName == "Vitamin level") options.cellQuestion.choices = ["level 1", "level 2", "level 3"];
  if(options.row.rowName == "kidney") options.cellQuestion.choices = ["normal", "abnormal", "positive", "negative"];
});
Product
survey-library
Type
Enhancement
Description
Hide selectAllText property for checkbox question if hasSelectAll is false

We need to add visibleIf attribute for "selectAllText" property to hide it if "hasSelectAll" property is false.

Product
survey-library
Type
Bug
Description
survey-vue warnings: "Duplicate keys detected: 'nav1'

for an app developed last year, without significant changes to our code, since updating survey-vue from 1.8.13 to 1.8.70 these messages have started to appear in the console log:

vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: 'nav1'. This may cause an update error.

found in

---> <Survey> at src/vue/survey.vue
       <Survey> at src/pages/Survey.vue
         <App> at src/App.vue
           <Root>

the messages cause no harm (the app works well)

we tried a naÏve fix by adding distinct id fields in the page array objects in the survey config JSON, but that did not help

we can share the code in a DM (its open source although not yet on a public repo) or bisect it to a narrower version range ...

Product
survey-library
Type
Enhancement
Description
Introduce updater for dependent model properties

Sometimes model properties are calculated from other model properties from the same or other objects. In this case we need to subscribe their changes using the onPropertyChanged event or registerFunctionOnPropertyValueChanged method. I'd like to simplify this and create a helper object incapsulating this functionality:

  const base1 = new BaseTester1();
  const base2 = new BaseTester2();
  const base3 = new BaseTester3();
  const updater = new ComputedUpdater<number>(() => {
    return base1.propA + base2.propB;
  });
  base3.propC = <any>updater;
Product
survey-library
Type
Bug
Description
Expression "3 * 0.6" returns incorrect value

We are using JavaScript floating operation and it doesn't work as expected. Here is the related issue, Our expression engine should fix it manually.

Product
survey-library
Type
Bug
Description
Update comment and other text html element value after trimming

SurveyJS trim the question comment and other text. However, html element, text area still have white spaces. These spaces should be disappeared on loosing text area element focus.

If rows are filtered in matrix dropdown then "getDisplayText" function returns incorrect value. It leads to errors in text pre-processing.

Product
survey-creator
Type
Bug
Description
V1: question page property doesn't work in modal question editor

Creator with option showElementEditorAsPropertyGrid: false, when question editor shows as a modal window, changing question page property doesn't work. The bug was initially created in SurveyJS Support Forum.

Version: v1.8.70, released at Wednesday, September 29, 2021, Total Issue Count: 2

Product Type Description
survey-library Bug Localization strings returns internal object on getJson()

LocalizationStrings class should return copy of it's object on "getJson()" function. Otherwise, on changing this object, developer can change internal value of LocalizationStrings instance.

survey-creator Bug Cannot Delete Ranking Question

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

Once we add a Ranking Question, Not able to delete it which is blocking the entire survey

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

Add A Ranking Question and Try to Delete it

Screenshots

image

Where in other Questions have the option to delete that question

image

Version: v1.8.70, released at Wednesday, September 29, 2021, Total Issue Count: 2

Product
survey-library
Type
Bug
Description
Localization strings returns internal object on getJson()

LocalizationStrings class should return copy of it's object on "getJson()" function. Otherwise, on changing this object, developer can change internal value of LocalizationStrings instance.

Product
survey-creator
Type
Bug
Description
Cannot Delete Ranking Question

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

Once we add a Ranking Question, Not able to delete it which is blocking the entire survey

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

Add A Ranking Question and Try to Delete it

Screenshots

image

Where in other Questions have the option to delete that question

image

Version: v1.8.69, released at Tuesday, September 28, 2021, Total Issue Count: 14

Product Type Description
survey-library Bug Detail panel is not read-only when matrix is read-only

Detail panel should react on changing it's matrix question "isReadOnly" property as well as cell questions do.

survey-library Bug Signagure pad internally uses valueChangedCallback

We shoud not use valueChangedCallback internally in our code, since it can be overriden in custom widgets and components.

survey-library Enhancement Introduce createItemValue into base select class

We need "createItemValue" function that will create a correct item value to avoid code duplication in Library and Creator V2. This function only creates a correct ItemValue class and do not add it into choices.

survey-library Bug survey.prevPage() function never returns true

survey.prevPage() function returns undefined instead of true.

survey-library Bug placeHolder is not rendered for items in Multiple Text questions

On loading the json like this:

{
    elements: [
      {
        type: "multipletext", name: "q1",
        items: [
          { name: "item1", placeHolder: "place holder" }
        ]
      }
    ]
  }

text question "renderedPlaceHolder" is not updated and equals to undefined.

survey-library Bug text question dataList can return undefined

The following JSON will generate exception on rendering, if survey.locale is not "fr". text question "dataList" property will return undefined instead of empty array.

{
 elements: [  {
     "type": "text",
     "name": "Question1",
     "dataList": {
      "fr": [
       "French DL-1, French DL-2"
      ]
     }
    } ]}
survey-library Bug Navigation issue with onProgressText callback and questionOrder - random

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

Reporting a bug.

What is the current behavior?

Add a listener to the onProgressText event. And suppose there are three pages and the questionOrder on page three is random. Then navigating with the next button from the second page is taking the user to the first page.

What is the expected behavior?

The next button on the second page should navigate to the third page.

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

plunker

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

Tested page URL: https://plnkr.co/edit/8R5rxSF456JD1mbf

Maybe checking SurveyModel.prototype.updateProgressText can help

Specify your

  • browser: chrome
  • browser version: 93
  • surveyjs platform (angular or react or jquery or knockout or vue): react
  • surveyjs version: 1.8.68
survey-library Bug React: Text question input doesn't respect "Enter" key
survey-library Bug On changing text question dataList onPropertyChanged is not fired

Bug was found on testing Creator V2. We do not update dataList property editor value on changing this property in code. The reason - onPropertyChanged event is not fired.

survey-creator Bug Object selector dropdown looks ugly
survey-creator Bug focused outline visible while hovering a toolbox item in V2

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

Reporting a bug.

What is the current behavior?

Hovering on a focused toolbox item does not obscure the outline.

What is the expected behavior?

The outline should not be visible.

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

hover on focused item

Specify your

  • browser: chrome 93
  • editor version: 1.8.66

image

survey-creator Bug CreatorV2: Question Editor align issue
survey-creator Bug Modal properties window strangely displayed dropdown properties

This bug can be reproduced in creator v1 by setting showElementEditorAsPropertyGrid option to false

image

custom-widgets Bug tagbox doesn't remove items if value is number

Tagbox store value internally as string and as result indexof by question.value as array of number always return -1. We should not use indexof and write a custom code.

Version: v1.8.69, released at Tuesday, September 28, 2021, Total Issue Count: 14

Product
survey-library
Type
Bug
Description
Detail panel is not read-only when matrix is read-only

Detail panel should react on changing it's matrix question "isReadOnly" property as well as cell questions do.

Product
survey-library
Type
Bug
Description
Signagure pad internally uses valueChangedCallback

We shoud not use valueChangedCallback internally in our code, since it can be overriden in custom widgets and components.

Product
survey-library
Type
Enhancement
Description
Introduce createItemValue into base select class

We need "createItemValue" function that will create a correct item value to avoid code duplication in Library and Creator V2. This function only creates a correct ItemValue class and do not add it into choices.

Product
survey-library
Type
Bug
Description
survey.prevPage() function never returns true

survey.prevPage() function returns undefined instead of true.

Product
survey-library
Type
Bug
Description
placeHolder is not rendered for items in Multiple Text questions

On loading the json like this:

{
    elements: [
      {
        type: "multipletext", name: "q1",
        items: [
          { name: "item1", placeHolder: "place holder" }
        ]
      }
    ]
  }

text question "renderedPlaceHolder" is not updated and equals to undefined.

Product
survey-library
Type
Bug
Description
text question dataList can return undefined

The following JSON will generate exception on rendering, if survey.locale is not "fr". text question "dataList" property will return undefined instead of empty array.

{
 elements: [  {
     "type": "text",
     "name": "Question1",
     "dataList": {
      "fr": [
       "French DL-1, French DL-2"
      ]
     }
    } ]}

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

Reporting a bug.

What is the current behavior?

Add a listener to the onProgressText event. And suppose there are three pages and the questionOrder on page three is random. Then navigating with the next button from the second page is taking the user to the first page.

What is the expected behavior?

The next button on the second page should navigate to the third page.

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

plunker

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

Tested page URL: https://plnkr.co/edit/8R5rxSF456JD1mbf

Maybe checking SurveyModel.prototype.updateProgressText can help

Specify your

  • browser: chrome
  • browser version: 93
  • surveyjs platform (angular or react or jquery or knockout or vue): react
  • surveyjs version: 1.8.68
Product
survey-library
Type
Bug
Description
React: Text question input doesn't respect "Enter" key
Product
survey-library
Type
Bug
Description
On changing text question dataList onPropertyChanged is not fired

Bug was found on testing Creator V2. We do not update dataList property editor value on changing this property in code. The reason - onPropertyChanged event is not fired.

Product
survey-creator
Type
Bug
Description
Object selector dropdown looks ugly
Product
survey-creator
Type
Bug
Description
focused outline visible while hovering a toolbox item in V2

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

Reporting a bug.

What is the current behavior?

Hovering on a focused toolbox item does not obscure the outline.

What is the expected behavior?

The outline should not be visible.

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

hover on focused item

Specify your

  • browser: chrome 93
  • editor version: 1.8.66

image

Product
survey-creator
Type
Bug
Description
CreatorV2: Question Editor align issue
Product
survey-creator
Type
Bug
Description
Modal properties window strangely displayed dropdown properties

This bug can be reproduced in creator v1 by setting showElementEditorAsPropertyGrid option to false

image

Product
custom-widgets
Type
Bug
Description
tagbox doesn't remove items if value is number

Tagbox store value internally as string and as result indexof by question.value as array of number always return -1. We should not use indexof and write a custom code.

Version: v1.8.68, released at Tuesday, September 21, 2021, Total Issue Count: 10

Product Type Description
survey-library Bug Question 'text' title does not highlight after answering in Vue

See example: https://surveyjs.io/Examples/Library?id=questiontype-text&platform=Vue&theme=modern Question titles do not highlight after answering questions.

survey-library Bug Async expression validators don't focus element when false at validation

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

Bug (maybe feature ?)

What is the current behavior?

In an async expression validator if the expression is false, survey won't scroll to the element on validation

What is the expected behavior?

On validation, the page should scroll up to the element with the invalid expression validator

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

create a survey with an element with an expression validator calling an async function with this.returnResult(false);, scroll down the page, press the complete button.

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

https://codesandbox.io/s/sparkling-flower-tdkbq?file=/index.js

Specify your

  • browser: chrome / FF
  • browser version:
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.67
survey-library Bug Console warning in react in List component where items have icons

We render List items without key in react: icon and span. It produces the warning. It can be reproduce in Creator V2, react version.

survey-library Bug Started page is not rendered in react in versions: v1.8.66-67 in react

We started to check page.isVisible in react from v1.8.66 and it returns always false for started page. I have change this behavior and it started to return true. I check page.isStarted on avoiding to add started page into visiblePages array. Unit tests corrected, new added and a functional test added to make sure we do not break it again.

survey-library Bug VueJS: responsivity manager doesn't hide invisible actions

See the testCafe\components\list.ts functiuonal test for VueJS

survey-library Bug React TitleElement doesn't re-render on title element change in some cases

SurveyLocStringViewer doesn't react on changing props in componentDidUpdate function

survey-creator Bug Doesn't scroll to page on selecting it in page selector if screen is small: V2

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

Bug

What is the current behavior?

Page selection is not always focused through page navigation selector.

What is the expected behavior?

Selected page through page navigation selector should be focused.

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

  1. Open an empty designer page.
  2. Add three pages, each page having one radio button question.
  3. Through page navigation selector first select page 1, then select page 2 OR page 3. Page 2 OR 3 gets selected but is not focused on the screen.

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

Tested page URL: https://surveyjstest.azurewebsites.net//Examples/CreatorSinglePage?id=options&platform=ReactjsV2&theme=modern

Test code

your_code_here

Specify your

  • browser: Chrome Version 91.0.4472.124
  • editor version:
survey-creator Bug V2: Could not set expression in trigger in property grid

The expression is not updated on Apply on closing Popup Window.

survey-creator Bug IME bug
survey-creator Bug Item editor stay editable if property is readOnly

Version: v1.8.68, released at Tuesday, September 21, 2021, Total Issue Count: 10

Product
survey-library
Type
Bug
Description
Question 'text' title does not highlight after answering in Vue

See example: https://surveyjs.io/Examples/Library?id=questiontype-text&platform=Vue&theme=modern Question titles do not highlight after answering questions.

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

Bug (maybe feature ?)

What is the current behavior?

In an async expression validator if the expression is false, survey won't scroll to the element on validation

What is the expected behavior?

On validation, the page should scroll up to the element with the invalid expression validator

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

create a survey with an element with an expression validator calling an async function with this.returnResult(false);, scroll down the page, press the complete button.

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

https://codesandbox.io/s/sparkling-flower-tdkbq?file=/index.js

Specify your

  • browser: chrome / FF
  • browser version:
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.67
Product
survey-library
Type
Bug
Description
Console warning in react in List component where items have icons

We render List items without key in react: icon and span. It produces the warning. It can be reproduce in Creator V2, react version.

We started to check page.isVisible in react from v1.8.66 and it returns always false for started page. I have change this behavior and it started to return true. I check page.isStarted on avoiding to add started page into visiblePages array. Unit tests corrected, new added and a functional test added to make sure we do not break it again.

Product
survey-library
Type
Bug
Description
VueJS: responsivity manager doesn't hide invisible actions

See the testCafe\components\list.ts functiuonal test for VueJS

SurveyLocStringViewer doesn't react on changing props in componentDidUpdate function

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

Bug

What is the current behavior?

Page selection is not always focused through page navigation selector.

What is the expected behavior?

Selected page through page navigation selector should be focused.

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

  1. Open an empty designer page.
  2. Add three pages, each page having one radio button question.
  3. Through page navigation selector first select page 1, then select page 2 OR page 3. Page 2 OR 3 gets selected but is not focused on the screen.

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

Tested page URL: https://surveyjstest.azurewebsites.net//Examples/CreatorSinglePage?id=options&platform=ReactjsV2&theme=modern

Test code

your_code_here

Specify your

  • browser: Chrome Version 91.0.4472.124
  • editor version:
Product
survey-creator
Type
Bug
Description
V2: Could not set expression in trigger in property grid

The expression is not updated on Apply on closing Popup Window.

Product
survey-creator
Type
Bug
Description
IME bug
Product
survey-creator
Type
Bug
Description
Item editor stay editable if property is readOnly

Version: v1.8.67, released at Friday, September 17, 2021, Total Issue Count: 2

Product Type Description
survey-library Bug Checkbox choices aren't being rendered after using fromJSON?

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

I am reporting a bug. Thanks!

What is the current behavior?

image

What is the expected behavior?

image

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

Load a page with choices into a PageModel via fromJSON

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

Tested page URL: https://codesandbox.io/s/modern-tdd-t2yvh?file=/src/SurveyComponent.jsx

Test code

import React, { Component } from "react";

import * as Survey from "survey-react";

import "survey-react/modern.css";
import "./index.css";

Survey.StylesManager.applyTheme("modern");

class SurveyComponent extends Component {
  render() {
    const json = {
      questions: [
        {
          type: "checkbox",
          name: "car",
          title: "What car are you driving?",
          isRequired: true,
          hasNone: true,
          colCount: 4,
          choices: [
            "Ford",
            "Vauxhall",
            "Volkswagen",
            "Nissan",
            "Audi",
            "Mercedes-Benz",
            "BMW",
            "Peugeot",
            "Toyota",
            "Citroen"
          ]
        }
      ]
    };
    const survey = new Survey.Model(json);

    // Serialize Page to JSON
    const pageModel = survey.pages[0];
    const pageJSON = pageModel.toJSON();

    // Remove Page
    survey.removePage(pageModel);

    // Re-add Page
    const pg = survey.addNewPage();
    pg.fromJSON(pageJSON);
    console.log(pageJSON);

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

export default SurveyComponent;

Specify your

  • browser: Chrome
  • browser version: 93.0.4577.63 (Official Build)
  • surveyjs platform (angular or react or jquery or knockout or vue): React
  • surveyjs version: 1.8.65
survey-library Bug Declare allowRowsDragAndDrop property in matrix dynamic correctly

"allowRowsDragAndDrop" property is not declared correctly in matrix dynamic question.

Version: v1.8.67, released at Friday, September 17, 2021, Total Issue Count: 2

Product
survey-library
Type
Bug
Description
Checkbox choices aren't being rendered after using fromJSON?

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

I am reporting a bug. Thanks!

What is the current behavior?

image

What is the expected behavior?

image

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

Load a page with choices into a PageModel via fromJSON

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

Tested page URL: https://codesandbox.io/s/modern-tdd-t2yvh?file=/src/SurveyComponent.jsx

Test code

import React, { Component } from "react";

import * as Survey from "survey-react";

import "survey-react/modern.css";
import "./index.css";

Survey.StylesManager.applyTheme("modern");

class SurveyComponent extends Component {
  render() {
    const json = {
      questions: [
        {
          type: "checkbox",
          name: "car",
          title: "What car are you driving?",
          isRequired: true,
          hasNone: true,
          colCount: 4,
          choices: [
            "Ford",
            "Vauxhall",
            "Volkswagen",
            "Nissan",
            "Audi",
            "Mercedes-Benz",
            "BMW",
            "Peugeot",
            "Toyota",
            "Citroen"
          ]
        }
      ]
    };
    const survey = new Survey.Model(json);

    // Serialize Page to JSON
    const pageModel = survey.pages[0];
    const pageJSON = pageModel.toJSON();

    // Remove Page
    survey.removePage(pageModel);

    // Re-add Page
    const pg = survey.addNewPage();
    pg.fromJSON(pageJSON);
    console.log(pageJSON);

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

export default SurveyComponent;

Specify your

  • browser: Chrome
  • browser version: 93.0.4577.63 (Official Build)
  • surveyjs platform (angular or react or jquery or knockout or vue): React
  • surveyjs version: 1.8.65
Product
survey-library
Type
Bug
Description
Declare allowRowsDragAndDrop property in matrix dynamic correctly

"allowRowsDragAndDrop" property is not declared correctly in matrix dynamic question.

Version: v1.8.66, released at Wednesday, September 15, 2021, Total Issue Count: 14

Product Type Description
survey-library Enhancement Add properties to customize File Question string constants
survey-library Enhancement Get rid of SortableJS in SurveyJS library

This will reduce the library size and hopeful fix the https://surveyjs.answerdesk.io/ticket/details/t6516/ranking-question-ranking-number issue

survey-library Enhancement Optionally replace h3/h4/h5 with span or setup the requred "hx"

Add into settings:

  titleTags: {
    survey: "h3",
    page: "h4",
    panel: "h4",
    question: "h5",
  }

and survey.onGetTitleTagName event. Here is the example:

survey.onGetTitleTagName.add((sender, options) => {
        //For elements inside panel use <h4> instead of <h3> for elements in the page root.
        const parent = options.element.parent;
        if (!!parent && parent.isPanel) {
            options.tagName = "h4";
        }
    });
survey-library Enhancement A11Y: Narrator reading the whole <a> tag
survey-library Bug React page use visible property to decide render or not instead of isVisible

The issue was found in SurveyJS Creator V2 and it reproduces when survey in design more or "survey.showInvisibleElements" property is set to "true". React Page component use "visible" property to check can it render or not, instead of "isVisible". The last is check survey design mode and "showInvisibleElements" property.

survey-library Bug Imagepicker localized images broken

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

Bug

What is the current behavior?

It seems the image options are not changed when the survey language changes.

What is the expected behavior?

Since the imageLink properties are localizable strings it makes sense that localizing them shows the correct image.

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

Change the language to german.

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

Tested on versions 1.8.56 (which we use atm) and on the online creator which uses the latest version.

Test code

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "imagepicker",
     "name": "question1",
     "choices": [
      {
       "value": "1",
       "text": {
        "default": "foto1_ENG",
        "de": "foto1_DE"
       },
       "imageLink": {
        "default": "https://cdn1.collecthor.nl/organisation8/surveys/2923/Header_2835493_16.9-1024x574.jpg",
        "de": "https://cdn1.collecthor.nl/organisation8/surveys/2923/Niko%20Bellic.jpg"
       }
      }
     ],
     "imageHeight": 450,
     "imageWidth": 600
    }
   ]
  }
 ]
}

### Specify your

* browser: chrome
* browser version: latest 
* surveyjs platform (angular or react or jquery or knockout or vue): knockout
* surveyjs version: > 1.8.56
survey-library Bug Place holder in text and comment questions are not updated on changing locale

We do not update "renderedPlaceHolder" property on changing survey locale. Unit test is missed on this case.

survey-library Enhancement layout of single-/multiple choice items with long text
survey-library Bug Incorrect proccess text that reference value getting from choices loaded from the web

The original bug was reported on SurveyJS Support Forum. If a dropdown question get choices from a web service, it has the value set before loading the choices from web service then text processing doesnt' work correctly. It is continue showing question value, instead of loading from web service item text.

survey-library Bug survey element onPropertyChanged doesn't call if values equals on caseInsensitive and trimming

"onPropertyChanged" event should be called when new value is different from old value without trimming and converting to lowcase.

survey-creator Bug Undo/Redo works incorrectly on changing question type in V1

We need to put in one transaction changing question type operation. Right now it is divided on two operations: delete the old queston and insert a new question. As result the user has to click two times on "Undo"/"Redo" buttons to get the needed result.

It works fine in V2 and it is tested in V2.

survey-creator Enhancement Creator V2: Add creator.onCollectionItemAllowOperations event
/**
   * The event is called before rendering a collection item from the Property Editor. For example: column in columns editor or item in choices and so on.
   * You can make detail/edit and remove buttons invsible and/or disable editing.
   * <br/> sender the survey creator object that fires the event
   * <br/> options.obj the survey object: Question, Panel, Page or Survey
   * <br/> options.property the collection property (Survey.JsonObjectProperty object). It has name, className, type, visible, readOnly and other properties
   * <br/> options.propertyName the collection property name
   * <br/> options.collection the editing collection where deleting item is located. It is can be columns in the matrices or choices in dropdown question and so on.
   * <br/> options.item the collection item that we are going to delete
   * <br/> options.allowDelete a boolean value. It is true by default. Set it false to abondome the element removing from the collection
   * <br/> options.allowEdit a boolean value. It is true by default. Set it false to disable editing.
   */
   public onCollectionItemAllowOperations: Survey.Event<(sender: Creator, options)>;

These events will work, but becomes obsolete: "creator.onCanDeleteItem" and "creator.onCollectionItemDeleting"

survey-creator Bug "None" item is not displayed when editing dropdown question items
survey-creator Bug V1: problem with moving questions from page to another page

Version: v1.8.66, released at Wednesday, September 15, 2021, Total Issue Count: 14

Product
survey-library
Type
Enhancement
Description
Add properties to customize File Question string constants
Product
survey-library
Type
Enhancement
Description
Get rid of SortableJS in SurveyJS library

This will reduce the library size and hopeful fix the https://surveyjs.answerdesk.io/ticket/details/t6516/ranking-question-ranking-number issue

Product
survey-library
Type
Enhancement
Description
Optionally replace h3/h4/h5 with span or setup the requred "hx"

Add into settings:

  titleTags: {
    survey: "h3",
    page: "h4",
    panel: "h4",
    question: "h5",
  }

and survey.onGetTitleTagName event. Here is the example:

survey.onGetTitleTagName.add((sender, options) => {
        //For elements inside panel use <h4> instead of <h3> for elements in the page root.
        const parent = options.element.parent;
        if (!!parent && parent.isPanel) {
            options.tagName = "h4";
        }
    });
Product
survey-library
Type
Enhancement
Description
A11Y: Narrator reading the whole <a> tag

The issue was found in SurveyJS Creator V2 and it reproduces when survey in design more or "survey.showInvisibleElements" property is set to "true". React Page component use "visible" property to check can it render or not, instead of "isVisible". The last is check survey design mode and "showInvisibleElements" property.

Product
survey-library
Type
Bug
Description
Imagepicker localized images broken

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

Bug

What is the current behavior?

It seems the image options are not changed when the survey language changes.

What is the expected behavior?

Since the imageLink properties are localizable strings it makes sense that localizing them shows the correct image.

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

Change the language to german.

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

Tested on versions 1.8.56 (which we use atm) and on the online creator which uses the latest version.

Test code

{
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "imagepicker",
     "name": "question1",
     "choices": [
      {
       "value": "1",
       "text": {
        "default": "foto1_ENG",
        "de": "foto1_DE"
       },
       "imageLink": {
        "default": "https://cdn1.collecthor.nl/organisation8/surveys/2923/Header_2835493_16.9-1024x574.jpg",
        "de": "https://cdn1.collecthor.nl/organisation8/surveys/2923/Niko%20Bellic.jpg"
       }
      }
     ],
     "imageHeight": 450,
     "imageWidth": 600
    }
   ]
  }
 ]
}

### Specify your

* browser: chrome
* browser version: latest 
* surveyjs platform (angular or react or jquery or knockout or vue): knockout
* surveyjs version: > 1.8.56

We do not update "renderedPlaceHolder" property on changing survey locale. Unit test is missed on this case.

Product
survey-library
Type
Enhancement
Description
layout of single-/multiple choice items with long text

The original bug was reported on SurveyJS Support Forum. If a dropdown question get choices from a web service, it has the value set before loading the choices from web service then text processing doesnt' work correctly. It is continue showing question value, instead of loading from web service item text.

"onPropertyChanged" event should be called when new value is different from old value without trimming and converting to lowcase.

Product
survey-creator
Type
Bug
Description
Undo/Redo works incorrectly on changing question type in V1

We need to put in one transaction changing question type operation. Right now it is divided on two operations: delete the old queston and insert a new question. As result the user has to click two times on "Undo"/"Redo" buttons to get the needed result.

It works fine in V2 and it is tested in V2.

Product
survey-creator
Type
Enhancement
Description
Creator V2: Add creator.onCollectionItemAllowOperations event
/**
   * The event is called before rendering a collection item from the Property Editor. For example: column in columns editor or item in choices and so on.
   * You can make detail/edit and remove buttons invsible and/or disable editing.
   * <br/> sender the survey creator object that fires the event
   * <br/> options.obj the survey object: Question, Panel, Page or Survey
   * <br/> options.property the collection property (Survey.JsonObjectProperty object). It has name, className, type, visible, readOnly and other properties
   * <br/> options.propertyName the collection property name
   * <br/> options.collection the editing collection where deleting item is located. It is can be columns in the matrices or choices in dropdown question and so on.
   * <br/> options.item the collection item that we are going to delete
   * <br/> options.allowDelete a boolean value. It is true by default. Set it false to abondome the element removing from the collection
   * <br/> options.allowEdit a boolean value. It is true by default. Set it false to disable editing.
   */
   public onCollectionItemAllowOperations: Survey.Event<(sender: Creator, options)>;

These events will work, but becomes obsolete: "creator.onCanDeleteItem" and "creator.onCollectionItemDeleting"

Product
survey-creator
Type
Bug
Description
"None" item is not displayed when editing dropdown question items
Product
survey-creator
Type
Bug
Description
V1: problem with moving questions from page to another page

Version: v1.8.65, released at Wednesday, September 8, 2021, Total Issue Count: 9

Product Type Description
survey-library Enhancement Randomize questions inside panel

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

Feature

What is the current behavior?

Currently questions can be randomized only per page (but the configuration can be set at a survey level as a default for each page).

What is the expected behavior?

I'd love to be able to randomize questions inside a panel.

survey-library Enhancement Library:Overview:isContainerReady

for panels and dynamic panels we have isContainerReady expression which described in our overview:

isContainerReady(nameOfPanelOrPage: string): Boolean

but in fact we could have the second panelIndex parameter and it should be also described in the overview.

check usage example here: https://github.com/surveyjs/survey-library/issues/3256

survey-library Enhancement Is it possible to let comment fields grow with the content, especially in display mode?

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

Asking a question/Requesting a feature

What is the current behavior?

Currently, comment fields with a lot of text do not grow with the content in display mode, making part of the text unreadable.

What is the expected behavior?

It would be nice if the comment field could automatically grow in size with the content.

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

Add a comment field to a survey, fill in a large amount of text and look at it in display mode.

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

Specify your

  • browser: Chrome/Firefox
  • browser version: latest
  • surveyjs platform (angular or react or jquery or knockout or vue): jquery
  • surveyjs version: 1.8.27
survey-library Enhancement Radiogroup accessibility issue

based on the