survey-creator-core 2.3.10 → 2.3.11

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/greek.mjs +1 -1
  13. package/fesm/i18n/haitian-creole.mjs +1 -1
  14. package/fesm/i18n/hebrew.mjs +1 -1
  15. package/fesm/i18n/hungarian.mjs +1 -1
  16. package/fesm/i18n/index.mjs +1 -1
  17. package/fesm/i18n/indonesian.mjs +1 -1
  18. package/fesm/i18n/italian.mjs +1 -1
  19. package/fesm/i18n/japanese.mjs +1 -1
  20. package/fesm/i18n/korean.mjs +1 -1
  21. package/fesm/i18n/malay.mjs +1 -1
  22. package/fesm/i18n/mongolian.mjs +1 -1
  23. package/fesm/i18n/norwegian.mjs +1 -1
  24. package/fesm/i18n/persian.mjs +1 -1
  25. package/fesm/i18n/polish.mjs +1 -1
  26. package/fesm/i18n/portuguese.mjs +1 -1
  27. package/fesm/i18n/romanian.mjs +1 -1
  28. package/fesm/i18n/russian.mjs +1 -1
  29. package/fesm/i18n/simplified-chinese.mjs +1 -1
  30. package/fesm/i18n/slovak.mjs +1 -1
  31. package/fesm/i18n/slovenian.mjs +1 -1
  32. package/fesm/i18n/spanish.mjs +1 -1
  33. package/fesm/i18n/swedish.mjs +1 -1
  34. package/fesm/i18n/tajik.mjs +1 -1
  35. package/fesm/i18n/thai.mjs +1 -1
  36. package/fesm/i18n/traditional-chinese.mjs +1 -1
  37. package/fesm/i18n/turkish.mjs +1 -1
  38. package/fesm/survey-creator-core.i18n.mjs +1 -1
  39. package/fesm/survey-creator-core.mjs +184 -29
  40. package/fesm/survey-creator-core.mjs.map +1 -1
  41. package/fesm/themes/index.mjs +1 -1
  42. package/fonts.fontless.css +1 -1
  43. package/fonts.fontless.min.css +1 -1
  44. package/i18n/arabic.js +1 -1
  45. package/i18n/arabic.min.js.LICENSE.txt +1 -1
  46. package/i18n/bulgarian.js +1 -1
  47. package/i18n/bulgarian.min.js.LICENSE.txt +1 -1
  48. package/i18n/burmese.js +1 -1
  49. package/i18n/burmese.min.js.LICENSE.txt +1 -1
  50. package/i18n/croatian.js +1 -1
  51. package/i18n/croatian.min.js.LICENSE.txt +1 -1
  52. package/i18n/czech.js +1 -1
  53. package/i18n/czech.min.js.LICENSE.txt +1 -1
  54. package/i18n/danish.js +1 -1
  55. package/i18n/danish.min.js.LICENSE.txt +1 -1
  56. package/i18n/dutch.js +1 -1
  57. package/i18n/dutch.min.js.LICENSE.txt +1 -1
  58. package/i18n/english.js +1 -1
  59. package/i18n/english.min.js.LICENSE.txt +1 -1
  60. package/i18n/finnish.js +1 -1
  61. package/i18n/finnish.min.js.LICENSE.txt +1 -1
  62. package/i18n/french.js +1 -1
  63. package/i18n/french.min.js.LICENSE.txt +1 -1
  64. package/i18n/german.js +1 -1
  65. package/i18n/german.min.js.LICENSE.txt +1 -1
  66. package/i18n/greek.js +1 -1
  67. package/i18n/greek.min.js.LICENSE.txt +1 -1
  68. package/i18n/haitian-creole.js +1 -1
  69. package/i18n/haitian-creole.min.js.LICENSE.txt +1 -1
  70. package/i18n/hebrew.js +1 -1
  71. package/i18n/hebrew.min.js.LICENSE.txt +1 -1
  72. package/i18n/hungarian.js +1 -1
  73. package/i18n/hungarian.min.js.LICENSE.txt +1 -1
  74. package/i18n/index.js +1 -1
  75. package/i18n/index.min.js.LICENSE.txt +1 -1
  76. package/i18n/indonesian.js +1 -1
  77. package/i18n/indonesian.min.js.LICENSE.txt +1 -1
  78. package/i18n/italian.js +1 -1
  79. package/i18n/italian.min.js.LICENSE.txt +1 -1
  80. package/i18n/japanese.js +1 -1
  81. package/i18n/japanese.min.js.LICENSE.txt +1 -1
  82. package/i18n/korean.js +1 -1
  83. package/i18n/korean.min.js.LICENSE.txt +1 -1
  84. package/i18n/malay.js +1 -1
  85. package/i18n/malay.min.js.LICENSE.txt +1 -1
  86. package/i18n/mongolian.js +1 -1
  87. package/i18n/mongolian.min.js.LICENSE.txt +1 -1
  88. package/i18n/norwegian.js +1 -1
  89. package/i18n/norwegian.min.js.LICENSE.txt +1 -1
  90. package/i18n/persian.js +1 -1
  91. package/i18n/persian.min.js.LICENSE.txt +1 -1
  92. package/i18n/polish.js +1 -1
  93. package/i18n/polish.min.js.LICENSE.txt +1 -1
  94. package/i18n/portuguese.js +1 -1
  95. package/i18n/portuguese.min.js.LICENSE.txt +1 -1
  96. package/i18n/romanian.js +1 -1
  97. package/i18n/romanian.min.js.LICENSE.txt +1 -1
  98. package/i18n/russian.js +1 -1
  99. package/i18n/russian.min.js.LICENSE.txt +1 -1
  100. package/i18n/simplified-chinese.js +1 -1
  101. package/i18n/simplified-chinese.min.js.LICENSE.txt +1 -1
  102. package/i18n/slovak.js +1 -1
  103. package/i18n/slovak.min.js.LICENSE.txt +1 -1
  104. package/i18n/slovenian.js +1 -1
  105. package/i18n/slovenian.min.js.LICENSE.txt +1 -1
  106. package/i18n/spanish.js +1 -1
  107. package/i18n/spanish.min.js.LICENSE.txt +1 -1
  108. package/i18n/swedish.js +1 -1
  109. package/i18n/swedish.min.js.LICENSE.txt +1 -1
  110. package/i18n/tajik.js +1 -1
  111. package/i18n/tajik.min.js.LICENSE.txt +1 -1
  112. package/i18n/thai.js +1 -1
  113. package/i18n/thai.min.js.LICENSE.txt +1 -1
  114. package/i18n/traditional-chinese.js +1 -1
  115. package/i18n/traditional-chinese.min.js.LICENSE.txt +1 -1
  116. package/i18n/turkish.js +1 -1
  117. package/i18n/turkish.min.js.LICENSE.txt +1 -1
  118. package/package.json +2 -2
  119. package/survey-creator-core.css +9 -2
  120. package/survey-creator-core.fontless.css +8 -1
  121. package/survey-creator-core.fontless.css.map +1 -1
  122. package/survey-creator-core.fontless.min.css +3 -3
  123. package/survey-creator-core.i18n.js +1 -1
  124. package/survey-creator-core.i18n.min.js.LICENSE.txt +1 -1
  125. package/survey-creator-core.js +204 -28
  126. package/survey-creator-core.js.map +1 -1
  127. package/survey-creator-core.min.css +4 -4
  128. package/survey-creator-core.min.js +1 -1
  129. package/survey-creator-core.min.js.LICENSE.txt +1 -1
  130. package/themes/default-contrast.js +1 -1
  131. package/themes/default-contrast.min.js.LICENSE.txt +1 -1
  132. package/themes/default-dark.js +1 -1
  133. package/themes/default-dark.min.js.LICENSE.txt +1 -1
  134. package/themes/index.js +1 -1
  135. package/themes/index.min.js.LICENSE.txt +1 -1
  136. package/themes/sc2020.js +1 -1
  137. package/themes/sc2020.min.js.LICENSE.txt +1 -1
  138. package/typings/components/item-value.d.ts +12 -1
  139. package/typings/creator-base.d.ts +4 -1
  140. package/typings/creator-options.d.ts +1 -0
  141. package/typings/dragdrop-survey-elements.d.ts +0 -1
  142. package/typings/expand-collapse-manager.d.ts +13 -1
  143. package/typings/survey-helper.d.ts +4 -1
