survey-creator-core 2.0.6 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/fesm/i18n/arabic.mjs +1 -1
  2. package/fesm/i18n/bulgarian.mjs +1 -1
  3. package/fesm/i18n/burmese.mjs +1 -1
  4. package/fesm/i18n/croatian.mjs +1 -1
  5. package/fesm/i18n/czech.mjs +1 -1
  6. package/fesm/i18n/danish.mjs +1 -1
  7. package/fesm/i18n/dutch.mjs +1 -1
  8. package/fesm/i18n/english.mjs +1 -1
  9. package/fesm/i18n/finnish.mjs +1 -1
  10. package/fesm/i18n/french.mjs +1 -1
  11. package/fesm/i18n/german.mjs +1 -1
  12. package/fesm/i18n/haitian-creole.mjs +1 -1
  13. package/fesm/i18n/hebrew.mjs +1 -1
  14. package/fesm/i18n/hungarian.mjs +1 -1
  15. package/fesm/i18n/index.mjs +1 -1
  16. package/fesm/i18n/indonesian.mjs +1 -1
  17. package/fesm/i18n/italian.mjs +1 -1
  18. package/fesm/i18n/japanese.mjs +1 -1
  19. package/fesm/i18n/korean.mjs +1 -1
  20. package/fesm/i18n/malay.mjs +1 -1
  21. package/fesm/i18n/mongolian.mjs +1 -1
  22. package/fesm/i18n/norwegian.mjs +1 -1
  23. package/fesm/i18n/persian.mjs +1 -1
  24. package/fesm/i18n/polish.mjs +1 -1
  25. package/fesm/i18n/portuguese.mjs +1 -1
  26. package/fesm/i18n/romanian.mjs +1 -1
  27. package/fesm/i18n/russian.mjs +1 -1
  28. package/fesm/i18n/simplified-chinese.mjs +1 -1
  29. package/fesm/i18n/slovak.mjs +1 -1
  30. package/fesm/i18n/slovenian.mjs +1 -1
  31. package/fesm/i18n/spanish.mjs +1 -1
  32. package/fesm/i18n/swedish.mjs +1 -1
  33. package/fesm/i18n/tajik.mjs +1 -1
  34. package/fesm/i18n/thai.mjs +1 -1
  35. package/fesm/i18n/traditional-chinese.mjs +1 -1
  36. package/fesm/i18n/turkish.mjs +1 -1
  37. package/fesm/survey-creator-core.i18n.mjs +1 -1
  38. package/fesm/survey-creator-core.mjs +201 -116
  39. package/fesm/survey-creator-core.mjs.map +1 -1
  40. package/fesm/themes/index.mjs +1 -1
  41. package/fonts.fontless.css +1 -1
  42. package/fonts.fontless.min.css +1 -1
  43. package/i18n/arabic.js +1 -1
  44. package/i18n/arabic.min.js.LICENSE.txt +1 -1
  45. package/i18n/bulgarian.js +1 -1
  46. package/i18n/bulgarian.min.js.LICENSE.txt +1 -1
  47. package/i18n/burmese.js +1 -1
  48. package/i18n/burmese.min.js.LICENSE.txt +1 -1
  49. package/i18n/croatian.js +1 -1
  50. package/i18n/croatian.min.js.LICENSE.txt +1 -1
  51. package/i18n/czech.js +1 -1
  52. package/i18n/czech.min.js.LICENSE.txt +1 -1
  53. package/i18n/danish.js +1 -1
  54. package/i18n/danish.min.js.LICENSE.txt +1 -1
  55. package/i18n/dutch.js +1 -1
  56. package/i18n/dutch.min.js.LICENSE.txt +1 -1
  57. package/i18n/english.js +1 -1
  58. package/i18n/english.min.js.LICENSE.txt +1 -1
  59. package/i18n/finnish.js +1 -1
  60. package/i18n/finnish.min.js.LICENSE.txt +1 -1
  61. package/i18n/french.js +1 -1
  62. package/i18n/french.min.js.LICENSE.txt +1 -1
  63. package/i18n/german.js +1 -1
  64. package/i18n/german.min.js.LICENSE.txt +1 -1
  65. package/i18n/haitian-creole.js +1 -1
  66. package/i18n/haitian-creole.min.js.LICENSE.txt +1 -1
  67. package/i18n/hebrew.js +1 -1
  68. package/i18n/hebrew.min.js.LICENSE.txt +1 -1
  69. package/i18n/hungarian.js +1 -1
  70. package/i18n/hungarian.min.js.LICENSE.txt +1 -1
  71. package/i18n/index.js +1 -1
  72. package/i18n/index.min.js.LICENSE.txt +1 -1
  73. package/i18n/indonesian.js +1 -1
  74. package/i18n/indonesian.min.js.LICENSE.txt +1 -1
  75. package/i18n/italian.js +1 -1
  76. package/i18n/italian.min.js.LICENSE.txt +1 -1
  77. package/i18n/japanese.js +1 -1
  78. package/i18n/japanese.min.js.LICENSE.txt +1 -1
  79. package/i18n/korean.js +1 -1
  80. package/i18n/korean.min.js.LICENSE.txt +1 -1
  81. package/i18n/malay.js +1 -1
  82. package/i18n/malay.min.js.LICENSE.txt +1 -1
  83. package/i18n/mongolian.js +1 -1
  84. package/i18n/mongolian.min.js.LICENSE.txt +1 -1
  85. package/i18n/norwegian.js +1 -1
  86. package/i18n/norwegian.min.js.LICENSE.txt +1 -1
  87. package/i18n/persian.js +1 -1
  88. package/i18n/persian.min.js.LICENSE.txt +1 -1
  89. package/i18n/polish.js +1 -1
  90. package/i18n/polish.min.js.LICENSE.txt +1 -1
  91. package/i18n/portuguese.js +1 -1
  92. package/i18n/portuguese.min.js.LICENSE.txt +1 -1
  93. package/i18n/romanian.js +1 -1
  94. package/i18n/romanian.min.js.LICENSE.txt +1 -1
  95. package/i18n/russian.js +1 -1
  96. package/i18n/russian.min.js.LICENSE.txt +1 -1
  97. package/i18n/simplified-chinese.js +1 -1
  98. package/i18n/simplified-chinese.min.js.LICENSE.txt +1 -1
  99. package/i18n/slovak.js +1 -1
  100. package/i18n/slovak.min.js.LICENSE.txt +1 -1
  101. package/i18n/slovenian.js +1 -1
  102. package/i18n/slovenian.min.js.LICENSE.txt +1 -1
  103. package/i18n/spanish.js +1 -1
  104. package/i18n/spanish.min.js.LICENSE.txt +1 -1
  105. package/i18n/swedish.js +1 -1
  106. package/i18n/swedish.min.js.LICENSE.txt +1 -1
  107. package/i18n/tajik.js +1 -1
  108. package/i18n/tajik.min.js.LICENSE.txt +1 -1
  109. package/i18n/thai.js +1 -1
  110. package/i18n/thai.min.js.LICENSE.txt +1 -1
  111. package/i18n/traditional-chinese.js +1 -1
  112. package/i18n/traditional-chinese.min.js.LICENSE.txt +1 -1
  113. package/i18n/turkish.js +1 -1
  114. package/i18n/turkish.min.js.LICENSE.txt +1 -1
  115. package/package.json +2 -2
  116. package/survey-creator-core.css +61 -23
  117. package/survey-creator-core.fontless.css +60 -22
  118. package/survey-creator-core.fontless.css.map +1 -1
  119. package/survey-creator-core.fontless.min.css +6 -6
  120. package/survey-creator-core.i18n.js +1 -1
  121. package/survey-creator-core.i18n.min.js.LICENSE.txt +1 -1
  122. package/survey-creator-core.js +249 -125
  123. package/survey-creator-core.js.map +1 -1
  124. package/survey-creator-core.min.css +7 -7
  125. package/survey-creator-core.min.js +1 -1
  126. package/survey-creator-core.min.js.LICENSE.txt +1 -1
  127. package/themes/default-contrast.js +1 -1
  128. package/themes/default-contrast.min.js.LICENSE.txt +1 -1
  129. package/themes/default-dark.js +1 -1
  130. package/themes/default-dark.min.js.LICENSE.txt +1 -1
  131. package/themes/index.js +1 -1
  132. package/themes/index.min.js.LICENSE.txt +1 -1
  133. package/themes/sc2020.js +1 -1
  134. package/themes/sc2020.min.js.LICENSE.txt +1 -1
  135. package/typings/components/action-container-view-model.d.ts +11 -1
  136. package/typings/components/image-item-value.d.ts +7 -0
  137. package/typings/creator-base.d.ts +14 -14
  138. package/typings/creator-options.d.ts +4 -12
  139. package/typings/custom-questions/question-file.d.ts +2 -0
  140. package/typings/property-grid/condition.d.ts +3 -0
  141. package/typings/property-grid/matrices.d.ts +0 -1
  142. package/typings/property-grid/object-selector.d.ts +0 -1
  143. package/typings/property-grid-theme/property-grid.d.ts +13 -0
