survey-react 1.9.88 → 1.9.90

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.
package/survey.react.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.9.88
2
+ * surveyjs - Survey JavaScript library v1.9.90
3
3
  * Copyright (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -101,399 +101,6 @@ return /******/ (function(modules) { // webpackBootstrap
101
101
  /************************************************************************/
102
102
  /******/ ({
103
103
 
104
- /***/ "./node_modules/process/browser.js":
105
- /*!*****************************************!*\
106
- !*** ./node_modules/process/browser.js ***!
107
- \*****************************************/
108
- /*! no static exports found */
109
- /***/ (function(module, exports) {
110
-
111
- // shim for using process in browser
112
- var process = module.exports = {};
113
-
114
- // cached from whatever global is present so that test runners that stub it
115
- // don't break things. But we need to wrap it in a try catch in case it is
116
- // wrapped in strict mode code which doesn't define any globals. It's inside a
117
- // function because try/catches deoptimize in certain engines.
118
-
119
- var cachedSetTimeout;
120
- var cachedClearTimeout;
121
-
122
- function defaultSetTimout() {
123
- throw new Error('setTimeout has not been defined');
124
- }
125
- function defaultClearTimeout () {
126
- throw new Error('clearTimeout has not been defined');
127
- }
128
- (function () {
129
- try {
130
- if (typeof setTimeout === 'function') {
131
- cachedSetTimeout = setTimeout;
132
- } else {
133
- cachedSetTimeout = defaultSetTimout;
134
- }
135
- } catch (e) {
136
- cachedSetTimeout = defaultSetTimout;
137
- }
138
- try {
139
- if (typeof clearTimeout === 'function') {
140
- cachedClearTimeout = clearTimeout;
141
- } else {
142
- cachedClearTimeout = defaultClearTimeout;
143
- }
144
- } catch (e) {
145
- cachedClearTimeout = defaultClearTimeout;
146
- }
147
- } ())
148
- function runTimeout(fun) {
149
- if (cachedSetTimeout === setTimeout) {
150
- //normal enviroments in sane situations
151
- return setTimeout(fun, 0);
152
- }
153
- // if setTimeout wasn't available but was latter defined
154
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
155
- cachedSetTimeout = setTimeout;
156
- return setTimeout(fun, 0);
157
- }
158
- try {
159
- // when when somebody has screwed with setTimeout but no I.E. maddness
160
- return cachedSetTimeout(fun, 0);
161
- } catch(e){
162
- try {
163
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
164
- return cachedSetTimeout.call(null, fun, 0);
165
- } catch(e){
166
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
167
- return cachedSetTimeout.call(this, fun, 0);
168
- }
169
- }
170
-
171
-
172
- }
173
- function runClearTimeout(marker) {
174
- if (cachedClearTimeout === clearTimeout) {
175
- //normal enviroments in sane situations
176
- return clearTimeout(marker);
177
- }
178
- // if clearTimeout wasn't available but was latter defined
179
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
180
- cachedClearTimeout = clearTimeout;
181
- return clearTimeout(marker);
182
- }
183
- try {
184
- // when when somebody has screwed with setTimeout but no I.E. maddness
185
- return cachedClearTimeout(marker);
186
- } catch (e){
187
- try {
188
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
189
- return cachedClearTimeout.call(null, marker);
190
- } catch (e){
191
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
192
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
193
- return cachedClearTimeout.call(this, marker);
194
- }
195
- }
196
-
197
-
198
-
199
- }
200
- var queue = [];
201
- var draining = false;
202
- var currentQueue;
203
- var queueIndex = -1;
204
-
205
- function cleanUpNextTick() {
206
- if (!draining || !currentQueue) {
207
- return;
208
- }
209
- draining = false;
210
- if (currentQueue.length) {
211
- queue = currentQueue.concat(queue);
212
- } else {
213
- queueIndex = -1;
214
- }
215
- if (queue.length) {
216
- drainQueue();
217
- }
218
- }
219
-
220
- function drainQueue() {
221
- if (draining) {
222
- return;
223
- }
224
- var timeout = runTimeout(cleanUpNextTick);
225
- draining = true;
226
-
227
- var len = queue.length;
228
- while(len) {
229
- currentQueue = queue;
230
- queue = [];
231
- while (++queueIndex < len) {
232
- if (currentQueue) {
233
- currentQueue[queueIndex].run();
234
- }
235
- }
236
- queueIndex = -1;
237
- len = queue.length;
238
- }
239
- currentQueue = null;
240
- draining = false;
241
- runClearTimeout(timeout);
242
- }
243
-
244
- process.nextTick = function (fun) {
245
- var args = new Array(arguments.length - 1);
246
- if (arguments.length > 1) {
247
- for (var i = 1; i < arguments.length; i++) {
248
- args[i - 1] = arguments[i];
249
- }
250
- }
251
- queue.push(new Item(fun, args));
252
- if (queue.length === 1 && !draining) {
253
- runTimeout(drainQueue);
254
- }
255
- };
256
-
257
- // v8 likes predictible objects
258
- function Item(fun, array) {
259
- this.fun = fun;
260
- this.array = array;
261
- }
262
- Item.prototype.run = function () {
263
- this.fun.apply(null, this.array);
264
- };
265
- process.title = 'browser';
266
- process.browser = true;
267
- process.env = {};
268
- process.argv = [];
269
- process.version = ''; // empty string to avoid regexp issues
270
- process.versions = {};
271
-
272
- function noop() {}
273
-
274
- process.on = noop;
275
- process.addListener = noop;
276
- process.once = noop;
277
- process.off = noop;
278
- process.removeListener = noop;
279
- process.removeAllListeners = noop;
280
- process.emit = noop;
281
- process.prependListener = noop;
282
- process.prependOnceListener = noop;
283
-
284
- process.listeners = function (name) { return [] }
285
-
286
- process.binding = function (name) {
287
- throw new Error('process.binding is not supported');
288
- };
289
-
290
- process.cwd = function () { return '/' };
291
- process.chdir = function (dir) {
292
- throw new Error('process.chdir is not supported');
293
- };
294
- process.umask = function() { return 0; };
295
-
296
-
297
- /***/ }),
298
-
299
- /***/ "./node_modules/setimmediate/setImmediate.js":
300
- /*!***************************************************!*\
301
- !*** ./node_modules/setimmediate/setImmediate.js ***!
302
- \***************************************************/
303
- /*! no static exports found */
304
- /***/ (function(module, exports, __webpack_require__) {
305
-
306
- /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
307
- "use strict";
308
-
309
- if (global.setImmediate) {
310
- return;
311
- }
312
-
313
- var nextHandle = 1; // Spec says greater than zero
314
- var tasksByHandle = {};
315
- var currentlyRunningATask = false;
316
- var doc = global.document;
317
- var registerImmediate;
318
-
319
- function setImmediate(callback) {
320
- // Callback can either be a function or a string
321
- if (typeof callback !== "function") {
322
- callback = new Function("" + callback);
323
- }
324
- // Copy function arguments
325
- var args = new Array(arguments.length - 1);
326
- for (var i = 0; i < args.length; i++) {
327
- args[i] = arguments[i + 1];
328
- }
329
- // Store and register the task
330
- var task = { callback: callback, args: args };
331
- tasksByHandle[nextHandle] = task;
332
- registerImmediate(nextHandle);
333
- return nextHandle++;
334
- }
335
-
336
- function clearImmediate(handle) {
337
- delete tasksByHandle[handle];
338
- }
339
-
340
- function run(task) {
341
- var callback = task.callback;
342
- var args = task.args;
343
- switch (args.length) {
344
- case 0:
345
- callback();
346
- break;
347
- case 1:
348
- callback(args[0]);
349
- break;
350
- case 2:
351
- callback(args[0], args[1]);
352
- break;
353
- case 3:
354
- callback(args[0], args[1], args[2]);
355
- break;
356
- default:
357
- callback.apply(undefined, args);
358
- break;
359
- }
360
- }
361
-
362
- function runIfPresent(handle) {
363
- // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
364
- // So if we're currently running a task, we'll need to delay this invocation.
365
- if (currentlyRunningATask) {
366
- // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
367
- // "too much recursion" error.
368
- setTimeout(runIfPresent, 0, handle);
369
- } else {
370
- var task = tasksByHandle[handle];
371
- if (task) {
372
- currentlyRunningATask = true;
373
- try {
374
- run(task);
375
- } finally {
376
- clearImmediate(handle);
377
- currentlyRunningATask = false;
378
- }
379
- }
380
- }
381
- }
382
-
383
- function installNextTickImplementation() {
384
- registerImmediate = function(handle) {
385
- process.nextTick(function () { runIfPresent(handle); });
386
- };
387
- }
388
-
389
- function canUsePostMessage() {
390
- // The test against `importScripts` prevents this implementation from being installed inside a web worker,
391
- // where `global.postMessage` means something completely different and can't be used for this purpose.
392
- if (global.postMessage && !global.importScripts) {
393
- var postMessageIsAsynchronous = true;
394
- var oldOnMessage = global.onmessage;
395
- global.onmessage = function() {
396
- postMessageIsAsynchronous = false;
397
- };
398
- global.postMessage("", "*");
399
- global.onmessage = oldOnMessage;
400
- return postMessageIsAsynchronous;
401
- }
402
- }
403
-
404
- function installPostMessageImplementation() {
405
- // Installs an event handler on `global` for the `message` event: see
406
- // * https://developer.mozilla.org/en/DOM/window.postMessage
407
- // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
408
-
409
- var messagePrefix = "setImmediate$" + Math.random() + "$";
410
- var onGlobalMessage = function(event) {
411
- if (event.source === global &&
412
- typeof event.data === "string" &&
413
- event.data.indexOf(messagePrefix) === 0) {
414
- runIfPresent(+event.data.slice(messagePrefix.length));
415
- }
416
- };
417
-
418
- if (global.addEventListener) {
419
- global.addEventListener("message", onGlobalMessage, false);
420
- } else {
421
- global.attachEvent("onmessage", onGlobalMessage);
422
- }
423
-
424
- registerImmediate = function(handle) {
425
- global.postMessage(messagePrefix + handle, "*");
426
- };
427
- }
428
-
429
- function installMessageChannelImplementation() {
430
- var channel = new MessageChannel();
431
- channel.port1.onmessage = function(event) {
432
- var handle = event.data;
433
- runIfPresent(handle);
434
- };
435
-
436
- registerImmediate = function(handle) {
437
- channel.port2.postMessage(handle);
438
- };
439
- }
440
-
441
- function installReadyStateChangeImplementation() {
442
- var html = doc.documentElement;
443
- registerImmediate = function(handle) {
444
- // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
445
- // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
446
- var script = doc.createElement("script");
447
- script.onreadystatechange = function () {
448
- runIfPresent(handle);
449
- script.onreadystatechange = null;
450
- html.removeChild(script);
451
- script = null;
452
- };
453
- html.appendChild(script);
454
- };
455
- }
456
-
457
- function installSetTimeoutImplementation() {
458
- registerImmediate = function(handle) {
459
- setTimeout(runIfPresent, 0, handle);
460
- };
461
- }
462
-
463
- // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
464
- var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
465
- attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
466
-
467
- // Don't get fooled by e.g. browserify environments.
468
- if ({}.toString.call(global.process) === "[object process]") {
469
- // For Node.js before 0.9
470
- installNextTickImplementation();
471
-
472
- } else if (canUsePostMessage()) {
473
- // For non-IE10 modern browsers
474
- installPostMessageImplementation();
475
-
476
- } else if (global.MessageChannel) {
477
- // For web workers, where supported
478
- installMessageChannelImplementation();
479
-
480
- } else if (doc && "onreadystatechange" in doc.createElement("script")) {
481
- // For IE 6–8
482
- installReadyStateChangeImplementation();
483
-
484
- } else {
485
- // For older browsers
486
- installSetTimeoutImplementation();
487
- }
488
-
489
- attachTo.setImmediate = setImmediate;
490
- attachTo.clearImmediate = clearImmediate;
491
- }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
492
-
493
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js")))
494
-
495
- /***/ }),
496
-
497
104
  /***/ "./node_modules/signature_pad/dist/signature_pad.mjs":
498
105
  /*!***********************************************************!*\
499
106
  !*** ./node_modules/signature_pad/dist/signature_pad.mjs ***!
@@ -1107,112 +714,6 @@ SignaturePad.prototype.toData = function () {
1107
714
  /* harmony default export */ __webpack_exports__["default"] = (SignaturePad);
1108
715
 
1109
716
 
1110
- /***/ }),
1111
-
1112
- /***/ "./node_modules/timers-browserify/main.js":
1113
- /*!************************************************!*\
1114
- !*** ./node_modules/timers-browserify/main.js ***!
1115
- \************************************************/
1116
- /*! no static exports found */
1117
- /***/ (function(module, exports, __webpack_require__) {
1118
-
1119
- /* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
1120
- (typeof self !== "undefined" && self) ||
1121
- window;
1122
- var apply = Function.prototype.apply;
1123
-
1124
- // DOM APIs, for completeness
1125
-
1126
- exports.setTimeout = function() {
1127
- return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
1128
- };
1129
- exports.setInterval = function() {
1130
- return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
1131
- };
1132
- exports.clearTimeout =
1133
- exports.clearInterval = function(timeout) {
1134
- if (timeout) {
1135
- timeout.close();
1136
- }
1137
- };
1138
-
1139
- function Timeout(id, clearFn) {
1140
- this._id = id;
1141
- this._clearFn = clearFn;
1142
- }
1143
- Timeout.prototype.unref = Timeout.prototype.ref = function() {};
1144
- Timeout.prototype.close = function() {
1145
- this._clearFn.call(scope, this._id);
1146
- };
1147
-
1148
- // Does not start the time, just sets up the members needed.
1149
- exports.enroll = function(item, msecs) {
1150
- clearTimeout(item._idleTimeoutId);
1151
- item._idleTimeout = msecs;
1152
- };
1153
-
1154
- exports.unenroll = function(item) {
1155
- clearTimeout(item._idleTimeoutId);
1156
- item._idleTimeout = -1;
1157
- };
1158
-
1159
- exports._unrefActive = exports.active = function(item) {
1160
- clearTimeout(item._idleTimeoutId);
1161
-
1162
- var msecs = item._idleTimeout;
1163
- if (msecs >= 0) {
1164
- item._idleTimeoutId = setTimeout(function onTimeout() {
1165
- if (item._onTimeout)
1166
- item._onTimeout();
1167
- }, msecs);
1168
- }
1169
- };
1170
-
1171
- // setimmediate attaches itself to the global object
1172
- __webpack_require__(/*! setimmediate */ "./node_modules/setimmediate/setImmediate.js");
1173
- // On some exotic environments, it's not clear which object `setimmediate` was
1174
- // able to install onto. Search each possibility in the same order as the
1175
- // `setimmediate` library.
1176
- exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
1177
- (typeof global !== "undefined" && global.setImmediate) ||
1178
- (this && this.setImmediate);
1179
- exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
1180
- (typeof global !== "undefined" && global.clearImmediate) ||
1181
- (this && this.clearImmediate);
1182
-
1183
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
1184
-
1185
- /***/ }),
1186
-
1187
- /***/ "./node_modules/webpack/buildin/global.js":
1188
- /*!***********************************!*\
1189
- !*** (webpack)/buildin/global.js ***!
1190
- \***********************************/
1191
- /*! no static exports found */
1192
- /***/ (function(module, exports) {
1193
-
1194
- var g;
1195
-
1196
- // This works in non-strict mode
1197
- g = (function() {
1198
- return this;
1199
- })();
1200
-
1201
- try {
1202
- // This works if eval is allowed (see CSP)
1203
- g = g || new Function("return this")();
1204
- } catch (e) {
1205
- // This works if the window reference is available
1206
- if (typeof window === "object") g = window;
1207
- }
1208
-
1209
- // g can still be undefined, but nothing to do about it...
1210
- // We return undefined, instead of nothing here, so it's
1211
- // easier to handle this case. if(!global) { ...}
1212
-
1213
- module.exports = g;
1214
-
1215
-
1216
717
  /***/ }),
1217
718
 
1218
719
  /***/ "./src/actions/action.ts":
@@ -5840,7 +5341,7 @@ var defaultV2Css = {
5840
5341
  },