@@ -1,12 +1,12 @@
1
1
  /*!
2
- * SurveyJS Creator v2.3.10
2
+ * SurveyJS Creator v2.3.11
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, CssClassBuilder, AdaptiveActionContainer, UpdateResponsivenessMode, AnimationBoolean, DragOrClickHelper, ElementFactory, ComponentCollection, JsonObject, VerticalResponsivityManager, 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, glc, slk, Notifier, SvgThemeSets, IsTouch, SurveyElement, Question, PanelModel, DragDropChoices, chooseFiles, classesToSelector, PanelModelBase, QuestionCompositeModel, 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, JsonError, property, Base, Action, ComputedUpdater, ActionContainer, propertyArray, CssClassBuilder, AdaptiveActionContainer, UpdateResponsivenessMode, AnimationBoolean, DragOrClickHelper, ElementFactory, ComponentCollection, JsonObject, VerticalResponsivityManager, ListModel, ItemValue, 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, glc, slk, Notifier, SvgThemeSets, IsTouch, SurveyElement, Question, PanelModel, DragDropChoices, chooseFiles, classesToSelector, PanelModelBase, QuestionCompositeModel, 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 { setupLocale } from "survey-creator-core";
@@ -3680,6 +3680,10 @@ function wrapTextByCurlyBraces(text) {
3680
3680
  return settings.logic.openBracket + text + settings.logic.closeBracket;
3681
3681
  }
3682
3682
 
3683
+ function getItemValueSeparator() {
3684
+ const res = settings$1.itemValueSeparator;
3685
+ return !!res ? res : "|";
3686
+ }
3683
3687
  var ObjType;
3684
3688
  (function (ObjType) {
3685
3689
  ObjType["Unknown"] = "unknown";
@@ -3911,6 +3915,17 @@ class SurveyHelper {
3911
3915
  static canSelectObj(obj) {
3912
3916
  return !obj || obj["disableSelecting"] !== true;
3913
3917
  }
3918
+ static isChoiceItemPanel(panel) {
3919
+ return this.getChoiceIItemPanel(panel) !== null;
3920
+ }
3921
+ static getChoiceIItemPanel(element) {
3922
+ while (!!element) {
3923
+ if (element.isPanel && !!element.choiceItem)
3924
+ return element;
3925
+ element = element.parent;
3926
+ }
3927
+ return null;
3928
+ }
3914
3929
  static warnNonSupported(name, newPropertyName) {
3915
3930
  let outputText = wrapTextByCurlyBraces(name) + " is not supported in V2.";
3916
3931
  if (!!newPropertyName) {
@@ -3967,7 +3982,7 @@ class SurveyHelper {
3967
3982
  .filter((row) => !row.cells[0].hasError)
3968
3983
  .map((row) => row.cells
3969
3984
  .map((cell) => cell.value || "")
3970
- .join(ItemValue.Separator)
3985
+ .join(getItemValueSeparator())
3971
3986
  .replace(/\|$/, ""))
3972
3987
  .join("\n");
3973
3988
  return result;
@@ -3979,7 +3994,7 @@ class SurveyHelper {
3979
3994
  text += "\n";
3980
3995
  text += item.value;
3981
3996
  if (item.pureText)
3982
- text += ItemValue.Separator + item.pureText;
3997
+ text += getItemValueSeparator() + item.pureText;
3983
3998
  });
3984
3999
  return text;
3985
4000
  }
@@ -3991,7 +4006,7 @@ class SurveyHelper {
3991
4006
  for (var i = 0; i < texts.length; i++) {
3992
4007
  if (!texts[i])
3993
4008
  continue;
3994
- var elements = texts[i].split(ItemValue.Separator);
4009
+ var elements = texts[i].split(getItemValueSeparator());
3995
4010
  var valueItem = Serializer.createClass(className);
3996
4011
  properties.forEach((p, i) => {
3997
4012
  valueItem[p.name] = elements[i];
@@ -14416,7 +14431,7 @@ class PropertyGridModel {
14416
14431
  panel.collapse();
14417
14432
  }
14418
14433
  }
14419
- if (focus) {
14434
+ if (focus && !question.isReadOnly) {
14420
14435
  question.focus();
14421
14436
  }
14422
14437
  else {
@@ -15385,10 +15400,11 @@ class PropertyGridEditorDropdown extends PropertyGridEditor {
15385
15400
  return true;
15386
15401
  if (this.isLocaleProp(prop))
15387
15402
  return false;
15388
- if (!this.canRenderAsButtonGroup ||
15389
- !choices ||
15390
- choices.length == 0 ||
15391
- choices.length > 4)
15403
+ if (!this.canRenderAsButtonGroup)
15404
+ return false;
15405
+ if (!choices || !Array.isArray(choices))
15406
+ return false;
15407
+ if (choices.length == 0 || choices.length > 4)
15392
15408
  return false;
15393
15409
  var charCount = 0;
15394
15410
  for (var i = 0; i < choices.length; i++) {
@@ -17609,10 +17625,11 @@ class TranslationEditor {
17609
17625
  });
17610
17626
  }
17611
17627
  setupNavigationButtons(survey) {
17628
+ survey.showCompleteButton = false;
17612
17629
  const navigationBar = new SurveyElementActionContainer();
17613
17630
  navigationBar.allowResponsiveness();
17614
- survey["navigationBarValue"] = navigationBar;
17615
- survey.findLayoutElement("buttons-navigation").data = navigationBar;
17631
+ survey["navigationBarTopValue"] = navigationBar;
17632
+ survey.findLayoutElement("buttons-navigation-top").data = navigationBar;
17616
17633
  navigationBar.locOwner = survey;
17617
17634
  navigationBar.cssClasses = survey.css.actionBar;
17618
17635
  navigationBar.containerCss = survey.css.footer;
@@ -17700,7 +17717,7 @@ class TranslationEditor {
17700
17717
  return action;
17701
17718
  }
17702
17719
  updateFromLocaleAction() {
17703
- const action = this.translation.stringsHeaderSurvey.findLayoutElement("buttons-navigation").data.getActionById("svc-translation-fromlocale");
17720
+ const action = this.translation.stringsHeaderSurvey.findLayoutElement("buttons-navigation-top").data.getActionById("svc-translation-fromlocale");
17704
17721
  if (!!action) {
17705
17722
  action.enabled = this.fromLocales.length > 0;
17706
17723
  action.iconName = action.enabled ? "icon-chevron_16x16" : undefined;
@@ -22909,15 +22926,6 @@ class DragDropSurveyElements extends DragDropCore {
22909
22926
  });
22910
22927
  return result;
22911
22928
  }
22912
- getDragDropElementType(element) {
22913
- if (element.isPage)
22914
- return ElType.Page;
22915
- if (element.isPanel)
22916
- return ElType.Panel;
22917
- if (element instanceof QuestionPanelDynamicModel)
22918
- return ElType.DynamicPanel;
22919
- return ElType.Question;
22920
- }
22921
22929
  dragOver(event) {
22922
22930
  const dropTargetNode = this.findDropTargetNodeFromPoint(event.clientX, event.clientY);
22923
22931
  if (!dropTargetNode) {
@@ -26887,10 +26895,66 @@ class ExpandCollapseManager {
26887
26895
  constructor(creator) {
26888
26896
  this.creator = creator;
26889
26897
  this._lockQuestions = false;
26898
+ this.expandChoicesStates = {};
26890
26899
  }
26891
26900
  expandCollapseElements(reason, isCollapsed, elements = null) {
26892
26901
  this.updateCollapsed(elements || this.getCollapsableElements(), isCollapsed, reason);
26893
26902
  }
26903
+ clearExpandChoicesStates() {
26904
+ this.expandChoicesStates = {};
26905
+ }
26906
+ setChoicesState(item, isExpanded, adorner) {
26907
+ const id = item.uniqueId;
26908
+ if (isExpanded) {
26909
+ let adorners = this.expandChoicesStates[id];
26910
+ if (!adorners) {
26911
+ adorners = [];
26912
+ this.expandChoicesStates[id] = adorners;
26913
+ }
26914
+ if (adorner) {
26915
+ adorners.push(adorner);
26916
+ }
26917
+ }
26918
+ else {
26919
+ delete this.expandChoicesStates[id];
26920
+ }
26921
+ }
26922
+ isChoiceExpanded(item) {
26923
+ return !!this.expandChoicesStates[item.uniqueId];
26924
+ }
26925
+ expandChoices() {
26926
+ if (Array.isArray(this.collapsedChoices)) {
26927
+ this.expandCollapseChoices(this.collapsedChoices, true);
26928
+ }
26929
+ this.collapsedChoices = null;
26930
+ }
26931
+ collapseChoices(items) {
26932
+ this.collapsedChoices = items;
26933
+ this.expandCollapseChoices(items, false);
26934
+ }
26935
+ disposeChoice(item, adorner) {
26936
+ const id = item.uniqueId;
26937
+ const adorners = this.expandChoicesStates[id];
26938
+ if (Array.isArray(adorners)) {
26939
+ const index = adorners.indexOf(adorner);
26940
+ if (index !== -1) {
26941
+ adorners.splice(index, 1);
26942
+ }
26943
+ if (adorners.length === 0) {
26944
+ delete this.expandChoicesStates[id];
26945
+ }
26946
+ }
26947
+ }
26948
+ expandCollapseChoices(items, isExpanded) {
26949
+ items.forEach(item => {
26950
+ const adorners = this.expandChoicesStates[item.uniqueId];
26951
+ if (Array.isArray(adorners)) {
26952
+ adorners.forEach(adorner => {
26953
+ adorner.expandCollapse(isExpanded);
26954
+ });
26955
+ }
26956
+ });
26957
+ }
26894
26958
  get questionsLocked() {
26895
26959
  return this._lockQuestions;
26896
26960
  }
@@ -29008,6 +29072,7 @@ class SurveyCreatorModel extends Base {
29008
29072
  * @see showTranslationTab
29009
29073
  */
