release notes

SurveyJS v1.9.112

Released: October 10, 2023

SurveyJS v1.9.112 adds capabilities to set question values based on a condition and import only required languages for localization.

Localization: Import only required languages

Previously, localization scripts/modules for Form Library and Survey Creator included all supported languages. Since v1.9.112, you may reference or import only the languages you need to reduce your resulting bundle size:

Form Library

<script src="https://unpkg.com/survey-core/i18n/french.js"></script>
<script src="https://unpkg.com/survey-core/i18n/german.js"></script>
<script src="https://unpkg.com/survey-core/i18n/italian.js"></script>
import "survey-core/i18n/french";
import "survey-core/i18n/german";
import "survey-core/i18n/italian";

Survey Creator

<script src="https://unpkg.com/survey-creator-core/i18n/french.js"></script>
<script src="https://unpkg.com/survey-creator-core/i18n/german.js"></script>
<script src="https://unpkg.com/survey-creator-core/i18n/italian.js"></script>
import "survey-creator-core/i18n/french";
import "survey-creator-core/i18n/german";
import "survey-creator-core/i18n/italian";

Form Library: Localization & Globalization Survey Creator: Localization & Globalization

Set Question Values Based on Condition

In addition to the recently implemented resetValueIf property, we add a similar setValueIf property. It allows you to set a question value based on a condition and accepts a Boolean expression. When this expression evaluates to true, the question value is set to a value calculated using a setValueExpression. For example, the following code set the "ageType" value to "minor" or "adult" based on the "age" question value:

const surveyJson = {
  "elements": [{
    "name": "age", 
    // ...
  }, {
    "name": "ageType",
    // ...
    "setValueIf": "{age} notempty",
    "setValueExpression": "iif({age} >= 18, 'adult', 'minor')"
  }]
}

You can use the setValueIf and setValueExpression properties as an advanced alternative to the setvalue trigger. Unlike the trigger, the properties can be used for setting question values within a Dynamic Panel and in matrix columns:

const surveyJson = {
  "elements": [{
    "type": "paneldynamic",
    "templateElements": [{
      "name": "age", 
      // ...
    }, {
      "name": "ageType",
      // ...
      "setValueIf": "{panel.age} notempty",
      "setValueExpression": "iif({panel.age} >= 18, 'adult', 'minor')"
    }]
  }]
}

[Breaking Change] Custom file preview has stopped working

In SurveyJS v1.9.110, File Upload question markup was changed to implement support for camera. Because of this change, a previously recommended file preview customization approach, which involved runtime markup modification within the onAfterRenderQuestion event handler, stopped working. To continue using file preview customization, please migrate your code to custom components, as demonstrated in the following demo:

Custom Previews for File Upload Questions

Bug Fixes

Form Library

  • [Accessibility] Dropdown: The input element does not have an associated visible label and the placeholder should not be read by screen readers (#7071)
  • [Accessibility] aria-progressbar-name is missing (#7067)
  • Dynamic Panel: Nested fields overflow the available width (#5935)
  • [Vue 2] Dropdown with Lazy Loading throws "Duplicate keys detected" errors (#7043)
  • Expression results are stringified (#7050)
  • It's impossible to change the default value of the ChoicesRestful.path property (#6766)
  • Dynamic Panel: A custom Remove button is not applied with the panelRemoveButtonLocation property is set to "right" (#7064)

Survey Creator

  • Property Grid allows editing choice texts when inplaceEditForValues is enabled (#4699)
  • Multiple Textboxes: Item captions are reset after switching between tabs (#4693)
  • Validation errors are reset and choice values are updated incorrectly (#4701)
  • Translation tab contains image links (#4689)
  • A theme specified using the theme property is not applied to a survey unless the Themes tab is activated (#4686)

Your cookie settings

We use cookies on our site to make your browsing experience more convenient and personal. In some cases, they are essential to making the site work properly. By clicking "Accept All", you consent to the use of all cookies in accordance with our Terms of Use & Privacy Statement. However, you may visit "Cookie settings" to provide a controlled consent.

Your renewal subscription expires soon.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.

Your renewal subscription has expired.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.