5841
5342
  boolean: {
5842
5343
  mainRoot: "sd-element sd-question sd-row__question sd-question--boolean",
5843
- root: "sv_qcbc sv_qbln sd-scrollable-container",
5344
+ root: "sv_qcbc sv_qbln sd-scrollable-container sd-boolean-root",
5844
5345
  rootRadio: "sv_qcbc sv_qbln sd-scrollable-container sd-scrollable-container--compact",
5845
5346
  item: "sd-boolean",
5846
5347
  itemOnError: "sd-boolean--error",
@@ -6608,12 +6109,16 @@ var DragDropPanelHelperV1 = /** @class */ (function () {
6608
6109
  var destRow = this.dragDropFindRow(dest);
6609
6110
  if (!destRow)
6610
6111
  return true;
6611
- if (_settings__WEBPACK_IMPORTED_MODULE_1__["settings"].supportCreatorV2 && this.panel.isDesignMode) {
6612
- if (destRow.elements.length > 1)
6613
- return this.dragDropAddTargetToExistingRow(dragDropInfo, destRow, prevRow);
6614
- else
6615
- return this.dragDropAddTargetToNewRow(dragDropInfo, destRow, prevRow);
6616
- }
6112
+ // if (settings.supportCreatorV2 && this.panel.isDesignMode) {
6113
+ // if (destRow.elements.length > 1)
6114
+ // return this.dragDropAddTargetToExistingRow(
6115
+ // dragDropInfo,
6116
+ // destRow,
6117
+ // prevRow
6118
+ // );
6119
+ // else
6120
+ // return this.dragDropAddTargetToNewRow(dragDropInfo, destRow, prevRow);
6121
+ // }
6617
6122
  if (!dragDropInfo.target.startWithNewLine)
6618
6123
  return this.dragDropAddTargetToExistingRow(dragDropInfo, destRow, prevRow);
6619
6124
  return this.dragDropAddTargetToNewRow(dragDropInfo, destRow, prevRow);
@@ -6750,13 +6255,13 @@ var DragDropChoices = /** @class */ (function (_super) {
6750
6255
  _this.doDragOver = function () {
6751
6256
  if (_this.parentElement.getType() === "imagepicker")
6752
6257
  return;
6753
- var node = _this.draggedElementShortcut.querySelector(".svc-item-value-controls__button");
6258
+ var node = _this.domAdapter.draggedElementShortcut.querySelector(".svc-item-value-controls__button");
6754
6259
  node.style.cursor = "grabbing";
6755
6260
  };
6756
6261
  _this.doBanDropHere = function () {
6757
6262
  if (_this.parentElement.getType() === "imagepicker")
6758
6263
  return;
6759
- var node = _this.draggedElementShortcut.querySelector(".svc-item-value-controls__button");
6264
+ var node = _this.domAdapter.draggedElementShortcut.querySelector(".svc-item-value-controls__button");
6760
6265
  node.style.cursor = "not-allowed";
6761
6266
  };
6762
6267
  return _this;
@@ -6821,7 +6326,7 @@ var DragDropChoices = /** @class */ (function (_super) {
6821
6326
  return parent.rankingChoices;
6822
6327
  return parent.visibleChoices;
6823
6328
  };
6824
- DragDropChoices.prototype.isDropTargetValid = function (dropTarget) {
6329
+ DragDropChoices.prototype.isDropTargetValid = function (dropTarget, dropTargetNode) {
6825
6330
  var choices = this.getVisibleChoices();
6826
6331
  if (this.parentElement.getType() !== "imagepicker") {
6827
6332
  var dropTargetIndex = choices.indexOf(this.dropTarget);
@@ -6882,12 +6387,14 @@ var DragDropChoices = /** @class */ (function (_super) {
6882
6387
  choices.splice(newIndex, 0, this.draggedElement);
6883
6388
  return this.parentElement;
6884
6389
  };
6885
- DragDropChoices.prototype.doClear = function () {
6886
- this.updateVisibleChoices();
6390
+ DragDropChoices.prototype.clear = function () {
6391
+ if (!!this.parentElement) {
6392
+ this.updateVisibleChoices(this.parentElement);
6393
+ }
6394
+ _super.prototype.clear.call(this);
6887
6395
  };
6888
- DragDropChoices.prototype.updateVisibleChoices = function () {
6889
- var parent = this.parentElement;
6890
- this.parentElement.getType() === "ranking" ?
6396
+ DragDropChoices.prototype.updateVisibleChoices = function (parent) {
6397
+ parent.getType() === "ranking" ?
6891
6398
  parent.updateRankingChoices() :
6892
6399
  parent["updateVisibleChoices"]();
6893
6400
  };
@@ -6909,66 +6416,208 @@ var DragDropChoices = /** @class */ (function (_super) {
6909
6416
  __webpack_require__.r(__webpack_exports__);
6910
6417
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragDropCore", function() { return DragDropCore; });
6911
6418
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base.ts");
6912
- /* harmony import */ var _jsonobject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsonobject */ "./src/jsonobject.ts");
6913
- /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/utils */ "./src/utils/utils.ts");
6914
- /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/devices */ "./src/utils/devices.ts");
6915
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings */ "./src/settings.ts");
6916
- var __extends = (undefined && undefined.__extends) || (function () {
6917
- var extendStatics = function (d, b) {
6918
- extendStatics = Object.setPrototypeOf ||
6919
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6920
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6921
- return extendStatics(d, b);
6419
+ /* harmony import */ var _dom_adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-adapter */ "./src/dragdrop/dom-adapter.ts");
6420
+
6421
+
6422
+ var DragDropCore = /** @class */ (function () {
6423
+ function DragDropCore(surveyValue, creator, longTap, domAdapter) {
6424
+ var _this = this;
6425
+ this.surveyValue = surveyValue;
6426
+ this.creator = creator;
6427
+ this._isBottom = null;
6428
+ this.onGhostPositionChanged = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6429
+ this.onDragStart = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6430
+ this.onDragEnd = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6431
+ this.onBeforeDrop = this.onDragStart;
6432
+ this.onAfterDrop = this.onDragEnd;
6433
+ this.draggedElement = null;
6434
+ this.dropTarget = null;
6435
+ this.prevDropTarget = null;
6436
+ this.allowDropHere = false;
6437
+ this.banDropHere = function () {
6438
+ _this.allowDropHere = false;
6439
+ _this.doBanDropHere();
6440
+ _this.dropTarget = null;
6441
+ _this.domAdapter.draggedElementShortcut.style.cursor = "not-allowed";
6442
+ _this.isBottom = null;
6443
+ };
6444
+ this.doBanDropHere = function () { };
6445
+ this.domAdapter = domAdapter || new _dom_adapter__WEBPACK_IMPORTED_MODULE_1__["DragDropDOMAdapter"](this, longTap);
6446
+ }
6447
+ Object.defineProperty(DragDropCore.prototype, "isBottom", {
6448
+ get: function () {
6449
+ return !!this._isBottom;
6450
+ },
6451
+ set: function (val) {
6452
+ this._isBottom = val;
6453
+ this.ghostPositionChanged();
6454
+ },
6455
+ enumerable: false,
6456
+ configurable: true
6457
+ });
6458
+ DragDropCore.prototype.ghostPositionChanged = function () {
6459
+ this.onGhostPositionChanged.fire({}, {});
6922
6460
  };
6923
- return function (d, b) {
6924
- if (typeof b !== "function" && b !== null)
6925
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
6926
- extendStatics(d, b);
6927
- function __() { this.constructor = d; }
6928
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6461
+ Object.defineProperty(DragDropCore.prototype, "dropTargetDataAttributeName", {
6462
+ get: function () {
6463
+ return "[data-sv-drop-target-" + this.draggedElementType + "]";
6464
+ },
6465
+ enumerable: false,
6466
+ configurable: true
6467
+ });
6468
+ Object.defineProperty(DragDropCore.prototype, "survey", {
6469
+ get: function () {
6470
+ return this.surveyValue || this.creator.survey;
6471
+ },
6472
+ enumerable: false,
6473
+ configurable: true
6474
+ });
6475
+ DragDropCore.prototype.startDrag = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
6476
+ if (preventSaveTargetNode === void 0) { preventSaveTargetNode = false; }
6477
+ this.domAdapter.startDrag(event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode);
6929
6478
  };
6930
- })();
6931
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6932
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6933
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6934
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6935
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6936
- };
6479
+ DragDropCore.prototype.dragInit = function (event, draggedElement, parentElement, draggedElementNode) {
6480
+ this.draggedElement = draggedElement;
6481
+ this.parentElement = parentElement;
6482
+ var shortcutText = this.getShortcutText(this.draggedElement);
6483
+ this.domAdapter.draggedElementShortcut = this.createDraggedElementShortcut(shortcutText, draggedElementNode, event);
6484
+ this.onStartDrag();
6485
+ };
6486
+ DragDropCore.prototype.onStartDrag = function () {
6487
+ };
6488
+ DragDropCore.prototype.isDropTargetDoesntChanged = function (newIsBottom) {
6489
+ return (this.dropTarget === this.prevDropTarget && newIsBottom === this.isBottom);
6490
+ };
6491
+ DragDropCore.prototype.getShortcutText = function (draggedElement) {
6492
+ return draggedElement.shortcutText;
6493
+ };
6494
+ DragDropCore.prototype.createDraggedElementShortcut = function (text, draggedElementNode, event) {
6495
+ var draggedElementShortcut = document.createElement("div");
6496
+ draggedElementShortcut.innerText = text;
6497
+ draggedElementShortcut.className = this.getDraggedElementClass();
6498
+ return draggedElementShortcut;
6499
+ };
6500
+ DragDropCore.prototype.getDraggedElementClass = function () {
6501
+ return "sv-dragged-element-shortcut";
6502
+ };
6503
+ DragDropCore.prototype.doDragOver = function () { };
6504
+ DragDropCore.prototype.afterDragOver = function (dropTargetNode) { };
6505
+ DragDropCore.prototype.findDropTargetNodeFromPoint = function (clientX, clientY) {
6506
+ this.domAdapter.draggedElementShortcut.hidden = true;
6507
+ var dragOverNode = document.elementFromPoint(clientX, clientY);
6508
+ this.domAdapter.draggedElementShortcut.hidden = false;
6509
+ if (!dragOverNode)
6510
+ return null;
6511
+ return this.findDropTargetNodeByDragOverNode(dragOverNode);
6512
+ };
6513
+ DragDropCore.prototype.getDataAttributeValueByNode = function (node) {
6514
+ var _this = this;
6515
+ var datasetName = "svDropTarget";
6516
+ var words = this.draggedElementType.split("-");
6517
+ words.forEach(function (word) {
6518
+ datasetName += _this.capitalizeFirstLetter(word);
6519
+ });
6520
+ return node.dataset[datasetName];
6521
+ };
6522
+ DragDropCore.prototype.getDropTargetByNode = function (dropTargetNode, event) {
6523
+ var dataAttributeValue = this.getDataAttributeValueByNode(dropTargetNode);
6524
+ return this.getDropTargetByDataAttributeValue(dataAttributeValue, dropTargetNode, event);
6525
+ };
6526
+ DragDropCore.prototype.capitalizeFirstLetter = function (string) {
6527
+ return string.charAt(0).toUpperCase() + string.slice(1);
6528
+ };
6529
+ DragDropCore.prototype.calculateVerticalMiddleOfHTMLElement = function (HTMLElement) {
6530
+ var rect = HTMLElement.getBoundingClientRect();
6531
+ return rect.y + rect.height / 2;
6532
+ };
6533
+ DragDropCore.prototype.calculateHorizontalMiddleOfHTMLElement = function (HTMLElement) {
6534
+ var rect = HTMLElement.getBoundingClientRect();
6535
+ return rect.x + rect.width / 2;
6536
+ };
6537
+ DragDropCore.prototype.calculateIsBottom = function (clientY, dropTargetNode) {
6538
+ return false;
6539
+ };
6540
+ DragDropCore.prototype.findDropTargetNodeByDragOverNode = function (dragOverNode) {
6541
+ var dropTargetNode = dragOverNode.closest(this.dropTargetDataAttributeName);
6542
+ return dropTargetNode;
6543
+ };
6544
+ DragDropCore.prototype.dragOver = function (event) {
6545
+ var dropTargetNode = this.findDropTargetNodeFromPoint(event.clientX, event.clientY);
6546
+ if (!dropTargetNode) {
6547
+ this.banDropHere();
6548
+ return;
6549
+ }
6550
+ this.dropTarget = this.getDropTargetByNode(dropTargetNode, event);
6551
+ var isDropTargetValid = this.isDropTargetValid(this.dropTarget, dropTargetNode);
6552
+ this.doDragOver();
6553
+ if (!isDropTargetValid) {
6554
+ this.banDropHere();
6555
+ return;
6556
+ }
6557
+ var isBottom = this.calculateIsBottom(event.clientY, dropTargetNode);
6558
+ this.allowDropHere = true;
6559
+ if (this.isDropTargetDoesntChanged(isBottom))
6560
+ return;
6561
+ this.isBottom = null; //TODO need for property change trigger with guarantee but it would be better not to watch on isBottom property but have some event like onValidTargetDragOver
6562
+ this.isBottom = isBottom;
6563
+ this.afterDragOver(dropTargetNode);
6564
+ this.prevDropTarget = this.dropTarget;
6565
+ };
6566
+ DragDropCore.prototype.drop = function () {
6567
+ if (this.allowDropHere) {
6568
+ var fromElement = this.draggedElement.parent;
6569
+ this.onDragStart.fire(this, { fromElement: fromElement, draggedElement: this.draggedElement });
6570
+ var newElement = this.doDrop();
6571
+ this.onDragEnd.fire(this, { fromElement: fromElement, draggedElement: newElement, toElement: this.dropTarget });
6572
+ }
6573
+ };
6574
+ DragDropCore.prototype.clear = function () {
6575
+ this.dropTarget = null;
6576
+ this.draggedElement = null;
6577
+ this.isBottom = null;
6578
+ this.parentElement = null;
6579
+ };
6580
+ return DragDropCore;
6581
+ }());
6937
6582
 
6938
6583
 
6939
6584
 
6585
+ /***/ }),
6586
+
6587
+ /***/ "./src/dragdrop/dom-adapter.ts":
6588
+ /*!*************************************!*\
6589
+ !*** ./src/dragdrop/dom-adapter.ts ***!
6590
+ \*************************************/
6591
+ /*! exports provided: DragDropDOMAdapter */
6592
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
6593
+
6594
+ "use strict";
6595
+ __webpack_require__.r(__webpack_exports__);
6596
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragDropDOMAdapter", function() { return DragDropDOMAdapter; });
6597
+ /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/utils */ "./src/utils/utils.ts");
6598
+ /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/devices */ "./src/utils/devices.ts");
6599
+ /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../settings */ "./src/settings.ts");
6600
+
6940
6601
 
6941
6602
 
6942
6603
  // WebKit requires cancelable `touchmove` events to be added as early as possible
6943
6604
  // see https://bugs.webkit.org/show_bug.cgi?id=184250
6944
6605
  if (typeof window !== "undefined") {
6945
6606
  window.addEventListener("touchmove", function (event) {
6946
- if (!DragDropCore.PreventScrolling) {
6607
+ if (!DragDropDOMAdapter.PreventScrolling) {
6947
6608
  return;
6948
6609
  }
6949
6610
  // Prevent scrolling
6950
6611
  event.preventDefault();
6951
6612
  }, { passive: false });
6952
6613
  }
6953
- var DragDropCore = /** @class */ (function (_super) {
6954
- __extends(DragDropCore, _super);
6955
- function DragDropCore(surveyValue, creator, longTap) {
6956
- var _this = _super.call(this) || this;
6957
- _this.surveyValue = surveyValue;
6958
- _this.creator = creator;
6959
- _this.longTap = longTap;
6960
- _this.onGhostPositionChanged = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6961
- _this.onDragStart = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6962
- _this.onDragEnd = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
6963
- _this.onBeforeDrop = _this.onDragStart;
6964
- _this.onAfterDrop = _this.onDragEnd;
6965
- _this.draggedElement = null;
6966
- _this.dropTarget = null;
6967
- _this.prevDropTarget = null;
6968
- _this.draggedElementShortcut = null;
6969
- _this.scrollIntervalId = null;
6970
- _this.allowDropHere = false;
6971
- _this.stopLongTapIfMoveEnough = function (pointerMoveEvent) {
6614
+ var DragDropDOMAdapter = /** @class */ (function () {
6615
+ function DragDropDOMAdapter(dd, longTap) {
6616
+ var _this = this;
6617
+ this.dd = dd;
6618
+ this.longTap = longTap;
6619
+ this.scrollIntervalId = null;
6620
+ this.stopLongTapIfMoveEnough = function (pointerMoveEvent) {
6972
6621
  pointerMoveEvent.preventDefault();
6973
6622
  _this.currentX = pointerMoveEvent.pageX;
6974
6623
  _this.currentY = pointerMoveEvent.pageY;
@@ -6979,119 +6628,69 @@ var DragDropCore = /** @class */ (function (_super) {
6979
6628
  document.body.style.setProperty("-webkit-user-select", "");
6980
6629
  _this.stopLongTap();
6981
6630
  };
6982
- _this.stopLongTap = function (e) {
6631
+ this.stopLongTap = function (e) {
6983
6632
  clearTimeout(_this.timeoutID);
6984
6633
  _this.timeoutID = null;
6985
6634
  document.removeEventListener("pointerup", _this.stopLongTap);
6986
6635
  document.removeEventListener("pointermove", _this.stopLongTapIfMoveEnough);
6987
6636
  };
6988
- _this.onContextMenu = function (event) {
6989
- event.preventDefault();
6990
- event.stopPropagation();
6991
- };
6992
- _this.dragOver = function (event) {
6993
- _this.moveShortcutElement(event);
6994
- _this.draggedElementShortcut.style.cursor = "grabbing";
6995
- var dropTargetNode = _this.findDropTargetNodeFromPoint(event.clientX, event.clientY);
6996
- if (!dropTargetNode) {
6997
- _this.banDropHere();
6998
- return;
6999
- }
7000
- _this.dropTarget = _this.getDropTargetByNode(dropTargetNode, event);
7001
- var isDropTargetValid = _this.isDropTargetValid(_this.dropTarget, dropTargetNode);
7002
- _this.doDragOver(dropTargetNode, event);
7003
- if (!isDropTargetValid) {
7004
- _this.banDropHere();
7005
- return;
7006
- }
7007
- var isBottom = _this.calculateIsBottom(event.clientY, dropTargetNode);
7008
- _this.allowDropHere = true;
7009
- if (_this.isDropTargetDoesntChanged(isBottom))
7010
- return;
7011
- _this.isBottom = null; //TODO need for property change trigger with guarantee but it would be better not to watch on isBottom property but have some event like onValidTargetDragOver
7012
- _this.isBottom = isBottom;
7013
- _this.afterDragOver(dropTargetNode, event);
7014
- _this.prevDropTarget = _this.dropTarget;
7015
- };
7016
- _this.drop = function () {
7017
- if (_this.allowDropHere) {
7018
- var fromElement = _this.draggedElement.parent;
7019
- _this.onDragStart.fire(_this, { fromElement: fromElement, draggedElement: _this.draggedElement });
7020
- var newElement = _this.doDrop();
7021
- _this.onDragEnd.fire(_this, { fromElement: fromElement, draggedElement: newElement, toElement: _this.dropTarget });
7022
- }
6637
+ this.handlePointerCancel = function (event) {
7023
6638
  _this.clear();
7024
6639
  };
7025
- _this.handlePointerCancel = function (event) {
7026
- _this.clear();
7027
- };
7028
- _this.handleEscapeButton = function (event) {
6640
+ this.handleEscapeButton = function (event) {
7029
6641
  if (event.keyCode == 27) {
7030
6642
  _this.clear();
7031
6643
  }
7032
6644
  };
7033
- _this.banDropHere = function () {
7034
- _this.allowDropHere = false;
7035
- _this.doBanDropHere();
7036
- _this.dropTarget = null;
7037
- _this.draggedElementShortcut.style.cursor = "not-allowed";
7038
- _this.isBottom = null;
6645
+ this.onContextMenu = function (event) {
6646
+ event.preventDefault();
6647
+ event.stopPropagation();
6648
+ };
6649
+ this.dragOver = function (event) {
6650
+ _this.moveShortcutElement(event);
6651
+ _this.draggedElementShortcut.style.cursor = "grabbing";
6652
+ _this.dd.dragOver(event);
7039
6653
  };
7040
- _this.doBanDropHere = function () { };
7041
- _this.clear = function () {
6654
+ this.clear = function () {
7042
6655
  cancelAnimationFrame(_this.scrollIntervalId);
7043
6656
  document.removeEventListener("pointermove", _this.dragOver);
7044
6657
  document.removeEventListener("pointercancel", _this.handlePointerCancel);
7045
6658
  document.removeEventListener("keydown", _this.handleEscapeButton);
7046
6659
  document.removeEventListener("pointerup", _this.drop);
7047
6660
  _this.draggedElementShortcut.removeEventListener("pointerup", _this.drop);
7048
- if (_utils_devices__WEBPACK_IMPORTED_MODULE_3__["IsTouch"]) {
6661
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
7049
6662
  _this.draggedElementShortcut.removeEventListener("contextmenu", _this.onContextMenu);
7050
6663
  }
7051
- _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.rootElement.removeChild(_this.draggedElementShortcut);
7052
- _this.doClear();
7053
- _this.dropTarget = null;
6664
+ _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.removeChild(_this.draggedElementShortcut);
6665
+ _this.dd.clear();
7054
6666
  _this.draggedElementShortcut = null;
7055
- _this.draggedElement = null;
7056
- _this.isBottom = null;
7057
- _this.parentElement = null;
7058
6667
  _this.scrollIntervalId = null;
7059
- if (_utils_devices__WEBPACK_IMPORTED_MODULE_3__["IsTouch"]) {
7060
- _this.savedTargetNode && _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.rootElement.removeChild(_this.savedTargetNode);
7061
- DragDropCore.PreventScrolling = false;
6668
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6669
+ _this.savedTargetNode && _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.removeChild(_this.savedTargetNode);
6670
+ DragDropDOMAdapter.PreventScrolling = false;
7062
6671
  }
7063
6672
  document.body.style.setProperty("touch-action", "");
7064
6673
  document.body.style.setProperty("user-select", "");
7065
6674
  document.body.style.setProperty("-webkit-user-select", "");
7066
6675
  };
7067
- return _this;
6676
+ this.drop = function () {
6677
+ _this.dd.drop();
6678
+ _this.clear();
6679
+ };
6680
+ this.draggedElementShortcut = null;
7068
6681
  }
7069
- DragDropCore.prototype.ghostPositionChanged = function () {
7070
- this.onGhostPositionChanged.fire({}, {});
7071
- };
7072
- Object.defineProperty(DragDropCore.prototype, "dropTargetDataAttributeName", {
7073
- get: function () {
7074
- return "[data-sv-drop-target-" + this.draggedElementType + "]";
7075
- },
7076
- enumerable: false,
7077
- configurable: true
7078
- });
7079
- Object.defineProperty(DragDropCore.prototype, "survey", {
6682
+ Object.defineProperty(DragDropDOMAdapter.prototype, "isMicroMovement", {
6683
+ // see https://stackoverflow.com/questions/6042202/how-to-distinguish-mouse-click-and-drag
7080
6684
  get: function () {
7081
- return this.surveyValue || this.creator.survey;
6685
+ var delta = 5;
6686
+ var diffX = Math.abs(this.currentX - this.startX);
6687
+ var diffY = Math.abs(this.currentY - this.startY);
6688
+ return diffX < delta && diffY < delta;
7082
6689
  },
7083
6690
  enumerable: false,
7084
6691
  configurable: true
7085
6692
  });
7086
- DragDropCore.prototype.startDrag = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
7087
- if (preventSaveTargetNode === void 0) { preventSaveTargetNode = false; }
7088
- if (_utils_devices__WEBPACK_IMPORTED_MODULE_3__["IsTouch"]) {
7089
- this.startLongTapProcessing(event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode);
7090
- return;
7091
- }
7092
- this.doStartDrag(event, draggedElement, parentElement, draggedElementNode);
7093
- };
7094
- DragDropCore.prototype.startLongTapProcessing = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
6693
+ DragDropDOMAdapter.prototype.startLongTapProcessing = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
7095
6694
  var _this = this;
7096
6695
  if (preventSaveTargetNode === void 0) { preventSaveTargetNode = false; }
7097
6696
  this.startX = event.pageX;
@@ -7105,75 +6704,14 @@ var DragDropCore = /** @class */ (function (_super) {
7105
6704
  _this.savedTargetNode = event.target;
7106
6705
  _this.savedTargetNode.style.cssText =
7107
6706
  "\n position: absolute;\n height: 1px!important;\n width: 1px!important;\n overflow: hidden;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n ";
7108
- _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.rootElement.appendChild(_this.savedTargetNode);
6707
+ _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.appendChild(_this.savedTargetNode);
7109
6708
  }
7110
6709
  _this.stopLongTap();
7111
6710
  }, this.longTap ? 500 : 0);
7112
6711
  document.addEventListener("pointerup", this.stopLongTap);
7113
6712
  document.addEventListener("pointermove", this.stopLongTapIfMoveEnough);
7114
6713
  };
7115
- Object.defineProperty(DragDropCore.prototype, "isMicroMovement", {
7116
- // see https://stackoverflow.com/questions/6042202/how-to-distinguish-mouse-click-and-drag
7117
- get: function () {
7118
- var delta = 5;
7119
- var diffX = Math.abs(this.currentX - this.startX);
7120
- var diffY = Math.abs(this.currentY - this.startY);
7121
- return diffX < delta && diffY < delta;
7122
- },
7123
- enumerable: false,
7124
- configurable: true
7125
- });
7126
- // EO long tap
7127
- DragDropCore.prototype.doStartDrag = function (event, draggedElement, parentElement, draggedElementNode) {
7128
- if (_utils_devices__WEBPACK_IMPORTED_MODULE_3__["IsTouch"]) {
7129
- DragDropCore.PreventScrolling = true;
7130
- }
7131
- if (event.which === 3)
7132
- return; //right mouse btn
7133
- this.draggedElement = draggedElement;
7134
- this.parentElement = parentElement;
7135
- this.onStartDrag();
7136
- var shortcutText = this.getShortcutText(this.draggedElement);
7137
- this.draggedElementShortcut = this.createDraggedElementShortcut(shortcutText, draggedElementNode, event);
7138
- document.body.append(this.draggedElementShortcut);
7139
- this.moveShortcutElement(event);
7140
- document.addEventListener("pointermove", this.dragOver);
7141
- document.addEventListener("pointercancel", this.handlePointerCancel);
7142
- document.addEventListener("keydown", this.handleEscapeButton);
7143
- document.addEventListener("pointerup", this.drop);
7144
- if (!_utils_devices__WEBPACK_IMPORTED_MODULE_3__["IsTouch"]) {
7145
- this.draggedElementShortcut.addEventListener("pointerup", this.drop);
7146
- }
7147
- else {
7148
- this.draggedElementShortcut.addEventListener("contextmenu", this.onContextMenu);
7149
- }
7150
- };
7151
- DragDropCore.prototype.isDropTargetDoesntChanged = function (newIsBottom) {
7152
- return (this.dropTarget === this.prevDropTarget && newIsBottom === this.isBottom);
7153
- };
7154
- DragDropCore.prototype.onStartDrag = function () { };
7155
- DragDropCore.prototype.getShortcutText = function (draggedElement) {
7156
- return draggedElement.shortcutText;
7157
- };
7158
- DragDropCore.prototype.createDraggedElementShortcut = function (text, draggedElementNode, event) {
7159
- var draggedElementShortcut = document.createElement("div");
7160
- draggedElementShortcut.innerText = text;
7161
- draggedElementShortcut.className = this.getDraggedElementClass();
7162
- return draggedElementShortcut;
7163
- };
7164
- DragDropCore.prototype.getDraggedElementClass = function () {
7165
- return "sv-dragged-element-shortcut";
7166
- };
7167
- DragDropCore.prototype.doDragOver = function (dropTargetNode, event) { };
7168
- DragDropCore.prototype.afterDragOver = function (dropTargetNode, event) { };
7169
- DragDropCore.prototype.getGhostPosition = function (item) {
7170
- if (this.dropTarget !== item)
7171
- return null;
7172
- if (this.isBottom)
7173
- return "bottom";
7174
- return "top";
7175
- };
7176
- DragDropCore.prototype.moveShortcutElement = function (event) {
6714
+ DragDropDOMAdapter.prototype.moveShortcutElement = function (event) {
7177
6715
  this.doScroll(event.clientY, event.clientX);
7178
6716
  var shortcutHeight = this.draggedElementShortcut.offsetHeight;
7179
6717
  var shortcutWidth = this.draggedElementShortcut.offsetWidth;
@@ -7184,8 +6722,8 @@ var DragDropCore = /** @class */ (function (_super) {
7184
6722
  shortcutXOffset = shortcutWidth / 2;
7185
6723
  shortcutYOffset = shortcutHeight / 2;
7186
6724
  }
7187
- var documentBottom = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_2__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root.documentElement).clientHeight;
7188
- var documentRight = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_2__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root.documentElement).clientWidth;
6725
+ var documentBottom = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.documentElement).clientHeight;
6726
+ var documentRight = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.documentElement).clientWidth;
7189
6727
  var shortcutBottomCoordinate = this.getShortcutBottomCoordinate(event.clientY, shortcutHeight, shortcutYOffset);
7190
6728
  var shortcutRightCoordinate = this.getShortcutRightCoordinate(event.clientX, shortcutWidth, shortcutXOffset);
7191
6729
  if (shortcutRightCoordinate >= documentRight) {
@@ -7229,20 +6767,20 @@ var DragDropCore = /** @class */ (function (_super) {
7229
6767
  this.draggedElementShortcut.style.top =
7230
6768
  event.pageY - shortcutYOffset + "px";
7231
6769
  };
7232
- DragDropCore.prototype.getShortcutBottomCoordinate = function (currentY, shortcutHeight, shortcutYOffset) {
6770
+ DragDropDOMAdapter.prototype.getShortcutBottomCoordinate = function (currentY, shortcutHeight, shortcutYOffset) {
7233
6771
  return currentY + shortcutHeight - shortcutYOffset;
7234
6772
  };
7235
- DragDropCore.prototype.getShortcutRightCoordinate = function (currentX, shortcutWidth, shortcutXOffset) {
6773
+ DragDropDOMAdapter.prototype.getShortcutRightCoordinate = function (currentX, shortcutWidth, shortcutXOffset) {
7236
6774
  return currentX + shortcutWidth - shortcutXOffset;
7237
6775
  };
7238
- DragDropCore.prototype.doScroll = function (clientY, clientX) {
6776
+ DragDropDOMAdapter.prototype.doScroll = function (clientY, clientX) {
7239
6777
  var _this = this;
7240
6778
  cancelAnimationFrame(this.scrollIntervalId);
7241
6779
  var startScrollBoundary = 50;
7242
6780
  this.draggedElementShortcut.hidden = true;
7243
6781
  var dragOverNode = document.elementFromPoint(clientX, clientY);
7244
6782
  this.draggedElementShortcut.hidden = false;
7245
- var scrollableParentNode = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_2__["findScrollableParent"])(dragOverNode);
6783
+ var scrollableParentNode = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["findScrollableParent"])(dragOverNode);
7246
6784
  var top;
7247
6785
  var bottom;
7248
6786
  var left;
@@ -7276,54 +6814,37 @@ var DragDropCore = /** @class */ (function (_super) {
7276
6814
  };
7277
6815
  this.scrollIntervalId = requestAnimationFrame(repeat);
7278
6816
  };
7279
- DragDropCore.prototype.getDataAttributeValueByNode = function (node) {
7280
- var _this = this;
7281
- var datasetName = "svDropTarget";
7282
- var words = this.draggedElementType.split("-");
7283
- words.forEach(function (word) {
7284
- datasetName += _this.capitalizeFirstLetter(word);
7285
- });
7286
- return node.dataset[datasetName];
7287
- };
7288
- DragDropCore.prototype.getDropTargetByNode = function (dropTargetNode, event) {
7289
- var dataAttributeValue = this.getDataAttributeValueByNode(dropTargetNode);
7290
- return this.getDropTargetByDataAttributeValue(dataAttributeValue, dropTargetNode, event);
7291
- };
7292
- DragDropCore.prototype.capitalizeFirstLetter = function (string) {
7293
- return string.charAt(0).toUpperCase() + string.slice(1);
7294
- };
7295
- DragDropCore.prototype.calculateVerticalMiddleOfHTMLElement = function (HTMLElement) {
7296
- var rect = HTMLElement.getBoundingClientRect();
7297
- return rect.y + rect.height / 2;
7298
- };
7299
- DragDropCore.prototype.calculateHorizontalMiddleOfHTMLElement = function (HTMLElement) {
7300
- var rect = HTMLElement.getBoundingClientRect();
7301
- return rect.x + rect.width / 2;
7302
- };
7303
- DragDropCore.prototype.findDropTargetNodeFromPoint = function (clientX, clientY) {
7304
- this.draggedElementShortcut.hidden = true;
7305
- var dragOverNode = document.elementFromPoint(clientX, clientY);
7306
- this.draggedElementShortcut.hidden = false;
7307
- if (!dragOverNode)
7308
- return null;
7309
- return this.findDropTargetNodeByDragOverNode(dragOverNode);
6817
+ DragDropDOMAdapter.prototype.doStartDrag = function (event, draggedElement, parentElement, draggedElementNode) {
6818
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6819
+ DragDropDOMAdapter.PreventScrolling = true;
6820
+ }
6821
+ if (event.which === 3)
6822
+ return; //right mouse btn
6823
+ this.dd.dragInit(event, draggedElement, parentElement, draggedElementNode);
6824
+ document.body.append(this.draggedElementShortcut);
6825
+ this.moveShortcutElement(event);
6826
+ document.addEventListener("pointermove", this.dragOver);
6827
+ document.addEventListener("pointercancel", this.handlePointerCancel);
6828
+ document.addEventListener("keydown", this.handleEscapeButton);
6829
+ document.addEventListener("pointerup", this.drop);
6830
+ if (!_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6831
+ this.draggedElementShortcut.addEventListener("pointerup", this.drop);
6832
+ }
6833
+ else {
6834
+ this.draggedElementShortcut.addEventListener("contextmenu", this.onContextMenu);
6835
+ }
7310
6836
  };
7311
- DragDropCore.prototype.findDropTargetNodeByDragOverNode = function (dragOverNode) {
7312
- var dropTargetNode = dragOverNode.closest(this.dropTargetDataAttributeName);
7313
- return dropTargetNode;
6837
+ DragDropDOMAdapter.prototype.startDrag = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
6838
+ if (preventSaveTargetNode === void 0) { preventSaveTargetNode = false; }
6839
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6840
+ this.startLongTapProcessing(event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode);
6841
+ return;
6842
+ }
6843
+ this.doStartDrag(event, draggedElement, parentElement, draggedElementNode);
7314
6844
  };
7315
- DragDropCore.prototype.doClear = function () { };
7316
- DragDropCore.PreventScrolling = false;
7317
- __decorate([
7318
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({
7319
- defaultValue: null,
7320
- onSet: function (val, target) {
7321
- target.ghostPositionChanged();
7322
- },
7323
- })
7324
- ], DragDropCore.prototype, "isBottom", void 0);
7325
- return DragDropCore;
7326
- }(_base__WEBPACK_IMPORTED_MODULE_0__["Base"]));
6845
+ DragDropDOMAdapter.PreventScrolling = false;
6846
+ return DragDropDOMAdapter;
6847
+ }());
7327
6848
 
7328
6849
 
7329
6850
 
@@ -7381,18 +6902,20 @@ var DragDropMatrixRows = /** @class */ (function (_super) {
7381
6902
  // draggedElementShortcut.innerText = text;
7382
6903
  draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 1000;\n font-family: var(--font-family, $font-family);\n ";
7383
6904
  var isDeepClone = true;
7384
- var row = (draggedElementNode
7385
- .closest("[data-sv-drop-target-matrix-row]"));
7386
- var clone = (row.cloneNode(isDeepClone));
7387
- clone.style.cssText = "\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1), 0px 2px 6px rgba(0, 0, 0, 0.1);\n background-color: white;\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n align-items: center;\n line-height: 0;\n width: " + row.offsetWidth + "px;\n ";
7388
- clone.classList.remove("sv-matrix__drag-drop--moveup");
7389
- clone.classList.remove("sv-matrix__drag-drop--movedown");
7390
- this.draggedElement.isDragDropMoveDown = false;
7391
- this.draggedElement.isDragDropMoveUp = false;
7392
- draggedElementShortcut.appendChild(clone);
7393
- var rect = draggedElementNode.getBoundingClientRect();
7394
- draggedElementShortcut.shortcutXOffset = event.clientX - rect.x;
7395
- draggedElementShortcut.shortcutYOffset = event.clientY - rect.y;
6905
+ if (!!draggedElementNode) {
6906
+ var row = (draggedElementNode
6907
+ .closest("[data-sv-drop-target-matrix-row]"));
6908
+ var clone = (row.cloneNode(isDeepClone));
6909
+ clone.style.cssText = "\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1), 0px 2px 6px rgba(0, 0, 0, 0.1);\n background-color: white;\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n align-items: center;\n line-height: 0;\n width: " + row.offsetWidth + "px;\n ";
6910
+ clone.classList.remove("sv-matrix__drag-drop--moveup");
6911
+ clone.classList.remove("sv-matrix__drag-drop--movedown");
6912
+ this.draggedElement.isDragDropMoveDown = false;
6913
+ this.draggedElement.isDragDropMoveUp = false;
6914
+ draggedElementShortcut.appendChild(clone);
6915
+ var rect = draggedElementNode.getBoundingClientRect();
6916
+ draggedElementShortcut.shortcutXOffset = event.clientX - rect.x;
6917
+ draggedElementShortcut.shortcutYOffset = event.clientY - rect.y;
6918
+ }
7396
6919
  //this.isBottom = null;
7397
6920
  var renderedRows = this.parentElement.renderedTable.rows;
7398
6921
  renderedRows.forEach(function (renderedRow, index) {
@@ -7421,7 +6944,7 @@ var DragDropMatrixRows = /** @class */ (function (_super) {
7421
6944
  dropTargetRenderedRow = matrix.renderedTable.rows.filter(function (renderedRow) { return renderedRow.row.id === dataAttributeValue; })[0];
7422
6945
  return dropTargetRenderedRow.row;
7423
6946
  };
7424
- DragDropMatrixRows.prototype.isDropTargetValid = function (dropTarget) {
6947
+ DragDropMatrixRows.prototype.isDropTargetValid = function (dropTarget, dropTargetNode) {
7425
6948
  return true;
7426
6949
  };
7427
6950
  DragDropMatrixRows.prototype.calculateIsBottom = function (clientY) {
@@ -7471,10 +6994,15 @@ var DragDropMatrixRows = /** @class */ (function (_super) {
7471
6994
  // }
7472
6995
  _super.prototype.ghostPositionChanged.call(this);
7473
6996
  };
7474
- DragDropMatrixRows.prototype.doClear = function () {
6997
+ DragDropMatrixRows.prototype.clear = function () {
6998
+ var renderedRows = this.parentElement.renderedTable.rows;
6999
+ renderedRows.forEach(function (renderedRow) {
7000
+ renderedRow.isGhostRow = false;
7001
+ });
7475
7002
  this.parentElement.clearOnDrop();
7476
7003
  this.fromIndex = null;
7477
7004
  this.toIndex = null;
7005
+ _super.prototype.clear.call(this);
7478
7006
  };
7479
7007
  return DragDropMatrixRows;
7480
7008
  }(_core__WEBPACK_IMPORTED_MODULE_0__["DragDropCore"]));
@@ -7520,7 +7048,7 @@ var DragDropRankingChoices = /** @class */ (function (_super) {
7520
7048
  var _this = _super !== null && _super.apply(this, arguments) || this;
7521
7049
  _this.isDragOverRootNode = false;
7522
7050
  _this.doDragOver = function () {
7523
- var node = _this.draggedElementShortcut.querySelector(".sv-ranking-item");
7051
+ var node = _this.domAdapter.draggedElementShortcut.querySelector(".sv-ranking-item");
7524
7052
  node.style.cursor = "grabbing";
7525
7053
  };
7526
7054
  _this.doBanDropHere = function () {
@@ -7528,17 +7056,13 @@ var DragDropRankingChoices = /** @class */ (function (_super) {
7528
7056
  _this.allowDropHere = true;
7529
7057
  return;
7530
7058
  }
7531
- var node = _this.draggedElementShortcut.querySelector(".sv-ranking-item");
7059
+ var node = _this.domAdapter.draggedElementShortcut.querySelector(".sv-ranking-item");
7532
7060
  node.style.cursor = "not-allowed";
7533
7061
  };
7534
7062
  _this.doDrop = function () {
7535
7063
  _this.parentElement.setValue();
7536
7064
  return _this.parentElement;
7537
7065
  };
7538
- _this.doClear = function () {
7539
- _this.parentElement.dropTargetNodeMove = null;
7540
- _this.parentElement.updateRankingChoices(true);
7541
- };
7542
7066
  return _this;
7543
7067
  }
7544
7068
  Object.defineProperty(DragDropRankingChoices.prototype, "draggedElementType", {
@@ -7632,439 +7156,22 @@ var DragDropRankingChoices = /** @class */ (function (_super) {
7632
7156
  DragDropRankingChoices.prototype.updateDraggedElementShortcut = function (newIndex) {
7633
7157
  var newIndexText = newIndex + "";
7634
7158
  // TODO should avoid direct DOM manipulation, do through the frameworks instead
7635
- var indexNode = this.draggedElementShortcut.querySelector(".sv-ranking-item__index");
7159
+ var indexNode = this.domAdapter.draggedElementShortcut.querySelector(".sv-ranking-item__index");
7636
7160
  indexNode.innerText = newIndexText;
7637
7161
  };
7638
7162
  DragDropRankingChoices.prototype.ghostPositionChanged = function () {
7639
7163
  this.parentElement.currentDropTarget = this.draggedElement;
7640
7164
  _super.prototype.ghostPositionChanged.call(this);
7641
7165
  };
7642
- return DragDropRankingChoices;
7643
- }(_choices__WEBPACK_IMPORTED_MODULE_0__["DragDropChoices"]));
7644
-
7645
-
7646
-
7647
- /***/ }),
7648
-
7649
- /***/ "./src/dragdrop/survey-elements.ts":
7650
- /*!*****************************************!*\
7651
- !*** ./src/dragdrop/survey-elements.ts ***!
7652
- \*****************************************/
7653
- /*! exports provided: DragDropSurveyElements */
7654
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
7655
-
7656
- "use strict";
7657
- __webpack_require__.r(__webpack_exports__);
7658
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragDropSurveyElements", function() { return DragDropSurveyElements; });
7659
- /* harmony import */ var _survey_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../survey-element */ "./src/survey-element.ts");
7660
- /* harmony import */ var _jsonobject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsonobject */ "./src/jsonobject.ts");
7661
- /* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core */ "./src/dragdrop/core.ts");
7662
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../settings */ "./src/settings.ts");
7663
- var __extends = (undefined && undefined.__extends) || (function () {
7664
- var extendStatics = function (d, b) {
7665
- extendStatics = Object.setPrototypeOf ||
7666
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
7667
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7668
- return extendStatics(d, b);
7669
- };
7670
- return function (d, b) {
7671
- if (typeof b !== "function" && b !== null)
7672
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
7673
- extendStatics(d, b);
7674
- function __() { this.constructor = d; }
7675
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
7676
- };
7677
- })();
7678
-
7679
-
7680
-
7681
-
7682
- var DragDropSurveyElements = /** @class */ (function (_super) {
7683
- __extends(DragDropSurveyElements, _super);
7684
- function DragDropSurveyElements() {
7685
- var _this = _super !== null && _super.apply(this, arguments) || this;
7686
- _this.isEdge = false;
7687
- _this.prevIsEdge = null;
7688
- _this.ghostSurveyElement = null;
7689
- _this.isDraggedElementSelected = false;
7690
- _this.doBanDropHere = function () {
7691
- _this.removeGhostElementFromSurvey();
7692
- _this.isEdge = null;
7693
- };
7694
- _this.doDrop = function () {
7695
- if (_this.dropTarget) {
7696
- _settings__WEBPACK_IMPORTED_MODULE_3__["settings"].environment.root.activeElement.blur();
7697
- return _this.insertRealElementIntoSurvey();
7698
- }
7699
- return null;
7700
- };
7701
- _this.doClear = function () {
7702
- _this.removeGhostElementFromSurvey();
7703
- _this.isEdge = null;
7704
- _this.ghostSurveyElement = null;
7705
- if (!!_this.draggedElement) {
7706
- _this.draggedElement.isDragMe = false;
7707
- }
7708
- _this.isRight = null;
7709
- };
7710
- return _this;
7711
- }
7712
- Object.defineProperty(DragDropSurveyElements.prototype, "draggedElementType", {
7713
- get: function () {
7714
- return "survey-element";
7715
- },
7716
- enumerable: false,
7717
- configurable: true
7718
- });
7719
- DragDropSurveyElements.prototype.startDragToolboxItem = function (event, draggedElementJson, toolboxItemTitle) {
7720
- var preventSaveTargetNode = true;
7721
- var draggedElement = this.createElementFromJson(draggedElementJson);
7722
- draggedElement.toolboxItemTitle = toolboxItemTitle;
7723
- this.startDrag(event, draggedElement, null, null, preventSaveTargetNode);
7724
- };
7725
- DragDropSurveyElements.prototype.startDragSurveyElement = function (event, draggedElement, isElementSelected) {
7726
- this.isDraggedElementSelected = isElementSelected;
7727
- this.startDrag(event, draggedElement);
7728
- };
7729
- DragDropSurveyElements.prototype.getShortcutText = function (draggedElement) {
7730
- return draggedElement.toolboxItemTitle || _super.prototype.getShortcutText.call(this, draggedElement);
7731
- };
7732
- DragDropSurveyElements.prototype.createDraggedElementShortcut = function (text, draggedElementNode, event) {
7733
- var draggedElementShortcut = document.createElement("div");
7734
- var textSpan = document.createElement("span");
7735
- textSpan.className = "svc-dragged-element-shortcut__text";
7736
- textSpan.innerText = text;
7737
- draggedElementShortcut.appendChild(this.createDraggedElementIcon());
7738
- draggedElementShortcut.appendChild(textSpan);
7739
- draggedElementShortcut.className = this.getDraggedElementClass();
7740
- return draggedElementShortcut;
7741
- };
7742
- DragDropSurveyElements.prototype.createDraggedElementIcon = function () {
7743
- var span = document.createElement("span");
7744
- var type = this.draggedElement.getType();
7745
- var svgString = "<svg class=\"sv-svg-icon\" role=\"img\" style=\"width: 24px; height: 24px;\"><use xlink:href=\"#icon-" + type + "\"></use></svg>";
7746
- span.className = "svc-dragged-element-shortcut__icon";
7747
- span.innerHTML = svgString;
7748
- return span;
7749
- };
7750
- DragDropSurveyElements.prototype.getDraggedElementClass = function () {
7751
- var result = "svc-dragged-element-shortcut";
7752
- if (this.isDraggedElementSelected)
7753
- result += " svc-dragged-element-shortcut--selected";
7754
- return result;
7755
- };
7756
- DragDropSurveyElements.prototype.createElementFromJson = function (json) {
7757
- var element = this.createNewElement(json);
7758
- if (element["setSurveyImpl"]) {
7759
- element["setSurveyImpl"](this.survey);
7760
- }
7761
- else {
7762
- element["setData"](this.survey);
7763
- }
7764
- element.renderWidth = "100%";
7765
- return element;
7766
- };
7767
- DragDropSurveyElements.prototype.createNewElement = function (json) {
7768
- var newElement = _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].createClass(json["type"]);
7769
- new _jsonobject__WEBPACK_IMPORTED_MODULE_1__["JsonObject"]().toObject(json, newElement);
7770
- return newElement;
7771
- };
7772
- DragDropSurveyElements.prototype.findDropTargetNodeByDragOverNode = function (dragOverNode) {
7773
- var ghostRow = dragOverNode.closest(".svc-row--ghost");
7774
- if (!!ghostRow) {
7775
- var ghostDataAttrSelector = "[data-sv-drop-target-survey-element='sv-drag-drop-ghost-survey-element-name']";
7776
- var ghostNode = dragOverNode.closest(ghostDataAttrSelector) || dragOverNode.querySelector(ghostDataAttrSelector);
7777
- if (!!ghostNode) {
7778
- return ghostNode;
7779
- }
7780
- }
7781
- var dropTargetNode = dragOverNode.closest(this.dropTargetDataAttributeName);
7782
- return dropTargetNode;
7783
- };
7784
- DragDropSurveyElements.prototype.getDropTargetByDataAttributeValue = function (dataAttributeValue, dropTargetNode, event) {
7785
- this.isEdge = this.calculateIsEdge(dropTargetNode, event.clientY);
7786
- if (!dataAttributeValue) {
7787
- // panel dynamic
7788
- var nearestDropTargetElement = dropTargetNode.parentElement.closest(this.dropTargetDataAttributeName);
7789
- dataAttributeValue = this.getDataAttributeValueByNode(nearestDropTargetElement);
7790
- }
7791
- if (!dataAttributeValue) {
7792
- throw new Error("Can't find drop target survey element name");
7793
- }
7794
- if (dataAttributeValue === DragDropSurveyElements.ghostSurveyElementName) {
7795
- return this.prevDropTarget;
7796
- }
7797
- // drop to new page
7798
- if (dataAttributeValue === "newGhostPage") {
7799
- return DragDropSurveyElements.newGhostPage;
7800
- }
7801
- // drop to page
7802
- var page = this.survey.getPageByName(dataAttributeValue);
7803
- if (page) {
7804
- if (
7805
- // TODO we can't drop on not empty page directly for now
7806
- page.elements.length !== 0) {
7807
- return null;
7808
- }
7809
- return page;
7810
- }
7811
- // drop to question or panel
7812
- var dropTarget;
7813
- var question;
7814
- this.survey.pages.forEach(function (page) {
7815
- question = page.getElementByName(dataAttributeValue);
7816
- if (question)
7817
- dropTarget = question;
7818
- });
7819
- // drop to paneldynamic
7820
- if (dropTarget.getType() === "paneldynamic" && !this.isEdge) {
7821
- dropTarget = dropTarget.template;
7822
- }
7823
- // drop to matrix detail panel
7824
- if ((dropTarget.getType() === "matrixdropdown" || dropTarget.getType() === "matrixdynamic") && dropTarget.detailPanelMode !== "none" && !this.isEdge) {
7825
- dropTarget = dropTarget.detailPanel;
7826
- }
7827
- // drop to panel
7828
- else if (dropTarget.isPanel) {
7829
- dropTarget = this.getPanelDropTarget(dropTargetNode, dropTarget, event);
7830
- }
7831
- // drop to question
7832
- //question inside paneldymanic
7833
- if (!dropTarget.page) {
7834
- var nearestDropTargetPageElement = dropTargetNode.parentElement.closest("[data-sv-drop-target-page]");
7835
- dataAttributeValue = nearestDropTargetPageElement.dataset.svDropTargetPage;
7836
- var page_1 = this.survey.getPageByName(dataAttributeValue);
7837
- dropTarget.__page = page_1;
7838
- }
7839
- return dropTarget;
7840
- // EO drop to question or panel
7841
- };
7842
- DragDropSurveyElements.prototype.isDropTargetValid = function () {
7843
- if (!this.dropTarget)
7844
- return false;
7845
- if (this.dropTarget === this.draggedElement)
7846
- return false;
7847
- if (this.draggedElement.getType() === "paneldynamic" &&
7848
- this.dropTarget === this.draggedElement.template)
7849
- return false;
7850
- if (DragDropSurveyElements.restrictDragQuestionBetweenPages &&
7851
- this.shouldRestricDragQuestionBetweenPages(this.dropTarget)) {
7852
- return false;
7853
- }
7854
- return true;
7855
- };
7856
- DragDropSurveyElements.prototype.calculateIsBottom = function (clientY, dropTargetNode) {
7857
- // we shouldn't reculc isBottom if drag over ghost survey element
7858
- if (this.getDataAttributeValueByNode(dropTargetNode) === DragDropSurveyElements.ghostSurveyElementName) {
7859
- return this.isBottom;
7860
- }
7861
- var middle = this.calculateVerticalMiddleOfHTMLElement(dropTargetNode);
7862
- return clientY >= middle;
7863
- };
7864
- DragDropSurveyElements.prototype.calculateIsRight = function (clientX, dropTargetNode) {
7865
- // we shouldn't reculc isBottom if drag over ghost survey element
7866
- if (this.getDataAttributeValueByNode(dropTargetNode) === DragDropSurveyElements.ghostSurveyElementName) {
7867
- return this.isRight;
7868
- }
7869
- var middle = this.calculateHorizontalMiddleOfHTMLElement(dropTargetNode);
7870
- return clientX >= middle;
7871
- };
7872
- DragDropSurveyElements.prototype.isDropTargetDoesntChanged = function (newIsBottom) {
7873
- if (this.dropTarget === this.ghostSurveyElement)
7874
- return true;
7875
- return (this.dropTarget === this.prevDropTarget && newIsBottom === this.isBottom
7876
- && this.isEdge === this.prevIsEdge && this.isRight === this.prevIsRight);
7877
- };
7878
- DragDropSurveyElements.prototype.shouldRestricDragQuestionBetweenPages = function (dropTarget) {
7879
- var oldPage = this.draggedElement["page"];
7880
- var newPage = dropTarget.isPage ? dropTarget : dropTarget["page"];
7881
- // if oldPage === null then it is drop from the toolbox
7882
- return oldPage && oldPage !== newPage;
7883
- };
7884
- DragDropSurveyElements.prototype.getPanelDropTarget = function (HTMLElement, dropTarget, event) {
7885
- var isEdge = this.isEdge;
7886
- if (!isEdge && dropTarget.questions.length !== 0) {
7887
- HTMLElement = this.findDeepestDropTargetChild(HTMLElement);
7888
- dropTarget = this.getDropTargetByNode(HTMLElement, event);
7889
- }
7890
- return dropTarget;
7891
- };
7892
- DragDropSurveyElements.prototype.findDeepestDropTargetChild = function (parent) {
7893
- var selector = this.dropTargetDataAttributeName;
7894
- var result = parent;
7895
- while (!!parent) {
7896
- result = parent;
7897
- parent = parent.querySelector(selector);
7898
- }
7899
- return result;
7900
- };
7901
- DragDropSurveyElements.prototype.calculateIsEdge = function (dropTargetNode, clientY) {
7902
- var rect = dropTargetNode.getBoundingClientRect();
7903
- return clientY - rect.top <= DragDropSurveyElements.edgeHeight || rect.bottom - clientY <= DragDropSurveyElements.edgeHeight;
7904
- };
7905
- // private calculateIsRight(): boolean {
7906
- // // const dropTarget = this.dropTarget;
7907
- // // const targetRow = this.getTargetRow(dropTarget);
7908
- // // if (targetRow.elements.indexOf(this.draggedElement) !== -1) {
7909
- // // var pageOrPanel = dropTarget.parent;
7910
- // // var srcIndex = pageOrPanel.elements.indexOf(this.draggedElement);
7911
- // // var destIndex = pageOrPanel.elements.indexOf(dropTarget);
7912
- // // } else {
7913
- // // if (targetRow.elements.indexOf(dropTarget) === 0) {
7914
- // // return false;
7915
- // // } else {
7916
- // // return true;
7917
- // // }
7918
- // // // else if (targetRow.elements.indexOf(dropTarget) === targetRow.elements.length -1) {
7919
- // // // return true;
7920
- // // // }
7921
- // // }
7922
- // // return srcIndex < destIndex;
7923
- // const middle = this.calculateHorizontalMiddleOfHTMLElement(this.dropTargetNode);
7924
- // return clientY >= middle;
7925
- // }
7926
- DragDropSurveyElements.prototype.doDragOver = function (dropTargetNode, event) {
7927
- this.isRight = this.calculateIsRight(event.clientX, dropTargetNode);
7928
- };
7929
- DragDropSurveyElements.prototype.afterDragOver = function (dropTargetNode, event) {
7930
- this.prevIsEdge = this.isEdge;
7931
- this.prevIsRight = this.isRight;
7932
- this.insertGhostElementIntoSurvey();
7933
- };
7934
- DragDropSurveyElements.prototype.onStartDrag = function () {
7935
- this.ghostSurveyElement = this.createGhostSurveyElement();
7936
- this.draggedElement.isDragMe = true;
7937
- };
7938
- DragDropSurveyElements.prototype.insertGhostElementIntoSurvey = function () {
7939
- this.removeGhostElementFromSurvey();
7940
- var isTargetRowMultiple = this.calcTargetRowMultiple();
7941
- this.ghostSurveyElement = this.createGhostSurveyElement(isTargetRowMultiple);
7942
- this.ghostSurveyElement.name =
7943
- DragDropSurveyElements.ghostSurveyElementName; // TODO why do we need setup it manually see createGhostSurveyElement method
7944
- this.parentElement = this.dropTarget.isPage
7945
- ? this.dropTarget
7946
- : (this.dropTarget.page || this.dropTarget.__page);
7947
- if (this.isDragOverInsideEmptyPanel()) {
7948
- this.dropTarget.dragTypeOverMe = _survey_element__WEBPACK_IMPORTED_MODULE_0__["DragTypeOverMeEnum"].InsideEmptyPanel;
7949
- return;
7950
- }
7951
- if (!this.isEdge && isTargetRowMultiple) {
7952
- this.dropTarget.dragTypeOverMe = this.isRight ?
7953
- _survey_element__WEBPACK_IMPORTED_MODULE_0__["DragTypeOverMeEnum"].MultilineRight :
7954
- _survey_element__WEBPACK_IMPORTED_MODULE_0__["DragTypeOverMeEnum"].MultilineLeft;
7955
- return;
7956
- }
7957
- this.parentElement.dragDropStart(this.draggedElement, this.ghostSurveyElement, DragDropSurveyElements.nestedPanelDepth);
7958
- var result = this.parentElement.dragDropMoveTo(this.dropTarget, isTargetRowMultiple ? this.isRight : this.isBottom, this.isEdge);
7959
- return result;
7960
- };
7961
- DragDropSurveyElements.prototype.calcTargetRowMultiple = function () {
7962
- var targetParent = this.getTargetParent(this.dropTarget);
7963
- var targetRow = this.getTargetRow(this.dropTarget);
7964
- var isTargetRowMultiple = targetRow && targetRow.elements.length > 1;
7965
- var isTemplatePanelInPanelDynamic = targetParent.isPanel && !targetParent.name;
7966
- if (this.isEdge && isTargetRowMultiple && !isTemplatePanelInPanelDynamic) {
7967
- targetParent.__page = this.dropTarget.page || this.dropTarget.__page;
7968
- this.dropTarget = targetParent;
7969
- return false;
7970
- }
7971
- return isTargetRowMultiple;
7972
- };
7973
- DragDropSurveyElements.prototype.getTargetParent = function (dropTarget) {
7974
- var targetParent = dropTarget.isPage || dropTarget.isPanel ? dropTarget : dropTarget.parent;
7975
- if (dropTarget.getType() === "paneldynamic") {
7976
- targetParent = dropTarget.templateValue;
7977
- }
7978
- return targetParent;
7979
- };
7980
- DragDropSurveyElements.prototype.getTargetRow = function (dropTarget) {
7981
- var targetParent = this.getTargetParent(dropTarget);
7982
- var targetRow;
7983
- targetParent.rows.forEach(function (row) {
7984
- if (row.elements.indexOf(dropTarget) !== -1) {
7985
- targetRow = row;
7986
- }
7987
- });
7988
- return targetRow;
7989
- };
7990
- DragDropSurveyElements.prototype.isDragOverInsideEmptyPanel = function () {
7991
- var isEmptyPanel = this.dropTarget.isPanel && this.dropTarget.questions.length === 0;
7992
- var isDragOverInside = !this.isEdge;
7993
- return isEmptyPanel && isDragOverInside;
7994
- };
7995
- DragDropSurveyElements.prototype.removeGhostElementFromSurvey = function () {
7996
- var dropTarget = this.prevDropTarget || this.dropTarget;
7997
- if (!!dropTarget) {
7998
- dropTarget.dragTypeOverMe = null;
7999
- }
8000
- if (!!this.parentElement)
8001
- this.parentElement.dragDropFinish(true);
8002
- };
8003
- DragDropSurveyElements.prototype.insertRealElementIntoSurvey = function () {
8004
- this.removeGhostElementFromSurvey();
8005
- var isTargetRowMultiple = this.calcTargetRowMultiple();
8006
- // ghost new page
8007
- if (this.dropTarget.isPage && this.dropTarget["_isGhost"]) {
8008
- this.dropTarget["_addGhostPageViewModel"]();
8009
- }
8010
- // EO ghost new page
8011
- //TODO need for dragDrop helper in library
8012
- var json = new _jsonobject__WEBPACK_IMPORTED_MODULE_1__["JsonObject"]().toJsonObject(this.draggedElement);
8013
- json["type"] = this.draggedElement.getType();
8014
- var fakeTargetElement = this.createFakeTargetElement(this.draggedElement.name, json);
8015
- //
8016
- this.parentElement.dragDropStart(this.draggedElement, fakeTargetElement, DragDropSurveyElements.nestedPanelDepth);
8017
- this.parentElement.dragDropMoveTo(this.dropTarget, isTargetRowMultiple ? this.isRight : this.isBottom, this.isEdge);
8018
- var newElement = this.parentElement.dragDropFinish();
8019
- return newElement;
8020
- };
8021
- DragDropSurveyElements.prototype.createFakeTargetElement = function (elementName, json) {
8022
- if (!elementName || !json)
8023
- return null;
8024
- var targetElement = null;
8025
- targetElement = _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].createClass(json["type"]);
8026
- new _jsonobject__WEBPACK_IMPORTED_MODULE_1__["JsonObject"]().toObject(json, targetElement);
8027
- targetElement.name = elementName;
8028
- if (targetElement["setSurveyImpl"]) {
8029
- targetElement["setSurveyImpl"](this.survey);
8030
- }
8031
- else {
8032
- targetElement["setData"](this.survey);
8033
- }
8034
- targetElement.renderWidth = "100%";
8035
- return targetElement;
8036
- };
8037
- DragDropSurveyElements.prototype.createGhostSurveyElement = function (isMultipleRowDrag) {
8038
- if (isMultipleRowDrag === void 0) { isMultipleRowDrag = false; }
8039
- var className = "sv-drag-drop-ghost";
8040
- var minWidth = "300px";
8041
- if (isMultipleRowDrag) {
8042
- minWidth = "4px";
8043
- className += " sv-drag-drop-ghost--vertical";
8044
- }
8045
- var json = {
8046
- type: "html",
8047
- minWidth: minWidth,
8048
- name: DragDropSurveyElements.ghostSurveyElementName,
8049
- html: "<div class=\"" + className + "\"></div>",
8050
- };
8051
- var element = this.createElementFromJson(json);
8052
- element.startWithNewLine = !isMultipleRowDrag;
8053
- if (isMultipleRowDrag) {
8054
- element.maxWidth = "4px";
8055
- element.renderWidth = "0px";
8056
- element.paddingRight = "0px";
8057
- element.paddingLeft = "0px";
7166
+ DragDropRankingChoices.prototype.clear = function () {
7167
+ if (!!this.parentElement) {
7168
+ this.parentElement.dropTargetNodeMove = null;
7169
+ this.parentElement.updateRankingChoices(true);
8058
7170
  }
8059
- return element;
7171
+ _super.prototype.clear.call(this);
8060
7172
  };
8061
- DragDropSurveyElements.newGhostPage = null;
8062
- DragDropSurveyElements.restrictDragQuestionBetweenPages = false;
8063
- DragDropSurveyElements.edgeHeight = 30;
8064
- DragDropSurveyElements.nestedPanelDepth = -1;
8065
- DragDropSurveyElements.ghostSurveyElementName = "sv-drag-drop-ghost-survey-element-name"; // before renaming use globa search (we have also css selectors)
8066
- return DragDropSurveyElements;
8067
- }(_core__WEBPACK_IMPORTED_MODULE_2__["DragDropCore"]));
7173
+ return DragDropRankingChoices;
7174
+ }(_choices__WEBPACK_IMPORTED_MODULE_0__["DragDropChoices"]));
8068
7175
 
8069
7176
 
8070
7177
 
@@ -8131,6 +7238,11 @@ var DropdownListModel = /** @class */ (function (_super) {
8131
7238
  _this.itemsSettings = { skip: 0, take: 0, totalCount: 0, items: [] };
8132
7239
  _this.isRunningLoadQuestionChoices = false;
8133
7240
  _this.popupCssClasses = "sv-single-select-list";
7241
+ _this.listModelFilterStringChanged = function (newValue) {
7242
+ if (_this.filterString !== newValue) {
7243
+ _this.filterString = newValue;
7244
+ }
7245
+ };
8134
7246
  question.onPropertyChanged.add(function (sender, options) {
8135
7247
  if (options.name == "value") {
8136
7248
  _this.showInputFieldComponent = _this.question.showInputFieldComponent;
@@ -8273,8 +7385,9 @@ var DropdownListModel = /** @class */ (function (_super) {
8273
7385
  _this._popupModel.toggleVisibility();
8274
7386
  };
8275
7387
  }
8276
- var res = new _list__WEBPACK_IMPORTED_MODULE_2__["ListModel"](visibleItems, _onSelectionChanged, false, undefined, undefined, this.listElementId);
7388
+ var res = new _list__WEBPACK_IMPORTED_MODULE_2__["ListModel"](visibleItems, _onSelectionChanged, false, undefined, this.question.choicesLazyLoadEnabled ? this.listModelFilterStringChanged : undefined, this.listElementId);
8277
7389
  res.renderElements = false;
7390
+ res.forceShowFilter = true;
8278
7391
  res.areSameItemsCallback = function (item1, item2) {
8279
7392
  return item1 === item2;
8280
7393
  };
@@ -8607,11 +7720,11 @@ var DropdownListModel = /** @class */ (function (_super) {
8607
7720
  event.stopPropagation();
8608
7721
  };
8609
7722
  DropdownListModel.prototype.onFocus = function (event) {
8610
- this.setInputStringFromSelectedItem();
7723
+ this.setInputStringFromSelectedItem(this.question.selectedItem);
8611
7724
  };
8612
7725
  DropdownListModel.prototype.setInputStringFromSelectedItem = function (newValue) {
8613
- if (this.question.searchEnabled) {
8614
- this.applyInputString(newValue || this.question.selectedItem);
7726
+ if (this.question.searchEnabled && !!newValue) {
7727
+ this.applyInputString(newValue);
8615
7728
  }
8616
7729
  else {
8617
7730
  this.inputString = null;
@@ -8783,7 +7896,9 @@ var DropdownMultiSelectListModel = /** @class */ (function (_super) {
8783
7896
  }
8784
7897
  };
8785
7898
  }
8786
- return new _multiSelectListModel__WEBPACK_IMPORTED_MODULE_3__["MultiSelectListModel"](visibleItems, _onSelectionChanged, false, undefined, undefined, this.listElementId);
7899
+ var res = new _multiSelectListModel__WEBPACK_IMPORTED_MODULE_3__["MultiSelectListModel"](visibleItems, _onSelectionChanged, false, undefined, this.question.choicesLazyLoadEnabled ? this.listModelFilterStringChanged : undefined, this.listElementId);
7900
+ res.forceShowFilter = true;
7901
+ return res;
8787
7902
  };
8788
7903
  DropdownMultiSelectListModel.prototype.resetFilterString = function () {
8789
7904
  _super.prototype.resetFilterString.call(this);
@@ -9215,7 +8330,7 @@ __webpack_require__.r(__webpack_exports__);
9215
8330
  /*!*************************************!*\
9216
8331
  !*** ./src/entries/chunks/model.ts ***!
9217
8332
  \*************************************/
9218
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropSurveyElements, DragDropChoices */
8333
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices */
9219
8334
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9220
8335
 
9221
8336
  "use strict";
@@ -9404,6 +8519,8 @@ __webpack_require__.r(__webpack_exports__);
9404
8519
 
9405
8520
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["QuestionMultipleTextModel"]; });
9406
8521
 
8522
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextEditorModel"]; });
8523
+
9407
8524
  /* harmony import */ var _panel__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../panel */ "./src/panel.ts");
9408
8525
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModel", function() { return _panel__WEBPACK_IMPORTED_MODULE_26__["PanelModel"]; });
9409
8526
 
@@ -9649,8 +8766,8 @@ __webpack_require__.r(__webpack_exports__);
9649
8766
 
9650
8767
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultV2ThemeName", function() { return _defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_82__["defaultV2ThemeName"]; });
9651
8768
 
9652
- /* harmony import */ var _dragdrop_survey_elements__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../../dragdrop/survey-elements */ "./src/dragdrop/survey-elements.ts");
9653
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropSurveyElements", function() { return _dragdrop_survey_elements__WEBPACK_IMPORTED_MODULE_83__["DragDropSurveyElements"]; });
8769
+ /* harmony import */ var _dragdrop_core__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../../dragdrop/core */ "./src/dragdrop/core.ts");
8770
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropCore", function() { return _dragdrop_core__WEBPACK_IMPORTED_MODULE_83__["DragDropCore"]; });
9654
8771
 
9655
8772
  /* harmony import */ var _dragdrop_choices__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../../dragdrop/choices */ "./src/dragdrop/choices.ts");
9656
8773
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropChoices", function() { return _dragdrop_choices__WEBPACK_IMPORTED_MODULE_84__["DragDropChoices"]; });
@@ -9659,7 +8776,7 @@ __webpack_require__.r(__webpack_exports__);
9659
8776
  // import "../../main.scss";
9660
8777
  //import "../../modern.scss";
9661
8778
  var Version;
9662
- Version = "" + "1.9.88";
8779
+ Version = "" + "1.9.90";
9663
8780
  function checkLibraryVersion(ver, libraryName) {
9664
8781
  if (Version != ver) {
9665
8782
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9764,7 +8881,7 @@ function checkLibraryVersion(ver, libraryName) {
9764
8881
  /*!**************************************!*\
9765
8882
  !*** ./src/entries/core-wo-model.ts ***!
9766
8883
  \**************************************/
9767
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropSurveyElements, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
8884
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
9768
8885
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9769
8886
 
9770
8887
  "use strict";
@@ -9930,6 +9047,8 @@ __webpack_require__.r(__webpack_exports__);
9930
9047
 
9931
9048
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
9932
9049
 
9050
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
9051
+
9933
9052
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["PanelModel"]; });
9934
9053
 
9935
9054
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModelBase", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["PanelModelBase"]; });
@@ -10118,7 +9237,7 @@ __webpack_require__.r(__webpack_exports__);
10118
9237
 
10119
9238
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultV2ThemeName", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]; });
10120
9239
 
10121
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropSurveyElements", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["DragDropSurveyElements"]; });
9240
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropCore", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["DragDropCore"]; });
10122
9241
 
10123
9242
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropChoices", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["DragDropChoices"]; });
10124
9243
 
@@ -10199,7 +9318,7 @@ __webpack_require__.r(__webpack_exports__);
10199
9318
  /*!*****************************!*\
10200
9319
  !*** ./src/entries/core.ts ***!
10201
9320
  \*****************************/
10202
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropSurveyElements, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
9321
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
10203
9322
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10204
9323
 
10205
9324
  "use strict";
@@ -10365,6 +9484,8 @@ __webpack_require__.r(__webpack_exports__);
10365
9484
 
10366
9485
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
10367
9486
 
9487
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
9488
+
10368
9489
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["PanelModel"]; });
10369
9490
 
10370
9491
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModelBase", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["PanelModelBase"]; });
@@ -10553,7 +9674,7 @@ __webpack_require__.r(__webpack_exports__);
10553
9674
 
10554
9675
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultV2ThemeName", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]; });
10555
9676
 
10556
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropSurveyElements", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["DragDropSurveyElements"]; });
9677
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropCore", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["DragDropCore"]; });
10557
9678
 
10558
9679
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropChoices", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["DragDropChoices"]; });
10559
9680
 
@@ -10994,7 +10115,7 @@ __webpack_require__.r(__webpack_exports__);
10994
10115
  /*!******************************!*\
10995
10116
  !*** ./src/entries/react.ts ***!
10996
10117
  \******************************/
10997
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropSurveyElements, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model, bootstrapThemeName, bootstrapThemeColors, bootstrapThemeCssRules, bootstrapMaterialThemeName, bootstrapMaterialThemeColors, bootstrapMaterialThemeCssRules, defaultBootstrapCss, defaultBootstrapMaterialCss, Survey, attachKey2click, ReactSurveyElementsWrapper, SurveyNavigationBase, SurveyTimerPanel, SurveyPage, SurveyRow, SurveyPanel, SurveyFlowPanel, SurveyQuestion, SurveyElementErrors, SurveyQuestionAndErrorsCell, ReactSurveyElement, SurveyElementBase, SurveyQuestionElementBase, SurveyQuestionCommentItem, SurveyQuestionComment, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionRanking, SurveyQuestionRankingItem, RatingItem, RatingItemStar, RatingItemSmiley, TagboxFilterString, SurveyQuestionOptionItem, SurveyQuestionDropdownBase, SurveyQuestionDropdown, SurveyQuestionTagboxItem, SurveyQuestionTagbox, SurveyQuestionDropdownSelect, SurveyQuestionMatrix, SurveyQuestionMatrixRow, SurveyQuestionHtml, SurveyQuestionFile, SurveyQuestionMultipleText, SurveyQuestionRadiogroup, SurveyQuestionRadioItem, SurveyQuestionText, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionEmpty, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionPanelDynamic, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionExpression, PopupSurvey, SurveyWindow, ReactQuestionFactory, ReactElementFactory, SurveyQuestionImagePicker, SurveyQuestionImage, SurveyQuestionSignaturePad, SurveyQuestionButtonGroup, SurveyQuestionCustom, SurveyQuestionComposite, Popup, List, TitleActions, TitleElement, SurveyActionBar, LogoImage, SurveyHeader, SvgIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicProgressText, SurveyNavigationButton, MatrixRow, Skeleton, NotifierComponent, ComponentsContainer, CharacterCounterComponent, SurveyLocStringViewer, SurveyLocStringEditor */
10118
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model, bootstrapThemeName, bootstrapThemeColors, bootstrapThemeCssRules, bootstrapMaterialThemeName, bootstrapMaterialThemeColors, bootstrapMaterialThemeCssRules, defaultBootstrapCss, defaultBootstrapMaterialCss, Survey, attachKey2click, ReactSurveyElementsWrapper, SurveyNavigationBase, SurveyTimerPanel, SurveyPage, SurveyRow, SurveyPanel, SurveyFlowPanel, SurveyQuestion, SurveyElementErrors, SurveyQuestionAndErrorsCell, ReactSurveyElement, SurveyElementBase, SurveyQuestionElementBase, SurveyQuestionCommentItem, SurveyQuestionComment, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionRanking, SurveyQuestionRankingItem, RatingItem, RatingItemStar, RatingItemSmiley, TagboxFilterString, SurveyQuestionOptionItem, SurveyQuestionDropdownBase, SurveyQuestionDropdown, SurveyQuestionTagboxItem, SurveyQuestionTagbox, SurveyQuestionDropdownSelect, SurveyQuestionMatrix, SurveyQuestionMatrixRow, SurveyQuestionHtml, SurveyQuestionFile, SurveyQuestionMultipleText, SurveyQuestionRadiogroup, SurveyQuestionRadioItem, SurveyQuestionText, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionEmpty, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionPanelDynamic, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionExpression, PopupSurvey, SurveyWindow, ReactQuestionFactory, ReactElementFactory, SurveyQuestionImagePicker, SurveyQuestionImage, SurveyQuestionSignaturePad, SurveyQuestionButtonGroup, SurveyQuestionCustom, SurveyQuestionComposite, Popup, List, TitleActions, TitleElement, SurveyActionBar, LogoImage, SurveyHeader, SvgIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicProgressText, SurveyNavigationButton, MatrixRow, Skeleton, NotifierComponent, ComponentsContainer, CharacterCounterComponent, SurveyLocStringViewer, SurveyLocStringEditor */
10998
10119
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10999
10120
 
11000
10121
  "use strict";
@@ -11160,6 +10281,8 @@ __webpack_require__.r(__webpack_exports__);
11160
10281
 
11161
10282
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
11162
10283
 
10284
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
10285
+
11163
10286
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["PanelModel"]; });
11164
10287
 
11165
10288
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelModelBase", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["PanelModelBase"]; });
@@ -11348,7 +10471,7 @@ __webpack_require__.r(__webpack_exports__);
11348
10471
 
11349
10472
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultV2ThemeName", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]; });
11350
10473
 
11351
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropSurveyElements", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["DragDropSurveyElements"]; });
10474
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropCore", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["DragDropCore"]; });
11352
10475
 
11353
10476
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragDropChoices", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["DragDropChoices"]; });
11354
10477
 
@@ -17371,6 +16494,7 @@ __webpack_require__.r(__webpack_exports__);
17371
16494
  /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
17372
16495
  /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
17373
16496
  /* harmony import */ var _question_baseselect__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./question_baseselect */ "./src/question_baseselect.ts");
16497
+ /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./question */ "./src/question.ts");
17374
16498
  var __extends = (undefined && undefined.__extends) || (function () {
17375
16499
  var extendStatics = function (d, b) {
17376
16500
  extendStatics = Object.setPrototypeOf ||
@@ -17400,6 +16524,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
17400
16524
 
17401
16525
 
17402
16526
 
16527
+
17403
16528
  /**
17404
16529
  * Array of ItemValue is used in checkox, dropdown and radiogroup choices, matrix columns and rows.
17405
16530
  * It has two main properties: value and text. If text is empty, value is used for displaying.
@@ -17815,10 +16940,10 @@ var ItemValue = /** @class */ (function (_super) {
17815
16940
  configurable: true
17816
16941
  });
17817
16942
  ItemValue.prototype.getComponent = function () {
17818
- if (this._locOwner instanceof _question_baseselect__WEBPACK_IMPORTED_MODULE_7__["QuestionSelectBase"]) {
16943
+ if (this._locOwner instanceof _question__WEBPACK_IMPORTED_MODULE_8__["Question"]) {
17819
16944
  return this.componentValue || this._locOwner.itemComponent;
17820
16945
  }
17821
- return "";
16946
+ return this.componentValue;
17822
16947
  };
17823
16948
  ItemValue.prototype.setComponent = function (val) {
17824
16949
  this.componentValue = val;
@@ -18340,14 +17465,25 @@ var JsonObjectProperty = /** @class */ (function () {
18340
17465
  return !!this.dependedProperties ? this.dependedProperties : [];
18341
17466
  };
18342
17467
  JsonObjectProperty.prototype.schemaType = function () {
17468
+ if (this.className === "choicesByUrl")
17469
+ return undefined;
17470
+ if (this.className === "string")
17471
+ return this.className;
18343
17472
  if (!!this.className)
18344
17473
  return "array";
18345
17474
  if (!!this.baseClassName)
18346
17475
  return "array";
17476
+ if (this.type == "switch")
17477
+ return "boolean";
18347
17478
  if (this.type == "boolean" || this.type == "number")
18348
17479
  return this.type;
18349
17480
  return "string";
18350
17481
  };
17482
+ JsonObjectProperty.prototype.schemaRef = function () {
17483
+ if (!!this.className)
17484
+ return this.className;
17485
+ return undefined;
17486
+ };
18351
17487
  JsonObjectProperty.prototype.mergeValue = function (prop, valueName) {
18352
17488
  if (this[valueName] == null && prop[valueName] != null) {
18353
17489
  this[valueName] = prop[valueName];
@@ -19187,43 +18323,104 @@ var JsonMetadata = /** @class */ (function () {
19187
18323
  title: "SurveyJS Library json schema",
19188
18324
  type: "object",
19189
18325
  properties: {},
19190
- definitions: {},
18326
+ definitions: { locstring: this.generateLocStrClass() },
19191
18327
  };
19192
- this.generateSchemaProperties(classInfo, res.properties, res.definitions);
18328
+ this.generateSchemaProperties(classInfo, res, res.definitions, true);
19193
18329
  return res;
19194
18330
  };
19195
- JsonMetadata.prototype.generateSchemaProperties = function (classInfo, schemaProperties, schemaDef) {
18331
+ JsonMetadata.prototype.generateLocStrClass = function () {
18332
+ var props = {};
18333
+ var locProp = Serializer.findProperty("survey", "locale");
18334
+ if (!!locProp) {
18335
+ var choices = locProp.getChoices(null);
18336
+ if (Array.isArray(choices)) {
18337
+ if (choices.indexOf("en") < 0) {
18338
+ choices.splice(0, 0, "en");
18339
+ }
18340
+ choices.splice(0, 0, "default");
18341
+ choices.forEach(function (l) { if (!!l) {
18342
+ props[l] = { type: "string" };
18343
+ } });
18344
+ }
18345
+ }
18346
+ return {
18347
+ $id: "locstring",
18348
+ type: "object",
18349
+ properties: props
18350
+ };
18351
+ };
18352
+ JsonMetadata.prototype.generateSchemaProperties = function (classInfo, classSchema, schemaDef, isRoot) {
19196
18353
  if (!classInfo)
19197
18354
  return;
18355
+ var schemaProperties = classSchema.properties;
18356
+ var requiredProps = [];
18357
+ if (classInfo.name === "question" || classInfo.name === "panel") {
18358
+ schemaProperties.type = { type: "string" };
18359
+ requiredProps.push("type");
18360
+ }
19198
18361
  for (var i = 0; i < classInfo.properties.length; i++) {
19199
18362
  var prop = classInfo.properties[i];
19200
- schemaProperties[prop.name] = this.generateSchemaProperty(prop, schemaDef);
18363
+ if (!!classInfo.parentName && !!Serializer.findProperty(classInfo.parentName, prop.name))
18364
+ continue;
18365
+ schemaProperties[prop.name] = this.generateSchemaProperty(prop, schemaDef, isRoot);
18366
+ if (prop.isRequired)
18367
+ requiredProps.push(prop.name);
18368
+ }
18369
+ if (requiredProps.length > 0) {
18370
+ classSchema.required = requiredProps;
19201
18371
  }
19202
18372
  };
19203
- JsonMetadata.prototype.generateSchemaProperty = function (prop, schemaDef) {
19204
- var res = { type: prop.schemaType() };
18373
+ JsonMetadata.prototype.generateSchemaProperty = function (prop, schemaDef, isRoot) {
18374
+ if (prop.isLocalizable) {
18375
+ return { oneOf: [
18376
+ { "type": "string" },
18377
+ { "$ref": this.getChemeRefName("locstring", isRoot) }
18378
+ ] };
18379
+ }
18380
+ var propType = prop.schemaType();
18381
+ var refType = prop.schemaRef();
18382
+ var res = {};
18383
+ if (!!propType) {
18384
+ res.type = propType;
18385
+ }
19205
18386
  if (prop.hasChoices) {
19206
- res.enum = prop.getChoices(null);
18387
+ var enumRes = prop.getChoices(null);
18388
+ if (Array.isArray(enumRes) && enumRes.length > 0) {
18389
+ res.enum = enumRes;
18390
+ }
19207
18391
  }
19208
- if (!!prop.className) {
19209
- res.items = { $ref: "#" + prop.className };
19210
- this.generateChemaClass(prop.className, schemaDef);
18392
+ if (!!refType) {
18393
+ if (propType === "array") {
18394
+ if (prop.className === "string") {
18395
+ res.items = { type: prop.className };
18396
+ }
18397
+ else {
18398
+ res.items = { $ref: this.getChemeRefName(prop.className, isRoot) };
18399
+ }
18400
+ }
18401
+ else {
18402
+ res["$ref"] = this.getChemeRefName(refType, isRoot);
18403
+ }
18404
+ this.generateChemaClass(prop.className, schemaDef, false);
19211
18405
  }
19212
18406
  if (!!prop.baseClassName) {
19213
18407
  var usedClasses = this.getChildrenClasses(prop.baseClassName, true);
19214
18408
  if (prop.baseClassName == "question") {
19215
18409
  usedClasses.push(this.findClass("panel"));
19216
18410
  }
19217
- res.items = [];
18411
+ res.items = { anyOf: [] };
19218
18412
  for (var i = 0; i < usedClasses.length; i++) {
19219
18413
  var className = usedClasses[i].name;
19220
- res.items.push({ $ref: "#" + className });
19221
- this.generateChemaClass(className, schemaDef);
18414
+ res.items.anyOf.push({ $ref: this.getChemeRefName(className, isRoot) });
18415
+ this.generateChemaClass(className, schemaDef, false);
19222
18416
  }
19223
18417
  }
19224
18418
  return res;
19225
18419
  };
19226
- JsonMetadata.prototype.generateChemaClass = function (className, schemaDef) {
18420
+ JsonMetadata.prototype.getChemeRefName = function (className, isRoot) {
18421
+ return isRoot ? "#/definitions/" + className : className + "#";
18422
+ };
18423
+ JsonMetadata.prototype.generateChemaClass = function (className, schemaDef, isRoot) {
19227
18424
  if (!!schemaDef[className])
19228
18425
  return;
19229
18426
  var classInfo = this.findClass(className);
@@ -19231,52 +18428,25 @@ var JsonMetadata = /** @class */ (function () {
19231
18428
  return;
19232
18429
  var hasParent = !!classInfo.parentName && classInfo.parentName != "base";
19233
18430
  if (hasParent) {
19234
- this.generateChemaClass(classInfo.parentName, schemaDef);
18431
+ this.generateChemaClass(classInfo.parentName, schemaDef, isRoot);
19235
18432
  }
19236
- var res = { type: "object", $id: "#" + className };
18433
+ var res = { type: "object", $id: className };
19237
18434
  schemaDef[className] = res;
19238
- var props = {};
19239
- this.generateSchemaProperties(classInfo, props, schemaDef);
18435
+ var chemaProps = { properties: {} };
18436
+ this.generateSchemaProperties(classInfo, chemaProps, schemaDef, isRoot);
19240
18437
  if (hasParent) {
19241
18438
  res.allOf = [
19242
- { $ref: "#" + classInfo.parentName },
19243
- { properties: props },
18439
+ { $ref: this.getChemeRefName(classInfo.parentName, isRoot) },
18440
+ { properties: chemaProps.properties },
19244
18441
  ];
19245
18442
  }
19246
18443
  else {
19247
- res.properties = props;
18444
+ res.properties = chemaProps.properties;
19248
18445
  }
19249
- };
19250
- JsonMetadata.prototype.fillProperties = function (name, list, hash) {
19251
- var metaDataClass = this.findClass(name);
19252
- if (!metaDataClass)
19253
- return;
19254
- if (metaDataClass.parentName) {
19255
- this.fillProperties(metaDataClass.parentName, list, hash);
19256
- }
19257
- for (var i = 0; i < metaDataClass.properties.length; i++) {
19258
- var prop = metaDataClass.properties[i];
19259
- this.addPropertyCore(prop, list, hash);
19260
- hash[prop.name] = prop;
19261
- if (prop.alternativeName)
19262
- hash[prop.alternativeName] = prop;
18446
+ if (Array.isArray(chemaProps.required)) {
18447
+ res.required = chemaProps.required;
19263
18448
  }
19264
18449
  };
19265
- JsonMetadata.prototype.addPropertyCore = function (property, list, hash) {
19266
- if (!hash[property.name]) {
19267
- list.push(property);
19268
- return;
19269
- }
19270
- var index = -1;
19271
- for (var i = 0; i < list.length; i++) {
19272
- if (list[i].name == property.name || list[i].alternativeName == property.name) {
19273
- index = i;
19274
- break;
19275
- }
19276
- }
19277
- property.mergeWith(list[index]);
19278
- list[index] = property;
19279
- };
19280
18450
  return JsonMetadata;
19281
18451
  }());
19282
18452
 
@@ -19840,7 +19010,7 @@ var ListModel = /** @class */ (function (_super) {
19840
19010
  }
19841
19011
  };
19842
19012
  ListModel.prototype.onSet = function () {
19843
- this.showFilter = this.searchEnabled && (this.actions || []).length > ListModel.MINELEMENTCOUNT;
19013
+ this.showFilter = this.searchEnabled && (this.forceShowFilter || (this.actions || []).length > ListModel.MINELEMENTCOUNT);
19844
19014
  _super.prototype.onSet.call(this);
19845
19015
  };
19846
19016
  ListModel.prototype.getDefaultCssClasses = function () {
@@ -20026,6 +19196,9 @@ var ListModel = /** @class */ (function (_super) {
20026
19196
  __decorate([
20027
19197
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
20028
19198
  ], ListModel.prototype, "showFilter", void 0);
19199
+ __decorate([
19200
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
19201
+ ], ListModel.prototype, "forceShowFilter", void 0);
20029
19202
  __decorate([
20030
19203
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
20031
19204
  ], ListModel.prototype, "isExpanded", void 0);
@@ -21549,7 +20722,7 @@ var englishStrings = {
21549
20722
  loadingFile: "Loading...",
21550
20723
  chooseFile: "Choose file(s)...",
21551
20724
  noFileChosen: "No file chosen",
21552
- fileDragAreaPlaceholder: "Drop a file here or click the button below to load the file.",
20725
+ fileDragAreaPlaceholder: "Drag and drop a file here or click the button below and choose a file to upload.",
21553
20726
  confirmDelete: "Do you want to delete the record?",
21554
20727
  keyDuplicationError: "This value should be unique.",
21555
20728
  addColumn: "Add Column",
@@ -22161,7 +21334,7 @@ var greekSurveyStrings = {
22161
21334
  noneItemText: "Κανένας",
22162
21335
  selectAllItemText: "Επιλογή όλων",
22163
21336
  progressText: "Σελίδα {0} από {1}",
22164
- // indexText: "{0} of {1}",
21337
+ indexText: "{0} από {1}",
22165
21338
  panelDynamicProgressText: "Εγγραφή {0} από {1}",
22166
21339
  questionsProgressText: "Απαντήθηκαν {0} / {1} ερωτήσεις",
22167
21340
  emptySurvey: "Δεν υπάρχει καμία ορατή σελίδα ή ορατή ερώτηση σε αυτό το ερωτηματολόγιο.",
@@ -22169,15 +21342,15 @@ var greekSurveyStrings = {
22169
21342
  completingSurveyBefore: "Τα αρχεία μας δείχνουν ότι έχετε ήδη ολοκληρώσει αυτήν την έρευνα.",
22170
21343
  loadingSurvey: "Το ερωτηματολόγιο φορτώνεται απο το διακομιστή...",
22171
21344
  placeholder: "Επιλέξτε...",
22172
- // ratingOptionsCaption: "Tap to rate here...",
22173
- value: "αξία",
21345
+ ratingOptionsCaption: "Πατήστε για να βαθμολογήσετε εδώ...",
21346
+ value: "τιμή",
22174
21347
  requiredError: "Παρακαλώ απαντήστε στην ερώτηση.",
22175
21348
  requiredErrorInPanel: "Απαντήστε σε τουλάχιστον μία ερώτηση.",
22176
- requiredInAllRowsError: "Παρακαλώ απαντήστε στις ερωτήσεις σε όλες τις γραμμές.",
21349
+ requiredInAllRowsError: "Παρακαλώ απαντήστε τις ερωτήσεις σε όλες τις γραμμές.",
22177
21350
  numericError: "Η τιμή πρέπει να είναι αριθμητική.",
22178
- // minError: "The value should not be less than {0}",
22179
- // maxError: "The value should not be greater than {0}",
22180
- textMinLength: "Παρακαλώ συμπληρώστε τουλάχιστον {0} σύμβολα.",
21351
+ minError: "Η τιμή δεν πρέπει να είναι μικρότερη από {0}",
21352
+ maxError: "Η τιμή δεν πρέπει να είναι μεγαλύτερη από {0}",
21353
+ textMinLength: "Παρακαλώ συμπληρώστε τουλάχιστον {0} χαρακτήρες.",
22181
21354
  textMaxLength: "Εισαγάγετε λιγότερους από {0} χαρακτήρες.",
22182
21355
  textMinMaxLength: "Εισαγάγετε περισσότερους από {0} και λιγότερους από {1} χαρακτήρες.",
22183
21356
  minRowCountError: "Παρακαλώ συμπληρώστε τουλάχιστον {0} γραμμές.",
@@ -22190,25 +21363,25 @@ var greekSurveyStrings = {
22190
21363
  invalidExpression: "Η έκφραση: {0} θα πρέπει να επιστρέψει 'true'.",
22191
21364
  urlRequestError: "Η αίτηση επέστρεψε σφάλμα '{0}'. {1}",
22192
21365
  urlGetChoicesError: "Η αίτηση επέστρεψε κενά δεδομένα ή η ιδιότητα 'μονοπάτι/path' είναι εσφαλμένη",
22193
- exceedMaxSize: "Το μέγεθος δεν μπορεί να υπερβαίνει τα {0}.",
21366
+ exceedMaxSize: "Το μέγεθος του αρχείου δεν μπορεί να υπερβαίνει τα {0}.",
22194
21367
  otherRequiredError: "Παρακαλώ συμπληρώστε την τιμή για το πεδίο 'άλλο'.",
22195
- uploadingFile: "Το αρχείο σας ανεβαίνει. Παρακαλώ περιμένετε καποια δευτερόλεπτα και δοκιμάστε ξανά.",
21368
+ uploadingFile: "Το αρχείο σας ανεβαίνει. Παρακαλώ περιμένετε μερικά δευτερόλεπτα και δοκιμάστε ξανά.",
22196
21369
  loadingFile: "Φόρτωση...",
22197
21370
  chooseFile: "Επιλογή αρχείων ...",
22198
21371
  noFileChosen: "Δεν έχει επιλεγεί αρχείο",
22199
- // fileDragAreaPlaceholder: "Drop a file here or click the button below to load the file.",
21372
+ fileDragAreaPlaceholder: "Αποθέστε το αρχείο σας εδώ ή κάντε κλικ στο κουμπί παρακάτω για να φορτώσετε το αρχείο.",
22200
21373
  confirmDelete: "Θέλετε να διαγράψετε την εγγραφή;",
22201
21374
  keyDuplicationError: "Αυτή η τιμή πρέπει να είναι μοναδική.",
22202
21375
  addColumn: "Προσθήκη στήλης",
22203
21376
  addRow: "Προσθήκη γραμμής",
22204
21377
  removeRow: "Αφαίρεση",
22205
- // emptyRowsText: "There are no rows.",
22206
- addPanel: "Προσθεσε νεο",
22207
- removePanel: "Αφαιρώ",
21378
+ emptyRowsText: "Δεν υπάρχουν εγγραφές.",
21379
+ addPanel: "Προσθέστε νέο",
21380
+ removePanel: "Αφαίρεση",
22208
21381
  choices_Item: "είδος",
22209
21382
  matrix_column: "Στήλη",
22210
- matrix_row: "Σειρά",
22211
- // multipletext_itemname: "text",
21383
+ matrix_row: "Γραμμή",
21384
+ multipletext_itemname: "κείμενο",
22212
21385
  savingData: "Τα αποτελέσματα αποθηκεύονται στον διακομιστή ...",
22213
21386
  savingDataError: "Παρουσιάστηκε σφάλμα και δεν ήταν δυνατή η αποθήκευση των αποτελεσμάτων.",
22214
21387
  savingDataSuccess: "Τα αποτελέσματα αποθηκεύτηκαν με επιτυχία!",
@@ -22221,21 +21394,22 @@ var greekSurveyStrings = {
22221
21394
  timerLimitAll: "Έχετε δαπανήσει {0} από {1} σε αυτήν τη σελίδα και {2} από {3} συνολικά.",
22222
21395
  timerLimitPage: "Έχετε ξοδέψει {0} από {1} σε αυτήν τη σελίδα.",
22223
21396
  timerLimitSurvey: "Έχετε ξοδέψει {0} από {1} συνολικά.",
22224
- clearCaption: "Σαφή",
22225
- // signaturePlaceHolder: "Sign here",
22226
- chooseFileCaption: "Επιλέξτε το αρχείο",
22227
- removeFileCaption: "Καταργήστε αυτό το αρχείο",
22228
- booleanCheckedLabel: "Ναί",
22229
- booleanUncheckedLabel: "Οχι",
22230
- confirmRemoveFile: "Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το αρχείο: {0};",
22231
- confirmRemoveAllFiles: "Είστε βέβαιοι ότι θέλετε να καταργήσετε όλα τα αρχεία;",
21397
+ clearCaption: "Εκκαθάριση",
21398
+ signaturePlaceHolder: "Υπογράψτε εδώ",
21399
+ chooseFileCaption: "Επιλέξτε αρχείο",
21400
+ removeFileCaption: "Διαγράψτε αυτό το αρχείο",
21401
+ booleanCheckedLabel: "Ναι",
21402
+ booleanUncheckedLabel: "Όχι",
21403
+ confirmRemoveFile: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αρχείο: {0};",
21404
+ confirmRemoveAllFiles: "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα αρχεία;",
22232
21405
  questionTitlePatternText: "Τίτλος ερώτησης",
22233
- // modalCancelButtonText: "Cancel",
22234
- // modalApplyButtonText: "Apply",
22235
- // filterStringPlaceholder: "Type to search...",
22236
- // emptyMessage: "No data to display",
22237
- // noEntriesText: "There are no entries yet.\nClick the button below to add a new entry.",
22238
- // more: "More"
21406
+ modalCancelButtonText: "Άκυρο",
21407
+ modalApplyButtonText: "Εφαρμογή",
21408
+ filterStringPlaceholder: "Πληκτρολογήστε για αναζήτηση...",
21409
+ emptyMessage: "Δεν υπάρχουν δεδομένα προς εμφάνιση",
21410
+ noEntriesText: "Δεν υπάρχουν ακόμη εγγραφές.\nΚάντε κλικ στο κουμπί παρακάτω για να προσθέσετε μια νέα εγγραφή.",
21411
+ more: "Περισσότερα",
21412
+ tagboxDoneButtonCaption: "ΟΚ"
22239
21413
  };
22240
21414
  survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyLocalization"].locales["gr"] = greekSurveyStrings;
22241
21415
  survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyLocalization"].localeNames["gr"] = "ελληνικά";
@@ -23957,7 +23131,7 @@ var polishSurveyStrings = {
23957
23131
  timerLimitAll: "Spędziłeś {0} z {1} na tej stronie a w sumie {2} z {3}.",
23958
23132
  timerLimitPage: "Spędziłeś {0} z {1} na tej stronie",
23959
23133
  timerLimitSurvey: "Spędziłeś {0} z {1}.",
23960
- clearCaption: "Jasne",
23134
+ clearCaption: "Wyczyść",
23961
23135
  signaturePlaceHolder: "Podpisz tutaj",
23962
23136
  chooseFileCaption: "Wybierz plik",
23963
23137
  removeFileCaption: "Usuń ten plik",
@@ -27200,6 +26374,9 @@ var QuestionRowModel = /** @class */ (function (_super) {
27200
26374
  .toString();
27201
26375
  };
27202
26376
  QuestionRowModel.rowCounter = 100;
26377
+ __decorate([
26378
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: null })
26379
+ ], QuestionRowModel.prototype, "dragTypeOverMe", void 0);
27203
26380
  return QuestionRowModel;
27204
26381
  }(_base__WEBPACK_IMPORTED_MODULE_2__["Base"]));
27205
26382
 
@@ -27883,7 +27060,8 @@ var PanelModelBase = /** @class */ (function (_super) {
27883
27060
  return null;
27884
27061
  };
27885
27062
  /**
27886
- * Sets focus on the input of the first question in this panel/page.
27063
+ * Focuses the first question in this panel/page.
27064
+ * @see focusFirstErrorQuestion
27887
27065
  */
27888
27066
  PanelModelBase.prototype.focusFirstQuestion = function () {
27889
27067
  var q = this.getFirstQuestionToFocus();
@@ -27892,8 +27070,9 @@ var PanelModelBase = /** @class */ (function (_super) {
27892
27070
  }
27893
27071
  };
27894
27072
  /**
27895
- * Sets focus on the input of the first question in this panel/page that has an error.
27073
+ * Focuses the first question with a validation error in this panel/page.
27896
27074
  * @see validate
27075
+ * @see focusFirstQuestion
27897
27076
  */
27898
27077
  PanelModelBase.prototype.focusFirstErrorQuestion = function () {
27899
27078
  var q = this.getFirstQuestionToFocus(true);
@@ -30659,7 +29838,7 @@ var PopupModalViewModel = /** @class */ (function (_super) {
30659
29838
  id: "apply",
30660
29839
  visibleIndex: 20,
30661
29840
  title: this.applyButtonText,
30662
- innerCss: "sv-popup__body-footer-item sv-popup__button sv-popup__button--apply",
29841
+ innerCss: "sv-popup__body-footer-item sv-popup__button sv-popup__button--apply sd-btn sd-btn--action",
30663
29842
  action: function () { _this.apply(); }
30664
29843
  });
30665
29844
  };
@@ -31107,14 +30286,14 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
31107
30286
  this.footerToolbarValue = new _actions_container__WEBPACK_IMPORTED_MODULE_3__["ActionContainer"]();
31108
30287
  this.footerToolbar.updateCallback = function (isResetInitialized) {
31109
30288
  _this.footerToolbarValue.actions.forEach(function (action) { return action.cssClasses = {
31110
- item: "sv-popup__body-footer-item sv-popup__button"
30289
+ item: "sv-popup__body-footer-item sv-popup__button sd-btn"
31111
30290
  }; });
31112
30291
  };
31113
30292
  var footerActions = [{
31114
30293
  id: "cancel",
31115
30294
  visibleIndex: 10,
31116
30295
  title: this.cancelButtonText,
31117
- innerCss: "sv-popup__button--cancel",
30296
+ innerCss: "sv-popup__button--cancel sd-btn",
31118
30297
  action: function () { _this.cancel(); }
31119
30298
  }];
31120
30299
  footerActions = this.model.updateFooterActions(footerActions);
@@ -31736,6 +30915,13 @@ var Question = /** @class */ (function (_super) {
31736
30915
  enumerable: false,
31737
30916
  configurable: true
31738
30917
  });
30918
+ Object.defineProperty(Question.prototype, "ariaExpanded", {
30919
+ get: function () {
30920
+ return null;
30921
+ },
30922
+ enumerable: false,
30923
+ configurable: true
30924
+ });
31739
30925
  Object.defineProperty(Question.prototype, "ariaDescribedBy", {
31740
30926
  get: function () {
31741
30927
  return this.errors.length > 0 ? this.id + "_errors" : null;
@@ -33018,6 +32204,13 @@ var Question = /** @class */ (function (_super) {
33018
32204
  enumerable: false,
33019
32205
  configurable: true
33020
32206
  });
32207
+ Object.defineProperty(Question.prototype, "allowResizeComment", {
32208
+ get: function () {
32209
+ return this.survey && this.survey.allowResizeComment;
32210
+ },
32211
+ enumerable: false,
32212
+ configurable: true
32213
+ });
33021
32214
  Object.defineProperty(Question.prototype, "questionValue", {
33022
32215
  get: function () {
33023
32216
  return this.getPropertyValue("value");
@@ -33251,7 +32444,7 @@ var Question = /** @class */ (function (_super) {
33251
32444
  });
33252
32445
  Object.defineProperty(Question.prototype, "resizeStyle", {
33253
32446
  get: function () {
33254
- return this.autoGrowComment ? "none" : "both";
32447
+ return this.allowResizeComment ? "both" : "none";
33255
32448
  },
33256
32449
  enumerable: false,
33257
32450
  configurable: true
@@ -34940,7 +34133,6 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34940
34133
  }
34941
34134
  };
34942
34135
  QuestionSelectBase.prototype.setNewValue = function (newValue) {
34943
- this.resetSelectedItemValues();
34944
34136
  newValue = this.valueFromData(newValue);
34945
34137
  if ((!this.choicesByUrl.isRunning &&
34946
34138
  !this.choicesByUrl.isWaitingForParameters) ||
@@ -35032,9 +34224,6 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35032
34224
  });
35033
34225
  }
35034
34226
  };
35035
- QuestionSelectBase.prototype.resetSelectedItemValues = function () {
35036
- this.selectedItemValues = null;
35037
- };
35038
34227
  QuestionSelectBase.prototype.hasUnknownValue = function (val, includeOther, isFilteredChoices, checkEmptyValue) {
35039
34228
  if (includeOther === void 0) { includeOther = false; }
35040
34229
  if (isFilteredChoices === void 0) { isFilteredChoices = true; }
@@ -36269,7 +35458,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("selectbase", [
36269
35458
  },
36270
35459
  {
36271
35460
  name: "choicesByUrl:restfull",
36272
- className: "ChoicesRestful",
35461
+ className: "choicesByUrl",
36273
35462
  onGetValue: function (obj) {
36274
35463
  return obj.choicesByUrl.getData();
36275
35464
  },
@@ -37688,7 +36877,6 @@ var QuestionCommentModel = /** @class */ (function (_super) {
37688
36877
  * Specifies the visible height of the comment area, measured in lines.
37689
36878
  *
37690
36879
  * The value of this property is passed on to the `rows` attribute of the underlying `<textarea>` element.
37691
- * @see cols
37692
36880
  */
37693
36881
  get: function () {
37694
36882
  return this.getPropertyValue("rows");
@@ -37700,12 +36888,6 @@ var QuestionCommentModel = /** @class */ (function (_super) {
37700
36888
  configurable: true
37701
36889
  });
37702
36890
  Object.defineProperty(QuestionCommentModel.prototype, "cols", {
37703
- /**
37704
- * Specifies the visible width of the comment area, measured in average character width.
37705
- *
37706
- * The value of this property is passed on to the `cols` attribute of the underlying `<textarea>` element.
37707
- * @see rows
37708
- */
37709
36891
  get: function () {
37710
36892
  return this.getPropertyValue("cols");
37711
36893
  },
@@ -37735,6 +36917,7 @@ var QuestionCommentModel = /** @class */ (function (_super) {
37735
36917
  * Specifies whether the comment area automatically increases its height to accomodate multi-line content.
37736
36918
  *
37737
36919
  * Default value: `false` (inherited from `SurveyModel`'s [`autoGrowComment`](https://surveyjs.io/form-library/documentation/surveymodel#autoGrowComment) property)
36920
+ * @see allowResize
37738
36921
  */
37739
36922
  get: function () {
37740
36923
  return this.getPropertyValue("autoGrow") || (this.survey && this.survey.autoGrowComment);
@@ -37745,6 +36928,29 @@ var QuestionCommentModel = /** @class */ (function (_super) {
37745
36928
  enumerable: false,
37746
36929
  configurable: true
37747
36930
  });
36931
+ Object.defineProperty(QuestionCommentModel.prototype, "allowResize", {
36932
+ /**
36933
+ * Specifies whether to display a resize handle for the comment area.
36934
+ *
36935
+ * Default value: `true` (inherited from `SurveyModel`'s [`allowResizeComment`](https://surveyjs.io/form-library/documentation/surveymodel#allowResizeComment) property)
36936
+ * @see autoGrow
36937
+ */
36938
+ get: function () {
36939
+ return this.getPropertyValue("allowResize") && (this.survey && this.survey.allowResizeComment);
36940
+ },
36941
+ set: function (val) {
36942
+ this.setPropertyValue("allowResize", val);
36943
+ },
36944
+ enumerable: false,
36945
+ configurable: true
36946
+ });
36947
+ Object.defineProperty(QuestionCommentModel.prototype, "resizeStyle", {
36948
+ get: function () {
36949
+ return this.allowResize ? "both" : "none";
36950
+ },
36951
+ enumerable: false,
36952
+ configurable: true
36953
+ });
37748
36954
  QuestionCommentModel.prototype.getType = function () {
37749
36955
  return "comment";
37750
36956
  };
@@ -37800,7 +37006,7 @@ var QuestionCommentModel = /** @class */ (function (_super) {
37800
37006
 
37801
37007
  _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("comment", [
37802
37008
  { name: "maxLength:number", default: -1 },
37803
- { name: "cols:number", default: 50 },
37009
+ { name: "cols:number", default: 50, visible: false, isSerializable: false },
37804
37010
  { name: "rows:number", default: 4 },
37805
37011
  { name: "placeholder",
37806
37012
  alternativeName: "placeHolder",
@@ -37811,6 +37017,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("comment", [
37811
37017
  choices: ["default", "onBlur", "onTyping"],
37812
37018
  },
37813
37019
  { name: "autoGrow:boolean" },
37020
+ { name: "allowResize:boolean", default: true },
37814
37021
  { name: "acceptCarriageReturn:boolean", default: true, visible: false }
37815
37022
  ], function () {
37816
37023
  return new QuestionCommentModel("");
@@ -38118,7 +37325,11 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
38118
37325
  if (!this.data)
38119
37326
  return;
38120
37327
  var newName = this.convertDataName(name);
38121
- this.data.setValue(newName, this.convertDataValue(name, newValue), locNotification, allowNotifyValueChanged);
37328
+ var valueForSurvey = this.convertDataValue(name, newValue);
37329
+ if (this.valueToDataCallback) {
37330
+ valueForSurvey = this.valueToDataCallback(valueForSurvey);
37331
+ }
37332
+ this.data.setValue(newName, valueForSurvey, locNotification, allowNotifyValueChanged);
38122
37333
  this.updateIsAnswered();
38123
37334
  this.updateElementCss();
38124
37335
  if (!!this.customQuestion) {
@@ -38456,11 +37667,9 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38456
37667
  return this.textProcessing;
38457
37668
  };
38458
37669
  QuestionCompositeModel.prototype.findQuestionByName = function (name) {
38459
- if (!!this.contentPanel) {
38460
- var res = this.contentPanel.getQuestionByName(name);
38461
- if (!!res)
38462
- return res;
38463
- }
37670
+ var res = this.getQuestionByName(name);
37671
+ if (!!res)
37672
+ return res;
38464
37673
  return _super.prototype.findQuestionByName.call(this, name);
38465
37674
  };
38466
37675
  QuestionCompositeModel.prototype.clearValueIfInvisibleCore = function () {
@@ -38567,15 +37776,16 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38567
37776
  this.setValueCore(panelValue);
38568
37777
  }
38569
37778
  }
37779
+ this.setNewValueIntoQuestion(name, newValue);
38570
37780
  _super.prototype.setValue.call(this, name, newValue, locNotification, allowNotifyValueChanged);
38571
- if (!!this.contentPanel) {
38572
- var q = this.contentPanel.getQuestionByName(name);
38573
- if (!!q && !this.isTwoValueEquals(newValue, q.value)) {
38574
- q.value = newValue;
38575
- }
38576
- }
38577
37781
  this.settingNewValue = false;
38578
37782
  };
37783
+ QuestionCompositeModel.prototype.setNewValueIntoQuestion = function (name, newValue) {
37784
+ var q = this.getQuestionByName(name);
37785
+ if (!!q && !this.isTwoValueEquals(newValue, q.value)) {
37786
+ q.value = newValue;
37787
+ }
37788
+ };
38579
37789
  QuestionCompositeModel.prototype.addConditionObjectsByContext = function (objects, context) {
38580
37790
  if (!this.contentPanel)
38581
37791
  return;
@@ -38604,7 +37814,15 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38604
37814
  };
38605
37815
  QuestionCompositeModel.prototype.setQuestionValue = function (newValue, updateIsAnswered) {
38606
37816
  if (updateIsAnswered === void 0) { updateIsAnswered = true; }
37817
+ this.setValuesIntoQuestions(newValue);
37818
+ if (!this.isEditingSurveyElement && !!this.contentPanel) {
37819
+ newValue = this.contentPanel.getValue();
37820
+ }
38607
37821
  _super.prototype.setQuestionValue.call(this, newValue, updateIsAnswered);
37822
+ };
37823
+ QuestionCompositeModel.prototype.setValuesIntoQuestions = function (newValue) {
37824
+ if (!this.contentPanel)
37825
+ return;
38608
37826
  this.settingNewValue = true;
38609
37827
  var questions = this.contentPanel.questions;
38610
37828
  for (var i = 0; i < questions.length; i++) {
@@ -38615,6 +37833,7 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38615
37833
  q.value = val;
38616
37834
  }
38617
37835
  }
37836
+ this.runCondition(this.getDataFilteredValues(), this.getDataFilteredProperties());
38618
37837
  this.settingNewValue = false;
38619
37838
  };
38620
37839
  QuestionCompositeModel.prototype.getDisplayValueCore = function (keyAsText, value) {
@@ -38971,7 +38190,8 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
38971
38190
  });
38972
38191
  Object.defineProperty(QuestionDropdownModel.prototype, "ariaExpanded", {
38973
38192
  get: function () {
38974
- return this.popupModel.isVisible;
38193
+ var popupModel = this.popupModel;
38194
+ return !!popupModel && popupModel.isVisible ? "true" : "false";
38975
38195
  },
38976
38196
  enumerable: false,
38977
38197
  configurable: true
@@ -40936,9 +40156,27 @@ var ImageItemValue = /** @class */ (function (_super) {
40936
40156
  ImageItemValue.prototype.onErrorHandler = function () {
40937
40157
  this.contentNotLoaded = true;
40938
40158
  };
40159
+ Object.defineProperty(ImageItemValue.prototype, "contentNotLoaded", {
40160
+ get: function () {
40161
+ return this.locOwner instanceof QuestionImagePickerModel && this.locOwner.contentMode == "video" ? this.videoNotLoaded : this.imageNotLoaded;
40162
+ },
40163
+ set: function (val) {
40164
+ if (this.locOwner instanceof QuestionImagePickerModel && this.locOwner.contentMode == "video") {
40165
+ this.videoNotLoaded = val;
40166
+ }
40167
+ else {
40168
+ this.imageNotLoaded = val;
40169
+ }
40170
+ },
40171
+ enumerable: false,
40172
+ configurable: true
40173
+ });
40174
+ __decorate([
40175
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
40176
+ ], ImageItemValue.prototype, "videoNotLoaded", void 0);
40939
40177
  __decorate([
40940
40178
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
40941
- ], ImageItemValue.prototype, "contentNotLoaded", void 0);
40179
+ ], ImageItemValue.prototype, "imageNotLoaded", void 0);
40942
40180
  return ImageItemValue;
40943
40181
  }(_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"]));
40944
40182
 
@@ -47769,11 +47007,12 @@ _questionfactory__WEBPACK_IMPORTED_MODULE_1__["QuestionFactory"].Instance.regist
47769
47007
  /*!**************************************!*\
47770
47008
  !*** ./src/question_multipletext.ts ***!
47771
47009
  \**************************************/
47772
- /*! exports provided: MultipleTextItemModel, QuestionMultipleTextModel */
47010
+ /*! exports provided: MultipleTextEditorModel, MultipleTextItemModel, QuestionMultipleTextModel */
47773
47011
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
47774
47012
 
47775
47013
  "use strict";
47776
47014
  __webpack_require__.r(__webpack_exports__);
47015
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return MultipleTextEditorModel; });
47777
47016
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return MultipleTextItemModel; });
47778
47017
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return QuestionMultipleTextModel; });
47779
47018
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base.ts");
@@ -47809,6 +47048,28 @@ var __extends = (undefined && undefined.__extends) || (function () {
47809
47048
 
47810
47049
 
47811
47050
 
47051
+ var MultipleTextEditorModel = /** @class */ (function (_super) {
47052
+ __extends(MultipleTextEditorModel, _super);
47053
+ function MultipleTextEditorModel() {
47054
+ return _super !== null && _super.apply(this, arguments) || this;
47055
+ }
47056
+ Object.defineProperty(MultipleTextEditorModel.prototype, "a11y_input_ariaLabel", {
47057
+ get: function () {
47058
+ return this.locTitle.renderedHtml;
47059
+ },
47060
+ enumerable: false,
47061
+ configurable: true
47062
+ });
47063
+ Object.defineProperty(MultipleTextEditorModel.prototype, "a11y_input_ariaLabelledBy", {
47064
+ get: function () {
47065
+ return null;
47066
+ },
47067
+ enumerable: false,
47068
+ configurable: true
47069
+ });
47070
+ return MultipleTextEditorModel;
47071
+ }(_question_text__WEBPACK_IMPORTED_MODULE_3__["QuestionTextModel"]));
47072
+
47812
47073
  /**
47813
47074
  * A class that describes an item in a [Multiple Text](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model) question.
47814
47075
  *
@@ -47871,7 +47132,7 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
47871
47132
  configurable: true
47872
47133
  });
47873
47134
  MultipleTextItemModel.prototype.createEditor = function (name) {
47874
- return new _question_text__WEBPACK_IMPORTED_MODULE_3__["QuestionTextModel"](name);
47135
+ return new MultipleTextEditorModel(name);
47875
47136
  };
47876
47137
  MultipleTextItemModel.prototype.addUsedLocales = function (locales) {
47877
47138
  _super.prototype.addUsedLocales.call(this, locales);
@@ -49240,6 +48501,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
49240
48501
  * @see renderMode
49241
48502
  */
49242
48503
  get: function () {
48504
+ if (this.isDesignMode)
48505
+ return this.template;
49243
48506
  if (this.isRenderModeList || this.useTemplatePanel)
49244
48507
  return null;
49245
48508
  var res = this.getPropertyValue("currentPanel", null);
@@ -50632,9 +49895,13 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50632
49895
  if (newPanelCount == 0 && this.getPropertyValue("panelCount") > 0) {
50633
49896
  newPanelCount = this.getPropertyValue("panelCount");
50634
49897
  }
49898
+ this.settingPanelCountBasedOnValue = true;
50635
49899
  this.panelCount = newPanelCount;
49900
+ this.settingPanelCountBasedOnValue = false;
50636
49901
  };
50637
49902
  QuestionPanelDynamicModel.prototype.setQuestionValue = function (newValue) {
49903
+ if (this.settingPanelCountBasedOnValue)
49904
+ return;
50638
49905
  _super.prototype.setQuestionValue.call(this, newValue, false);
50639
49906
  this.setPanelCountBasedOnValue();
50640
49907
  for (var i = 0; i < this.panels.length; i++) {
@@ -51069,6 +50336,16 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
51069
50336
  enumerable: false,
51070
50337
  configurable: true
51071
50338
  });
50339
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "showNavigation", {
50340
+ get: function () {
50341
+ return this.visiblePanelCount > 0 && !this.showLegacyNavigation && !!this.cssClasses.footer;
50342
+ },
50343
+ enumerable: false,
50344
+ configurable: true
50345
+ });
50346
+ QuestionPanelDynamicModel.prototype.showSeparator = function (index) {
50347
+ return this.isRenderModeList && index < this.visiblePanelCount - 1;
50348
+ };
51072
50349
  QuestionPanelDynamicModel.maxCheckCount = 3;
51073
50350
  __decorate([
51074
50351
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_5__["property"])({ defaultValue: false, onSet: function (_, target) { target.updateFooterActions(); } })
@@ -52490,6 +51767,17 @@ var QuestionRatingModel = /** @class */ (function (_super) {
52490
51767
  QuestionRatingModel.prototype.getDesktopRenderAs = function () {
52491
51768
  return (this.displayMode == "dropdown") ? "dropdown" : "default";
52492
51769
  };
51770
+ Object.defineProperty(QuestionRatingModel.prototype, "ariaExpanded", {
51771
+ get: function () {
51772
+ var _a;
51773
+ var popupModel = (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.popupModel;
51774
+ if (!popupModel)
51775
+ return null;
51776
+ return popupModel.isVisible ? "true" : "false";
51777
+ },
51778
+ enumerable: false,
51779
+ configurable: true
51780
+ });
52493
51781
  Object.defineProperty(QuestionRatingModel.prototype, "dropdownListModel", {
52494
51782
  get: function () {
52495
51783
  return this.dropdownListModelValue;
@@ -52677,14 +51965,18 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("rating", [
52677
51965
  serializationProperty: "locMaxRateDescription",
52678
51966
  visibleIndex: 18
52679
51967
  },
52680
- { name: "displayRateDescriptionsAsExtremeItems:boolean", default: false, visibleIndex: 19 },
51968
+ {
51969
+ name: "displayRateDescriptionsAsExtremeItems:boolean",
51970
+ default: false,
51971
+ visibleIndex: 19,
51972
+ visibleIf: function (obj) {
51973
+ return obj.rateType == "labels";
51974
+ }
51975
+ },
52681
51976
  {
52682
51977
  name: "displayMode",
52683
51978
  default: "auto",
52684
51979
  choices: ["auto", "buttons", "dropdown"],
52685
- visibleIf: function (obj) {
52686
- return obj.rateType == "labels";
52687
- },
52688
51980
  visibleIndex: 20
52689
51981
  }
52690
51982
  ], function () {
@@ -53166,7 +52458,8 @@ var QuestionTagboxModel = /** @class */ (function (_super) {
53166
52458
  });
53167
52459
  Object.defineProperty(QuestionTagboxModel.prototype, "ariaExpanded", {
53168
52460
  get: function () {
53169
- return this.popupModel.isVisible;
52461
+ var popupModel = this.popupModel;
52462
+ return !!popupModel && popupModel.isVisible ? "true" : "false";
53170
52463
  },
53171
52464
  enumerable: false,
53172
52465
  configurable: true
@@ -54233,6 +53526,11 @@ var QuestionTextBase = /** @class */ (function (_super) {
54233
53526
  _super.prototype.setNewValue.call(this, newValue);
54234
53527
  this.updateRemainingCharacterCounter(newValue);
54235
53528
  };
53529
+ QuestionTextBase.prototype.setQuestionValue = function (newValue, updateIsAnswered) {
53530
+ if (updateIsAnswered === void 0) { updateIsAnswered = true; }
53531
+ _super.prototype.setQuestionValue.call(this, newValue, updateIsAnswered);
53532
+ this.updateRemainingCharacterCounter(newValue);
53533
+ };
54236
53534
  QuestionTextBase.prototype.getControlClass = function () {
54237
53535
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__["CssClassBuilder"]()
54238
53536
  .append(this.cssClasses.root)
@@ -54241,12 +53539,100 @@ var QuestionTextBase = /** @class */ (function (_super) {
54241
53539
  .toString();
54242
53540
  };
54243
53541
  Object.defineProperty(QuestionTextBase.prototype, "ariaRole", {
53542
+ //a11y
53543
+ get: function () {
53544
+ return null;
53545
+ },
53546
+ enumerable: false,
53547
+ configurable: true
53548
+ });
53549
+ Object.defineProperty(QuestionTextBase.prototype, "ariaRequired", {
53550
+ get: function () {
53551
+ return null;
53552
+ },
53553
+ enumerable: false,
53554
+ configurable: true
53555
+ });
53556
+ Object.defineProperty(QuestionTextBase.prototype, "ariaInvalid", {
53557
+ get: function () {
53558
+ return null;
53559
+ },
53560
+ enumerable: false,
53561
+ configurable: true
53562
+ });
53563
+ Object.defineProperty(QuestionTextBase.prototype, "ariaLabel", {
53564
+ get: function () {
53565
+ return null;
53566
+ },
53567
+ enumerable: false,
53568
+ configurable: true
53569
+ });
53570
+ Object.defineProperty(QuestionTextBase.prototype, "ariaLabelledBy", {
53571
+ get: function () {
53572
+ return null;
53573
+ },
53574
+ enumerable: false,
53575
+ configurable: true
53576
+ });
53577
+ Object.defineProperty(QuestionTextBase.prototype, "ariaDescribedBy", {
53578
+ get: function () {
53579
+ return null;
53580
+ },
53581
+ enumerable: false,
53582
+ configurable: true
53583
+ });
53584
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaRole", {
54244
53585
  get: function () {
54245
53586
  return "textbox";
54246
53587
  },
54247
53588
  enumerable: false,
54248
53589
  configurable: true
54249
53590
  });
53591
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaRequired", {
53592
+ get: function () {
53593
+ return this.isRequired ? "true" : "false";
53594
+ },
53595
+ enumerable: false,
53596
+ configurable: true
53597
+ });
53598
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaInvalid", {
53599
+ get: function () {
53600
+ return this.errors.length > 0 ? "true" : "false";
53601
+ },
53602
+ enumerable: false,
53603
+ configurable: true
53604
+ });
53605
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaLabel", {
53606
+ get: function () {
53607
+ if (this.hasTitle) {
53608
+ return null;
53609
+ }
53610
+ else {
53611
+ return this.locTitle.renderedHtml;
53612
+ }
53613
+ },
53614
+ enumerable: false,
53615
+ configurable: true
53616
+ });
53617
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaLabelledBy", {
53618
+ get: function () {
53619
+ if (this.hasTitle) {
53620
+ return this.ariaTitleId;
53621
+ }
53622
+ else {
53623
+ return null;
53624
+ }
53625
+ },
53626
+ enumerable: false,
53627
+ configurable: true
53628
+ });
53629
+ Object.defineProperty(QuestionTextBase.prototype, "a11y_input_ariaDescribedBy", {
53630
+ get: function () {
53631
+ return this.errors.length > 0 ? this.id + "_errors" : null;
53632
+ },
53633
+ enumerable: false,
53634
+ configurable: true
53635
+ });
54250
53636
  __decorate([
54251
53637
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ localizable: true, onSet: function (val, target) { return target.calcRenderedPlaceholder(); } })
54252
53638
  ], QuestionTextBase.prototype, "placeholder", void 0);
@@ -57423,7 +56809,7 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57423
56809
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0, onClick: this.click,
57424
56810
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
57425
56811
  // @ts-ignore
57426
- disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded ? "true" : "false", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
56812
+ disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
57427
56813
  dropdownListModel.showHintPrefix ?
57428
56814
  (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.hintPrefix },
57429
56815
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", null, dropdownListModel.hintStringPrefix))) : null,
@@ -57433,7 +56819,7 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57433
56819
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { style: { visibility: "hidden" }, "data-bind": "text: model.filterString" }, dropdownListModel.inputStringRendered),
57434
56820
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", null, dropdownListModel.hintStringSuffix))) : null,
57435
56821
  valueElement,
57436
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "text", autoComplete: "off", id: this.question.getInputId(), ref: function (element) { return (_this.inputElement = element); }, className: this.question.cssClasses.filterStringInput, role: dropdownListModel.filterStringEnabled ? this.question.ariaRole : undefined, "aria-label": this.question.placeholder, "aria-expanded": this.question.ariaExpanded ? "true" : "false", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant, placeholder: dropdownListModel.placeholderRendered, readOnly: !dropdownListModel.searchEnabled ? true : undefined, tabIndex: dropdownListModel.inputReadOnly ? undefined : -1, disabled: this.question.isInputReadOnly, inputMode: dropdownListModel.inputMode, onChange: function (e) { onInputChange(e); }, onBlur: this.blur, onFocus: this.focus })),
56822
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "text", autoComplete: "off", id: this.question.getInputId(), ref: function (element) { return (_this.inputElement = element); }, className: this.question.cssClasses.filterStringInput, role: dropdownListModel.filterStringEnabled ? this.question.ariaRole : undefined, "aria-label": this.question.placeholder, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant, placeholder: dropdownListModel.placeholderRendered, readOnly: !dropdownListModel.searchEnabled ? true : undefined, tabIndex: dropdownListModel.inputReadOnly ? undefined : -1, disabled: this.question.isInputReadOnly, inputMode: dropdownListModel.inputMode, onChange: function (e) { onInputChange(e); }, onBlur: this.blur, onFocus: this.focus })),
57437
56823
  this.createClearButton()));
57438
56824
  };
57439
56825
  SurveyQuestionDropdownBase.prototype.createClearButton = function () {
@@ -57953,6 +57339,9 @@ var SurveyQuestionImage = /** @class */ (function (_super) {
57953
57339
  var _this = this;
57954
57340
  var cssClasses = this.question.getImageCss();
57955
57341
  var style = { objectFit: this.question.imageFit };
57342
+ if (!this.question.imageLink || this.question.contentNotLoaded) {
57343
+ style["display"] = "none";
57344
+ }
57956
57345
  var control = null;
57957
57346
  if (this.question.renderedMode === "image") {
57958
57347
  control = (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("img", { className: cssClasses, src: this.question.locImageLink.renderedHtml, alt: this.question.altText || this.question.title, width: this.question.renderedWidth, height: this.question.renderedHeight,
@@ -58745,6 +58134,17 @@ var __extends = (undefined && undefined.__extends) || (function () {
58745
58134
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
58746
58135
  };
58747
58136
  })();
58137
+ var __assign = (undefined && undefined.__assign) || function () {
58138
+ __assign = Object.assign || function(t) {
58139
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
58140
+ s = arguments[i];
58141
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
58142
+ t[p] = s[p];
58143
+ }
58144
+ return t;
58145
+ };
58146
+ return __assign.apply(this, arguments);
58147
+ };
58748
58148
 
58749
58149
 
58750
58150
 
@@ -59027,6 +58427,7 @@ function attachKey2click(element, viewModel, options) {
59027
58427
  if ((!!viewModel && viewModel.disableTabStop) || (!!options && options.disableTabStop)) {
59028
58428
  return react__WEBPACK_IMPORTED_MODULE_0__["cloneElement"](element, { tabIndex: -1 });
59029
58429
  }
58430
+ options = __assign({}, options);
59030
58431
  return react__WEBPACK_IMPORTED_MODULE_0__["cloneElement"](element, {
59031
58432
  tabIndex: 0,
59032
58433
  onKeyUp: function (evt) {
@@ -59540,7 +58941,7 @@ var SurveyQuestion = /** @class */ (function (_super) {
59540
58941
  var rootStyle = question.getRootStyle();
59541
58942
  var questionContent = this.wrapQuestionContent(this.renderQuestionContent());
59542
58943
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null,
59543
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { ref: this.rootRef, id: question.id, className: question.getRootCss(), style: rootStyle, role: question.ariaRole, "aria-required": this.question.ariaRequired, "aria-invalid": this.question.ariaInvalid, "aria-labelledby": question.ariaLabelledBy },
58944
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { ref: this.rootRef, id: question.id, className: question.getRootCss(), style: rootStyle, role: question.ariaRole, "aria-required": this.question.ariaRequired, "aria-invalid": this.question.ariaInvalid, "aria-labelledby": question.ariaLabelledBy, "aria-expanded": question.ariaExpanded === null ? undefined : question.ariaExpanded === "true" },
59544
58945
  errorsAboveQuestion,
59545
58946
  headerTop,
59546
58947
  questionContent,
@@ -60232,7 +59633,7 @@ var SurveyQuestionComment = /** @class */ (function (_super) {
60232
59633
  }
60233
59634
  var counter = !!this.question.getMaxLength() ? (react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_character_counter__WEBPACK_IMPORTED_MODULE_3__["CharacterCounterComponent"], { counter: this.question.characterCounter, remainingCharacterCounter: this.question.cssClasses.remainingCharacterCounter })) : null;
60234
59635
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null,
60235
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("textarea", { id: this.question.inputId, className: this.question.className, disabled: this.question.isInputReadOnly, readOnly: this.question.isInputReadOnly, ref: function (textarea) { return (_this.setControl(textarea)); }, maxLength: this.question.getMaxLength(), placeholder: placeholder, onBlur: onBlur, onInput: onInput, onKeyDown: function (event) { _this.question.onKeyDown(event); }, cols: this.question.cols, rows: this.question.rows, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, style: { resize: this.question.resizeStyle } }),
59636
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("textarea", { id: this.question.inputId, className: this.question.className, disabled: this.question.isInputReadOnly, readOnly: this.question.isInputReadOnly, ref: function (textarea) { return (_this.setControl(textarea)); }, maxLength: this.question.getMaxLength(), placeholder: placeholder, onBlur: onBlur, onInput: onInput, onKeyDown: function (event) { _this.question.onKeyDown(event); }, cols: this.question.cols, rows: this.question.rows, "aria-required": this.question.a11y_input_ariaRequired, "aria-label": this.question.a11y_input_ariaLabel, "aria-labelledby": this.question.a11y_input_ariaLabelledBy, "aria-invalid": this.question.a11y_input_ariaInvalid, "aria-describedby": this.question.a11y_input_ariaDescribedBy, style: { resize: this.question.resizeStyle } }),
60236
59637
  counter));
60237
59638
  };
60238
59639
  return SurveyQuestionComment;
@@ -62225,11 +61626,8 @@ var SurveyQuestionPanelDynamic = /** @class */ (function (_super) {
62225
61626
  });
62226
61627
  };
62227
61628
  SurveyQuestionPanelDynamic.prototype.renderNavigatorV2 = function () {
62228
- if (this.question.panelCount === 0 || this.question["showLegacyNavigation"])
61629
+ if (!this.question.showNavigation)
62229
61630
  return null;
62230
- if (!this.question.cssClasses.footer) {
62231
- return null;
62232
- }
62233
61631
  var range = this.question.isRangeShowing && this.question.isProgressBottomShowing ? this.renderRange() : null;
62234
61632
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.footer },
62235
61633
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("hr", { className: this.question.cssClasses.separator }),
@@ -62277,7 +61675,7 @@ var SurveyQuestionPanelDynamicItem = /** @class */ (function (_super) {
62277
61675
  SurveyQuestionPanelDynamicItem.prototype.render = function () {
62278
61676
  var panel = _super.prototype.render.call(this);
62279
61677
  var removeButton = this.renderButton();
62280
- var separator = this.question.isRenderModeList && this.index < this.question.panelCount - 1 ?
61678
+ var separator = this.question.showSeparator(this.index) ?
62281
61679
  (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("hr", { className: this.question.cssClasses.separator })) : null;
62282
61680
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null,
62283
61681
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.getPanelWrapperCss() },
@@ -62863,7 +62261,7 @@ var SurveyQuestionTagbox = /** @class */ (function (_super) {
62863
62261
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0, onClick: this.click,
62864
62262
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
62865
62263
  // @ts-ignore
62866
- disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded ? "true" : "false", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
62264
+ disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
62867
62265
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.controlValue },
62868
62266
  items,
62869
62267
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_tagbox_filter__WEBPACK_IMPORTED_MODULE_4__["TagboxFilterString"], { model: dropdownMultiSelectListModel, question: this.question })),
@@ -62939,7 +62337,7 @@ var SurveyQuestionText = /** @class */ (function (_super) {
62939
62337
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null,
62940
62338
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { id: this.question.inputId, disabled: this.isDisplayMode, className: inputClass, type: this.question.inputType,
62941
62339
  //ref={this.controlRef}
62942
- ref: function (input) { return (_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: this.question.onBlur, onFocus: this.question.onFocus, onChange: this.question.onChange, onKeyUp: this.question.onKeyUp, onKeyDown: this.question.onKeyDown, onCompositionUpdate: function (event) { return _this.question.onCompositionUpdate(event.nativeEvent); }, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy }),
62340
+ ref: function (input) { return (_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: this.question.onBlur, onFocus: this.question.onFocus, onChange: this.question.onChange, onKeyUp: this.question.onKeyUp, onKeyDown: this.question.onKeyDown, onCompositionUpdate: function (event) { return _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-invalid": this.question.a11y_input_ariaInvalid, "aria-describedby": this.question.a11y_input_ariaDescribedBy }),
62943
62341
  counter));
62944
62342
  };
62945
62343
  SurveyQuestionText.prototype.renderElement = function () {
@@ -63649,7 +63047,7 @@ var TagboxFilterString = /** @class */ (function (_super) {
63649
63047
  (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.hintSuffix },
63650
63048
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { style: { visibility: "hidden" }, "data-bind": "text: model.filterString" }, this.model.inputStringRendered),
63651
63049
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", null, this.model.hintStringSuffix))) : null,
63652
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "text", autoComplete: "off", id: this.question.getInputId(), inputMode: this.model.inputMode, ref: function (element) { return (_this.inputElement = element); }, className: this.question.cssClasses.filterStringInput, disabled: this.question.isInputReadOnly, readOnly: !this.model.searchEnabled ? true : undefined, size: !this.model.inputStringRendered ? 1 : undefined, role: this.model.filterStringEnabled ? this.question.ariaRole : undefined, "aria-label": this.question.placeholder, "aria-expanded": this.question.ariaExpanded ? "true" : "false", "aria-controls": this.model.listElementId, "aria-activedescendant": this.model.ariaActivedescendant, placeholder: this.model.filterStringPlaceholder, onKeyDown: function (e) { _this.keyhandler(e); }, onChange: function (e) { _this.onChange(e); }, onBlur: function (e) { _this.onBlur(e); }, onFocus: function (e) { _this.onFocus(e); } }))));
63050
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "text", autoComplete: "off", id: this.question.getInputId(), inputMode: this.model.inputMode, ref: function (element) { return (_this.inputElement = element); }, className: this.question.cssClasses.filterStringInput, disabled: this.question.isInputReadOnly, readOnly: !this.model.searchEnabled ? true : undefined, size: !this.model.inputStringRendered ? 1 : undefined, role: this.model.filterStringEnabled ? this.question.ariaRole : undefined, "aria-label": this.question.placeholder, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": this.model.listElementId, "aria-activedescendant": this.model.ariaActivedescendant, placeholder: this.model.filterStringPlaceholder, onKeyDown: function (e) { _this.keyhandler(e); }, onChange: function (e) { _this.onChange(e); }, onBlur: function (e) { _this.onBlur(e); }, onFocus: function (e) { _this.onFocus(e); } }))));
63653
63051
  };
63654
63052
  return TagboxFilterString;
63655
63053
  }(_reactquestion_element__WEBPACK_IMPORTED_MODULE_3__["SurveyElementBase"]));
@@ -63785,8 +63183,8 @@ var RendererFactory = /** @class */ (function () {
63785
63183
 
63786
63184
  "use strict";
63787
63185
  __webpack_require__.r(__webpack_exports__);
63788
- /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
63789
- var document = global.document;
63186
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
63187
+ var document = globalThis.document;
63790
63188
  var defaultEnvironment = (!!document ? {
63791
63189
  root: document,
63792
63190
  _rootElement: document.body,
@@ -64290,7 +63688,6 @@ var settings = {
64290
63688
  }
64291
63689
  };
64292
63690
 
64293
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
64294
63691
 
64295
63692
  /***/ }),
64296
63693
 
@@ -64879,11 +64276,16 @@ var SurveyElementCore = /** @class */ (function (_super) {
64879
64276
  return SurveyElementCore;
64880
64277
  }(_base__WEBPACK_IMPORTED_MODULE_1__["Base"]));
64881
64278
 
64279
+ // TODO: rename
64882
64280
  var DragTypeOverMeEnum;
64883
64281
  (function (DragTypeOverMeEnum) {
64884
64282
  DragTypeOverMeEnum[DragTypeOverMeEnum["InsideEmptyPanel"] = 1] = "InsideEmptyPanel";
64885
64283
  DragTypeOverMeEnum[DragTypeOverMeEnum["MultilineRight"] = 2] = "MultilineRight";
64886
64284
  DragTypeOverMeEnum[DragTypeOverMeEnum["MultilineLeft"] = 3] = "MultilineLeft";
64285
+ DragTypeOverMeEnum[DragTypeOverMeEnum["Top"] = 4] = "Top";
64286
+ DragTypeOverMeEnum[DragTypeOverMeEnum["Right"] = 5] = "Right";
64287
+ DragTypeOverMeEnum[DragTypeOverMeEnum["Bottom"] = 6] = "Bottom";
64288
+ DragTypeOverMeEnum[DragTypeOverMeEnum["Left"] = 7] = "Left";
64887
64289
  })(DragTypeOverMeEnum || (DragTypeOverMeEnum = {}));
64888
64290
  /**
64889
64291
  * A base class for all survey elements.
@@ -66157,7 +65559,7 @@ var SurveyModel = /** @class */ (function (_super) {
66157
65559
  */
66158
65560
  _this.onNavigateToUrl = _this.addEvent();
66159
65561
  /**
66160
- * An event that is raised when the survey [`state`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#state) changes from `"starting"` to `"running"`. This occurs only if your survey includes a [start page](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#start-page).
65562
+ * An event that is raised when the survey [`state`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#state) changes to `"running"`.
66161
65563
  * @see firstPageIsStarted
66162
65564
  */
66163
65565
  _this.onStarted = _this.addEvent();
@@ -66519,13 +65921,17 @@ var SurveyModel = /** @class */ (function (_super) {
66519
65921
  */
66520
65922
  _this.onAfterRenderPanel = _this.addEvent();
66521
65923
  /**
66522
- * The event occurs when an element within a question gets focus.
65924
+ * An event that is raised when an element (input field, checkbox, radio button) within a question gets focus.
66523
65925
  * @see onFocusInPanel
65926
+ * @see focusFirstQuestionAutomatic
65927
+ * @see focusQuestion
66524
65928
  */
66525
65929
  _this.onFocusInQuestion = _this.addEvent();
66526
65930
  /**
66527
- * The event occurs when an element within a panel gets focus.
65931
+ * An event that is raised when an element within a panel gets focus.
66528
65932
  * @see onFocusInQuestion
65933
+ * @see focusFirstQuestionAutomatic
65934
+ * @see focusQuestion
66529
65935
  */
66530
65936
  _this.onFocusInPanel = _this.addEvent();
66531
65937
  /**
@@ -67325,7 +66731,12 @@ var SurveyModel = /** @class */ (function (_super) {
67325
66731
  });
67326
66732
  Object.defineProperty(SurveyModel.prototype, "focusFirstQuestionAutomatic", {
67327
66733
  /**
67328
- * Gets or sets whether the first input is focused on showing a next or a previous page.
66734
+ * Specifies whether to focus the first question on the page on survey startup or when users switch between pages.
66735
+ *
66736
+ * Default value: `true`
66737
+ * @see focusOnFirstError
66738
+ * @see focusFirstQuestion
66739
+ * @see focusQuestion
67329
66740
  */
67330
66741
  get: function () {
67331
66742
  return this.getPropertyValue("focusFirstQuestionAutomatic");
@@ -67338,8 +66749,11 @@ var SurveyModel = /** @class */ (function (_super) {
67338
66749
  });
67339
66750
  Object.defineProperty(SurveyModel.prototype, "focusOnFirstError", {
67340
66751
  /**
67341
- * Gets or sets whether the first input is focused if the current page has errors.
67342
- * Set this property to `false` (the default value is `true`) if you do not want to bring the focus to the first question that has error on the page.
66752
+ * Specifies whether to focus the first question with a validation error on the current page.
66753
+ *
66754
+ * Default value: `true`
66755
+ * @see validate
66756
+ * @see focusFirstQuestionAutomatic
67343
66757
  */
67344
66758
  get: function () {
67345
66759
  return this.getPropertyValue("focusOnFirstError");
@@ -67688,11 +67102,12 @@ var SurveyModel = /** @class */ (function (_super) {
67688
67102
  });
67689
67103
  Object.defineProperty(SurveyModel.prototype, "autoGrowComment", {
67690
67104
  /**
67691
- * Specifies whether to increase the height of text areas to accommodate multi-line comments.
67105
+ * Specifies whether to increase the height of [Long Text](https://surveyjs.io/form-library/examples/add-open-ended-question-to-a-form/) questions and other text areas to accommodate multi-line text content.
67692
67106
  *
67693
67107
  * Default value: `false`
67694
67108
  *
67695
- * You can override this property for individual Comment questions: [`autoGrow`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#autoGrow).
67109
+ * You can override this property for individual Long Text questions: [`autoGrow`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#autoGrow).
67110
+ * @see allowResizeComment
67696
67111
  */
67697
67112
  get: function () {
67698
67113
  return this.getPropertyValue("autoGrowComment");
@@ -67703,6 +67118,24 @@ var SurveyModel = /** @class */ (function (_super) {
67703
67118
  enumerable: false,
67704
67119
  configurable: true
67705
67120
  });
67121
+ Object.defineProperty(SurveyModel.prototype, "allowResizeComment", {
67122
+ /**
67123
+ * Specifies whether to display a resize handle for [Long Text](https://surveyjs.io/form-library/examples/add-open-ended-question-to-a-form/) questions and other text areas intended for multi-line text content.
67124
+ *
67125
+ * Default value: `true`
67126
+ *
67127
+ * You can override this property for individual Long Text questions: [`allowResize`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#allowResize).
67128
+ * @see autoGrowComment
67129
+ */
67130
+ get: function () {
67131
+ return this.getPropertyValue("allowResizeComment");
67132
+ },
67133
+ set: function (val) {
67134
+ this.setPropertyValue("allowResizeComment", val);
67135
+ },
67136
+ enumerable: false,
67137
+ configurable: true
67138
+ });
67706
67139
  Object.defineProperty(SurveyModel.prototype, "textUpdateMode", {
67707
67140
  /**
67708
67141
  * Gets or sets a value that specifies how the survey updates its questions' text values.
@@ -69439,7 +68872,9 @@ var SurveyModel = /** @class */ (function (_super) {
69439
68872
  configurable: true
69440
68873
  });
69441
68874
  /**
69442
- * Sets the input focus to the first question with the input field.
68875
+ * Focuses the first question on the current page.
68876
+ * @see focusQuestion
68877
+ * @see focusFirstQuestionAutomatic
69443
68878
  */
69444
68879
  SurveyModel.prototype.focusFirstQuestion = function () {
69445
68880
  if (this.isFocusingQuestion)
@@ -71443,6 +70878,9 @@ var SurveyModel = /** @class */ (function (_super) {
71443
70878
  };
71444
70879
  /**
71445
70880
  * Creates a new page and adds it to the survey.
70881
+ *
70882
+ * If you want to switch a survey to the newly added page, assign its index to the [`currentPageNo`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#currentPageNo) property or assign the entire page to the [`currentPage`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#currentPage) property.
70883
+ *
71446
70884
  * @param name A page name. If you do not specify this parameter, it will be generated automatically.
71447
70885
  * @param index An index at which to insert the page. If you do not specify this parameter, the page will be added to the end.
71448
70886
  * @returns The created and added page.
@@ -73323,9 +72761,11 @@ var SurveyModel = /** @class */ (function (_super) {
73323
72761
  this.isMovingQuestion = false;
73324
72762
  };
73325
72763
  /**
73326
- * Focus question by its name. If needed change the current page on the page where question is located.
73327
- * Function returns false if there is no question with this name or question is invisible, otherwise it returns true.
73328
- * @param name question name
72764
+ * Focuses a question with a specified name. Switches the current page if needed.
72765
+ * @param name A question name.
72766
+ * @returns `false` if the survey does not contain a question with a specified name or this question is hidden; otherwise, `true`.
72767
+ * @see focusFirstQuestion
72768
+ * @see focusFirstQuestionAutomatic
73329
72769
  */
73330
72770
  SurveyModel.prototype.focusQuestion = function (name) {
73331
72771
  var _this = this;
@@ -73475,7 +72915,7 @@ var SurveyModel = /** @class */ (function (_super) {
73475
72915
  }
73476
72916
  }
73477
72917
  }
73478
- else if (!this.isShowingPreview && isStrCiEqual(layoutElement.id, "toc-navigation") && this.showTOC) {
72918
+ else if (this.state === "running" && isStrCiEqual(layoutElement.id, "toc-navigation") && this.showTOC) {
73479
72919
  if (container === "left") {
73480
72920
  if (["left", "both"].indexOf(this.tocLocation) !== -1) {
73481
72921
  containerLayoutElements.push(layoutElement);
@@ -73718,6 +73158,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
73718
73158
  choices: ["onBlur", "onTyping"],
73719
73159
  },
73720
73160
  { name: "autoGrowComment:boolean", default: false },
73161
+ { name: "allowResizeComment:boolean", default: true },
73721
73162
  { name: "startSurveyText", serializationProperty: "locStartSurveyText" },
73722
73163
  { name: "pagePrevText", serializationProperty: "locPagePrevText" },
73723
73164
  { name: "pageNextText", serializationProperty: "locPageNextText" },
@@ -74238,7 +73679,7 @@ function createTOCListModel(survey) {
74238
73679
  }
74239
73680
  return tryNavigateToPage(survey, index);
74240
73681
  },
74241
- visible: new _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"](function () { return page.isVisible; })
73682
+ visible: new _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"](function () { return page.isVisible && !page.isStartPage; })
74242
73683
  });
74243
73684
  });
74244
73685
  var listModel = new _list__WEBPACK_IMPORTED_MODULE_2__["ListModel"](items, function (item) {
@@ -75617,9 +75058,7 @@ var PopupUtils = /** @class */ (function () {
75617
75058
  __webpack_require__.r(__webpack_exports__);
75618
75059
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsivityManager", function() { return ResponsivityManager; });
75619
75060
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VerticalResponsivityManager", function() { return VerticalResponsivityManager; });
75620
- /* harmony import */ var timers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! timers */ "./node_modules/timers-browserify/main.js");
75621
- /* harmony import */ var timers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(timers__WEBPACK_IMPORTED_MODULE_0__);
75622
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/utils/utils.ts");
75061
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./src/utils/utils.ts");
75623
75062
  var __extends = (undefined && undefined.__extends) || (function () {
75624
75063
  var extendStatics = function (d, b) {
75625
75064
  extendStatics = Object.setPrototypeOf ||
@@ -75636,7 +75075,6 @@ var __extends = (undefined && undefined.__extends) || (function () {
75636
75075
  };
75637
75076
  })();
75638
75077
 
75639
-
75640
75078
  var ResponsivityManager = /** @class */ (function () {
75641
75079
  function ResponsivityManager(container, model, itemsSelector, dotsItemSize) {
75642
75080
  var _this = this;
@@ -75658,7 +75096,7 @@ var ResponsivityManager = /** @class */ (function () {
75658
75096
  if (isResetInitialized)
75659
75097
  _this.isInitialized = false;
75660
75098
  else
75661
- Object(timers__WEBPACK_IMPORTED_MODULE_0__["setTimeout"])(function () { _this.process(); }, 1);
75099
+ setTimeout(function () { _this.process(); }, 1);
75662
75100
  };
75663
75101
  if (typeof ResizeObserver !== "undefined") {
75664
75102
  this.resizeObserver = new ResizeObserver(function (_) { return _this.process(); });
@@ -75708,7 +75146,7 @@ var ResponsivityManager = /** @class */ (function () {
75708
75146
  };
75709
75147
  Object.defineProperty(ResponsivityManager.prototype, "isContainerVisible", {
75710
75148
  get: function () {
75711
- return Object(_utils__WEBPACK_IMPORTED_MODULE_1__["isContainerVisible"])(this.container);
75149
+ return Object(_utils__WEBPACK_IMPORTED_MODULE_0__["isContainerVisible"])(this.container);
75712
75150
  },
75713
75151
  enumerable: false,
75714
75152
  configurable: true
@@ -76048,8 +75486,14 @@ function doKey2ClickUp(evt, options) {
76048
75486
  if (!!element.classList && !element.classList.contains(keyFocusedClassName)) {
76049
75487
  element.classList.add(keyFocusedClassName);
76050
75488
  }
75489
+ return;
75490
+ }
75491
+ if (options) {
75492
+ if (!options.__keyDownReceived)
75493
+ return;
75494
+ options.__keyDownReceived = false;
76051
75495
  }
76052
- else if (char === 13 || char === 32) {
75496
+ if (char === 13 || char === 32) {
76053
75497
  if (element.click)
76054
75498
  element.click();
76055
75499
  }
@@ -76060,6 +75504,8 @@ function doKey2ClickUp(evt, options) {
76060
75504
  }
76061
75505
  function doKey2ClickDown(evt, options) {
76062
75506
  if (options === void 0) { options = { processEsc: true }; }
75507
+ if (options)
75508
+ options.__keyDownReceived = true;
76063
75509
  if (!!evt.target && evt.target["contentEditable"] === "true") {
76064
75510
  return;
76065
75511
  }