29010
29074
  this.clearTranslationsOnSourceTextChange = false;
29075
+ this.maxChoiceContentNestingLevel = 0;
29011
29076
  /**
29012
29077
  * An event that is raised to determine whether in-place editing is allowed for an element on the design surface. Use this event to enable or disable in-place editing for specific elements.
29013
29078
  * @see inplaceEditChoiceValues
@@ -29539,6 +29604,7 @@ class SurveyCreatorModel extends Base {
29539
29604
  * @returns true if initial survey doesn't have any elements or properties
29540
29605
  */
29541
29606
  initSurveyWithJSON(json, clearState) {
29607
+ this.expandCollapseManager.clearExpandChoicesStates();
29542
29608
  if (!json) {
29543
29609
  json = { "headerView": "advanced" };
29544
29610
  }
@@ -29690,11 +29756,13 @@ class SurveyCreatorModel extends Base {
29690
29756
  this.dragDropChoices = new DragDropChoices(null, this);
29691
29757
  this.dragDropChoices.onDragStart.add((sender, options) => {
29692
29758
  this.startUndoRedoTransaction("drag drop");
29759
+ this.expandCollapseManager.collapseChoices(this.dragDropChoices.parentElement.choices);
29693
29760
  });
29694
29761
  this.dragDropChoices.onDragEnd.add((sender, options) => {
29695
29762
  this.selectElement(options.draggedElement, undefined, false);
29696
29763
  });
29697
29764
  this.dragDropChoices.onDragClear.add((sender, options) => {
29765
+ this.expandCollapseManager.expandChoices();
29698
29766
  this.stopUndoRedoTransaction();
29699
29767
  });
29700
29768
  }
@@ -30575,11 +30643,28 @@ class SurveyCreatorModel extends Base {
30575
30643
  }
30576
30644
  });
