survey-react-ui 2.5.16 → 3.0.0-beta.1

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.
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v2.5.16
2
+ * surveyjs - Survey JavaScript library v3.0.0-beta.1
3
3
  * Copyright (c) 2015-2026 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
6
6
 
7
- import { SurveyModel, Helpers, createSvg, LocalizableString, createPopupViewModel, CssClassBuilder, ActionDropdownViewModel, RendererFactory, doKey2ClickUp, SvgRegistry, PopupModalManager, settings, ScrollViewModel, addIconsToThemeSet, doKey2ClickBlur, doKey2ClickDown, Question, SurveyProgressModel, ProgressButtonsResponsivityManager, PopupSurveyModel, ButtonGroupItemModel, checkLibraryVersion } from 'survey-core';
7
+ import { SurveyModel, Helpers, createSvg, LocalizableString, createPopupViewModel, CssClassBuilder, ActionDropdownViewModel, RendererFactory, doKey2ClickUp, SvgRegistry, PopupModalManager, settings, ScrollViewModel, addIconsToThemeSet, doKey2ClickBlur, doKey2ClickDown, ResizeManager, Question, SurveyProgressModel, ProgressButtonsResponsivityManager, PopupSurveyModel, ButtonGroupItemModel, checkLibraryVersion } from 'survey-core';
8
8
  export { SurveyModel as Model, SurveyModel, SurveyWindowModel, settings, surveyLocalization, surveyStrings } from 'survey-core';
9
9
  import * as React from 'react';
10
10
  import * as ReactDOM from 'react-dom';
@@ -530,6 +530,10 @@ class SurveyAction extends SurveyElementBase {
530
530
  }
531
531
  }
532
532
  class SurveyActionBarItem extends SurveyElementBase {
533
+ constructor() {
534
+ super(...arguments);
535
+ this.ref = React.createRef();
536
+ }
533
537
  get item() {
534
538
  return this.props.item;
535
539
  }
@@ -556,9 +560,17 @@ class SurveyActionBarItem extends SurveyElementBase {
556
560
  const title = this.item.tooltip || this.item.title;
557
561
  const buttonContent = this.renderButtonContent();
558
562
  const tabIndex = this.item.disableTabStop ? -1 : undefined;
559
- const button = attachKey2click(React.createElement("button", { className: className, type: "button", disabled: this.item.disabled, onMouseDown: (args) => this.item.doMouseDown(args), onFocus: (args) => this.item.doFocus(args), onClick: (args) => this.item.doAction(args), title: title, tabIndex: tabIndex, "aria-checked": this.item.ariaChecked, "aria-expanded": this.item.ariaExpanded, "aria-labelledby": this.item.ariaLabelledBy, role: this.item.ariaRole }, buttonContent), this.item, { processEsc: false });
563
+ const button = attachKey2click(React.createElement("button", { ref: this.ref, className: className, type: "button", disabled: this.item.disabled, onMouseDown: (args) => this.item.doMouseDown(args), onFocus: (args) => this.item.doFocus(args), onClick: (args) => this.item.doAction(args), title: title, tabIndex: tabIndex, "aria-checked": this.item.ariaChecked, "aria-expanded": this.item.ariaExpanded, "aria-controls": this.item.ariaControls, "aria-labelledby": this.item.ariaLabelledBy, role: this.item.ariaRole }, buttonContent), this.item, { processEsc: false });
560
564
  return button;
561
565
  }
566
+ componentDidMount() {
567
+ super.componentDidMount();
568
+ this.props.item.setInputElement(this.ref.current);
569
+ }
570
+ componentWillUnmount() {
571
+ super.componentWillUnmount();
572
+ this.props.item.setInputElement(undefined);
573
+ }
562
574
  }
563
575
  ReactElementFactory.Instance.registerElement("sv-action-bar-item", (props) => {
564
576
  return React.createElement(SurveyActionBarItem, props);
@@ -1174,6 +1186,8 @@ var folder_24x24$1 = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/
1174
1186
 
1175
1187
  var fullsize_16x16$1 = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 13H4C2.9 13 2 12.1 2 11V5C2 3.9 2.9 3 4 3H12C13.1 3 14 3.9 14 5V11C14 12.1 13.1 13 12 13ZM4 5V11H12V5H4Z\"/></svg>";
1176
1188
 
1189
+ var grip$1 = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_247_12)\"><path d=\"M13.8666 9.86954C14.1595 9.57665 14.6342 9.57665 14.9271 9.86954C15.22 10.1624 15.22 10.6372 14.9271 10.9301L10.9271 14.9301C10.6342 15.223 10.1595 15.223 9.86659 14.9301C9.5737 14.6372 9.5737 14.1624 9.86659 13.8695L13.8666 9.86954Z\"/><path d=\"M13.4657 5.46961C13.7586 5.17672 14.2334 5.17672 14.5263 5.46961C14.8191 5.7625 14.8192 6.23726 14.5263 6.53015L6.52626 14.5302C6.23339 14.8229 5.75858 14.8229 5.46571 14.5302C5.17286 14.2373 5.17292 13.7625 5.46571 13.4696L13.4657 5.46961Z\"/></g><defs><clipPath id=\"clip0_247_12\"><rect width=\"16\" height=\"16\" fill=\"white\"/></clipPath></defs></svg>";
1190
+
1177
1191
  var image_48x48$1 = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M36 8H12C9.79 8 8 9.79 8 12V36C8 38.21 9.79 40 12 40H36C38.21 40 40 38.21 40 36V12C40 9.79 38.21 8 36 8ZM38 36C38 37.1 37.1 38 36 38H12C10.9 38 10 37.1 10 36V12C10 10.9 10.9 10 12 10H36C37.1 10 38 10.9 38 12V36ZM14 17C14 15.34 15.34 14 17 14C18.66 14 20 15.34 20 17C20 18.66 18.66 20 17 20C15.34 20 14 18.66 14 17ZM27 24L36 36H12L19 27L23 29L27 24Z\"/></svg>";
1178
1192
 
1179
1193
  var loading_48x48$1 = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_19679_369428)\"><path opacity=\"0.1\" d=\"M24 40C15.18 40 8 32.82 8 24C8 15.18 15.18 8 24 8C32.82 8 40 15.18 40 24C40 32.82 32.82 40 24 40ZM24 12C17.38 12 12 17.38 12 24C12 30.62 17.38 36 24 36C30.62 36 36 30.62 36 24C36 17.38 30.62 12 24 12Z\" fill=\"black\" fill-opacity=\"0.91\"/><path d=\"M10 26C8.9 26 8 25.1 8 24C8 15.18 15.18 8 24 8C25.1 8 26 8.9 26 10C26 11.1 25.1 12 24 12C17.38 12 12 17.38 12 24C12 25.1 11.1 26 10 26Z\"/></g><defs><clipPath id=\"clip0_19679_369428\"><rect width=\"32\" height=\"32\" fill=\"white\" transform=\"translate(8 8)\"/></clipPath></defs></svg>";