@@ -1,12 +1,12 @@
1
1
  /*!
2
- * SurveyJS Creator v2.0.6
2
+ * SurveyJS Creator v2.0.8
3
3
  * (c) 2015-2025 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * Github: https://github.com/surveyjs/survey-creator
5
5
  * License: https://surveyjs.io/Licenses#SurveyCreator
6
6
  */
7
7
 
8
8
  import * as Survey from 'survey-core';
9
- import { surveyLocalization, Serializer, SurveyModel, Helpers, QuestionFactory, CustomWidgetCollection, defaultCss, settings as settings$1, MatrixDropdownColumn, ItemValue, JsonError, property, Base, Action, ComputedUpdater, ActionContainer, propertyArray, AdaptiveActionContainer, AnimationBoolean, CssClassBuilder, DragOrClickHelper, ElementFactory, ComponentCollection, JsonObject, ListModel, EventBase, createDropdownActionModel, surveyCss, defaultThemeName, ConditionsParser, SurveyTrigger, QuestionMatrixDropdownModelBase, QuestionPanelDynamicModel, ConditionRunner, ExpressionRunner, FunctionFactory, QuestionButtonGroupModel, QuestionTextBase, LocalizableString, PageModel, QuestionCommentModel, createPopupModelWithListModel, defaultActionBarCss, createDropdownActionModelAdvanced, PopupModel, getActionDropdownButtonTarget, prepareElementForVerticalAnimation, cleanHtmlElementAfterAnimation, DragDropCore, getIconNameFromProxy, AnimationGroup, activateLazyRenderingChecks, CharacterCounter, QuestionImagePickerModel, QuestionMultipleTextModel, QuestionMatrixDropdownModel, QuestionMatrixDynamicModel, QuestionMatrixModel, QuestionSelectBase, MultipleTextItemModel, addIconsToThemeSet, SvgRegistry, hasLicense, slk, Notifier, SvgThemeSets, IsTouch, SurveyElement, Question, PanelModel, DragDropChoices, chooseFiles, classesToSelector, PanelModelBase, QuestionHtmlModel, QuestionNonValue, QuestionTextModel, QuestionFileModel, QuestionRatingModel, renamedIcons, JsonObjectProperty, checkLibraryVersion } from 'survey-core';
9
+ import { surveyLocalization, Serializer, SurveyModel, Helpers, QuestionFactory, CustomWidgetCollection, defaultCss, settings as settings$1, MatrixDropdownColumn, ItemValue, JsonError, property, Base, Action, ComputedUpdater, ActionContainer, propertyArray, AdaptiveActionContainer, AnimationBoolean, CssClassBuilder, DragOrClickHelper, ElementFactory, ComponentCollection, JsonObject, ListModel, EventBase, createDropdownActionModel, surveyCss, defaultThemeName, ConditionsParser, SurveyTrigger, QuestionMatrixDropdownModelBase, QuestionPanelDynamicModel, ConditionRunner, ExpressionRunner, FunctionFactory, QuestionButtonGroupModel, QuestionTextBase, ResponsivityManager, LocalizableString, PageModel, QuestionCommentModel, createPopupModelWithListModel, defaultActionBarCss, createDropdownActionModelAdvanced, PopupModel, getActionDropdownButtonTarget, prepareElementForVerticalAnimation, cleanHtmlElementAfterAnimation, DragDropCore, getIconNameFromProxy, AnimationGroup, activateLazyRenderingChecks, CharacterCounter, QuestionImagePickerModel, QuestionMultipleTextModel, QuestionMatrixDropdownModel, QuestionMatrixDynamicModel, QuestionMatrixModel, QuestionSelectBase, MultipleTextItemModel, addIconsToThemeSet, SvgRegistry, hasLicense, slk, Notifier, SvgThemeSets, IsTouch, SurveyElement, Question, PanelModel, DragDropChoices, chooseFiles, classesToSelector, PanelModelBase, QuestionHtmlModel, QuestionNonValue, QuestionTextModel, QuestionFileModel, QuestionRatingModel, renamedIcons, JsonObjectProperty, checkLibraryVersion } from 'survey-core';
10
10
 
