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)