@@ -1262,6 +1276,7 @@ const icons$1 = {
1262
1276
  "flip-24x24": flip_24x24$1,
1263
1277
  "folder-24x24": folder_24x24$1,
1264
1278
  "fullsize-16x16": fullsize_16x16$1,
1279
+ "grip": grip$1,
1265
1280
  "image-48x48": image_48x48$1,
1266
1281
  "loading-48x48": loading_48x48$1,
1267
1282
  "maximize-16x16": maximize_16x16$1,
@@ -1360,6 +1375,8 @@ var folder_24x24 = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/sv
1360
1375
 
1361
1376
  var fullsize_16x16 = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 3.25H4C3.04 3.25 2.25 4.04 2.25 5V11C2.25 11.96 3.04 12.75 4 12.75H12C12.96 12.75 13.75 11.96 13.75 11V5C13.75 4.04 12.96 3.25 12 3.25ZM12.25 11C12.25 11.14 12.14 11.25 12 11.25H4C3.86 11.25 3.75 11.14 3.75 11V5C3.75 4.86 3.86 4.75 4 4.75H12C12.14 4.75 12.25 4.86 12.25 5V11Z\"/></svg>";
1362
1377
 
1378
+ var grip = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_247_12)\"><path d=\"M13.8666 9.86954C14.1595 9.57665 14.6342 9.57665 14.9271 9.86954C15.22 10.1624 15.22 10.6372 14.9271 10.9301L10.9271 14.9301C10.6342 15.223 10.1595 15.223 9.86659 14.9301C9.5737 14.6372 9.5737 14.1624 9.86659 13.8695L13.8666 9.86954Z\"/><path d=\"M13.4657 5.46961C13.7586 5.17672 14.2334 5.17672 14.5263 5.46961C14.8191 5.7625 14.8192 6.23726 14.5263 6.53015L6.52626 14.5302C6.23339 14.8229 5.75858 14.8229 5.46571 14.5302C5.17286 14.2373 5.17292 13.7625 5.46571 13.4696L13.4657 5.46961Z\"/></g><defs><clipPath id=\"clip0_247_12\"><rect width=\"16\" height=\"16\" fill=\"white\"/></clipPath></defs></svg>";
1379
+
1363
1380
  var image_48x48 = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M33 10.25H15C12.38 10.25 10.25 12.38 10.25 15V33C10.25 35.62 12.38 37.75 15 37.75H33C35.62 37.75 37.75 35.62 37.75 33V15C37.75 12.38 35.62 10.25 33 10.25ZM36.25 33C36.25 34.79 34.79 36.25 33 36.25H15C13.21 36.25 11.75 34.79 11.75 33V15C11.75 13.21 13.21 11.75 15 11.75H33C34.79 11.75 36.25 13.21 36.25 15V33ZM30.5 14.25C28.71 14.25 27.25 15.71 27.25 17.5C27.25 19.29 28.71 20.75 30.5 20.75C32.29 20.75 33.75 19.29 33.75 17.5C33.75 15.71 32.29 14.25 30.5 14.25ZM30.5 19.25C29.54 19.25 28.75 18.46 28.75 17.5C28.75 16.54 29.54 15.75 30.5 15.75C31.46 15.75 32.25 16.54 32.25 17.5C32.25 18.46 31.46 19.25 30.5 19.25ZM29.26 26.28C28.94 25.92 28.49 25.71 28.01 25.7C27.54 25.68 27.07 25.87 26.73 26.2L24.95 27.94L22.28 25.23C21.94 24.89 21.5 24.71 21 24.71C20.52 24.71 20.06 24.93 19.74 25.28L14.74 30.78C14.25 31.3 14.12 32.06 14.41 32.72C14.69 33.36 15.28 33.75 15.95 33.75H32.07C32.74 33.75 33.33 33.35 33.61 32.72C33.89 32.06 33.77 31.31 33.29 30.79L29.27 26.29L29.26 26.28ZM32.22 32.12C32.18 32.2 32.13 32.25 32.06 32.25H15.94C15.87 32.25 15.81 32.21 15.78 32.12C15.77 32.09 15.71 31.93 15.83 31.8L20.84 26.29C20.9 26.22 20.99 26.21 21.02 26.21C21.06 26.21 21.14 26.22 21.2 26.29L24.4 29.54C24.69 29.83 25.16 29.84 25.46 29.54L27.77 27.27C27.83 27.21 27.9 27.2 27.94 27.2C28.01 27.2 28.06 27.21 28.13 27.28L32.16 31.79C32.16 31.79 32.16 31.79 32.17 31.8C32.29 31.93 32.23 32.09 32.22 32.12Z\"/></svg>";
1364
1381
 
1365
1382
  var loading_48x48 = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_19679_369428)\"><path opacity=\"0.1\" d=\"M24 40C15.18 40 8 32.82 8 24C8 15.18 15.18 8 24 8C32.82 8 40 15.18 40 24C40 32.82 32.82 40 24 40ZM24 12C17.38 12 12 17.38 12 24C12 30.62 17.38 36 24 36C30.62 36 36 30.62 36 24C36 17.38 30.62 12 24 12Z\" fill=\"black\" fill-opacity=\"0.91\"/><path d=\"M10 26C8.9 26 8 25.1 8 24C8 15.18 15.18 8 24 8C25.1 8 26 8.9 26 10C26 11.1 25.1 12 24 12C17.38 12 12 17.38 12 24C12 25.1 11.1 26 10 26Z\"/></g><defs><clipPath id=\"clip0_19679_369428\"><rect width=\"32\" height=\"32\" fill=\"white\" transform=\"translate(8 8)\"/></clipPath></defs></svg>";
@@ -1448,6 +1465,7 @@ const icons = {
1448
1465
  "flip-24x24": flip_24x24,
1449
1466
  "folder-24x24": folder_24x24,
1450
1467
  "fullsize-16x16": fullsize_16x16,
1468
+ "grip": grip,
1451
1469
  "image-48x48": image_48x48,
1452
1470
  "loading-48x48": loading_48x48,
1453
1471
  "maximize-16x16": maximize_16x16,
@@ -2111,23 +2129,12 @@ class SurveyPanelBase extends SurveyElementBase {
2111
2129
  }
2112
2130
  }
2113
2131
 