11
11
  // Uncomment the line below if you create a custom dictionary
12
12
  // import { editorLocalization } from "survey-creator-core";
@@ -2443,25 +2443,7 @@ var settings = {
2443
2443
  choices: ["Item 1", "Item 2", "Item 3"]
2444
2444
  },
2445
2445
  imagepicker: {
2446
- imageFit: "cover",
2447
- choices: [
2448
- {
2449
- value: "Image 1",
2450
- imageLink: "https://surveyjs.io/Content/Images/examples/image-picker/lion.jpg"
2451
- },
2452
- {
2453
- value: "Image 2",
2454
- imageLink: "https://surveyjs.io/Content/Images/examples/image-picker/giraffe.jpg"
2455
- },
2456
- {
2457
- value: "Image 3",
2458
- imageLink: "https://surveyjs.io/Content/Images/examples/image-picker/panda.jpg"
2459
- },
2460
- {
2461
- value: "Image 4",
2462
- imageLink: "https://surveyjs.io/Content/Images/examples/image-picker/camel.jpg"
2463
- }
2464
- ]
2446
+ imageFit: "cover"
2465
2447
  },
2466
2448
  image: {
2467
2449
  imageFit: "cover",
@@ -11725,7 +11707,7 @@ var propertyGridCss = {
11725
11707
  controlReadOnly: "sd-input--disabled sd-input--readonly"
11726
11708
  },
11727
11709
  buttongroup: {
11728
- root: "spg-button-group",
11710
+ root: "sd-button-group-scrollable-container spg-button-group",
11729
11711
  item: "spg-button-group__item",
11730
11712
  itemIcon: "spg-button-group__item-icon",
11731
11713
  itemDecorator: "spg-button-group__item-decorator",
@@ -11734,7 +11716,20 @@ var propertyGridCss = {
11734
11716
  itemSelected: "spg-button-group__item--selected",
11735
11717
  itemDisabled: "spg-button-group__item--disabled",
11736
11718
  itemControl: "sv-visuallyhidden",
11737
- readOnly: "spg-question--disabled"
11719
+ readOnly: "spg-question--disabled",
11720
+ rootDropdown: "sd-button-group-scrollable-container sd-scrollable-container--compact sd-selectbase",
11721
+ selectWrapper: "sv-dropdown_select-wrapper spg-dropdown_select-wrapper",
11722
+ control: "spg-input spg-dropdown sd-input sd-dropdown",
11723
+ controlEmpty: "spg-dropdown--empty sd-dropdown--empty",
11724
+ controlValue: "spg-dropdown__value sd-dropdown__value",
11725
+ controlDisabled: "spg-input--disabled sd-input--disabled",
11726
+ controlReadOnly: "spg-input--readonly sd-input--readonly",
11727
+ controlPreview: "spg-input--preview sd-input--preview",
11728
+ filterStringInput: "sd-dropdown__filter-string-input spg-dropdown__filter-string-input",
11729
+ chevronButton: "sd-dropdown_chevron-button spg-dropdown_chevron-button",
11730
+ chevronButtonSvg: "sd-dropdown_chevron-button-svg spg-dropdown_chevron-button-svg",
11731
+ chevronButtonIconId: "icon-chevron",
11732
+ popup: "spg-dropdown-popup svc-creator-popup",
11738
11733
  },
11739
11734
  imagepicker: {
11740
11735
  root: "spg-imagepicker",
@@ -13691,13 +13686,6 @@ class PropertyGridTitleActionsCreator {
13691
13686
  action.iconName = this.getHelpActionIconName(question);
13692
13687
  }
13693
13688
  });
13694
- const baseOnMouseDown = action.doMouseDown;
13695
- action.doMouseDown = (args) => {
13696
- baseOnMouseDown.call(action);
13697
- const evt = !!args.originalEvent ? args.originalEvent : args;
13698
- evt.preventDefault();
13699
- evt.stopPropagation();
13700
- };
13701
13689
  return action;
13702
13690
  }