30577
30645
  }
30578
- focusElement(element, focus, selEl = null, propertyName = null, startEdit = null) {
30646
+ focusElement(element, focus, selEl = null, propertyName = null, startEdit = null, onCallback = null) {
30579
30647
  if (!selEl)
30580
30648
  selEl = this.getSelectedSurveyElement();
30581
30649
  if (!selEl)
30582
30650
  return;
30651
+ const doFocus = () => this.focusElementCore(element, focus, selEl, propertyName, startEdit, onCallback);
30652
+ if (element && SurveyHelper.isChoiceItemPanel(element.parent)) {
30653
+ const panel = SurveyHelper.getChoiceIItemPanel(element);
30654
+ const item = panel["choiceItem"];
30655
+ const q = item.choiceOwner;
30656
+ if (q.isCollapsed)
30657
+ q.expand();
30658
+ this.focusElement(q, false, null, null, null, () => {
30659
+ item.onExpandPanelAtDesign.fire(item, {});
30660
+ doFocus();
30661
+ });
30662
+ }
30663
+ else {
30664
+ doFocus();
30665
+ }
30666
+ }
30667
+ focusElementCore(element, focus, selEl = null, propertyName = null, startEdit = null, onCallback = null) {
30583
30668
  const elementPage = this.getPageByElement(selEl);
30584
30669
  clearInterval(this.currentFocusInterval);
30585
30670
  clearTimeout(this.currentFocusTimeout);
@@ -30624,10 +30709,16 @@ class SurveyCreatorModel extends Base {
30624
30709
  if (startEdit && !!element) {
30625
30710
  StringEditorConnector.get(element.locTitle).activateEditor();
30626
30711
  }
30712
+ onCallback && onCallback();
30627
30713
  }, 1);
30628
30714
  }, 100);