2114
- class CharacterCounterComponent extends SurveyElementBase {
2115
- getStateElement() {
2116
- return this.props.counter;
2117
- }
2118
- renderElement() {
2119
- return (React.createElement("div", { className: this.props.remainingCharacterCounter }, this.props.counter.remainingCharacterCounter));
2120
- }
2121
- }
2122
- ReactElementFactory.Instance.registerElement("sv-character-counter", (props) => {
2123
- return React.createElement(CharacterCounterComponent, props);
2124
- });
2125
-
2126
2132
  class TextAreaComponent extends SurveyElementBase {
2127
2133
  constructor(props) {
2128
2134
  super(props);
2129
- this.initialValue = this.viewModel.getTextValue() || "";
2130
2135
  this.textareaRef = React.createRef();
2136
+ this.anchorRef = React.createRef();
2137
+ this.initialValue = this.viewModel.getTextValue() || "";
2131
2138
  }
2132
2139
  get viewModel() {
2133
2140
  return this.props.viewModel;
@@ -2137,17 +2144,37 @@ class TextAreaComponent extends SurveyElementBase {
2137
2144
  }
2138
2145
  componentDidMount() {
2139
2146
  super.componentDidMount();
2147
+ if (this.anchorRef.current && this.textareaRef.current && this.viewModel.question.resizeStyle !== "none") {
2148
+ this.resizeManager = new ResizeManager(this.anchorRef.current, this.textareaRef.current, this.viewModel.question.resizeStyle);
2149
+ }
2140
2150
  let el = this.textareaRef.current;
2141
2151
  if (!!el) {
2142
2152
  this.viewModel.setElement(el);
2143
2153
  }
2144
2154
  }
2145
2155
  componentWillUnmount() {
2156
+ var _a;
2146
2157
  super.componentWillUnmount();
2158
+ (_a = this.resizeManager) === null || _a === void 0 ? void 0 : _a.dispose();
2147
2159
  this.viewModel.resetElement();
2148
2160
  }
2161
+ onContainerClick(event) {
2162
+ var _a;
2163
+ if (event.target == event.currentTarget) {
2164
+ (_a = this.textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
2165
+ }
2166
+ }
2167
+ renderGroup() {
2168
+ return this.viewModel.hasVisibleInputActions ? React.createElement(SurveyActionBar, { model: this.viewModel.inputActionsContainer }) : null;
2169
+ }
2149
2170
  renderElement() {
2150
- return (React.createElement("textarea", { id: this.viewModel.id, className: this.viewModel.className, ref: this.textareaRef, disabled: this.viewModel.isDisabledAttr, readOnly: this.viewModel.isReadOnlyAttr, rows: this.viewModel.rows, cols: this.viewModel.cols, placeholder: this.viewModel.placeholder, maxLength: this.viewModel.maxLength, defaultValue: this.initialValue, onChange: (event) => { this.viewModel.onTextAreaInput(event); }, onFocus: (event) => { this.viewModel.onTextAreaFocus(event); }, onBlur: (event) => { this.viewModel.onTextAreaBlur(event); }, onKeyDown: (event) => { this.viewModel.onTextAreaKeyDown(event); }, "aria-required": this.viewModel.ariaRequired, "aria-label": this.viewModel.ariaLabel, "aria-labelledby": this.viewModel.ariaLabelledBy, "aria-describedby": this.viewModel.ariaDescribedBy, "aria-invalid": this.viewModel.ariaInvalid, "aria-errormessage": this.viewModel.ariaErrormessage, style: { resize: this.viewModel.question.resizeStyle } }));
2171
+ const cssClasses = this.viewModel.getCssClasses();
2172
+ return (React.createElement("div", { className: cssClasses.root, onClick: (event) => this.onContainerClick(event) },
2173
+ React.createElement("textarea", { id: this.viewModel.id, className: cssClasses.control, ref: this.textareaRef, disabled: this.viewModel.isDisabledAttr, readOnly: this.viewModel.isReadOnlyAttr, rows: this.viewModel.rows, cols: this.viewModel.cols, placeholder: this.viewModel.placeholder, maxLength: this.viewModel.maxLength, defaultValue: this.initialValue, onChange: (event) => { this.viewModel.onTextAreaInput(event); }, onFocus: (event) => { this.viewModel.onTextAreaFocus(event); }, onBlur: (event) => { this.viewModel.onTextAreaBlur(event); }, onKeyDown: (event) => { this.viewModel.onTextAreaKeyDown(event); }, "aria-required": this.viewModel.ariaRequired, "aria-label": this.viewModel.ariaLabel, "aria-labelledby": this.viewModel.ariaLabelledBy, "aria-describedby": this.viewModel.ariaDescribedBy, "aria-invalid": this.viewModel.ariaInvalid, "aria-errormessage": this.viewModel.ariaErrormessage, style: { resize: "none" } }),
2174
+ this.renderGroup(),
2175
+ this.viewModel.question.resizeStyle !== "none" ?
2176
+ React.createElement("div", { className: cssClasses.grip, ref: this.anchorRef },
2177
+ React.createElement(SvgIcon, { iconName: cssClasses.gripIconId, size: "auto" })) : null));
2151
2178
  }
2152
2179
  }
2153
2180
  ReactElementFactory.Instance.registerElement("sv-text-area", (props) => {
@@ -2155,13 +2182,6 @@ ReactElementFactory.Instance.registerElement("sv-text-area", (props) => {
2155
2182
  });
2156
2183
 
2157
2184
  class SurveyQuestionComment extends SurveyQuestionUncontrolledElement {
2158
- renderCharacterCounter() {
2159
- let counter = null;
2160
- if (!!this.question.getMaxLength()) {
2161
- counter = React.createElement(CharacterCounterComponent, { counter: this.question.characterCounter, remainingCharacterCounter: this.question.cssClasses.remainingCharacterCounter });
2162
- }
2163
- return counter;
2164
- }
2165
2185
  constructor(props) {
2166
2186
  super(props);
2167
2187
  }
@@ -2169,11 +2189,9 @@ class SurveyQuestionComment extends SurveyQuestionUncontrolledElement {
2169
2189
  if (this.question.isReadOnlyRenderDiv()) {
2170
2190
  return React.createElement("div", null, this.question.value);
2171
2191
  }
2172
- const counter = this.renderCharacterCounter();
2173
2192
  const textAreaModel = this.props.question.textAreaModel;
2174
2193
  return (React.createElement(React.Fragment, null,
2175
- React.createElement(TextAreaComponent, { viewModel: textAreaModel }),
2176
- counter));
2194
+ React.createElement(TextAreaComponent, { viewModel: textAreaModel })));
2177
2195
  }
2178
2196
  }
2179
2197
  class SurveyQuestionCommentItem extends ReactSurveyElement {
@@ -3554,16 +3572,17 @@ class SurveyQuestionDropdownBase extends SurveyQuestionUncontrolledElement {
3554
3572
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3555
3573
  // @ts-ignore
3556
3574
  disabled: this.question.isDisabledAttr, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, onFocus: this.focus, role: dropdownListModel.ariaQuestionRole, "aria-required": dropdownListModel.ariaQuestionRequired, "aria-invalid": dropdownListModel.ariaQuestionInvalid, "aria-errormessage": dropdownListModel.ariaQuestionErrorMessage, "aria-expanded": dropdownListModel.ariaQuestionExpanded, "aria-label": dropdownListModel.ariaQuestionLabel, "aria-labelledby": dropdownListModel.ariaQuestionLabelledby, "aria-describedby": dropdownListModel.ariaQuestionDescribedby, "aria-controls": dropdownListModel.ariaQuestionControls, "aria-activedescendant": dropdownListModel.ariaQuestionActivedescendant, ref: (div) => (this.setControl(div)) },
3557
- dropdownListModel.showHintPrefix ?
3558
- (React.createElement("div", { className: this.question.cssClasses.hintPrefix },
3559
- React.createElement("span", null, dropdownListModel.hintStringPrefix))) : null,
3560
3575
  React.createElement("div", { className: this.question.cssClasses.controlValue },
3561
- dropdownListModel.showHintString ?
3562
- (React.createElement("div", { className: this.question.cssClasses.hintSuffix },
3563
- React.createElement("span", { style: { visibility: "hidden" }, "data-bind": "text: model.filterString" }, dropdownListModel.inputStringRendered),
3564
- React.createElement("span", null, dropdownListModel.hintStringSuffix))) : null,
3565
- valueElement,
3566
- dropdownListModel.needRenderInput ? this.renderFilterInput() : null),
3576
+ dropdownListModel.showHintPrefix ?
3577
+ (React.createElement("div", { className: this.question.cssClasses.hintPrefix },
3578
+ React.createElement("span", null, dropdownListModel.hintStringPrefix))) : null,
3579
+ React.createElement("div", { className: this.question.cssClasses.inputPrefixWrapper },
3580
+ dropdownListModel.showHintString ?
3581
+ (React.createElement("div", { className: this.question.cssClasses.hintSuffix },
3582
+ React.createElement("span", { style: { visibility: "hidden" }, "data-bind": "text: model.filterString" }, dropdownListModel.inputStringRendered),
3583
+ React.createElement("span", null, dropdownListModel.hintStringSuffix))) : null,
3584
+ valueElement,
3585
+ dropdownListModel.needRenderInput ? this.renderFilterInput() : null)),
3567
3586
  this.renderEditorButtons()));