13703
13691
  getHelpActionIconName(question) {
@@ -14710,8 +14698,9 @@ class PropertyGridEditorUndefinedBoolean extends PropertyGridEditor {
14710
14698
  { value: "false", text: editorLocalization.getString("pe.disabled") },
14711
14699
  { value: "true", text: editorLocalization.getString("pe.enabled") },
14712
14700
  ];
14701
+ const _renderAsButtonGroup = settings.propertyGrid.useButtonGroup;
14713
14702
  const res = {
14714
- type: "buttongroup",
14703
+ type: _renderAsButtonGroup ? "buttongroup" : "dropdown",
14715
14704
  choices: choices,
14716
14705
  showOptionsCaption: false
14717
14706
  };
@@ -14994,10 +14983,9 @@ class PropertyGridEditorDropdown extends PropertyGridEditor {
14994
14983
  }
14995
14984
  getJSON(obj, prop, options) {
14996
14985
  var choices = this.getChoices(obj, prop);
14986
+ const _renderAsButtonGroup = this.renderAsButtonGroup(prop, choices);
14997
14987
  var json = {
14998
- type: this.renderAsButtonGroup(prop, choices)
14999
- ? "buttongroup"
15000
- : "dropdown",
14988
+ type: _renderAsButtonGroup ? "buttongroup" : "dropdown",
15001
14989
  choices: choices,
15002
14990
  showOptionsCaption: false
15003
14991
  };
@@ -15631,6 +15619,15 @@ __decorate([
15631
15619
  property({ defaultValue: "icon" })
15632
15620
  ], MenuButton.prototype, "contentType", void 0);
15633
15621
 
15622
+ class SurveyElementResponsivityManager extends ResponsivityManager {
15623
+ constructor(container, model, onGetAllowResponsivenessCallback) {
15624
+ super(container, model);
15625
+ this.onGetAllowResponsivenessCallback = onGetAllowResponsivenessCallback;
15626
+ }
15627
+ shouldProcessResponsiveness() {
15628
+ return super.shouldProcessResponsiveness() && (!this.onGetAllowResponsivenessCallback || this.onGetAllowResponsivenessCallback());
15629
+ }
15630
+ }
15634
15631
  class SurveyElementActionContainer extends AdaptiveActionContainer {
15635
15632
  needToShrink(item, shrinkTypeConverterAction) {
15636
15633
  return (item.innerItem.location == "start" && shrinkTypeConverterAction || item.innerItem.location != "start");
@@ -15661,6 +15658,7 @@ class SurveyElementActionContainer extends AdaptiveActionContainer {
15661
15658
  constructor() {
15662
15659
  super();
15663
15660
  this.alwaysShrink = false;
15661
+ this.isResponsivenessAllowed = false;
15664
15662
  this.dotsItem.iconSize = "auto";
15665
15663
  this.dotsItem.popupModel.cssClass += " svc-creator-popup";
15666
15664
  this.hiddenItemsListModel.cssClasses = listComponentCss;
@@ -15707,6 +15705,15 @@ class SurveyElementActionContainer extends AdaptiveActionContainer {
15707
15705
  }
15708
15706
  this.hiddenItemsListModel.setItems(items.filter(i => i.mode == "popup").map(i => i.innerItem));
15709
15707
  }
15708
+ allowResponsiveness() {
15709
+ if (!this.isResponsivenessAllowed) {
15710
+ this.isResponsivenessAllowed = true;
15711
+ this.updateCallback && this.updateCallback(true);
15712
+ }
15713
+ }
15714
+ createResponsivityManager(container) {
15715
+ return new SurveyElementResponsivityManager(container, this, () => this.isResponsivenessAllowed);
15716
+ }
15710
15717
  }
15711
15718
 
15712
15719
  let isLocaleEnableIfExecuting;
@@ -17227,6 +17234,7 @@ class TranslationEditor {
17227
17234
  }
17228
17235
  setupNavigationButtons(survey) {
17229
17236
  const navigationBar = new SurveyElementActionContainer();
17237
+ navigationBar.allowResponsiveness();
17230
17238
  survey["navigationBarValue"] = navigationBar;
17231
17239
  survey.findLayoutElement("buttons-navigation").data = navigationBar;
17232
17240
  navigationBar.locOwner = survey;
@@ -20800,8 +20808,8 @@ function ignoreUndoRedo(undoRedoManagerProperty = "undoRedoManager") {
20800
20808
  class ObjectSelectorItem extends Action {
20801
20809
  constructor(id, data, title, level) {
20802
20810
  super({ id: "sv_item_selector_" + id.toString(), title: title });
20803
- this.data = data;
20804
20811
  this.level = level;
20812
+ this.data = data;
20805
20813
  }
20806
20814
  hasText(filteredTextInLow) {
20807
20815
  if (!filteredTextInLow)
@@ -21336,6 +21344,24 @@ __decorate([
21336
21344
  property()
21337
21345
  ], PagesController.prototype, "page2Display", void 0);
21338
21346
 
21347
+ function debounce(func, delay) {
21348
+ let timeout;
21349
+ return function (...args) {
21350
+ clearTimeout(timeout);
21351
+ timeout = setTimeout(() => {
21352
+ func.apply(this, args);
21353
+ }, delay);
21354
+ };
21355
+ }
21356
+ const updateRowsVisibility = debounce((target) => {
21357
+ if (target.creator.rootElement.getAnimations({ subtree: true }).filter((animation => animation.effect.getComputedTiming().activeDuration !== Infinity && (animation.pending || animation.playState !== "finished")))[0]) {
21358
+ updateRowsVisibility(target);
21359
+ }
21360
+ else {
21361
+ target.creator.survey.pages.forEach(p => p.ensureRowsVisibility());
21362
+ target.creator.survey.getAllPanels().forEach(p => p.ensureRowsVisibility());
21363
+ }
21364
+ }, 50);
21339
21365
  class SurveyElementAdornerBase extends Base {
21340
21366
  getAnimatedElement() {
21341
21367
  return null;
@@ -21368,6 +21394,7 @@ class SurveyElementAdornerBase extends Base {
21368
21394
  this.hoverTimeout = undefined;
21369
21395
  this.isHovered = false;
21370
21396
  }
21397
+ this.actionContainer.allowResponsiveness();
21371
21398
  }
21372
21399
  getExpandCollapseAnimationOptions() {
21373
21400
  const beforeRunAnimation = (el, animatingClassName) => {
@@ -21564,6 +21591,9 @@ class SurveyElementAdornerBase extends Base {
21564
21591
  this.onElementSelectedChanged(newValue);
21565
21592
  }, "questionSelected");
21566
21593
  this.restoreState();
21594
+ if (surveyElement.getPropertyValue("isSelectedInDesigner")) {
21595
+ this.actionContainer.allowResponsiveness();
21596
+ }
21567
21597
  this.updateActionsContainer(surveyElement);
21568
21598
  this.updateActionsProperties();
21569
21599
  surveyElement.setPropertyValue(SurveyElementAdornerBase.AdornerValueName, this);
@@ -21618,6 +21648,7 @@ class SurveyElementAdornerBase extends Base {
21618
21648
  if (!isSelected)
21619
21649
  return;
21620
21650
  this.updateActionsProperties();
21651
+ this.actionContainer.allowResponsiveness();
21621
21652
  }
21622
21653
  getExpandCollapseAction() {
21623
21654
  const collapseIcon = "icon-collapsepanel-16x16";
@@ -21790,17 +21821,16 @@ __decorate([
21790
21821
  ], SurveyElementAdornerBase.prototype, "allowExpandCollapse", void 0);
21791
21822
  __decorate([
21792
21823
  property({
21793
- onSet: (val, target) => {
21824
+ onSet: (val, target, prevVal) => {
21794
21825
  target.renderedCollapsed = val;
21795
21826
  if (!val)
21796
21827
  target.needToRenderContent = true;
21797
21828
  if (target.creator.designerStateManager && target.surveyElement) {
21798
21829
  target.creator.designerStateManager.setElementCollapsed(target.surveyElement, val);
21799
21830
  }
21800
- setTimeout(() => {
21801
- target.creator.survey.pages.forEach(p => p.ensureRowsVisibility());
21802
- target.creator.survey.getAllPanels().forEach(p => p.ensureRowsVisibility());
21803
- }, 50);
21831
+ if (!!val !== !!prevVal) {
21832
+ updateRowsVisibility(target);
21833
+ }
21804
21834
  }
21805
21835
  })
21806
21836
  ], SurveyElementAdornerBase.prototype, "collapsed", void 0);
@@ -27342,7 +27372,7 @@ class SurveyCreatorModel extends Base {
27342
27372
  get showSimulatorInPreviewTab() { return this.showSimulatorInTestSurveyTab; }
27343
27373
  set showSimulatorInPreviewTab(val) { this.showSimulatorInTestSurveyTab = val; }
27344
27374
  /**
27345
- * @deprecated Use the [`previewTheme`](https://surveyjs.io/survey-creator/documentation/api-reference/survey-creator#previewTheme) property instead.
27375
+ * @deprecated Survey Creator no longer supports switching between UI themes in the Preview tab.
27346
27376
  */
27347
27377
  get themeForPreview() { return this.previewTheme; }
27348
27378
  set themeForPreview(val) { this.previewTheme = val; }
@@ -27381,13 +27411,25 @@ class SurveyCreatorModel extends Base {
27381
27411
  return this._theme;
27382
27412
  }
27383
27413
  set theme(newTheme) {
27384
- this._theme = newTheme;
27414
+ this.applyTheme(newTheme);
27415
+ }
27416
+ /**
27417
+ * Applies a [theme](https://surveyjs.io/form-library/documentation/api-reference/itheme) to the survey being configured.
27418
+ *
27419
+ * [Theme Editor](https://surveyjs.io/survey-creator/documentation/theme-editor (linkStyle))
27420
+ * @param surveyTheme An [`ITheme`](https://surveyjs.io/form-library/documentation/api-reference/itheme) object with theme settings.
27421
+ * @see theme
27422
+ * @see themeEditor
27423
+ * @see saveThemeFunc
27424
+ */
27425
+ applyTheme(surveyTheme) {
27426
+ this._theme = surveyTheme;
27385
27427
  this.hasPendingThemeChanges = true;
27386
27428
  if (this.activeTab !== "theme") {
27387
27429
  this.updatePlugin(this.activeTab);
27388
27430
  }
27389
- if (!!newTheme && newTheme.headerView) {
27390
- this.survey.headerView = newTheme.headerView;
27431
+ if (!!surveyTheme && surveyTheme.headerView) {
27432
+ this.survey.headerView = surveyTheme.headerView;
27391
27433
  }
27392
27434
  }
27393
27435
  _doSaveThemeCore(onSaveComplete) {
@@ -27479,7 +27521,7 @@ class SurveyCreatorModel extends Base {
27479
27521
  get showInvisibleElementsInPreviewTab() { return this.showInvisibleElementsInTestSurveyTab; }
27480
27522
  set showInvisibleElementsInPreviewTab(val) { this.showInvisibleElementsInTestSurveyTab = val; }
27481
27523
  /**
27482
- * @deprecated Use the [`previewAllowSelectTheme`](https://surveyjs.io/survey-creator/documentation/api-reference/survey-creator#previewAllowSelectTheme) property instead.
27524
+ * @deprecated Survey Creator no longer supports switching between UI themes in the Preview tab.
27483
27525
  */
27484
27526
  get allowChangeThemeInPreview() { return this.previewAllowSelectTheme; }
27485
27527
  set allowChangeThemeInPreview(val) { this.previewAllowSelectTheme = val; }
@@ -28187,12 +28229,7 @@ class SurveyCreatorModel extends Base {
28187
28229
  this.showPagesInTestSurveyTab = true;
28188
28230
  this.showSimulatorInTestSurveyTab = true;
28189
28231
  /**
28190
- * A [UI theme](https://surveyjs.io/Documentation/Library?id=get-started-react#configure-styles) used to display the survey in the Preview tab.
28191
- *
28192
- * Accepted values: `"default"`
28193
- *
28194
- * Default value: `"default"`
28195
- * @see previewAllowSelectTheme
28232
+ * @deprecated Survey Creator no longer supports switching between UI themes in the Preview tab.
28196
28233
  */
28197
28234
  this.previewTheme = "default";
28198
28235
  this.hasPendingThemeChanges = false;
@@ -28202,12 +28239,7 @@ class SurveyCreatorModel extends Base {
28202
28239
  this.showDefaultLanguageInTestSurveyTab = "auto";
28203
28240
  this.showInvisibleElementsInTestSurveyTab = true;
28204
28241
  /**
28205
- * Specifies whether users can switch between UI themes in the Preview tab.
28206
- *
28207
- * Default value: `true`
28208
- *
28209
- * [View Demo](https://surveyjs.io/Examples/Creator?id=theme-switcher (linkStyle))
28210
- * @see previewTheme
28242
+ * @deprecated Survey Creator no longer supports switching between UI themes in the Preview tab.
28211
28243
  */
28212
28244
  this.previewAllowSelectTheme = true;
28213
28245
  this._tabResponsivenessMode = "icons";
@@ -30914,7 +30946,7 @@ class SurveyCreatorModel extends Base {
30914
30946
  const newCssVariable = {};
30915
30947
  assign(newCssVariable, theme === null || theme === void 0 ? void 0 : theme.cssVariables);
30916
30948
  const designerPlugin = this.getPlugin("designer");
30917
- if (designerPlugin) {
30949
+ if (designerPlugin && designerPlugin.model) {
30918
30950
  designerPlugin.model.updateSurfaceCssVariables();
30919
30951
  }
30920
30952
  this.themeVariables = newCssVariable;
@@ -33263,25 +33295,40 @@ class ImageItemValueWrapperViewModel extends ItemValueWrapperViewModel {
33263
33295
  this.templateData = templateData;
33264
33296
  this.itemsRoot = itemsRoot;
33265
33297
  this.isChoosingNewFile = false;
33298
+ this.onDragCounter = 0;
33299
+ this.onDragEnter = (event) => {
33300
+ if (this.isNew) {
33301
+ this.onDragCounter++;
33302
+ this.isFileDragging = true;
33303
+ }
33304
+ };
33266
33305
  this.onDragOver = (event) => {
33267
- this.isFileDragging = true;
33268
- event.dataTransfer.dropEffect = "copy";
33269
- event.preventDefault();
33306
+ if (this.isNew) {
33307
+ event.dataTransfer.dropEffect = "copy";
33308
+ event.preventDefault();
33309
+ }
33270
33310
  };
33271
33311
  this.onDrop = (event) => {
33272
- this.isFileDragging = false;
33273
- event.preventDefault();
33274
- let input = event.dataTransfer;
33275
- if (!input || !input.files || input.files.length < 1)
33276
- return;
33277
- let files = [];
33278
- for (let i = 0; i < input.files.length; i++) {
33279
- files.push(input.files[i]);
33312
+ if (this.isNew) {
33313
+ this.onDragCounter = 0;
33314
+ this.isFileDragging = false;
33315
+ event.preventDefault();
33316
+ let input = event.dataTransfer;
33317
+ if (!input || !input.files || input.files.length < 1)
33318
+ return;
33319
+ let files = [];
33320
+ for (let i = 0; i < input.files.length; i++) {
33321
+ files.push(input.files[i]);
33322
+ }
33323
+ this.uploadFiles(files);
33280
33324
  }
33281
- this.uploadFiles(files);
33282
33325
  };
33283
33326
  this.onDragLeave = (event) => {
33284
- this.isFileDragging = false;
33327
+ if (this.isNew) {
33328
+ if (--this.onDragCounter == 0) {
33329
+ this.isFileDragging = false;
33330
+ }
33331
+ }
33285
33332
  };
33286
33333
  }
33287
33334
  getRootCss() {
@@ -33308,6 +33355,27 @@ class ImageItemValueWrapperViewModel extends ItemValueWrapperViewModel {
33308
33355
  get addFileTitle() {
33309
33356
  return this.creator.getLocString("ed.selectFile");
33310
33357
  }
33358
+ get placeholderText() {
33359
+ if (this.creator.isMobileView)
33360
+ return getLocString("ed.imagePlaceHolderMobile");
33361
+ return getLocString("ed.imagePlaceHolder");
33362
+ }
33363
+ get chooseImageText() {
33364
+ return getLocString("ed.imageChooseImage");
33365
+ }
33366
+ get showChooseButtonAsIcon() {
33367
+ return !this.getIsNewItemSingle();
33368
+ }
33369
+ get showPlaceholder() {
33370
+ return this.getIsNewItemSingle();
33371
+ }
33372
+ get addButtonCss() {
33373
+ return new CssClassBuilder()
33374
+ .append("svc-image-item-value-controls__add")
33375
+ .append("svc-context-button", this.showChooseButtonAsIcon)
33376
+ .append("sd-action", !this.showChooseButtonAsIcon)
33377
+ .toString();
33378
+ }
33311
33379
  chooseFile(model) {
33312
33380
  const fileInput = model.itemsRoot.getElementsByClassName("svc-choose-file-input")[0];
33313
33381
  const context = { element: model.question, item: model.item, elementType: model.question.getType(), propertyName: "imageLink" };
@@ -34205,6 +34273,9 @@ class QuestionFileEditorModel extends QuestionFileModel {
34205
34273
  get renderedPlaceholder() {
34206
34274
  return this.notEmptyValuePlaceholder || this.placeholder;
34207
34275
  }
34276
+ get isTextInputReadOnly() {
34277
+ return this.disableInput || this.isReadOnly;
34278
+ }
34208
34279
  updateRenderedValue(value) {
34209
34280
  const matchBase64 = !!value ? value.match(/^data:((?:\w+\/(?:(?!;).)+)?)((?:;[\w\W]*?[^;])*),/) : null;
34210
34281
  if (matchBase64) {
@@ -34273,7 +34344,13 @@ __decorate([
34273
34344
  __decorate([
34274
34345
  property()
34275
34346
  ], QuestionFileEditorModel.prototype, "placeholder", void 0);
34276
- Serializer.addClass("fileedit", ["placeholder:string"], () => new QuestionFileEditorModel(""), "file");
34347
+ __decorate([
34348
+ property()
34349
+ ], QuestionFileEditorModel.prototype, "disableInput", void 0);
34350
+ Serializer.addClass("fileedit", [
34351
+ "placeholder:string",
34352
+ { name: "disableInput:boolean", default: false },
34353
+ ], () => new QuestionFileEditorModel(""), "file");
34277
34354
  QuestionFactory.Instance.registerQuestion("fileedit", name => {
34278
34355
  return new QuestionFileEditorModel(name);
34279
34356
  }, false);
@@ -34377,39 +34454,51 @@ class PropertyGridEditorExpression extends PropertyGridEditor {
34377
34454
  }
34378
34455
  onCreated(obj, question, prop, options) {
34379
34456
  question.valueToDataCallback = (val) => {
34380
- if (!val)
34381
- return val;
34382
- return val.replace(/\\n/g, "\n")
34383
- .replace(/\\r/g, "\r")
34384
- .replace(/\\t/g, "\t");
34457
+ return this.processExpression(val, true);
34385
34458
  };
34386
34459
  question.valueFromDataCallback = (val) => {
34387
- if (!val)
34388
- return val;
34389
- return val.replace(/\n/g, "\\n")
34390
- .replace(/\r/g, "\\r")
34391
- .replace(/\t/g, "\\t");
34460
+ return this.processExpression(val, false);
34392
34461
  };
34393
- /*
34394
- question.valueFromDataCallback = (val: any): any => {
34395
- if(!val) return val;
34396
- return val.replace(/\\/g, "\\\\")
34397
- .replace(/'/g, "\\'")
34398
- .replace(/"/g, '\\"')
34399
- .replace(/\n/g, "\\n")
34462
+ }
34463
+ processExpression(val, valueToData) {
34464
+ if (!val)
34465
+ return val;
34466
+ const operand = new ConditionsParser().parseExpression(val);
34467
+ if (!operand)
34468
+ return val;
34469
+ const list = new Array();
34470
+ operand.addOperandsToList(list);
34471
+ const replacedText = new Array();
34472
+ for (let i = 0; i < list.length; i++) {
34473
+ const op = list[i];
34474
+ if (op.getType() === "const") {
34475
+ const constVal = op.correctValue;
34476
+ if (typeof constVal === "string") {
34477
+ const newVal = valueToData ? this.valueToData(constVal) : this.valueFromData(constVal);
34478
+ if (newVal !== constVal) {
34479
+ replacedText.push({ oldText: constVal, newText: newVal });
34480
+ }
34481
+ }
34482
+ }
34483
+ }
34484
+ replacedText.forEach((item) => {
34485
+ val = val.replace(item.oldText, item.newText);
34486
+ });
34487
+ return val;
34488
+ }
34489
+ valueToData(val) {
34490
+ if (!val)
34491
+ return val;
34492
+ return val.replace(/\\n/g, "\n")
34493
+ .replace(/\\r/g, "\r")
34494
+ .replace(/\\t/g, "\t");
34495
+ }
34496
+ valueFromData(val) {
34497
+ if (!val)
34498
+ return val;
34499
+ return val.replace(/\n/g, "\\n")
34400
34500
  .replace(/\r/g, "\\r")
34401
34501
  .replace(/\t/g, "\\t");
34402
- };
34403
- question.valueToDataCallback = (val: any): any => {
34404
- if(!val) return val;
34405
- return val.replace(/\\t/g, "\t")
34406
- .replace(/\\r/g, "\r")
34407
- .replace(/\\n/g, "\n")
34408
- .replace(/\\"/g, '"')
34409
- .replace(/\\'/g, "'")
34410
- .replace(/\\\\/g, "\\");
34411
- };
34412
- */
34413
34502
  }
34414
34503
  }
34415
34504
  class PropertyGridEditorCondition extends PropertyGridEditorExpression {
@@ -35036,12 +35125,19 @@ class PropertyGridEditorMatrixItemValues extends PropertyGridEditorMatrix {
35036
35125
  return (!!column &&
35037
35126
  column.isVisible &&
35038
35127
  !column.readOnly &&
35039
- !this.hasMultipleLanguage(items) &&
35040
- !this.hasVisibleIfOrEnableIf(items));
35128
+ !this.hasMultipleLanguage(items));
35041
35129
  }
35042
35130
  getAllowRowDragDrop(prop) { return true; }
35043
35131
  createPropertyEditorSetup(obj, prop, question, options) {
35044
- var names = question.columns.filter(c => !c.readOnly).map(c => c.name);
35132
+ const names = question.columns.filter(c => !c.readOnly).map(c => c.name);
35133
+ const visibleIfProp = Serializer.findProperty("itemvalue", "visibleIf");
35134
+ if (visibleIfProp && visibleIfProp.visible) {
35135
+ names.push("visibleIf");
35136
+ const enableIfProp = Serializer.findProperty("itemvalue", "enableIf");
35137
+ if (enableIfProp && enableIfProp.visible) {
35138
+ names.push("enableIf");
35139
+ }
35140
+ }
35045
35141
  return new FastEntryEditor(obj[prop.name], options, prop.className, names);
35046
35142
  }
35047
35143
  canClearPropertyValue(obj, prop, question, options) {
@@ -35096,17 +35192,6 @@ class PropertyGridEditorMatrixItemValues extends PropertyGridEditorMatrix {
35096
35192
  }
35097
35193
  return false;
35098
35194
  }
35099
- hasVisibleIfOrEnableIf(items) {
35100
- if (!items || !Array.isArray(items)) {
35101
- return false;
35102
- }
35103
- for (var i = 0; i < items.length; i++) {
35104
- if (!!items[i].visibleIf || items[i].enableIf) {
35105
- return true;
35106
- }
35107
- }
35108
- return false;
35109
- }
35110
35195
  onMatrixCellCreated(obj, options) {
35111
35196
  super.onMatrixCellCreated(obj, options);
35112
35197
  function updateHtml(question, value) {
@@ -36180,8 +36265,8 @@ class CreatorPreset extends CreatorPresetBase {
36180
36265
  }
36181
36266
 
36182
36267
  let Version;
36183
- Version = `${"2.0.6"}`;
36184
- checkLibraryVersion(`${"2.0.6"}`, "survey-creator-core");
36268
+ Version = `${"2.0.8"}`;
36269
+ checkLibraryVersion(`${"2.0.8"}`, "survey-creator-core");
36185
36270
 
36186
36271
  export { AceJsonEditorModel, ColorCalculator, CreatorAction, CreatorBase, CreatorEvent, CreatorPreset, CreatorPresetBase, CreatorPresetPropertyGrid, CreatorPresetPropertyGridDefinition, CreatorPresetTabs, CreatorPresetToolbox, CreatorPresetToolboxConfigurator, CreatorPresetToolboxDefinition, CreatorResponsivityManager, CreatorThemeModel, CreatorThemes, DEFAULT_MONITOR_DPI, DefaultFonts, DragDropSurveyElements, EditorLocalization, EmptySurveyCreatorOptions, FooterToolbarActionContainer, HEXToRGB, HSBToRGB, HueColorCalculator, ImageItemValueWrapperViewModel, ItemValueWrapperViewModel, JsonDuplicateNameError, JsonEditorBaseModel, LogicEvent, LogoImageViewModel, MatrixCellWrapperEditSurvey, MatrixCellWrapperViewModel, MenuButton, ObjType, ObjectSelector, ObjectSelectorItem, ObjectSelectorModel, PageAdorner, PageNavigatorViewModel, PagesController, PredefinedBackgroundColors, PredefinedColors, PredefinedCreatorThemes, PredefinedThemes, PropertyEditorSetupValue, PropertyGridCellsEditor, PropertyGridEditor, PropertyGridEditorBackgroundCornerRadius, PropertyGridEditorBindings, PropertyGridEditorBoolean, PropertyGridEditorCollection, PropertyGridEditorColor, PropertyGridEditorColorWithAlpha, PropertyGridEditorCondition, PropertyGridEditorDateTime, PropertyGridEditorDropdown, PropertyGridEditorExpression, PropertyGridEditorFontSettings, PropertyGridEditorHtml, PropertyGridEditorImageSize, PropertyGridEditorMatrix, PropertyGridEditorMatrixCalculatedValues, PropertyGridEditorMatrixColumns, PropertyGridEditorMatrixHtmlConditions, PropertyGridEditorMatrixItemValues, PropertyGridEditorMatrixLayoutColumns, PropertyGridEditorMatrixMultipleTypes, PropertyGridEditorMatrixMutlipleTextItems, PropertyGridEditorMatrixPages, PropertyGridEditorMatrixRateValues, PropertyGridEditorMatrixTriggers, PropertyGridEditorMatrixUrlConditions, PropertyGridEditorMatrixValidators, PropertyGridEditorNumber, PropertyGridEditorPage, PropertyGridEditorQuestion, PropertyGridEditorQuestionCarryForward, PropertyGridEditorQuestionHeader, PropertyGridEditorQuestionMaskSettings, PropertyGridEditorQuestionRestfull, PropertyGridEditorQuestionSelectBase, PropertyGridEditorQuestionValue, PropertyGridEditorSet, PropertyGridEditorShadowEffects, PropertyGridEditorSpinEdit, PropertyGridEditorString, PropertyGridEditorStringArray, PropertyGridEditorStringBase, PropertyGridEditorSwitchToggle, PropertyGridEditorText, PropertyGridEditorUndefinedBoolean, PropertyGridLinkEditor, PropertyGridModel, PropertyGridPanelValueEditor, PropertyGridRowValueEditor, PropertyGridTitleActionsCreator, PropertyGridTriggerValueEditor, PropertyGridTriggerValueInLogicEditor, PropertyGridValueEditor, PropertyGridValueEditorBase, PropertyGridViewModel, PropertyJSONGenerator, QuestionAdornerViewModel, QuestionColorModel, QuestionCommentWithResetModel, QuestionConvertMode, QuestionConverter, QuestionDropdownAdornerViewModel, QuestionEmbeddedSurveyModel, QuestionFileEditorModel, QuestionImageAdornerViewModel, QuestionLinkValueModel, QuestionRatingAdornerViewModel, QuestionSpinEditorModel, QuestionTextWithResetModel, QuestionToolbox, QuestionToolboxCategory, QuestionToolboxItem, RGBToHSB, ResetValueAdorner, ResizeManager, RowViewModel, SearchManager, SearchManagerPropertyGrid, SearchManagerToolbox, SidebarHeaderModel, SidebarModel, SidebarPageModel, StringEditorConnector, StringEditorViewModelBase, StringItemsNavigatorBase, SurveyCreatorModel, SurveyHelper, SurveyJSON5, SurveyLogic, SurveyLogicUI, SurveyQuestionEditorDefinition, SurveyQuestionEditorPropertyDefinition, SurveyQuestionEditorTabDefinition, SurveyQuestionProperties, SurveyResultsItemModel, SurveyResultsModel, SurveySimulatorModel, SurveyTextWorker, SurveyTextWorkerError, SurveyTextWorkerJsonError, SurveyTextWorkerParserError, Switcher, TabControlModel, TabDesignerPlugin, TabDesignerViewModel, TabJsonEditorAcePlugin, TabJsonEditorBasePlugin, TabJsonEditorTextareaPlugin, TabLogicPlugin, TabTestPlugin, TabTranslationPlugin, TabbedMenuContainer, TabbedMenuItem, TestSurveyTabViewModel, TextareaJsonEditorModel, ThemeModelEditorDefinition, ThemeTabPlugin, ThemeTabViewModel, Themes, ToolbarActionContainer, ToolboxToolViewModel, Transaction, Translation, TranslationEditor, TranslationForEditor, TranslationGroup, TranslationItem, TranslationItemBase, TranslationItemString, UndoRedoAction, UndoRedoArrayAction, UndoRedoManager, UndoRedoPlugin, Version, assign, assignDefaultClasses, backgroundCornerRadiusFromCssVariable, backgroundCornerRadiusToCssVariable, calculateDragOverLocation, calculateIsEdge, calculateIsSide, capitalize, clearNewLines, colorsAreEqual, convertRgbaToString, copyCssClasses, copyObject, createBoxShadow, createBoxShadowReset, createColor, createExportCSVAction, createImportCSVAction, creatorThemeModelEditorDefinition, creatorThemeModelPropertyGridDefinition, defaultCreatorThemesOrder, defaultPropertyGridDefinition, defaultStrings, defaultThemesOrder, editableStringRendererName, editorLocalization, enStrings, findParentNode, focusFirstControl, fontsettingsFromCssVariable, fontsettingsToCssVariable, getAcceptedTypesByContentMode, getElementWrapperComponentData, getElementWrapperComponentName, getFirstNonTextElement, getItemValueWrapperComponentData, getItemValueWrapperComponentName, getLocString, getLocaleStrings, getNextItemText, getNextItemValue, getNextValue, getNodesFromKoComponentInfo, getOS, getPredefinedBackgoundColorsChoices, getPredefinedColorsItemValues, getQuestionContentWrapperComponentName, getQuestionFromObj, getRGBaChannelValues, iconsV1, iconsV2, ignoreUndoRedo, imageMimeTypes, ingectAlpha, initLogicOperator, initialSettingsAllowShowEmptyTitleInDesignMode, initializeDesignTimeSurveyModel, isStringEditable, isTextInput, listComponentCss, editorLocalization as localization, logicCss, notShortCircuitAnd, parseBoxShadow, parseColor, parseRgbaFromString, propertyGridCss, registerAdorner, registerCreatorTheme, registerSurveyTheme, removeAdorners, roundTo2Decimals, saveToFileHandler, scrollElementIntoView, select, setSurveyJSONForPropertyGrid, settings, setupLocale, simulatorDevices, svgBundle, themeModelPropertyGridDefinition, toggleHovered, translationCss, trimBoxShadowValue, trimEmptyFields, undoRedoTransaction, updateBackgroundCornerRadiusJSON, updateFontSettingsJSON, updateShadowEffectsJSON, updatecoloralphaJSON, wrapTextByCurlyBraces };
36187
36272
  //# sourceMappingURL=survey-creator-core.mjs.map