30629
30715
  }, 50);
30630
30716
  }
30717
+ getChoiceItemQuestionToExpand(element) {
30718
+ const panel = SurveyHelper.getChoiceIItemPanel(element);
30719
+ const item = panel["choiceItem"];
30720
+ return item.choiceOwner;
30721
+ }
30631
30722
  getHtmlElementForScroll(element) {
30632
30723
  var _a;
30633
30724
  const id = element.getType() === "matrixdropdowncolumn" ? element.colOwner.id : element.id;
@@ -33968,6 +34059,11 @@ class ItemValueWrapperViewModel extends Base {
33968
34059
  this.isDragDropMoveUp = false;
33969
34060
  }
33970
34061
  };
34062
+ this.canShowPanelValue = undefined;
34063
+ this.onExpandPanelAtDesign = () => {
34064
+ this.showPanel = true;
34065
+ };
34066
+ this.item.onExpandPanelAtDesign.add(this.onExpandPanelAtDesign);
33971
34067
  this.updateIsNew(question, item);
33972
34068
  for (let key in specificChoices) {
33973
34069
  this.registerOnPropertyChanged(key, specificChoices[key]);
@@ -33995,6 +34091,7 @@ class ItemValueWrapperViewModel extends Base {
33995
34091
  if (!this.creator.isCanModifyProperty(question, "choices")) {
33996
34092
  this.canTouchItems = false;
33997
34093
  }
34094
+ this.setupShowPanel();
33998
34095
  }
33999
34096
  get canBeDragged() {
34000
34097
  return !this.isNew && this.question.choices.indexOf(this.item) > -1;
@@ -34033,9 +34130,18 @@ class ItemValueWrapperViewModel extends Base {
34033
34130
  get dragDropHelper() {
34034
34131
  return this.creator.dragDropChoices;
34035
34132
  }
34133
+ get expandCollapseManager() {
34134
+ return this.creator.expandCollapseManager;
34135
+ }
34036
34136
  dispose() {
34037
34137
  super.dispose();
34038
34138
  this.dragDropHelper.onGhostPositionChanged.remove(this.handleDragDropGhostPositionChanged);
34139
+ if (this.item) {
34140
+ this.item.onExpandPanelAtDesign.remove(this.onExpandPanelAtDesign);
34141
+ }
34142
+ if (this.canShowPanel()) {
34143
+ this.expandCollapseManager.disposeChoice(this.item, this);
34144
+ }
34039
34145
  }
34040
34146
  getGhostPosition(item) {
34041
34147
  if (this.dragDropHelper.dropTarget !== item)
@@ -34159,6 +34265,52 @@ class ItemValueWrapperViewModel extends Base {
34159
34265
  return false;
34160
34266
  return val >= min && val <= max;
34161
34267
  }
34268
+ canShowPanel() {
34269
+ if (this.canShowPanelValue === undefined) {
34270
+ this.canShowPanelValue = this.calcCanShowPanel();
34271
+ }
34272
+ return this.canShowPanelValue;
34273
+ }
34274
+ calcCanShowPanel() {
34275
+ if (!this.item.supportElements)
34276
+ return false;
34277
+ const level = this.creator.maxChoiceContentNestingLevel;
34278
+ if (level <= 0)
34279
+ return false;
34280
+ if (this.question.isBuiltInChoice(this.item))
34281
+ return false;
34282
+ let parent = this.question.parent;
34283
+ let index = 0;
34284
+ while (!!parent && index < level && SurveyHelper.isChoiceItemPanel(parent)) {
34285
+ index++;
34286
+ parent = parent.parent;
34287
+ }
34288
+ return !!parent && index < level;
34289
+ }
34290
+ get showPanel() {
34291
+ return this.getPropertyValue("showPanel", false);
34292
+ }
34293
+ set showPanel(val) {
34294
+ if (val && !this.canShowPanel())
34295
+ return;
34296
+ if (val) {
34297
+ this.item.panel.onFirstRendering();
34298
+ }
34299
+ this.expandCollapseManager.setChoicesState(this.item, val, this);
34300
+ this.expandCollapse(val);
34301
+ }
34302
+ expandCollapse(val) {
34303
+ this.setPropertyValue("showPanel", val);
34304
+ }
34305
+ togglePanel() {
34306
+ this.showPanel = !this.showPanel;
34307
+ }
34308
+ setupShowPanel() {
34309
+ const state = this.expandCollapseManager.isChoiceExpanded(this.item);
34310
+ if (state) {
34311
+ this.showPanel = true;
34312
+ }
34313
+ }
34162
34314
  }
34163
34315
  __decorate([
34164
34316
  property({ defaultValue: false })
@@ -35432,6 +35584,9 @@ class PropertyGridEditorCondition extends PropertyGridEditorExpression {
35432
35584
  PropertyGridEditorCollection.register(new PropertyGridEditorExpression());
35433
35585
  PropertyGridEditorCollection.register(new PropertyGridEditorCondition());
35434
35586
 
35587
+ function getSeparator() {
35588
+ return getItemValueSeparator();
35589
+ }
35435
35590
  class FastEntryEditorBase extends PropertyEditorSetupValue {
35436
35591
  constructor(choices, options = null, className = "item", names = []) {
35437
35592
  super(options);
@@ -35531,7 +35686,7 @@ class FastEntryEditorBase extends PropertyEditorSetupValue {
35531
35686
  for (var i = 0; i < texts.length; i++) {
35532
35687
  if (!texts[i])
35533
35688
  continue;
35534
- var elements = texts[i].split(ItemValue.Separator);
35689
+ var elements = texts[i].split(getSeparator());
35535
35690
  var valueItem = Serializer.createClass(this.className);
35536
35691
  this.names.forEach((name, i) => {
35537
35692
  valueItem[name] = elements[i];
@@ -35563,7 +35718,7 @@ class FastEntryEditorBase extends PropertyEditorSetupValue {
35563
35718
  let str = texts[i];
35564
35719
  if (!str)
35565
35720
  continue;
35566
- let value = str.split(ItemValue.Separator)[0];
35721
+ let value = str.split(getSeparator())[0];
35567
35722
  if (values[value])
35568
35723
  return value;
35569
35724
  values[value] = true;
@@ -35588,7 +35743,7 @@ class FastEntryEditorBase extends PropertyEditorSetupValue {
35588
35743
  }
35589
35744
  if (!Helpers.isValueEmpty(str)) {
35590
35745
  for (var i = 0; i < separatorCounter; i++) {
35591
- text += ItemValue.Separator;
35746
+ text += getSeparator();
35592
35747
  }
35593
35748
  text += str;
35594
35749
  separatorCounter = 1;
@@ -37169,8 +37324,8 @@ class CreatorPreset extends CreatorPresetBase {
37169
37324
  }
37170
37325
 
37171
37326
  let Version;
37172
- Version = `${"2.3.10"}`;
37173
- checkLibraryVersion(`${"2.3.10"}`, "survey-creator-core");
37327
+ Version = `${"2.3.11"}`;
37328
+ checkLibraryVersion(`${"2.3.11"}`, "survey-creator-core");
37174
37329
 
37175
- 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, TabbedMenuMode, 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, getRowWrapperComponentData, getRowWrapperComponentName, 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, updateThemeEditorsDefaultFontFamily, updatecoloralphaJSON, wrapTextByCurlyBraces };
37330
+ 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, TabbedMenuMode, 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, getItemValueSeparator, getItemValueWrapperComponentData, getItemValueWrapperComponentName, getLocString, getLocaleStrings, getNextItemText, getNextItemValue, getNextValue, getNodesFromKoComponentInfo, getOS, getPredefinedBackgoundColorsChoices, getPredefinedColorsItemValues, getQuestionContentWrapperComponentName, getQuestionFromObj, getRGBaChannelValues, getRowWrapperComponentData, getRowWrapperComponentName, 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, updateThemeEditorsDefaultFontFamily, updatecoloralphaJSON, wrapTextByCurlyBraces };
37176
37331
  //# sourceMappingURL=survey-creator-core.mjs.map