3568
3587
  }
3569
3588
  renderFilterInput() {
@@ -3702,18 +3721,16 @@ class SurveyQuestionDropdownSelect extends SurveyQuestionDropdown {
3702
3721
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3703
3722
  // @ts-ignore
3704
3723
  React.createElement("div", { id: this.question.inputId, className: this.question.getControlClass(), disabled: true }, this.question.readOnlyText)) :
3705
- (React.createElement("select", { id: this.question.inputId, className: this.question.getControlClass(), ref: (select) => (this.setControl(select)), autoComplete: this.question.autocomplete, onChange: this.updateValueOnEvent, onInput: this.updateValueOnEvent, onClick: click, onKeyUp: keyup, "aria-required": this.question.a11y_input_ariaRequired, "aria-label": this.question.a11y_input_ariaLabel, "aria-invalid": this.question.a11y_input_ariaInvalid, "aria-errormessage": this.question.a11y_input_ariaErrormessage, required: this.question.isRequired },
3724
+ (React.createElement("select", { id: this.question.inputId, className: cssClasses.controlValue, ref: (select) => (this.setControl(select)), autoComplete: this.question.autocomplete, onChange: this.updateValueOnEvent, onInput: this.updateValueOnEvent, onClick: click, onKeyUp: keyup, "aria-required": this.question.a11y_input_ariaRequired, "aria-label": this.question.a11y_input_ariaLabel, "aria-invalid": this.question.a11y_input_ariaInvalid, "aria-errormessage": this.question.a11y_input_ariaErrormessage, required: this.question.isRequired },
3706
3725
  this.question.allowClear ? (React.createElement("option", { value: "" }, this.question.placeholder)) : null,
3707
3726
  this.question.visibleChoices.map((item) => React.createElement(SurveyQuestionOptionItem, { key: item.uniqueId, item: item }))));
3708
3727
  return (React.createElement("div", { className: cssClasses.selectWrapper },
3709
- selectElement,
3710
- this.createChevronButton()));
3728
+ React.createElement("div", { className: this.question.getControlClass() },
3729
+ selectElement,
3730
+ this.renderEditorButtons())));
3711
3731
  }
3712
- createChevronButton() {
3713
- if (!this.question.cssClasses.chevronButtonIconId)
3714
- return null;
3715
- return (React.createElement("div", { className: this.question.cssClasses.chevronButton, "aria-hidden": "true", onPointerDown: this.chevronPointerDown },
3716
- React.createElement(SvgIcon, { className: this.question.cssClasses.chevronButtonSvg, iconName: this.question.cssClasses.chevronButtonIconId, size: "auto" })));
3732
+ renderEditorButtons() {
3733
+ return React.createElement(SurveyActionBar, { model: this.question.inputActionBar });
3717
3734
  }
3718
3735
  }
3719
3736
  ReactQuestionFactory.Instance.registerQuestion("sv-dropdown-select", (props) => {
@@ -4260,21 +4277,20 @@ class SurveyQuestionText extends SurveyQuestionUncontrolledElement {
4260
4277
  if (this.question.isReadOnlyRenderDiv()) {
4261
4278
  return React.createElement("div", null, this.question.inputValue);
4262
4279
  }
4263
- const counter = !!this.question.getMaxLength() ? (React.createElement(CharacterCounterComponent, { counter: this.question.characterCounter, remainingCharacterCounter: this.question.cssClasses.remainingCharacterCounter })) : null;
4264
- return (React.createElement(React.Fragment, null,
4265
- React.createElement("input", { id: this.question.inputId,
4266
- // disabled={this.isDisplayMode}
4267
- disabled: this.question.isDisabledAttr, readOnly: this.question.isReadOnlyAttr, className: inputClass, type: this.question.inputType,
4268
- //ref={this.controlRef}
4269
- ref: (input) => (this.setControl(input)), style: this.question.inputStyle, maxLength: this.question.getMaxLength(), min: this.question.renderedMin, max: this.question.renderedMax, step: this.question.renderedStep, size: this.question.inputSize, placeholder: placeholder, list: this.question.dataListId, autoComplete: this.question.autocomplete, onBlur: (event) => { this.question.onBlur(event); }, onFocus: (event) => { this.question.onFocus(event); }, onChange: this.question.onChange, onClick: this.question.readOnlyBlocker, onPointerDown: this.question.readOnlyBlocker, onKeyUp: this.question.onKeyUp, onKeyDown: this.question.onKeyDown, onCompositionUpdate: (event) => this.question.onCompositionUpdate(event.nativeEvent), "aria-required": this.question.a11y_input_ariaRequired, "aria-label": this.question.a11y_input_ariaLabel, "aria-labelledby": this.question.a11y_input_ariaLabelledBy, "aria-describedby": this.question.a11y_input_ariaDescribedBy, "aria-invalid": this.question.a11y_input_ariaInvalid, "aria-errormessage": this.question.a11y_input_ariaErrormessage }),
4270
- counter));
4280
+ return (React.createElement("input", { id: this.question.inputId,
4281
+ // disabled={this.isDisplayMode}
4282
+ disabled: this.question.isDisabledAttr, readOnly: this.question.isReadOnlyAttr, className: inputClass, type: this.question.inputType,
4283
+ //ref={this.controlRef}
4284
+ ref: (input) => (this.setControl(input)), style: this.question.inputStyle, maxLength: this.question.getMaxLength(), min: this.question.renderedMin, max: this.question.renderedMax, step: this.question.renderedStep, size: this.question.inputSize, placeholder: placeholder, list: this.question.dataListId, autoComplete: this.question.autocomplete, onBlur: (event) => { this.question.onBlur(event); }, onFocus: (event) => { this.question.onFocus(event); }, onChange: this.question.onChange, onClick: this.question.readOnlyBlocker, onPointerDown: this.question.readOnlyBlocker, onKeyUp: this.question.onKeyUp, onKeyDown: this.question.onKeyDown, onCompositionUpdate: (event) => this.question.onCompositionUpdate(event.nativeEvent), "aria-required": this.question.a11y_input_ariaRequired, "aria-label": this.question.a11y_input_ariaLabel, "aria-labelledby": this.question.a11y_input_ariaLabelledBy, "aria-describedby": this.question.a11y_input_ariaDescribedBy, "aria-invalid": this.question.a11y_input_ariaInvalid, "aria-errormessage": this.question.a11y_input_ariaErrormessage }));
4285
+ }
4286
+ renderGroup() {
4287
+ return this.question.hasVisibleInputActions ? React.createElement(SurveyActionBar, { model: this.question.inputActionsContainer }) : null;
4271
4288
  }
4272
4289
  renderElement() {
4273
- return (this.question.dataListId ?
4274
- React.createElement("div", null,
4275
- this.renderInput(),
4276
- this.renderDataList()) :
4277
- this.renderInput());
4290
+ return (React.createElement("div", { className: this.question.getRootClass(), onClick: (event) => this.question.onContainerClick(event) },
4291
+ this.renderInput(),
4292
+ this.renderDataList(),
4293
+ this.renderGroup()));
4278
4294
  }
4279
4295
  setValueCore(newValue) {
4280
4296
  this.question.inputValue = newValue;
@@ -4881,52 +4897,30 @@ class SurveyQuestionMatrixDynamic extends SurveyQuestionMatrixDropdownBase {
4881
4897
  ? this.renderTableDiv()
4882
4898
  : this.renderNoRowsContent(cssClasses);
4883
4899
  return (React.createElement("div", null,
4884
- this.renderAddRowButtonOnTop(cssClasses),
4900
+ this.renderTopToolbar(),
4885
4901
  mainDiv,
4886
- this.renderAddRowButtonOnBottom(cssClasses)));
4902
+ this.renderBottomToolbar()));
4903
+ }
4904
+ renderToolbar() {
4905
+ return React.createElement("div", { className: this.matrix.cssClasses.footer }, ReactElementFactory.Instance.createElement("sv-action-bar", { model: this.matrix.toolbar }));
4887
4906
  }
4888
- renderAddRowButtonOnTop(cssClasses) {
4889
- if (!this.matrix.renderedTable.showAddRowOnTop)
4907
+ renderTopToolbar() {
4908
+ if (!this.matrix.getShowToolbar("top"))
4890
4909
  return null;
4891
- return this.renderAddRowButton(cssClasses);
4910
+ return this.renderToolbar();
4892
4911
  }
4893
- renderAddRowButtonOnBottom(cssClasses) {
4894
- if (!this.matrix.renderedTable.showAddRowOnBottom)
4912
+ renderBottomToolbar() {
4913
+ if (!this.matrix.getShowToolbar("bottom"))
4895
4914
  return null;
4896
- return this.renderAddRowButton(cssClasses);
4915
+ return this.renderToolbar();
4897
4916
  }
4898
4917
  renderNoRowsContent(cssClasses) {
4899
4918
  return ReactElementFactory.Instance.createElement("sv-placeholder-matrixdynamic", { cssClasses: cssClasses, question: this.matrix });
4900
4919
  }
4901
- renderAddRowButton(cssClasses, isEmptySection = false) {
4902
- return ReactElementFactory.Instance.createElement("sv-matrixdynamic-add-btn", {
4903
- question: this.question, cssClasses, isEmptySection
4904
- });
4905
- }
4906
4920
  }
4907
4921
  ReactQuestionFactory.Instance.registerQuestion("matrixdynamic", (props) => {
4908
4922
  return React.createElement(SurveyQuestionMatrixDynamic, props);
4909
4923
  });
4910
- class SurveyQuestionMatrixDynamicAddButton extends ReactSurveyElement {
4911
- constructor(props) {
4912
- super(props);
4913
- this.handleOnRowAddClick = this.handleOnRowAddClick.bind(this);
4914
- }
4915
- get matrix() {
4916
- return this.props.question;
4917
- }
4918
- handleOnRowAddClick(event) {
4919
- this.matrix.addRowUI();
4920
- }
4921
- renderElement() {
4922
- const addRowText = this.renderLocString(this.matrix.locAddRowText);
4923
- const addButton = (React.createElement("button", { className: this.matrix.getAddRowButtonCss(this.props.isEmptySection), type: "button", disabled: this.matrix.isInputReadOnly, onClick: this.matrix.isDesignMode ? undefined : this.handleOnRowAddClick },
4924
- addRowText,
4925
- React.createElement("span", { className: this.props.cssClasses.iconAdd }, this.cssClasses.iconAddId && React.createElement("svg", null,
4926
- React.createElement("use", { xlinkHref: this.cssClasses.iconAddId })))));
4927
- return (this.props.isEmptySection ? addButton : React.createElement("div", { className: this.props.cssClasses.footer }, addButton));
4928
- }
4929
- }
4930
4924
  class SurveyQuestionMatrixDynamicPlaceholder extends ReactSurveyElement {
4931
4925
  constructor(props) {
4932
4926
  super(props);
@@ -4934,21 +4928,14 @@ class SurveyQuestionMatrixDynamicPlaceholder extends ReactSurveyElement {
4934
4928
  renderElement() {
4935
4929
  const cssClasses = this.props.cssClasses;
4936
4930
  const matrix = this.props.question;
4937
- const showAddButton = matrix.renderedTable.showAddRow;
4938
4931
  const text = this.renderLocString(matrix.locNoRowsText);
4939
4932
  const textDiv = React.createElement("div", { className: cssClasses.noRowsText }, text);
4940
- const btn = showAddButton ? this.renderAddRowButton(cssClasses, matrix) : undefined;
4933
+ const toolbar = matrix.getShowToolbar() ? ReactElementFactory.Instance.createElement("sv-action-bar", { model: matrix.toolbar }) : null;
4941
4934
  return (React.createElement("div", { className: cssClasses.noRowsSection },
4942
4935
  textDiv,
4943
- btn));
4944
- }
4945
- renderAddRowButton(cssClasses, question) {
4946
- return ReactElementFactory.Instance.createElement("sv-matrixdynamic-add-btn", {
4947
- question: question, cssClasses: cssClasses, isEmptySection: true
4948
- });
4936
+ toolbar));
4949
4937
  }
4950
4938
  }
4951
- ReactElementFactory.Instance.registerElement("sv-matrixdynamic-add-btn", (props) => { return React.createElement(SurveyQuestionMatrixDynamicAddButton, props); });
4952
4939
  ReactElementFactory.Instance.registerElement("sv-placeholder-matrixdynamic", (props) => { return React.createElement(SurveyQuestionMatrixDynamicPlaceholder, props); });
4953
4940
 
4954
4941
  class SurveyQuestionPanelDynamic extends SurveyQuestionElementBase {
@@ -4992,7 +4979,7 @@ class SurveyQuestionPanelDynamic extends SurveyQuestionElementBase {
4992
4979
  const rangeTop = this.question.isRangeShowing && this.question.isProgressTopShowing
4993
4980
  ? this.renderRange()
4994
4981
  : null;
4995
- const navV2 = this.renderNavigatorV2();
4982
+ const navigation = this.renderNavigator();
4996
4983
  const noEntriesPlaceholder = this.renderPlaceholder(cssClasses);
4997
4984
  return (React.createElement("div", { className: cssClasses.root },
4998
4985
  this.question.hasTabbedMenu ? React.createElement("div", { className: this.question.getTabsContainerCss() },
@@ -5000,18 +4987,13 @@ class SurveyQuestionPanelDynamic extends SurveyQuestionElementBase {
5000
4987
  noEntriesPlaceholder,
5001
4988
  rangeTop,
5002
4989
  React.createElement("div", { className: this.question.cssClasses.panelsContainer }, panels),
5003
- navV2));
4990
+ navigation));
5004
4991
  }
5005
4992
  renderRange() {
5006
4993
  return (React.createElement("div", { className: this.question.cssClasses.progress },
5007
4994
  React.createElement("div", { className: this.question.cssClasses.progressBar, style: { width: this.question.progress }, role: "progressbar", "aria-label": this.question.progressBarAriaLabel })));
5008
4995
  }
5009
- renderAddRowButton() {
5010
- return ReactElementFactory.Instance.createElement("sv-paneldynamic-add-btn", {
5011
- data: { question: this.question }
5012
- });
5013
- }
5014
- renderNavigatorV2() {
4996
+ renderNavigator() {
5015
4997
  if (!this.question.showNavigation)
5016
4998
  return null;
5017
4999
  const range = this.question.isRangeShowing && this.question.isProgressBottomShowing ? this.renderRange() : null;
@@ -5055,9 +5037,7 @@ class SurveyQuestionPanelDynamicItem extends SurveyPanel {
5055
5037
  renderButton() {
5056
5038
  if (!this.question.canRenderRemovePanelOnRight(this.panel))
5057
5039
  return null;
5058
- return ReactElementFactory.Instance.createElement("sv-paneldynamic-remove-btn", {
5059
- data: { question: this.question, panel: this.panel }
5060
- });
5040
+ return React.createElement(SurveyAction, { item: this.question.getRemovePanelAction(this.panel) });
5061
5041
  }
5062
5042
  }
5063
5043
  ReactQuestionFactory.Instance.registerQuestion("paneldynamic", props => {
@@ -5072,12 +5052,7 @@ class SurveyQuestionPanelDynamicPlaceholder extends ReactSurveyElement {
5072
5052
  const question = this.props.question;
5073
5053
  return (React.createElement("div", { className: cssClasses.noEntriesPlaceholder },
5074
5054
  React.createElement("span", null, this.renderLocString(question.locNoEntriesText)),
5075
- this.renderAddRowButton(question)));
5076
- }
5077
- renderAddRowButton(question) {
5078
- return ReactElementFactory.Instance.createElement("sv-paneldynamic-add-btn", {
5079
- data: { question: question }
5080
- });
5055
+ React.createElement(SurveyActionBar, { model: this.props.question.footerToolbar })));
5081
5056
  }
5082
5057
  }
5083
5058
  ReactElementFactory.Instance.registerElement("sv-placeholder-paneldynamic", (props) => { return React.createElement(SurveyQuestionPanelDynamicPlaceholder, props); });
@@ -6078,145 +6053,13 @@ ReactElementFactory.Instance.registerElement("sv-logo-image", (props) => {
6078
6053
  return React.createElement(LogoImage, props);
6079
6054
  });
6080
6055
 
6081
- class SurveyQuestionMatrixDynamicRemoveButton extends ReactSurveyElement {
6082
- constructor(props) {
6083
- super(props);
6084
- this.handleOnRowRemoveClick = this.handleOnRowRemoveClick.bind(this);
6085
- }
6086
- get question() {
6087
- return this.props.item.data.question;
6088
- }
6089
- get row() {
6090
- return this.props.item.data.row;
6091
- }
6092
- handleOnRowRemoveClick(event) {
6093
- this.question.removeRowUI(this.row);
6094
- }
6095
- renderElement() {
6096
- var removeRowText = this.renderLocString(this.question.locRemoveRowText);
6097
- return (React.createElement("button", { className: this.question.getRemoveRowButtonCss(), type: "button", onClick: this.handleOnRowRemoveClick, disabled: this.question.isInputReadOnly },
6098
- removeRowText,
6099
- React.createElement("span", { className: this.question.cssClasses.iconRemove })));
6100
- }
6101
- }
6102
- ReactElementFactory.Instance.registerElement("sv-matrix-remove-button", (props) => {
6103
- return React.createElement(SurveyQuestionMatrixDynamicRemoveButton, props);
6104
- });
6105
-
6106
- class SurveyQuestionMatrixDetailButton extends ReactSurveyElement {
6107
- constructor(props) {
6108
- super(props);
6109
- this.handleOnShowHideClick = this.handleOnShowHideClick.bind(this);
6110
- }
6111
- getStateElement() {
6112
- return this.props.item;
6113
- }
6114
- get item() {
6115
- return this.props.item;
6116
- }
6117
- get question() {
6118
- return this.props.item.data.question;
6119
- }
6120
- get row() {
6121
- return this.props.item.data.row;
6122
- }
6123
- handleOnShowHideClick(event) {
6124
- this.row.showHideDetailPanelClick();
6125
- }
6126
- renderElement() {
6127
- var isExpanded = this.row.isDetailPanelShowing;
6128
- var ariaExpanded = isExpanded;
6129
- var ariaControls = isExpanded ? this.row.detailPanelId : undefined;
6130
- return (React.createElement("button", { type: "button", title: this.props.item.title, onClick: this.handleOnShowHideClick, className: this.question.getDetailPanelButtonCss(this.row), "aria-expanded": ariaExpanded, "aria-controls": ariaControls },
6131
- React.createElement(SvgIcon, { className: this.question.getDetailPanelIconCss(this.row), iconName: this.question.getDetailPanelIconId(this.row), size: "auto" })));
6132
- }
6133
- }
6134
- ReactElementFactory.Instance.registerElement("sv-matrix-detail-button", props => {
6135
- return React.createElement(SurveyQuestionMatrixDetailButton, props);
6136
- });
6137
-
6138
- class SurveyQuestionPanelDynamicAction extends ReactSurveyElement {
6139
- constructor(props) {
6140
- super(props);
6141
- }
6056
+ class SurveyQuestionPanelDynamicProgressText extends ReactSurveyElement {
6142
6057
  get data() {
6143
6058
  return (this.props.item && this.props.item.data) || this.props.data;
6144
6059
  }
6145
6060
  get question() {
6146
6061
  return (this.props.item && this.props.item.data.question) || this.props.data.question;
6147
6062
  }
6148
- }
6149
- class SurveyQuestionPanelDynamicAddButton extends SurveyQuestionPanelDynamicAction {
6150
- constructor() {
6151
- super(...arguments);
6152
- this.handleClick = (event) => {
6153
- this.question.addPanelUI();
6154
- };
6155
- }
6156
- renderElement() {
6157
- if (!this.question.canAddPanel)
6158
- return null;
6159
- const btnText = this.renderLocString(this.question.locAddPanelText);
6160
- return (React.createElement("button", { type: "button", id: this.question.addButtonId, className: this.question.getAddButtonCss(), onClick: this.handleClick },
6161
- React.createElement("span", { className: this.question.cssClasses.buttonAddText }, btnText)));
6162
- }
6163
- }
6164
- ReactElementFactory.Instance.registerElement("sv-paneldynamic-add-btn", (props) => {
6165
- return React.createElement(SurveyQuestionPanelDynamicAddButton, props);
6166
- });
6167
-
6168
- class SurveyQuestionPanelDynamicRemoveButton extends SurveyQuestionPanelDynamicAction {
6169
- constructor() {
6170
- super(...arguments);
6171
- this.handleClick = (event) => {
6172
- this.question.removePanelUI(this.data.panel);
6173
- };
6174
- }
6175
- renderElement() {
6176
- const btnText = this.renderLocString(this.question.locRemovePanelText);
6177
- const id = this.question.getPanelRemoveButtonId(this.data.panel);
6178
- return (React.createElement("button", { id: id, className: this.question.getPanelRemoveButtonCss(), onClick: this.handleClick, type: "button" },
6179
- React.createElement("span", { className: this.question.cssClasses.buttonRemoveText }, btnText),
6180
- React.createElement("span", { className: this.question.cssClasses.iconRemove })));
6181
- }
6182
- }
6183
- ReactElementFactory.Instance.registerElement("sv-paneldynamic-remove-btn", (props) => {
6184
- return React.createElement(SurveyQuestionPanelDynamicRemoveButton, props);
6185
- });
6186
-
6187
- class SurveyQuestionPanelDynamicPrevButton extends SurveyQuestionPanelDynamicAction {
6188
- constructor() {
6189
- super(...arguments);
6190
- this.handleClick = (event) => {
6191
- this.question.goToPrevPanel();
6192
- };
6193
- }
6194
- renderElement() {
6195
- return (React.createElement("div", { title: this.question.panelPrevText, onClick: this.handleClick, className: this.question.getPrevButtonCss() },
6196
- React.createElement(SvgIcon, { iconName: this.question.cssClasses.progressBtnIcon, size: "auto" })));
6197
- }
6198
- }
6199
- ReactElementFactory.Instance.registerElement("sv-paneldynamic-prev-btn", (props) => {
6200
- return React.createElement(SurveyQuestionPanelDynamicPrevButton, props);
6201
- });
6202
-
6203
- class SurveyQuestionPanelDynamicNextButton extends SurveyQuestionPanelDynamicAction {
6204
- constructor() {
6205
- super(...arguments);
6206
- this.handleClick = (event) => {
6207
- this.question.goToNextPanel();
6208
- };
6209
- }
6210
- renderElement() {
6211
- return (React.createElement("div", { title: this.question.panelNextText, onClick: this.handleClick, className: this.question.getNextButtonCss() },
6212
- React.createElement(SvgIcon, { iconName: this.question.cssClasses.progressBtnIcon, size: "auto" })));
6213
- }
6214
- }
6215
- ReactElementFactory.Instance.registerElement("sv-paneldynamic-next-btn", (props) => {
6216
- return React.createElement(SurveyQuestionPanelDynamicNextButton, props);
6217
- });
6218
-
6219
- class SurveyQuestionPanelDynamicProgressText extends SurveyQuestionPanelDynamicAction {
6220
6063
  renderElement() {
6221
6064
  return (React.createElement("div", { className: this.question.cssClasses.progressText }, this.question.progressText));
6222
6065
  }
@@ -6225,21 +6068,6 @@ ReactElementFactory.Instance.registerElement("sv-paneldynamic-progress-text", (p
6225
6068
  return React.createElement(SurveyQuestionPanelDynamicProgressText, props);
6226
6069
  });
6227
6070
 
6228
- class SurveyNavigationButton extends ReactSurveyElement {
6229
- get item() {
6230
- return this.props.item;
6231
- }
6232
- canRender() {
6233
- return this.item.isVisible;
6234
- }
6235
- renderElement() {
6236
- return (React.createElement("input", { className: this.item.innerCss, type: "button", disabled: this.item.disabled, onMouseDown: this.item.data && this.item.data.mouseDown, onClick: this.item.action, title: this.item.getTooltip(), value: this.item.title }));
6237
- }
6238
- }
6239
- ReactElementFactory.Instance.registerElement("sv-nav-btn", (props) => {
6240
- return React.createElement(SurveyNavigationButton, props);
6241
- });
6242
-
6243
6071
  class QuestionErrorComponent extends React.Component {
6244
6072
  render() {
6245
6073
  const error = this.props.error;
@@ -6300,6 +6128,36 @@ ReactElementFactory.Instance.registerElement("sv-skeleton", (props) => {
6300
6128
  return React.createElement(Skeleton, props);
6301
6129
  });
6302
6130
 
6131
+ class CharacterCounterComponent extends SurveyElementBase {
6132
+ get counter() {
6133
+ if (!!this.props.item) {
6134
+ return this.props.item.data.counter;
6135
+ }
6136
+ else {
6137
+ return this.props.counter;
6138
+ }
6139
+ }
6140
+ get remainingCharacterCounter() {
6141
+ if (!!this.props.item) {
6142
+ return this.props.item.data.remainingCharacterCounter;
6143
+ }
6144
+ else {
6145
+ return this.props.remainingCharacterCounter;
6146
+ }
6147
+ }
6148
+ getStateElement() {
6149
+ return this.counter;
6150
+ }
6151
+ renderElement() {
6152
+ if (!this.counter)
6153
+ return null;
6154
+ return (React.createElement("div", { className: this.remainingCharacterCounter }, this.counter.remainingCharacterCounter));
6155
+ }
6156
+ }
6157
+ ReactElementFactory.Instance.registerElement("sv-character-counter", (props) => {
6158
+ return React.createElement(CharacterCounterComponent, props);
6159
+ });
6160
+
6303
6161
  class HeaderMobile extends React.Component {
6304
6162
  get model() {
6305
6163
  return this.props.model;
@@ -6423,7 +6281,7 @@ ReactElementFactory.Instance.registerElement(LocalizableString.editableRenderer,
6423
6281
  return React.createElement(SurveyLocStringEditor, props);
6424
6282
  });
6425
6283
 
6426
- checkLibraryVersion(`${"2.5.16"}`, "survey-react-ui");
6284
+ checkLibraryVersion(`${"3.0.0-beta.1"}`, "survey-react-ui");
6427
6285
 
6428
- export { CharacterCounterComponent, ComponentsContainer, Header, HeaderCell, HeaderMobile, List, ListItemContent, ListItemGroup, LoadingIndicatorComponent, LogoImage, MatrixRow, NotifierComponent, Popup, PopupModal, PopupSurvey, QuestionErrorComponent, RatingDropdownItem, RatingItem, RatingItemSmiley, RatingItemStar, ReactElementFactory, ReactQuestionFactory, ReactSurveyElement, ReactSurveyElementsWrapper, Scroll, Skeleton, SliderLabelItem, Survey, SurveyActionBar, SurveyElementBase, SurveyElementErrors, SurveyFileChooseButton, SurveyFileItem, SurveyFilePreview, SurveyFlowPanel, SurveyHeader, SurveyLocStringEditor, SurveyLocStringViewer, SurveyNavigationBase, SurveyNavigationButton, SurveyPage, SurveyPanel, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestion, SurveyQuestionAndErrorsCell, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionButtonGroup, SurveyQuestionButtonGroupDropdown, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionComment, SurveyQuestionCommentItem, SurveyQuestionComposite, SurveyQuestionCustom, SurveyQuestionDropdown, SurveyQuestionDropdownBase, SurveyQuestionDropdownSelect, SurveyQuestionElementBase, SurveyQuestionEmpty, SurveyQuestionExpression, SurveyQuestionFile, SurveyQuestionHtml, SurveyQuestionImage, SurveyQuestionImageMap, SurveyQuestionImagePicker, SurveyQuestionMatrix, SurveyQuestionMatrixCell, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixRow, SurveyQuestionMultipleText, SurveyQuestionOptionItem, SurveyQuestionPanelDynamic, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicProgressText, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionRadioItem, SurveyQuestionRadiogroup, SurveyQuestionRanking, SurveyQuestionRankingItem, SurveyQuestionRankingItemContent, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionSignaturePad, SurveyQuestionSlider, SurveyQuestionTagbox, SurveyQuestionTagboxItem, SurveyQuestionText, SurveyRow, SurveyTimerPanel, SurveyWindow, SvgBundleComponent, SvgIcon, TagboxFilterString, TitleActions, TitleElement, attachKey2click };
6286
+ export { CharacterCounterComponent, ComponentsContainer, Header, HeaderCell, HeaderMobile, List, ListItemContent, ListItemGroup, LoadingIndicatorComponent, LogoImage, MatrixRow, NotifierComponent, Popup, PopupModal, PopupSurvey, QuestionErrorComponent, RatingDropdownItem, RatingItem, RatingItemSmiley, RatingItemStar, ReactElementFactory, ReactQuestionFactory, ReactSurveyElement, ReactSurveyElementsWrapper, Scroll, Skeleton, SliderLabelItem, Survey, SurveyActionBar, SurveyElementBase, SurveyElementErrors, SurveyFileChooseButton, SurveyFileItem, SurveyFilePreview, SurveyFlowPanel, SurveyHeader, SurveyLocStringEditor, SurveyLocStringViewer, SurveyNavigationBase, SurveyPage, SurveyPanel, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestion, SurveyQuestionAndErrorsCell, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionButtonGroup, SurveyQuestionButtonGroupDropdown, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionComment, SurveyQuestionCommentItem, SurveyQuestionComposite, SurveyQuestionCustom, SurveyQuestionDropdown, SurveyQuestionDropdownBase, SurveyQuestionDropdownSelect, SurveyQuestionElementBase, SurveyQuestionEmpty, SurveyQuestionExpression, SurveyQuestionFile, SurveyQuestionHtml, SurveyQuestionImage, SurveyQuestionImageMap, SurveyQuestionImagePicker, SurveyQuestionMatrix, SurveyQuestionMatrixCell, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionMatrixRow, SurveyQuestionMultipleText, SurveyQuestionOptionItem, SurveyQuestionPanelDynamic, SurveyQuestionPanelDynamicProgressText, SurveyQuestionRadioItem, SurveyQuestionRadiogroup, SurveyQuestionRanking, SurveyQuestionRankingItem, SurveyQuestionRankingItemContent, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionSignaturePad, SurveyQuestionSlider, SurveyQuestionTagbox, SurveyQuestionTagboxItem, SurveyQuestionText, SurveyRow, SurveyTimerPanel, SurveyWindow, SvgBundleComponent, SvgIcon, TagboxFilterString, TitleActions, TitleElement, attachKey2click };
6429
6287
  //# sourceMappingURL=survey-react-ui.mjs.map