survey-core 1.9.126 → 1.9.128

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/defaultV2.css +313 -79
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +313 -79
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +5 -1
  8. package/i18n/arabic.js.map +1 -1
  9. package/i18n/arabic.min.js +2 -2
  10. package/i18n/basque.js +5 -1
  11. package/i18n/basque.js.map +1 -1
  12. package/i18n/basque.min.js +2 -2
  13. package/i18n/bulgarian.js +5 -1
  14. package/i18n/bulgarian.js.map +1 -1
  15. package/i18n/bulgarian.min.js +2 -2
  16. package/i18n/catalan.js +5 -1
  17. package/i18n/catalan.js.map +1 -1
  18. package/i18n/catalan.min.js +2 -2
  19. package/i18n/croatian.js +5 -1
  20. package/i18n/croatian.js.map +1 -1
  21. package/i18n/croatian.min.js +2 -2
  22. package/i18n/czech.js +5 -1
  23. package/i18n/czech.js.map +1 -1
  24. package/i18n/czech.min.js +2 -2
  25. package/i18n/danish.js +5 -1
  26. package/i18n/danish.js.map +1 -1
  27. package/i18n/danish.min.js +2 -2
  28. package/i18n/dutch.js +5 -1
  29. package/i18n/dutch.js.map +1 -1
  30. package/i18n/dutch.min.js +2 -2
  31. package/i18n/english.js +3 -1
  32. package/i18n/english.js.map +1 -1
  33. package/i18n/english.min.js +2 -2
  34. package/i18n/estonian.js +5 -1
  35. package/i18n/estonian.js.map +1 -1
  36. package/i18n/estonian.min.js +2 -2
  37. package/i18n/finnish.js +5 -1
  38. package/i18n/finnish.js.map +1 -1
  39. package/i18n/finnish.min.js +2 -2
  40. package/i18n/french.js +5 -1
  41. package/i18n/french.js.map +1 -1
  42. package/i18n/french.min.js +2 -2
  43. package/i18n/georgian.js +5 -1
  44. package/i18n/georgian.js.map +1 -1
  45. package/i18n/georgian.min.js +2 -2
  46. package/i18n/german.js +5 -1
  47. package/i18n/german.js.map +1 -1
  48. package/i18n/german.min.js +2 -2
  49. package/i18n/greek.js +5 -1
  50. package/i18n/greek.js.map +1 -1
  51. package/i18n/greek.min.js +2 -2
  52. package/i18n/hebrew.js +5 -1
  53. package/i18n/hebrew.js.map +1 -1
  54. package/i18n/hebrew.min.js +2 -2
  55. package/i18n/hindi.js +5 -2
  56. package/i18n/hindi.js.map +1 -1
  57. package/i18n/hindi.min.js +2 -2
  58. package/i18n/hungarian.js +5 -1
  59. package/i18n/hungarian.js.map +1 -1
  60. package/i18n/hungarian.min.js +2 -2
  61. package/i18n/icelandic.js +5 -1
  62. package/i18n/icelandic.js.map +1 -1
  63. package/i18n/icelandic.min.js +2 -2
  64. package/i18n/index.js +189 -13
  65. package/i18n/index.js.map +1 -1
  66. package/i18n/index.min.js +2 -2
  67. package/i18n/indonesian.js +5 -1
  68. package/i18n/indonesian.js.map +1 -1
  69. package/i18n/indonesian.min.js +2 -2
  70. package/i18n/italian.js +5 -1
  71. package/i18n/italian.js.map +1 -1
  72. package/i18n/italian.min.js +2 -2
  73. package/i18n/japanese.js +5 -1
  74. package/i18n/japanese.js.map +1 -1
  75. package/i18n/japanese.min.js +2 -2
  76. package/i18n/kazakh.js +5 -1
  77. package/i18n/kazakh.js.map +1 -1
  78. package/i18n/kazakh.min.js +2 -2
  79. package/i18n/korean.js +5 -1
  80. package/i18n/korean.js.map +1 -1
  81. package/i18n/korean.min.js +2 -2
  82. package/i18n/latvian.js +5 -1
  83. package/i18n/latvian.js.map +1 -1
  84. package/i18n/latvian.min.js +2 -2
  85. package/i18n/lithuanian.js +5 -1
  86. package/i18n/lithuanian.js.map +1 -1
  87. package/i18n/lithuanian.min.js +2 -2
  88. package/i18n/macedonian.js +5 -1
  89. package/i18n/macedonian.js.map +1 -1
  90. package/i18n/macedonian.min.js +2 -2
  91. package/i18n/malay.js +5 -1
  92. package/i18n/malay.js.map +1 -1
  93. package/i18n/malay.min.js +2 -2
  94. package/i18n/nl-BE.js +5 -1
  95. package/i18n/nl-BE.js.map +1 -1
  96. package/i18n/nl-BE.min.js +2 -2
  97. package/i18n/norwegian.js +5 -1
  98. package/i18n/norwegian.js.map +1 -1
  99. package/i18n/norwegian.min.js +2 -2
  100. package/i18n/persian.js +5 -1
  101. package/i18n/persian.js.map +1 -1
  102. package/i18n/persian.min.js +2 -2
  103. package/i18n/polish.js +5 -1
  104. package/i18n/polish.js.map +1 -1
  105. package/i18n/polish.min.js +2 -2
  106. package/i18n/portuguese-br.js +5 -1
  107. package/i18n/portuguese-br.js.map +1 -1
  108. package/i18n/portuguese-br.min.js +2 -2
  109. package/i18n/portuguese.js +5 -1
  110. package/i18n/portuguese.js.map +1 -1
  111. package/i18n/portuguese.min.js +2 -2
  112. package/i18n/romanian.js +5 -1
  113. package/i18n/romanian.js.map +1 -1
  114. package/i18n/romanian.min.js +2 -2
  115. package/i18n/russian.js +5 -5
  116. package/i18n/russian.js.map +1 -1
  117. package/i18n/russian.min.js +2 -2
  118. package/i18n/serbian.js +5 -1
  119. package/i18n/serbian.js.map +1 -1
  120. package/i18n/serbian.min.js +2 -2
  121. package/i18n/simplified-chinese.js +5 -1
  122. package/i18n/simplified-chinese.js.map +1 -1
  123. package/i18n/simplified-chinese.min.js +2 -2
  124. package/i18n/slovak.js +5 -1
  125. package/i18n/slovak.js.map +1 -1
  126. package/i18n/slovak.min.js +2 -2
  127. package/i18n/spanish.js +5 -1
  128. package/i18n/spanish.js.map +1 -1
  129. package/i18n/spanish.min.js +2 -2
  130. package/i18n/swahili.js +5 -1
  131. package/i18n/swahili.js.map +1 -1
  132. package/i18n/swahili.min.js +2 -2
  133. package/i18n/swedish.js +5 -1
  134. package/i18n/swedish.js.map +1 -1
  135. package/i18n/swedish.min.js +2 -2
  136. package/i18n/tajik.js +1 -1
  137. package/i18n/tajik.min.js +1 -1
  138. package/i18n/telugu.js +5 -2
  139. package/i18n/telugu.js.map +1 -1
  140. package/i18n/telugu.min.js +2 -2
  141. package/i18n/thai.js +5 -2
  142. package/i18n/thai.js.map +1 -1
  143. package/i18n/thai.min.js +2 -2
  144. package/i18n/traditional-chinese.js +5 -2
  145. package/i18n/traditional-chinese.js.map +1 -1
  146. package/i18n/traditional-chinese.min.js +2 -2
  147. package/i18n/turkish.js +5 -2
  148. package/i18n/turkish.js.map +1 -1
  149. package/i18n/turkish.min.js +2 -2
  150. package/i18n/ukrainian.js +5 -2
  151. package/i18n/ukrainian.js.map +1 -1
  152. package/i18n/ukrainian.min.js +2 -2
  153. package/i18n/urdu.js +5 -2
  154. package/i18n/urdu.js.map +1 -1
  155. package/i18n/urdu.min.js +2 -2
  156. package/i18n/vietnamese.js +5 -2
  157. package/i18n/vietnamese.js.map +1 -1
  158. package/i18n/vietnamese.min.js +2 -2
  159. package/i18n/welsh.js +5 -2
  160. package/i18n/welsh.js.map +1 -1
  161. package/i18n/welsh.min.js +2 -2
  162. package/modern.css +62 -4
  163. package/modern.css.map +1 -1
  164. package/modern.fontless.css +62 -4
  165. package/modern.fontless.css.map +1 -1
  166. package/modern.fontless.min.css +2 -2
  167. package/modern.min.css +2 -2
  168. package/package.json +1 -1
  169. package/plugins/bootstrap-integration.js +1 -1
  170. package/plugins/bootstrap-integration.min.js +1 -1
  171. package/plugins/bootstrap-material-integration.js +1 -1
  172. package/plugins/bootstrap-material-integration.min.js +1 -1
  173. package/survey.core.js +961 -305
  174. package/survey.core.js.map +1 -1
  175. package/survey.core.min.js +3 -3
  176. package/survey.css +31 -4
  177. package/survey.css.map +1 -1
  178. package/survey.i18n.js +189 -13
  179. package/survey.i18n.js.map +1 -1
  180. package/survey.i18n.min.js +2 -2
  181. package/survey.min.css +2 -2
  182. package/themes/borderless-dark-panelless.js +2 -1
  183. package/themes/borderless-dark-panelless.js.map +1 -1
  184. package/themes/borderless-dark-panelless.min.js +2 -2
  185. package/themes/borderless-dark.js +2 -1
  186. package/themes/borderless-dark.js.map +1 -1
  187. package/themes/borderless-dark.min.js +2 -2
  188. package/themes/borderless-light-panelless..js +2 -1
  189. package/themes/borderless-light-panelless..js.map +1 -1
  190. package/themes/borderless-light-panelless..min.js +2 -2
  191. package/themes/borderless-light.js +2 -1
  192. package/themes/borderless-light.js.map +1 -1
  193. package/themes/borderless-light.min.js +2 -2
  194. package/themes/contrast-dark-panelless.js +2 -1
  195. package/themes/contrast-dark-panelless.js.map +1 -1
  196. package/themes/contrast-dark-panelless.min.js +2 -2
  197. package/themes/contrast-dark.js +2 -1
  198. package/themes/contrast-dark.js.map +1 -1
  199. package/themes/contrast-dark.min.js +2 -2
  200. package/themes/contrast-light-panelless.js +2 -1
  201. package/themes/contrast-light-panelless.js.map +1 -1
  202. package/themes/contrast-light-panelless.min.js +2 -2
  203. package/themes/contrast-light.js +2 -1
  204. package/themes/contrast-light.js.map +1 -1
  205. package/themes/contrast-light.min.js +2 -2
  206. package/themes/default-dark-panelless.js +2 -1
  207. package/themes/default-dark-panelless.js.map +1 -1
  208. package/themes/default-dark-panelless.min.js +2 -2
  209. package/themes/default-dark.js +2 -1
  210. package/themes/default-dark.js.map +1 -1
  211. package/themes/default-dark.min.js +2 -2
  212. package/themes/default-light-panelless.js +2 -1
  213. package/themes/default-light-panelless.js.map +1 -1
  214. package/themes/default-light-panelless.min.js +2 -2
  215. package/themes/default-light.js +2 -1
  216. package/themes/default-light.js.map +1 -1
  217. package/themes/default-light.min.js +2 -2
  218. package/themes/doubleborder-dark-panelless.js +2 -1
  219. package/themes/doubleborder-dark-panelless.js.map +1 -1
  220. package/themes/doubleborder-dark-panelless.min.js +2 -2
  221. package/themes/doubleborder-dark.js +2 -1
  222. package/themes/doubleborder-dark.js.map +1 -1
  223. package/themes/doubleborder-dark.min.js +2 -2
  224. package/themes/doubleborder-light-panelles.js +2 -1
  225. package/themes/doubleborder-light-panelles.js.map +1 -1
  226. package/themes/doubleborder-light-panelles.min.js +2 -2
  227. package/themes/doubleborder-light.js +2 -1
  228. package/themes/doubleborder-light.js.map +1 -1
  229. package/themes/doubleborder-light.min.js +2 -2
  230. package/themes/flat-dark-panelless.js +2 -1
  231. package/themes/flat-dark-panelless.js.map +1 -1
  232. package/themes/flat-dark-panelless.min.js +2 -2
  233. package/themes/flat-dark.js +2 -1
  234. package/themes/flat-dark.js.map +1 -1
  235. package/themes/flat-dark.min.js +2 -2
  236. package/themes/flat-light-panelless.js +2 -1
  237. package/themes/flat-light-panelless.js.map +1 -1
  238. package/themes/flat-light-panelless.min.js +2 -2
  239. package/themes/flat-light.js +2 -1
  240. package/themes/flat-light.js.map +1 -1
  241. package/themes/flat-light.min.js +2 -2
  242. package/themes/index.js +41 -1
  243. package/themes/index.js.map +1 -1
  244. package/themes/index.min.js +2 -2
  245. package/themes/layered-dark-panelless.js +2 -1
  246. package/themes/layered-dark-panelless.js.map +1 -1
  247. package/themes/layered-dark-panelless.min.js +2 -2
  248. package/themes/layered-dark.js +2 -1
  249. package/themes/layered-dark.js.map +1 -1
  250. package/themes/layered-dark.min.js +2 -2
  251. package/themes/layered-light-panelless.js +2 -1
  252. package/themes/layered-light-panelless.js.map +1 -1
  253. package/themes/layered-light-panelless.min.js +2 -2
  254. package/themes/layered-light.js +2 -1
  255. package/themes/layered-light.js.map +1 -1
  256. package/themes/layered-light.min.js +2 -2
  257. package/themes/plain-dark-panelless.js +2 -1
  258. package/themes/plain-dark-panelless.js.map +1 -1
  259. package/themes/plain-dark-panelless.min.js +2 -2
  260. package/themes/plain-dark.js +2 -1
  261. package/themes/plain-dark.js.map +1 -1
  262. package/themes/plain-dark.min.js +2 -2
  263. package/themes/plain-light-panelless.js +2 -1
  264. package/themes/plain-light-panelless.js.map +1 -1
  265. package/themes/plain-light-panelless.min.js +2 -2
  266. package/themes/plain-light.js +2 -1
  267. package/themes/plain-light.js.map +1 -1
  268. package/themes/plain-light.min.js +2 -2
  269. package/themes/sharp-dark-panelless.js +2 -1
  270. package/themes/sharp-dark-panelless.js.map +1 -1
  271. package/themes/sharp-dark-panelless.min.js +2 -2
  272. package/themes/sharp-dark.js +2 -1
  273. package/themes/sharp-dark.js.map +1 -1
  274. package/themes/sharp-dark.min.js +2 -2
  275. package/themes/sharp-light-panelless.js +2 -1
  276. package/themes/sharp-light-panelless.js.map +1 -1
  277. package/themes/sharp-light-panelless.min.js +2 -2
  278. package/themes/sharp-light.js +2 -1
  279. package/themes/sharp-light.js.map +1 -1
  280. package/themes/sharp-light.min.js +2 -2
  281. package/themes/solid-dark-panelless.js +2 -1
  282. package/themes/solid-dark-panelless.js.map +1 -1
  283. package/themes/solid-dark-panelless.min.js +2 -2
  284. package/themes/solid-dark.js +2 -1
  285. package/themes/solid-dark.js.map +1 -1
  286. package/themes/solid-dark.min.js +2 -2
  287. package/themes/solid-light-panelless.js +2 -1
  288. package/themes/solid-light-panelless.js.map +1 -1
  289. package/themes/solid-light-panelless.min.js +2 -2
  290. package/themes/solid-light.js +2 -1
  291. package/themes/solid-light.js.map +1 -1
  292. package/themes/solid-light.min.js +2 -2
  293. package/themes/three-dimensional-dark-panelless.js +2 -1
  294. package/themes/three-dimensional-dark-panelless.js.map +1 -1
  295. package/themes/three-dimensional-dark-panelless.min.js +2 -2
  296. package/themes/three-dimensional-dark.js +2 -1
  297. package/themes/three-dimensional-dark.js.map +1 -1
  298. package/themes/three-dimensional-dark.min.js +2 -2
  299. package/themes/three-dimensional-light-panelless.js +2 -1
  300. package/themes/three-dimensional-light-panelless.js.map +1 -1
  301. package/themes/three-dimensional-light-panelless.min.js +2 -2
  302. package/themes/three-dimensional-light.js +2 -1
  303. package/themes/three-dimensional-light.js.map +1 -1
  304. package/themes/three-dimensional-light.min.js +2 -2
  305. package/themes/typings/borderless-dark-panelless.d.ts +2 -0
  306. package/themes/typings/borderless-dark.d.ts +2 -0
  307. package/themes/typings/borderless-light-panelless.d.ts +2 -0
  308. package/themes/typings/borderless-light.d.ts +2 -0
  309. package/themes/typings/contrast-dark-panelless.d.ts +2 -0
  310. package/themes/typings/contrast-dark.d.ts +2 -0
  311. package/themes/typings/contrast-light-panelless.d.ts +2 -0
  312. package/themes/typings/contrast-light.d.ts +2 -0
  313. package/themes/typings/default-dark-panelless.d.ts +2 -0
  314. package/themes/typings/default-dark.d.ts +2 -0
  315. package/themes/typings/default-light-panelless.d.ts +2 -0
  316. package/themes/typings/default-light.d.ts +2 -0
  317. package/themes/typings/doubleborder-dark-panelless.d.ts +2 -0
  318. package/themes/typings/doubleborder-dark.d.ts +2 -0
  319. package/themes/typings/doubleborder-light-panelless.d.ts +2 -0
  320. package/themes/typings/doubleborder-light.d.ts +2 -0
  321. package/themes/typings/flat-dark-panelless.d.ts +2 -0
  322. package/themes/typings/flat-dark.d.ts +2 -0
  323. package/themes/typings/flat-light-panelless.d.ts +2 -0
  324. package/themes/typings/flat-light.d.ts +2 -0
  325. package/themes/typings/index.d.ts +40 -0
  326. package/themes/typings/layered-dark-panelless.d.ts +2 -0
  327. package/themes/typings/layered-dark.d.ts +2 -0
  328. package/themes/typings/layered-light-panelless.d.ts +2 -0
  329. package/themes/typings/layered-light.d.ts +2 -0
  330. package/themes/typings/plain-dark-panelless.d.ts +2 -0
  331. package/themes/typings/plain-dark.d.ts +2 -0
  332. package/themes/typings/plain-light-panelless.d.ts +2 -0
  333. package/themes/typings/plain-light.d.ts +2 -0
  334. package/themes/typings/sharp-dark-panelless.d.ts +2 -0
  335. package/themes/typings/sharp-dark.d.ts +2 -0
  336. package/themes/typings/sharp-light-panelless.d.ts +2 -0
  337. package/themes/typings/sharp-light.d.ts +2 -0
  338. package/themes/typings/solid-dark-panelless.d.ts +2 -0
  339. package/themes/typings/solid-dark.d.ts +2 -0
  340. package/themes/typings/solid-light-panelless.d.ts +2 -0
  341. package/themes/typings/solid-light.d.ts +2 -0
  342. package/themes/typings/threedimensional-dark-panelless.d.ts +2 -0
  343. package/themes/typings/threedimensional-dark.d.ts +2 -0
  344. package/themes/typings/threedimensional-light-panelless.d.ts +2 -0
  345. package/themes/typings/threedimensional-light.d.ts +2 -0
  346. package/ts3.4/themes/typings/borderless-dark-panelless.d.ts +2 -0
  347. package/ts3.4/themes/typings/borderless-dark.d.ts +2 -0
  348. package/ts3.4/themes/typings/borderless-light-panelless.d.ts +2 -0
  349. package/ts3.4/themes/typings/borderless-light.d.ts +2 -0
  350. package/ts3.4/themes/typings/contrast-dark-panelless.d.ts +2 -0
  351. package/ts3.4/themes/typings/contrast-dark.d.ts +2 -0
  352. package/ts3.4/themes/typings/contrast-light-panelless.d.ts +2 -0
  353. package/ts3.4/themes/typings/contrast-light.d.ts +2 -0
  354. package/ts3.4/themes/typings/default-dark-panelless.d.ts +2 -0
  355. package/ts3.4/themes/typings/default-dark.d.ts +2 -0
  356. package/ts3.4/themes/typings/default-light-panelless.d.ts +2 -0
  357. package/ts3.4/themes/typings/default-light.d.ts +2 -0
  358. package/ts3.4/themes/typings/doubleborder-dark-panelless.d.ts +2 -0
  359. package/ts3.4/themes/typings/doubleborder-dark.d.ts +2 -0
  360. package/ts3.4/themes/typings/doubleborder-light-panelless.d.ts +2 -0
  361. package/ts3.4/themes/typings/doubleborder-light.d.ts +2 -0
  362. package/ts3.4/themes/typings/flat-dark-panelless.d.ts +2 -0
  363. package/ts3.4/themes/typings/flat-dark.d.ts +2 -0
  364. package/ts3.4/themes/typings/flat-light-panelless.d.ts +2 -0
  365. package/ts3.4/themes/typings/flat-light.d.ts +2 -0
  366. package/ts3.4/themes/typings/index.d.ts +40 -0
  367. package/ts3.4/themes/typings/layered-dark-panelless.d.ts +2 -0
  368. package/ts3.4/themes/typings/layered-dark.d.ts +2 -0
  369. package/ts3.4/themes/typings/layered-light-panelless.d.ts +2 -0
  370. package/ts3.4/themes/typings/layered-light.d.ts +2 -0
  371. package/ts3.4/themes/typings/plain-dark-panelless.d.ts +2 -0
  372. package/ts3.4/themes/typings/plain-dark.d.ts +2 -0
  373. package/ts3.4/themes/typings/plain-light-panelless.d.ts +2 -0
  374. package/ts3.4/themes/typings/plain-light.d.ts +2 -0
  375. package/ts3.4/themes/typings/sharp-dark-panelless.d.ts +2 -0
  376. package/ts3.4/themes/typings/sharp-dark.d.ts +2 -0
  377. package/ts3.4/themes/typings/sharp-light-panelless.d.ts +2 -0
  378. package/ts3.4/themes/typings/sharp-light.d.ts +2 -0
  379. package/ts3.4/themes/typings/solid-dark-panelless.d.ts +2 -0
  380. package/ts3.4/themes/typings/solid-dark.d.ts +2 -0
  381. package/ts3.4/themes/typings/solid-light-panelless.d.ts +2 -0
  382. package/ts3.4/themes/typings/solid-light.d.ts +2 -0
  383. package/ts3.4/themes/typings/threedimensional-dark-panelless.d.ts +2 -0
  384. package/ts3.4/themes/typings/threedimensional-dark.d.ts +2 -0
  385. package/ts3.4/themes/typings/threedimensional-light-panelless.d.ts +2 -0
  386. package/ts3.4/themes/typings/threedimensional-light.d.ts +2 -0
  387. package/ts3.4/typings/base-interfaces.d.ts +4 -0
  388. package/ts3.4/typings/base.d.ts +2 -2
  389. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +8 -0
  390. package/ts3.4/typings/dropdownListModel.d.ts +1 -0
  391. package/ts3.4/typings/entries/chunks/model.d.ts +1 -1
  392. package/ts3.4/typings/helpers.d.ts +1 -0
  393. package/ts3.4/typings/jsonobject.d.ts +12 -4
  394. package/ts3.4/typings/list.d.ts +3 -0
  395. package/ts3.4/typings/localization/english.d.ts +2 -0
  396. package/ts3.4/typings/page.d.ts +2 -2
  397. package/ts3.4/typings/progress-buttons.d.ts +42 -0
  398. package/ts3.4/typings/question_baseselect.d.ts +55 -2
  399. package/ts3.4/typings/question_boolean.d.ts +2 -0
  400. package/ts3.4/typings/question_checkbox.d.ts +3 -2
  401. package/ts3.4/typings/question_custom.d.ts +19 -0
  402. package/ts3.4/typings/question_dropdown.d.ts +14 -0
  403. package/ts3.4/typings/question_imagepicker.d.ts +4 -2
  404. package/ts3.4/typings/question_matrix.d.ts +5 -0
  405. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +0 -1
  406. package/ts3.4/typings/question_ranking.d.ts +4 -0
  407. package/ts3.4/typings/settings.d.ts +25 -4
  408. package/ts3.4/typings/survey-events-api.d.ts +14 -0
  409. package/ts3.4/typings/survey.d.ts +41 -17
  410. package/ts3.4/typings/surveyStrings.d.ts +2 -0
  411. package/ts3.4/typings/themes.d.ts +2 -2
  412. package/ts3.4/typings/trigger.d.ts +2 -0
  413. package/ts3.4/typings/utils/popup.d.ts +1 -4
  414. package/ts3.4/typings/utils/utils.d.ts +2 -2
  415. package/typings/base-interfaces.d.ts +4 -0
  416. package/typings/base.d.ts +2 -2
  417. package/typings/defaultCss/defaultV2Css.d.ts +8 -0
  418. package/typings/dropdownListModel.d.ts +1 -0
  419. package/typings/entries/chunks/model.d.ts +1 -1
  420. package/typings/helpers.d.ts +1 -0
  421. package/typings/jsonobject.d.ts +12 -4
  422. package/typings/list.d.ts +3 -0
  423. package/typings/localization/english.d.ts +2 -0
  424. package/typings/page.d.ts +2 -2
  425. package/typings/progress-buttons.d.ts +42 -0
  426. package/typings/question_baseselect.d.ts +60 -2
  427. package/typings/question_boolean.d.ts +2 -0
  428. package/typings/question_checkbox.d.ts +3 -2
  429. package/typings/question_custom.d.ts +19 -0
  430. package/typings/question_dropdown.d.ts +14 -0
  431. package/typings/question_imagepicker.d.ts +4 -2
  432. package/typings/question_matrix.d.ts +5 -0
  433. package/typings/question_matrixdropdowncolumn.d.ts +0 -1
  434. package/typings/question_ranking.d.ts +4 -0
  435. package/typings/settings.d.ts +25 -4
  436. package/typings/survey-events-api.d.ts +14 -0
  437. package/typings/survey.d.ts +41 -17
  438. package/typings/surveyProgressButtons.d.ts +9 -9
  439. package/typings/surveyStrings.d.ts +2 -0
  440. package/typings/themes.d.ts +2 -2
  441. package/typings/trigger.d.ts +2 -0
  442. package/typings/utils/popup.d.ts +1 -4
  443. package/typings/utils/utils.d.ts +2 -2
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.9.126
2
+ * surveyjs - Survey JavaScript library v1.9.128
3
3
  * Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -2041,8 +2041,8 @@ var Base = /** @class */ (function () {
2041
2041
  * Returns a JSON object that corresponds to the current SurveyJS object.
2042
2042
  * @see fromJSON
2043
2043
  */
2044
- Base.prototype.toJSON = function () {
2045
- return new _jsonobject__WEBPACK_IMPORTED_MODULE_2__["JsonObject"]().toJsonObject(this);
2044
+ Base.prototype.toJSON = function (options) {
2045
+ return new _jsonobject__WEBPACK_IMPORTED_MODULE_2__["JsonObject"]().toJsonObject(this, options);
2046
2046
  };
2047
2047
  /**
2048
2048
  * Assigns a new configuration to the current SurveyJS object. This configuration is taken from a passed JSON object.
@@ -5366,6 +5366,7 @@ var surveyCss = {
5366
5366
  var defaultV2Css = {
5367
5367
  root: "sd-root-modern",
5368
5368
  rootMobile: "sd-root-modern--mobile",
5369
+ rootAnimationDisabled: "sd-root-modern--animation-disabled",
5369
5370
  rootReadOnly: "sd-root--readonly",
5370
5371
  rootCompact: "sd-root--compact",
5371
5372
  rootFitToContainer: "sd-root-modern--full-container",
@@ -5483,8 +5484,13 @@ var defaultV2Css = {
5483
5484
  progressBottom: "sd-body__progress--bottom",
5484
5485
  progressBar: "sd-progress__bar",
5485
5486
  progressText: "sd-progress__text",
5487
+ progressButtonsRoot: "sd-progress-buttons",
5488
+ progressButtonsNumbered: "sd-progress-buttons--numbered",
5486
5489
  progressButtonsContainerCenter: "sd-progress-buttons__container-center",
5487
5490
  progressButtonsContainer: "sd-progress-buttons__container",
5491
+ progressButtonsConnector: "sd-progress-buttons__connector",
5492
+ progressButtonsHeader: "sd-progress-buttons__header",
5493
+ progressButtonsFooter: "sd-progress-buttons__footer",
5488
5494
  progressButtonsImageButtonLeft: "sd-progress-buttons__image-button-left",
5489
5495
  progressButtonsImageButtonRight: "sd-progress-buttons__image-button-right",
5490
5496
  progressButtonsImageButtonHidden: "sd-progress-buttons__image-button--hidden",
@@ -5674,6 +5680,7 @@ var defaultV2Css = {
5674
5680
  small: "sd-row__question--small",
5675
5681
  controlDisabled: "sd-input--disabled",
5676
5682
  constrolWithCharacterCounter: "sd-text__character-counter",
5683
+ characterCounterBig: "sd-text__character-counter--big",
5677
5684
  content: "sd-text__content sd-question__content",
5678
5685
  remainingCharacterCounter: "sd-remaining-character-counter",
5679
5686
  onError: "sd-input--error"
@@ -5828,6 +5835,7 @@ var defaultV2Css = {
5828
5835
  noHeader: "sd-table--no-header",
5829
5836
  hasFooter: "sd-table--has-footer",
5830
5837
  tableWrapper: "sd-table-wrapper",
5838
+ rootAlternateRows: "sd-table--alternate-rows",
5831
5839
  content: "sd-matrixdynamic__content sd-question__content",
5832
5840
  cell: "sd-table__cell",
5833
5841
  row: "sd-table__row",
@@ -5874,7 +5882,7 @@ var defaultV2Css = {
5874
5882
  rating: {
5875
5883
  rootDropdown: "sd-scrollable-container sd-scrollable-container--compact sd-selectbase",
5876
5884
  root: "sd-scrollable-container sd-rating",
5877
- rootWrappable: "sd-scrollable-container sd-rating sd-rating--wrappable",
5885
+ rootWrappable: "sd-rating--wrappable",
5878
5886
  rootLabelsTop: "sd-rating--labels-top",
5879
5887
  rootLabelsBottom: "sd-rating--labels-bottom",
5880
5888
  rootLabelsDiagonal: "sd-rating--labels-diagonal",
@@ -7765,17 +7773,20 @@ var DragDropRankingSelectToRank = /** @class */ (function (_super) {
7765
7773
  var rankingChoices = questionModel.rankingChoices;
7766
7774
  var unRankingChoices = questionModel.unRankingChoices;
7767
7775
  var item = unRankingChoices[fromIndex];
7776
+ questionModel.isValueSetByUser = true;
7768
7777
  rankingChoices.splice(toIndex, 0, item);
7769
7778
  questionModel.setPropertyValue("rankingChoices", rankingChoices);
7770
7779
  };
7771
7780
  DragDropRankingSelectToRank.prototype.unselectFromRank = function (questionModel, fromIndex, toIndex) {
7772
7781
  var rankingChoices = questionModel.rankingChoices;
7782
+ questionModel.isValueSetByUser = true;
7773
7783
  rankingChoices.splice(fromIndex, 1);
7774
7784
  questionModel.setPropertyValue("rankingChoices", rankingChoices);
7775
7785
  };
7776
7786
  DragDropRankingSelectToRank.prototype.reorderRankedItem = function (questionModel, fromIndex, toIndex) {
7777
7787
  var rankingChoices = questionModel.rankingChoices;
7778
7788
  var item = rankingChoices[fromIndex];
7789
+ questionModel.isValueSetByUser = true;
7779
7790
  rankingChoices.splice(fromIndex, 1);
7780
7791
  rankingChoices.splice(toIndex, 0, item);
7781
7792
  questionModel.setPropertyValue("rankingChoices", rankingChoices);
@@ -7803,9 +7814,10 @@ __webpack_require__.r(__webpack_exports__);
7803
7814
  /* harmony import */ var _list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./list */ "./src/list.ts");
7804
7815
  /* harmony import */ var _popup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popup */ "./src/popup.ts");
7805
7816
  /* harmony import */ var _question_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./question_dropdown */ "./src/question_dropdown.ts");
7806
- /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
7807
- /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/devices */ "./src/utils/devices.ts");
7808
- /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
7817
+ /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
7818
+ /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
7819
+ /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/devices */ "./src/utils/devices.ts");
7820
+ /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
7809
7821
  var __extends = (undefined && undefined.__extends) || (function () {
7810
7822
  var extendStatics = function (d, b) {
7811
7823
  extendStatics = Object.setPrototypeOf ||
@@ -7836,6 +7848,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
7836
7848
 
7837
7849
 
7838
7850
 
7851
+
7839
7852
  var DropdownListModel = /** @class */ (function (_super) {
7840
7853
  __extends(DropdownListModel, _super);
7841
7854
  function DropdownListModel(question, onSelectionChanged) {
@@ -7845,6 +7858,7 @@ var DropdownListModel = /** @class */ (function (_super) {
7845
7858
  _this.minPageSize = 25;
7846
7859
  _this.loadingItemHeight = 40;
7847
7860
  _this._markdownMode = false;
7861
+ _this.filteredItems = undefined;
7848
7862
  _this.selectedItemSelector = ".sv-list__item--selected";
7849
7863
  _this.itemSelector = ".sv-list__item";
7850
7864
  _this.itemsSettings = { skip: 0, take: 0, totalCount: 0, items: [] };
@@ -7875,7 +7889,7 @@ var DropdownListModel = /** @class */ (function (_super) {
7875
7889
  configurable: true
7876
7890
  });
7877
7891
  DropdownListModel.prototype.getFocusFirstInputSelector = function () {
7878
- if (_utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"]) {
7892
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"]) {
7879
7893
  return this.isValueEmpty(this.question.value) ? this.itemSelector : this.selectedItemSelector;
7880
7894
  }
7881
7895
  else {
@@ -7924,11 +7938,11 @@ var DropdownListModel = /** @class */ (function (_super) {
7924
7938
  DropdownListModel.prototype.createPopup = function () {
7925
7939
  var _this = this;
7926
7940
  this._popupModel = new _popup__WEBPACK_IMPORTED_MODULE_4__["PopupModel"]("sv-list", { model: this.listModel }, "bottom", "center", false);
7927
- this._popupModel.displayMode = _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"] ? "overlay" : "popup";
7941
+ this._popupModel.displayMode = _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"] ? "overlay" : "popup";
7928
7942
  this._popupModel.positionMode = "fixed";
7929
7943
  this._popupModel.isFocusedContainer = false;
7930
- this._popupModel.isFocusedContent = _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"];
7931
- this._popupModel.setWidthByTarget = !_utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"];
7944
+ this._popupModel.isFocusedContent = _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"];
7945
+ this._popupModel.setWidthByTarget = !_utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"];
7932
7946
  this.updatePopupFocusFirstInputSelector();
7933
7947
  this.listModel.registerPropertyChangedHandlers(["showFilter"], function () {
7934
7948
  _this.updatePopupFocusFirstInputSelector();
@@ -7997,6 +8011,14 @@ var DropdownListModel = /** @class */ (function (_super) {
7997
8011
  };
7998
8012
  }
7999
8013
  var res = new _list__WEBPACK_IMPORTED_MODULE_3__["ListModel"](visibleItems, _onSelectionChanged, false, undefined, this.question.choicesLazyLoadEnabled ? this.listModelFilterStringChanged : undefined, this.listElementId);
8014
+ res.setOnTextSearchCallback(function (item, textToSearch) {
8015
+ if (_this.filteredItems)
8016
+ return _this.filteredItems.indexOf(item) >= 0;
8017
+ var textInLow = item.text.toLocaleLowerCase();
8018
+ textInLow = _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].comparator.normalizeTextCallback(textInLow, "filter");
8019
+ var index = textInLow.indexOf(textToSearch.toLocaleLowerCase());
8020
+ return _this.question.searchMode == "startsWith" ? index == 0 : index > -1;
8021
+ });
8000
8022
  res.renderElements = false;
8001
8023
  res.forceShowFilter = true;
8002
8024
  res.areSameItemsCallback = function (item1, item2) {
@@ -8016,7 +8038,7 @@ var DropdownListModel = /** @class */ (function (_super) {
8016
8038
  model.isAllDataLoaded = !this.question.choicesLazyLoadEnabled;
8017
8039
  };
8018
8040
  DropdownListModel.prototype.updateCssClasses = function (popupCssClass, listCssClasses) {
8019
- this.popupModel.cssClass = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__["CssClassBuilder"]().append(popupCssClass).append(this.popupCssClasses).toString();
8041
+ this.popupModel.cssClass = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(popupCssClass).append(this.popupCssClasses).toString();
8020
8042
  this.listModel.cssClasses = listCssClasses;
8021
8043
  };
8022
8044
  DropdownListModel.prototype.resetFilterString = function () {
@@ -8031,8 +8053,12 @@ var DropdownListModel = /** @class */ (function (_super) {
8031
8053
  };
8032
8054
  DropdownListModel.prototype.onSetFilterString = function () {
8033
8055
  var _this = this;
8056
+ this.filteredItems = undefined;
8034
8057
  if (!this.filterString && !this.popupModel.isVisible)
8035
8058
  return;
8059
+ var options = { question: this.question, choices: this.getAvailableItems(), filter: this.filterString, filteredChoices: undefined };
8060
+ this.question.survey.onChoicesSearch.fire(this.question.survey, options);
8061
+ this.filteredItems = options.filteredChoices;
8036
8062
  if (!!this.filterString && !this.popupModel.isVisible) {
8037
8063
  this.popupModel.isVisible = true;
8038
8064
  }
@@ -8207,14 +8233,14 @@ var DropdownListModel = /** @class */ (function (_super) {
8207
8233
  });
8208
8234
  Object.defineProperty(DropdownListModel.prototype, "inputMode", {
8209
8235
  get: function () {
8210
- return _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"] ? "none" : "text";
8236
+ return _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"] ? "none" : "text";
8211
8237
  },
8212
8238
  enumerable: false,
8213
8239
  configurable: true
8214
8240
  });
8215
8241
  DropdownListModel.prototype.setSearchEnabled = function (newValue) {
8216
- this.listModel.searchEnabled = _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"];
8217
- this.listModel.showSearchClearButton = _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"];
8242
+ this.listModel.searchEnabled = _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"];
8243
+ this.listModel.showSearchClearButton = _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"];
8218
8244
  this.searchEnabled = newValue;
8219
8245
  };
8220
8246
  DropdownListModel.prototype.updateItems = function () {
@@ -8353,7 +8379,7 @@ var DropdownListModel = /** @class */ (function (_super) {
8353
8379
  if (event.keyCode === 32 && this.question.searchEnabled) {
8354
8380
  return;
8355
8381
  }
8356
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_8__["doKey2ClickUp"])(event, { processEsc: false, disableTabStop: this.question.isInputReadOnly });
8382
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["doKey2ClickUp"])(event, { processEsc: false, disableTabStop: this.question.isInputReadOnly });
8357
8383
  }
8358
8384
  };
8359
8385
  DropdownListModel.prototype.onEscape = function () {
@@ -8368,11 +8394,11 @@ var DropdownListModel = /** @class */ (function (_super) {
8368
8394
  };
8369
8395
  DropdownListModel.prototype.onBlur = function (event) {
8370
8396
  this.focused = false;
8371
- if (this.popupModel.isVisible && _utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsTouch"]) {
8397
+ if (this.popupModel.isVisible && _utils_devices__WEBPACK_IMPORTED_MODULE_8__["IsTouch"]) {
8372
8398
  this._popupModel.isVisible = true;
8373
8399
  return;
8374
8400
  }
8375
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_8__["doKey2ClickBlur"])(event);
8401
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["doKey2ClickBlur"])(event);
8376
8402
  this._popupModel.isVisible = false;
8377
8403
  this.resetFilterString();
8378
8404
  this.inputString = null;
@@ -8893,7 +8919,7 @@ var ElementHelper = /** @class */ (function () {
8893
8919
  /*!*************************************!*\
8894
8920
  !*** ./src/entries/chunks/model.ts ***!
8895
8921
  \*************************************/
8896
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8922
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, ProgressButtons, ProgressButtonsResponsivityManager, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8897
8923
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8898
8924
 
8899
8925
  "use strict";
@@ -9209,8 +9235,10 @@ __webpack_require__.r(__webpack_exports__);
9209
9235
  /* harmony import */ var _surveyProgress__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../../surveyProgress */ "./src/surveyProgress.ts");
9210
9236
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _surveyProgress__WEBPACK_IMPORTED_MODULE_56__["SurveyProgressModel"]; });
9211
9237
 
9212
- /* harmony import */ var _surveyProgressButtons__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../../surveyProgressButtons */ "./src/surveyProgressButtons.ts");
9213
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _surveyProgressButtons__WEBPACK_IMPORTED_MODULE_57__["SurveyProgressButtonsModel"]; });
9238
+ /* harmony import */ var _progress_buttons__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../../progress-buttons */ "./src/progress-buttons.ts");
9239
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtons", function() { return _progress_buttons__WEBPACK_IMPORTED_MODULE_57__["ProgressButtons"]; });
9240
+
9241
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtonsResponsivityManager", function() { return _progress_buttons__WEBPACK_IMPORTED_MODULE_57__["ProgressButtonsResponsivityManager"]; });
9214
9242
 
9215
9243
  /* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../../themes */ "./src/themes.ts");
9216
9244
  /* empty/unused harmony star reexport *//* harmony import */ var _survey__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../../survey */ "./src/survey.ts");
@@ -9368,8 +9396,8 @@ __webpack_require__.r(__webpack_exports__);
9368
9396
  //import "../../modern.scss";
9369
9397
  var Version;
9370
9398
  var ReleaseDate;
9371
- Version = "" + "1.9.126";
9372
- ReleaseDate = "" + "2024-01-16";
9399
+ Version = "" + "1.9.128";
9400
+ ReleaseDate = "" + "2024-01-30";
9373
9401
  function checkLibraryVersion(ver, libraryName) {
9374
9402
  if (Version != ver) {
9375
9403
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9544,7 +9572,7 @@ function checkPrefix(prefix) {
9544
9572
  /*!**************************************!*\
9545
9573
  !*** ./src/entries/core-wo-model.ts ***!
9546
9574
  \**************************************/
9547
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper */
9575
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, ProgressButtons, ProgressButtonsResponsivityManager, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper */
9548
9576
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9549
9577
 
9550
9578
  "use strict";
@@ -9810,7 +9838,9 @@ __webpack_require__.r(__webpack_exports__);
9810
9838
 
9811
9839
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressModel"]; });
9812
9840
 
9813
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressButtonsModel"]; });
9841
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtons", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["ProgressButtons"]; });
9842
+
9843
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtonsResponsivityManager", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["ProgressButtonsResponsivityManager"]; });
9814
9844
 
9815
9845
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyModel"]; });
9816
9846
 
@@ -10007,7 +10037,7 @@ __webpack_require__.r(__webpack_exports__);
10007
10037
  /*!*****************************!*\
10008
10038
  !*** ./src/entries/core.ts ***!
10009
10039
  \*****************************/
10010
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
10040
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, 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, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, ProgressButtons, ProgressButtonsResponsivityManager, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
10011
10041
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10012
10042
 
10013
10043
  "use strict";
@@ -10273,7 +10303,9 @@ __webpack_require__.r(__webpack_exports__);
10273
10303
 
10274
10304
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressModel"]; });
10275
10305
 
10276
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressButtonsModel"]; });
10306
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtons", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["ProgressButtons"]; });
10307
+
10308
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProgressButtonsResponsivityManager", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["ProgressButtonsResponsivityManager"]; });
10277
10309
 
10278
10310
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyModel"]; });
10279
10311
 
@@ -16100,6 +16132,27 @@ var Helpers = /** @class */ (function () {
16100
16132
  }
16101
16133
  return val;
16102
16134
  };
16135
+ Helpers.compareVerions = function (ver1, ver2) {
16136
+ if (!ver1 && !ver2)
16137
+ return 0;
16138
+ var ver1Ar = ver1.split(".");
16139
+ var ver2Ar = ver2.split(".");
16140
+ var len1 = ver1Ar.length;
16141
+ var len2 = ver2Ar.length;
16142
+ for (var i = 0; i < len1 && i < len2; i++) {
16143
+ var str1 = ver1Ar[i];
16144
+ var str2 = ver2Ar[i];
16145
+ if (str1.length === str2.length) {
16146
+ if (str1 !== str2) {
16147
+ return str1 < str2 ? -1 : 1;
16148
+ }
16149
+ }
16150
+ else {
16151
+ return str1.length < str2.length ? -1 : 1;
16152
+ }
16153
+ }
16154
+ return len1 === len2 ? 0 : (len1 < len2 ? -1 : 1);
16155
+ };
16103
16156
  return Helpers;
16104
16157
  }());
16105
16158
 
@@ -17860,8 +17913,15 @@ var JsonObjectProperty = /** @class */ (function () {
17860
17913
  var isLayout = !this.layout || this.layout == layout;
17861
17914
  if (!this.visible || !isLayout)
17862
17915
  return false;
17863
- if (!!this.visibleIf && !!obj)
17916
+ if (!!this.visibleIf && !!obj) {
17917
+ if (obj.getOriginalObj) {
17918
+ var orjObj = obj.getOriginalObj();
17919
+ if (orjObj && Serializer.findProperty(orjObj.getType(), this.name)) {
17920
+ obj = orjObj;
17921
+ }
17922
+ }
17864
17923
  return this.visibleIf(obj);
17924
+ }
17865
17925
  return true;
17866
17926
  };
17867
17927
  Object.defineProperty(JsonObjectProperty.prototype, "visible", {
@@ -17874,6 +17934,21 @@ var JsonObjectProperty = /** @class */ (function () {
17874
17934
  enumerable: false,
17875
17935
  configurable: true
17876
17936
  });
17937
+ JsonObjectProperty.prototype.isAvailableInVersion = function (ver) {
17938
+ if (!!this.alternativeName)
17939
+ return true;
17940
+ return this.isAvailableInVersionCore(ver);
17941
+ };
17942
+ JsonObjectProperty.prototype.getSerializedName = function (ver) {
17943
+ if (!this.alternativeName)
17944
+ return this.name;
17945
+ return this.isAvailableInVersionCore(ver) ? this.name : this.alternativeName;
17946
+ };
17947
+ JsonObjectProperty.prototype.isAvailableInVersionCore = function (ver) {
17948
+ if (!ver || !this.version)
17949
+ return true;
17950
+ return _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].compareVerions(this.version, ver) <= 0;
17951
+ };
17877
17952
  Object.defineProperty(JsonObjectProperty.prototype, "isLocalizable", {
17878
17953
  get: function () {
17879
17954
  return this.isLocalizableValue != null ? this.isLocalizableValue : false;
@@ -17954,6 +18029,7 @@ var JsonObjectProperty = /** @class */ (function () {
17954
18029
  "className",
17955
18030
  "alternativeName",
17956
18031
  "layout",
18032
+ "version",
17957
18033
  "classNamePart",
17958
18034
  "baseClassName",
17959
18035
  "defaultValue",
@@ -18402,6 +18478,9 @@ var JsonMetadataClass = /** @class */ (function () {
18402
18478
  if (propInfo.layout) {
18403
18479
  prop.layout = propInfo.layout;
18404
18480
  }
18481
+ if (propInfo.version) {
18482
+ prop.version = propInfo.version;
18483
+ }
18405
18484
  if (propInfo.dependsOn) {
18406
18485
  this.addDependsOnProperties(prop, propInfo.dependsOn);
18407
18486
  }
@@ -18546,36 +18625,54 @@ var JsonMetadata = /** @class */ (function () {
18546
18625
  JsonMetadata.prototype.getPropertiesByObj = function (obj) {
18547
18626
  if (!obj || !obj.getType)
18548
18627
  return [];
18549
- var res = {};
18550
18628
  var props = this.getProperties(obj.getType());
18551
- for (var i = 0; i < props.length; i++) {
18552
- res[props[i].name] = props[i];
18553
- }
18554
- var dynamicProps = !!obj.getDynamicType
18555
- ? this.getProperties(obj.getDynamicType())
18556
- : null;
18557
- if (dynamicProps && dynamicProps.length > 0) {
18558
- for (var i = 0; i < dynamicProps.length; i++) {
18559
- var dProp = dynamicProps[i];
18560
- if (!!res[dProp.name])
18561
- continue;
18562
- res[dProp.name] = dProp;
18629
+ var dynamicProps = this.getDynamicPropertiesByObj(obj);
18630
+ return [].concat(props).concat(dynamicProps);
18631
+ };
18632
+ JsonMetadata.prototype.addDynamicPropertiesIntoObj = function (dest, src, props) {
18633
+ var _this = this;
18634
+ props.forEach(function (prop) {
18635
+ _this.addDynamicPropertyIntoObj(dest, src, prop.name, false);
18636
+ if (prop.serializationProperty) {
18637
+ _this.addDynamicPropertyIntoObj(dest, src, prop.serializationProperty, true);
18638
+ }
18639
+ if (prop.alternativeName) {
18640
+ _this.addDynamicPropertyIntoObj(dest, src, prop.alternativeName, false);
18563
18641
  }
18642
+ });
18643
+ };
18644
+ JsonMetadata.prototype.addDynamicPropertyIntoObj = function (dest, src, propName, isReadOnly) {
18645
+ var desc = {
18646
+ configurable: true,
18647
+ get: function () {
18648
+ return src[propName];
18649
+ },
18650
+ };
18651
+ if (!isReadOnly) {
18652
+ desc["set"] = function (v) {
18653
+ src[propName] = v;
18654
+ };
18564
18655
  }
18565
- return Object.keys(res).map(function (key) { return res[key]; });
18656
+ Object.defineProperty(dest, propName, desc);
18566
18657
  };
18567
18658
  JsonMetadata.prototype.getDynamicPropertiesByObj = function (obj, dynamicType) {
18568
18659
  if (dynamicType === void 0) { dynamicType = null; }
18569
- if (!obj || !obj.getType || (!obj.getDynamicType && !dynamicType))
18660
+ if (!obj || !obj.getType)
18661
+ return [];
18662
+ if (!!obj.getDynamicProperties)
18663
+ return obj.getDynamicProperties();
18664
+ if (!obj.getDynamicType && !dynamicType)
18570
18665
  return [];
18571
- var objType = obj.getType();
18572
18666
  var dType = !!dynamicType ? dynamicType : obj.getDynamicType();
18573
- if (!dType)
18667
+ return this.getDynamicPropertiesByTypes(obj.getType(), dType);
18668
+ };
18669
+ JsonMetadata.prototype.getDynamicPropertiesByTypes = function (objType, dynamicType, invalidNames) {
18670
+ if (!dynamicType)
18574
18671
  return [];
18575
- var cacheType = dType + "-" + objType;
18672
+ var cacheType = dynamicType + "-" + objType;
18576
18673
  if (this.dynamicPropsCache[cacheType])
18577
18674
  return this.dynamicPropsCache[cacheType];
18578
- var dynamicProps = this.getProperties(dType);
18675
+ var dynamicProps = this.getProperties(dynamicType);
18579
18676
  if (!dynamicProps || dynamicProps.length == 0)
18580
18677
  return [];
18581
18678
  var hash = {};
@@ -18584,9 +18681,11 @@ var JsonMetadata = /** @class */ (function () {
18584
18681
  hash[props[i].name] = props[i];
18585
18682
  }
18586
18683
  var res = [];
18587
- for (var i = 0; i < dynamicProps.length; i++) {
18588
- var dProp = dynamicProps[i];
18589
- if (!hash[dProp.name]) {
18684
+ if (!invalidNames)
18685
+ invalidNames = [];
18686
+ for (var i_1 = 0; i_1 < dynamicProps.length; i_1++) {
18687
+ var dProp = dynamicProps[i_1];
18688
+ if (!hash[dProp.name] && invalidNames.indexOf(dProp.name) < 0) {
18590
18689
  res.push(dProp);
18591
18690
  }
18592
18691
  }
@@ -19081,9 +19180,8 @@ var JsonObject = /** @class */ (function () {
19081
19180
  enumerable: false,
19082
19181
  configurable: true
19083
19182
  });
19084
- JsonObject.prototype.toJsonObject = function (obj, storeDefaults) {
19085
- if (storeDefaults === void 0) { storeDefaults = false; }
19086
- return this.toJsonObjectCore(obj, null, storeDefaults);
19183
+ JsonObject.prototype.toJsonObject = function (obj, options) {
19184
+ return this.toJsonObjectCore(obj, null, options);
19087
19185
  };
19088
19186
  JsonObject.prototype.toObject = function (jsonObj, obj, options) {
19089
19187
  this.toObjectCore(jsonObj, obj, options);
@@ -19132,8 +19230,7 @@ var JsonObject = /** @class */ (function () {
19132
19230
  obj.endLoadingFromJson();
19133
19231
  }
19134
19232
  };
19135
- JsonObject.prototype.toJsonObjectCore = function (obj, property, storeDefaults) {
19136
- if (storeDefaults === void 0) { storeDefaults = false; }
19233
+ JsonObject.prototype.toJsonObjectCore = function (obj, property, options) {
19137
19234
  if (!obj || !obj.getType)
19138
19235
  return obj;
19139
19236
  if (typeof obj.getData === "function")
@@ -19142,61 +19239,67 @@ var JsonObject = /** @class */ (function () {
19142
19239
  if (property != null && !property.className) {
19143
19240
  result[JsonObject.typePropertyName] = property.getObjType(obj.getType());
19144
19241
  }
19145
- this.propertiesToJson(obj, Serializer.getProperties(obj.getType()), result, storeDefaults);
19146
- this.propertiesToJson(obj, this.getDynamicProperties(obj), result, storeDefaults);
19242
+ var storeDefaults = options === true;
19243
+ if (!options || options === true) {
19244
+ options = {};
19245
+ }
19246
+ if (storeDefaults) {
19247
+ options.storeDefaults = storeDefaults;
19248
+ }
19249
+ this.propertiesToJson(obj, Serializer.getProperties(obj.getType()), result, options);
19250
+ this.propertiesToJson(obj, this.getDynamicProperties(obj), result, options);
19147
19251
  return result;
19148
19252
  };
19149
19253
  JsonObject.prototype.getDynamicProperties = function (obj) {
19150
19254
  return Serializer.getDynamicPropertiesByObj(obj);
19151
19255
  };
19152
- JsonObject.prototype.addDynamicProperties = function (obj, jsonObj, properties) {
19153
- if (!obj.getDynamicPropertyName)
19154
- return properties;
19155
- var dynamicPropName = obj.getDynamicPropertyName();
19156
- if (!dynamicPropName)
19157
- return properties;
19158
- if (jsonObj[dynamicPropName]) {
19159
- obj[dynamicPropName] = jsonObj[dynamicPropName];
19160
- }
19161
- var dynamicProperties = this.getDynamicProperties(obj);
19162
- var res = [];
19163
- for (var i = 0; i < properties.length; i++) {
19164
- res.push(properties[i]);
19165
- }
19166
- for (var i = 0; i < dynamicProperties.length; i++) {
19167
- res.push(dynamicProperties[i]);
19256
+ JsonObject.prototype.addDynamicProperties = function (obj, jsonObj, props) {
19257
+ if (!obj.getDynamicPropertyName && !obj.getDynamicProperties)
19258
+ return props;
19259
+ if (obj.getDynamicPropertyName) {
19260
+ var dynamicPropName = obj.getDynamicPropertyName();
19261
+ if (!dynamicPropName)
19262
+ return props;
19263
+ if (dynamicPropName && jsonObj[dynamicPropName]) {
19264
+ obj[dynamicPropName] = jsonObj[dynamicPropName];
19265
+ }
19168
19266
  }
19169
- return res;
19267
+ var dynamicProps = this.getDynamicProperties(obj);
19268
+ return dynamicProps.length === 0 ? props : [].concat(props).concat(dynamicProps);
19170
19269
  };
19171
- JsonObject.prototype.propertiesToJson = function (obj, properties, json, storeDefaults) {
19172
- if (storeDefaults === void 0) { storeDefaults = false; }
19270
+ JsonObject.prototype.propertiesToJson = function (obj, properties, json, options) {
19173
19271
  for (var i = 0; i < properties.length; i++) {
19174
- this.valueToJson(obj, json, properties[i], storeDefaults);
19272
+ this.valueToJson(obj, json, properties[i], options);
19175
19273
  }
19176
19274
  };
19177
- JsonObject.prototype.valueToJson = function (obj, result, property, storeDefaults) {
19178
- if (storeDefaults === void 0) { storeDefaults = false; }
19179
- if (property.isSerializable === false ||
19180
- (property.isLightSerializable === false && this.lightSerializing))
19275
+ JsonObject.prototype.valueToJson = function (obj, result, prop, options) {
19276
+ if (!options)
19277
+ options = {};
19278
+ if (prop.isSerializable === false || (prop.isLightSerializable === false && this.lightSerializing))
19279
+ return;
19280
+ if (options.version && !prop.isAvailableInVersion(options.version))
19181
19281
  return;
19182
- var value = property.getSerializableValue(obj);
19183
- if (!storeDefaults && property.isDefaultValueByObj(obj, value))
19282
+ var value = prop.getSerializableValue(obj);
19283
+ if (!options.storeDefaults && prop.isDefaultValueByObj(obj, value))
19184
19284
  return;
19185
19285
  if (this.isValueArray(value)) {
19186
19286
  var arrValue = [];
19187
19287
  for (var i = 0; i < value.length; i++) {
19188
- arrValue.push(this.toJsonObjectCore(value[i], property, storeDefaults));
19288
+ arrValue.push(this.toJsonObjectCore(value[i], prop, options));
19189
19289
  }
19190
19290
  value = arrValue.length > 0 ? arrValue : null;
19191
19291
  }
19192
19292
  else {
19193
- value = this.toJsonObjectCore(value, property, storeDefaults);
19293
+ value = this.toJsonObjectCore(value, prop, options);
19194
19294
  }
19295
+ if (value === undefined || value === null)
19296
+ return;
19297
+ var name = prop.getSerializedName(options.version);
19195
19298
  var hasValue = typeof obj["getPropertyValue"] === "function" &&
19196
- obj["getPropertyValue"](property.name, null) !== null;
19197
- if ((storeDefaults && hasValue) || !property.isDefaultValueByObj(obj, value)) {
19198
- if (!Serializer.onSerializingProperty || !Serializer.onSerializingProperty(obj, property, value, result)) {
19199
- result[property.name] = value;
19299
+ obj["getPropertyValue"](name, null) !== null;
19300
+ if ((options.storeDefaults && hasValue) || !prop.isDefaultValueByObj(obj, value)) {
19301
+ if (!Serializer.onSerializingProperty || !Serializer.onSerializingProperty(obj, prop, value, result)) {
19302
+ result[name] = this.removePosOnValueToJson(prop, value);
19200
19303
  }
19201
19304
  }
19202
19305
  };
@@ -19236,6 +19339,14 @@ var JsonObject = /** @class */ (function () {
19236
19339
  }
19237
19340
  }
19238
19341
  };
19342
+ JsonObject.prototype.removePosOnValueToJson = function (property, value) {
19343
+ if (!property.isCustom || !value)
19344
+ return value;
19345
+ if (!!value[JsonObject.positionPropertyName]) {
19346
+ delete value[JsonObject.positionPropertyName];
19347
+ }
19348
+ return value;
19349
+ };
19239
19350
  JsonObject.prototype.removePos = function (property, value) {
19240
19351
  if (!property || !property.type || property.type.indexOf("value") < 0)
19241
19352
  return;
@@ -19507,7 +19618,10 @@ var ListModel = /** @class */ (function (_super) {
19507
19618
  ListModel.prototype.hasText = function (item, filterStringInLow) {
19508
19619
  if (!filterStringInLow)
19509
19620
  return true;
19510
- var textInLow = (item.title || "").toLocaleLowerCase();
19621
+ var text = item.title || "";
19622
+ if (this.onTextSearchCallback)
19623
+ return this.onTextSearchCallback(item, filterStringInLow);
19624
+ var textInLow = text.toLocaleLowerCase();
19511
19625
  textInLow = _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].comparator.normalizeTextCallback(textInLow, "filter");
19512
19626
  return textInLow.indexOf(filterStringInLow.toLocaleLowerCase()) > -1;
19513
19627
  };
@@ -19553,6 +19667,9 @@ var ListModel = /** @class */ (function (_super) {
19553
19667
  ListModel.prototype.setOnFilterStringChangedCallback = function (callback) {
19554
19668
  this.onFilterStringChangedCallback = callback;
19555
19669
  };
19670
+ ListModel.prototype.setOnTextSearchCallback = function (callback) {
19671
+ this.onTextSearchCallback = callback;
19672
+ };
19556
19673
  ListModel.prototype.setItems = function (items, sortByVisibleIndex) {
19557
19674
  var _this = this;
19558
19675
  if (sortByVisibleIndex === void 0) { sortByVisibleIndex = true; }
@@ -20417,6 +20534,8 @@ var englishStrings = {
20417
20534
  startSurveyText: "Start",
20418
20535
  otherItemText: "Other (describe)",
20419
20536
  noneItemText: "None",
20537
+ refuseItemText: "Refuse to answer",
20538
+ dontKnowItemText: "Don't know",
20420
20539
  selectAllItemText: "Select All",
20421
20540
  progressText: "Page {0} of {1}",
20422
20541
  indexText: "{0} of {1}",
@@ -21236,7 +21355,7 @@ var PageModel = /** @class */ (function (_super) {
21236
21355
  };
21237
21356
  Object.defineProperty(PageModel.prototype, "navigationTitle", {
21238
21357
  /**
21239
- * A caption displayed on a navigation button in the TOC or progress bar. Applies when [`showTOC`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showTOC) is `true` or when the [progress bar is visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showProgressBar) and [`progressBarType`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarType) is set to `"buttons"`.
21358
+ * A caption displayed on a navigation button in the TOC or progress bar. Applies when [`showTOC`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showTOC) is `true` or when the [progress bar is visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showProgressBar), [`progressBarType`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarType) is set to `"pages"`, and [`progressBarShowPageTitles`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarShowPageTitles) is `true`.
21240
21359
  *
21241
21360
  * If navigation titles are unspecified, the navigation buttons display page [titles](https://surveyjs.io/form-library/documentation/api-reference/page-model#title) or [names](https://surveyjs.io/form-library/documentation/pagemodel#name).
21242
21361
  */
@@ -21258,7 +21377,7 @@ var PageModel = /** @class */ (function (_super) {
21258
21377
  });
21259
21378
  Object.defineProperty(PageModel.prototype, "navigationDescription", {
21260
21379
  /**
21261
- * Explanatory text displayed under a navigation button in the progress bar. Applies when the [progress bar is visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showProgressBar) and `SurveyModel`'s [`progressBarType`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarType) property is set to `"buttons"`.
21380
+ * Explanatory text displayed under a navigation button in the progress bar. Applies when the [progress bar is visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showProgressBar), `SurveyModel`'s [`progressBarType`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarType) is set to `"pages"`, and [`progressBarShowPageTitles`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarShowPageTitles) is `true`.
21262
21381
  */
21263
21382
  get: function () {
21264
21383
  return this.getLocalizableStringText("navigationDescription");
@@ -23891,8 +24010,8 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
23891
24010
  this.popupDirection = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].calculatePopupDirection(verticalPosition, actualHorizontalPosition);
23892
24011
  var pos = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].calculatePosition(targetElementRect, height, width + marginLeft + marginRight, verticalPosition, actualHorizontalPosition, this.showHeader, this.model.positionMode);
23893
24012
  if (!!window) {
23894
- var newVerticalDimensions = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].getCorrectedVerticalDimensions(pos.top, height, window.innerHeight);
23895
- if (!!newVerticalDimensions.height) {
24013
+ var newVerticalDimensions = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].getCorrectedVerticalDimensions(pos.top, height, window.innerHeight, verticalPosition);
24014
+ if (!!newVerticalDimensions) {
23896
24015
  this.height = newVerticalDimensions.height + "px";
23897
24016
  pos.top = newVerticalDimensions.top;
23898
24017
  }
@@ -25165,6 +25284,231 @@ function createDialogOptions(componentName, data, onApply, onCancel, onHide, onS
25165
25284
  }
25166
25285
 
25167
25286
 
25287
+ /***/ }),
25288
+
25289
+ /***/ "./src/progress-buttons.ts":
25290
+ /*!*********************************!*\
25291
+ !*** ./src/progress-buttons.ts ***!
25292
+ \*********************************/
25293
+ /*! exports provided: ProgressButtons, ProgressButtonsResponsivityManager */
25294
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
25295
+
25296
+ "use strict";
25297
+ __webpack_require__.r(__webpack_exports__);
25298
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProgressButtons", function() { return ProgressButtons; });
25299
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProgressButtonsResponsivityManager", function() { return ProgressButtonsResponsivityManager; });
25300
+ /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base.ts");
25301
+ /* harmony import */ var _defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultCss/defaultV2Css */ "./src/defaultCss/defaultV2Css.ts");
25302
+ /* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./page */ "./src/page.ts");
25303
+ /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
25304
+ var __extends = (undefined && undefined.__extends) || (function () {
25305
+ var extendStatics = function (d, b) {
25306
+ extendStatics = Object.setPrototypeOf ||
25307
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25308
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
25309
+ return extendStatics(d, b);
25310
+ };
25311
+ return function (d, b) {
25312
+ if (typeof b !== "function" && b !== null)
25313
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
25314
+ extendStatics(d, b);
25315
+ function __() { this.constructor = d; }
25316
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25317
+ };
25318
+ })();
25319
+
25320
+
25321
+
25322
+
25323
+ var ProgressButtons = /** @class */ (function (_super) {
25324
+ __extends(ProgressButtons, _super);
25325
+ function ProgressButtons(survey) {
25326
+ var _this = _super.call(this) || this;
25327
+ _this.survey = survey;
25328
+ _this.onResize = _this.addEvent();
25329
+ return _this;
25330
+ }
25331
+ ProgressButtons.prototype.isListElementClickable = function (index) {
25332
+ if (!this.survey.onServerValidateQuestions ||
25333
+ this.survey.onServerValidateQuestions.isEmpty ||
25334
+ this.survey.checkErrorsMode === "onComplete") {
25335
+ return true;
25336
+ }
25337
+ return index <= this.survey.currentPageNo + 1;
25338
+ };
25339
+ ProgressButtons.prototype.getRootCss = function (container) {
25340
+ if (container === void 0) { container = "center"; }
25341
+ var result = this.survey.css.progressButtonsContainerCenter;
25342
+ if (this.survey.css.progressButtonsRoot) {
25343
+ result += " " + this.survey.css.progressButtonsRoot + " " + this.survey.css.progressButtonsRoot + "--" + (["footer", "contentBottom"].indexOf(container) !== -1 ? "bottom" : "top");
25344
+ result += " " + this.survey.css.progressButtonsRoot + "--" + (this.showItemTitles ? "with-titles" : "no-titles");
25345
+ }
25346
+ if (this.showItemNumbers && this.survey.css.progressButtonsNumbered) {
25347
+ result += " " + this.survey.css.progressButtonsNumbered;
25348
+ }
25349
+ return result;
25350
+ };
25351
+ ProgressButtons.prototype.getListElementCss = function (index) {
25352
+ if (index >= this.survey.visiblePages.length)
25353
+ return;
25354
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__["CssClassBuilder"]()
25355
+ .append(this.survey.css.progressButtonsListElementPassed, this.survey.visiblePages[index].passed)
25356
+ .append(this.survey.css.progressButtonsListElementCurrent, this.survey.currentPageNo === index)
25357
+ .append(this.survey.css.progressButtonsListElementNonClickable, !this.isListElementClickable(index))
25358
+ .toString();
25359
+ };
25360
+ ProgressButtons.prototype.getScrollButtonCss = function (hasScroller, isLeftScroll) {
25361
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__["CssClassBuilder"]()
25362
+ .append(this.survey.css.progressButtonsImageButtonLeft, isLeftScroll)
25363
+ .append(this.survey.css.progressButtonsImageButtonRight, !isLeftScroll)
25364
+ .append(this.survey.css.progressButtonsImageButtonHidden, !hasScroller)
25365
+ .toString();
25366
+ };
25367
+ ProgressButtons.prototype.clickListElement = function (element) {
25368
+ if (!(element instanceof _page__WEBPACK_IMPORTED_MODULE_2__["PageModel"])) {
25369
+ element = this.survey.visiblePages[element];
25370
+ }
25371
+ this.survey.tryNavigateToPage(element);
25372
+ };
25373
+ ProgressButtons.prototype.isListContainerHasScroller = function (element) {
25374
+ var listContainerElement = element.querySelector("." + this.survey.css.progressButtonsListContainer);
25375
+ if (!!listContainerElement) {
25376
+ return listContainerElement.scrollWidth > listContainerElement.offsetWidth;
25377
+ }
25378
+ return false;
25379
+ };
25380
+ ProgressButtons.prototype.isCanShowItemTitles = function (element) {
25381
+ var listContainerElement = element.querySelector("ul");
25382
+ if (!listContainerElement || listContainerElement.children.length < 2)
25383
+ return true;
25384
+ if (listContainerElement.clientWidth > listContainerElement.parentElement.clientWidth) {
25385
+ return false;
25386
+ }
25387
+ var expectedElementWidth = listContainerElement.children[0].clientWidth;
25388
+ for (var i = 0; i < listContainerElement.children.length; i++) {
25389
+ if (Math.abs(listContainerElement.children[i].clientWidth - expectedElementWidth) > 5) {
25390
+ return false;
25391
+ }
25392
+ }
25393
+ return true;
25394
+ };
25395
+ ProgressButtons.prototype.clearConnectorsWidth = function (element) {
25396
+ var listContainerElements = element.querySelectorAll(".sd-progress-buttons__connector");
25397
+ for (var i = 0; i < listContainerElements.length; i++) {
25398
+ listContainerElements[i].style.width = "";
25399
+ }
25400
+ };
25401
+ ProgressButtons.prototype.adjustConnectors = function (element) {
25402
+ var listContainerElement = element.querySelector("ul");
25403
+ if (!listContainerElement)
25404
+ return;
25405
+ var listContainerElements = element.querySelectorAll(".sd-progress-buttons__connector");
25406
+ var connectorWidth = listContainerElement.clientWidth / (listContainerElement.children.length - 1) - 4;
25407
+ for (var i = 0; i < listContainerElements.length; i++) {
25408
+ listContainerElements[i].style.width = connectorWidth + "px";
25409
+ }
25410
+ };
25411
+ Object.defineProperty(ProgressButtons.prototype, "showItemNumbers", {
25412
+ get: function () {
25413
+ if (_defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_1__["surveyCss"].currentType !== "defaultV2") {
25414
+ return false;
25415
+ }
25416
+ return this.survey.progressBarShowPageNumbers;
25417
+ },
25418
+ enumerable: false,
25419
+ configurable: true
25420
+ });
25421
+ Object.defineProperty(ProgressButtons.prototype, "showItemTitles", {
25422
+ get: function () {
25423
+ if (_defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_1__["surveyCss"].currentType !== "defaultV2") {
25424
+ return true;
25425
+ }
25426
+ return this.survey.progressBarShowPageTitles;
25427
+ },
25428
+ enumerable: false,
25429
+ configurable: true
25430
+ });
25431
+ ProgressButtons.prototype.getItemNumber = function (page) {
25432
+ var result = "";
25433
+ if (this.showItemNumbers) {
25434
+ result += this.survey.visiblePages.indexOf(page) + 1;
25435
+ }
25436
+ return result;
25437
+ };
25438
+ Object.defineProperty(ProgressButtons.prototype, "headerText", {
25439
+ get: function () {
25440
+ return this.survey.currentPage ? this.survey.currentPage.renderedNavigationTitle : "";
25441
+ },
25442
+ enumerable: false,
25443
+ configurable: true
25444
+ });
25445
+ Object.defineProperty(ProgressButtons.prototype, "footerText", {
25446
+ get: function () {
25447
+ return this.survey.progressText;
25448
+ },
25449
+ enumerable: false,
25450
+ configurable: true
25451
+ });
25452
+ ProgressButtons.prototype.processResponsiveness = function (width) {
25453
+ this.onResize.fire(this, { width: width });
25454
+ };
25455
+ return ProgressButtons;
25456
+ }(_base__WEBPACK_IMPORTED_MODULE_0__["Base"]));
25457
+
25458
+ var ProgressButtonsResponsivityManager = /** @class */ (function () {
25459
+ function ProgressButtonsResponsivityManager(model, element, viewModel) {
25460
+ var _this = this;
25461
+ this.model = model;
25462
+ this.element = element;
25463
+ this.viewModel = viewModel;
25464
+ this.criticalProperties = ["progressBarType", "progressBarShowPageTitles"];
25465
+ this.canShowItemTitles = true;
25466
+ this.processResponsiveness = function (model, options) {
25467
+ _this.viewModel.onUpdateScroller(model.isListContainerHasScroller(_this.element));
25468
+ if (!model.showItemTitles) {
25469
+ _this.model.adjustConnectors(_this.element);
25470
+ return;
25471
+ }
25472
+ if (model.survey.isMobile) {
25473
+ _this.prevWidth = options.width;
25474
+ _this.canShowItemTitles = false;
25475
+ _this.model.adjustConnectors(_this.element);
25476
+ _this.viewModel.onResize(_this.canShowItemTitles);
25477
+ return;
25478
+ }
25479
+ _this.model.clearConnectorsWidth(_this.element);
25480
+ if (_this.timer !== undefined) {
25481
+ clearTimeout(_this.timer);
25482
+ }
25483
+ _this.timer = setTimeout(function () {
25484
+ if (_this.prevWidth === undefined || _this.prevWidth < options.width && !_this.canShowItemTitles || _this.prevWidth > options.width && _this.canShowItemTitles) {
25485
+ _this.prevWidth = options.width;
25486
+ _this.canShowItemTitles = model.isCanShowItemTitles(_this.element);
25487
+ _this.viewModel.onResize(_this.canShowItemTitles);
25488
+ _this.timer = undefined;
25489
+ }
25490
+ }, 10);
25491
+ };
25492
+ this.model.survey.registerFunctionOnPropertiesValueChanged(this.criticalProperties, function () { return _this.forceUpdate(); }, "ProgressButtonsResponsivityManager" + this.viewModel.container);
25493
+ this.model.onResize.add(this.processResponsiveness);
25494
+ this.forceUpdate();
25495
+ }
25496
+ ProgressButtonsResponsivityManager.prototype.forceUpdate = function () {
25497
+ this.viewModel.onUpdateSettings();
25498
+ this.processResponsiveness(this.model, {});
25499
+ };
25500
+ ProgressButtonsResponsivityManager.prototype.dispose = function () {
25501
+ clearTimeout(this.timer);
25502
+ this.model.onResize.remove(this.processResponsiveness);
25503
+ this.model.survey.unRegisterFunctionOnPropertiesValueChanged(this.criticalProperties, "ProgressButtonsResponsivityManager" + this.viewModel.container);
25504
+ this.element = undefined;
25505
+ this.model = undefined;
25506
+ };
25507
+ return ProgressButtonsResponsivityManager;
25508
+ }());
25509
+
25510
+
25511
+
25168
25512
  /***/ }),
25169
25513
 
25170
25514
  /***/ "./src/question.ts":
@@ -28729,7 +29073,6 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28729
29073
  function QuestionSelectBase(name) {
28730
29074
  var _this = _super.call(this, name) || this;
28731
29075
  _this.otherItemValue = new _itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"]("other");
28732
- _this.noneItemValue = new _itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"](_settings__WEBPACK_IMPORTED_MODULE_9__["settings"].noneItemValue);
28733
29076
  _this.isSettingDefaultValue = false;
28734
29077
  _this.isSettingComment = false;
28735
29078
  _this.isRunningChoices = false;
@@ -28738,9 +29081,9 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28738
29081
  _this.headItemsCount = 0;
28739
29082
  _this.footItemsCount = 0;
28740
29083
  _this.prevIsOtherSelected = false;
28741
- var noneItemText = _this.createLocalizableString("noneText", _this.noneItemValue, true, "noneItemText");
28742
- _this.noneItemValue.locOwner = _this;
28743
- _this.noneItemValue.setLocText(noneItemText);
29084
+ _this.noneItemValue = _this.createDefaultItem(_settings__WEBPACK_IMPORTED_MODULE_9__["settings"].noneItemValue, "noneText", "noneItemText");
29085
+ _this.refuseItemValue = _this.createDefaultItem(_settings__WEBPACK_IMPORTED_MODULE_9__["settings"].refuseItemValue, "refuseText", "refuseItemText");
29086
+ _this.dontKnowItemValue = _this.createDefaultItem(_settings__WEBPACK_IMPORTED_MODULE_9__["settings"].dontKnowItemValue, "dontKnowText", "dontKnowItemText");
28744
29087
  _this.createItemValues("choices");
28745
29088
  _this.registerPropertyChangedHandlers(["choices"], function () {
28746
29089
  if (!_this.filterItems()) {
@@ -28748,7 +29091,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28748
29091
  }
28749
29092
  });
28750
29093
  _this.registerPropertyChangedHandlers(["choicesFromQuestion", "choicesFromQuestionMode", "choiceValuesFromQuestion",
28751
- "choiceTextsFromQuestion", "showNoneItem", "isUsingRestful"], function () {
29094
+ "choiceTextsFromQuestion", "showNoneItem", "showRefuseItem", "showDontKnowItem", "isUsingRestful", "isMessagePanelVisible"], function () {
28752
29095
  _this.onVisibleChoicesChanged();
28753
29096
  });
28754
29097
  _this.registerPropertyChangedHandlers(["hideIfChoicesEmpty"], function () {
@@ -28916,7 +29259,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28916
29259
  });
28917
29260
  Object.defineProperty(QuestionSelectBase.prototype, "isNoneSelected", {
28918
29261
  get: function () {
28919
- return this.hasNone && this.getIsItemValue(this.renderedValue, this.noneItem);
29262
+ return this.showNoneItem && this.getIsItemValue(this.renderedValue, this.noneItem);
28920
29263
  },
28921
29264
  enumerable: false,
28922
29265
  configurable: true
@@ -28928,6 +29271,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28928
29271
  * When users select the "None" item in multi-select questions, all other items become unselected.
28929
29272
  * @see noneItem
28930
29273
  * @see noneText
29274
+ * @see [settings.noneItemValue](https://surveyjs.io/form-library/documentation/api-reference/settings#noneItemValue)
28931
29275
  * @see [settings.specialChoicesOrder](https://surveyjs.io/form-library/documentation/api-reference/settings#specialChoicesOrder)
28932
29276
  */
28933
29277
  get: function () {
@@ -28981,6 +29325,115 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28981
29325
  enumerable: false,
28982
29326
  configurable: true
28983
29327
  });
29328
+ Object.defineProperty(QuestionSelectBase.prototype, "showRefuseItem", {
29329
+ /**
29330
+ * Specifies whether to display the "Refuse to answer" choice item.
29331
+ *
29332
+ * When users select the "Refuse to answer" item in multi-select questions, all other items become unselected.
29333
+ * @see refuseItem
29334
+ * @see refuseItemText
29335
+ * @see [settings.refuseItemValue](https://surveyjs.io/form-library/documentation/api-reference/settings#refuseItemValue)
29336
+ * @see [settings.specialChoicesOrder](https://surveyjs.io/form-library/documentation/api-reference/settings#specialChoicesOrder)
29337
+ */
29338
+ get: function () {
29339
+ return this.getPropertyValue("showRefuseItem");
29340
+ },
29341
+ set: function (val) {
29342
+ this.setPropertyValue("showRefuseItem", val);
29343
+ },
29344
+ enumerable: false,
29345
+ configurable: true
29346
+ });
29347
+ Object.defineProperty(QuestionSelectBase.prototype, "refuseItem", {
29348
+ /**
29349
+ * Returns the "Refuse to answer" choice item. Use this property to change the item's `value` or `text`.
29350
+ * @see showRefuseItem
29351
+ */
29352
+ get: function () {
29353
+ return this.refuseItemValue;
29354
+ },
29355
+ enumerable: false,
29356
+ configurable: true
29357
+ });
29358
+ Object.defineProperty(QuestionSelectBase.prototype, "refuseText", {
29359
+ /**
29360
+ * Gets or sets a caption for the "Refuse to answer" choice item.
29361
+ * @see showRefuseItem
29362
+ */
29363
+ get: function () {
29364
+ return this.getLocalizableStringText("refuseText");
29365
+ },
29366
+ set: function (val) {
29367
+ this.setLocalizableStringText("refuseText", val);
29368
+ },
29369
+ enumerable: false,
29370
+ configurable: true
29371
+ });
29372
+ Object.defineProperty(QuestionSelectBase.prototype, "locRefuseText", {
29373
+ get: function () {
29374
+ return this.getLocalizableString("refuseText");
29375
+ },
29376
+ enumerable: false,
29377
+ configurable: true
29378
+ });
29379
+ Object.defineProperty(QuestionSelectBase.prototype, "showDontKnowItem", {
29380
+ /**
29381
+ * Specifies whether to display the "Don't know" choice item.
29382
+ *
29383
+ * When users select the "Don't know" item in multi-select questions, all other items become unselected.
29384
+ * @see dontKnowItem
29385
+ * @see dontKnowItemText
29386
+ * @see [settings.dontKnowItemValue](https://surveyjs.io/form-library/documentation/api-reference/settings#dontKnowItemValue)
29387
+ * @see [settings.specialChoicesOrder](https://surveyjs.io/form-library/documentation/api-reference/settings#specialChoicesOrder)
29388
+ */
29389
+ get: function () {
29390
+ return this.getPropertyValue("showDontKnowItem");
29391
+ },
29392
+ set: function (val) {
29393
+ this.setPropertyValue("showDontKnowItem", val);
29394
+ },
29395
+ enumerable: false,
29396
+ configurable: true
29397
+ });
29398
+ Object.defineProperty(QuestionSelectBase.prototype, "dontKnowItem", {
29399
+ /**
29400
+ * Returns the "Don't know" choice item. Use this property to change the item's `value` or `text`.
29401
+ * @see showDontKnowItem
29402
+ */
29403
+ get: function () {
29404
+ return this.dontKnowItemValue;
29405
+ },
29406
+ enumerable: false,
29407
+ configurable: true
29408
+ });
29409
+ Object.defineProperty(QuestionSelectBase.prototype, "dontKnowText", {
29410
+ /**
29411
+ * Gets or sets a caption for the "Don't know" choice item.
29412
+ * @see showDontKnowItem
29413
+ */
29414
+ get: function () {
29415
+ return this.getLocalizableStringText("dontKnowText");
29416
+ },
29417
+ set: function (val) {
29418
+ this.setLocalizableStringText("dontKnowText", val);
29419
+ },
29420
+ enumerable: false,
29421
+ configurable: true
29422
+ });
29423
+ Object.defineProperty(QuestionSelectBase.prototype, "locDontKnowText", {
29424
+ get: function () {
29425
+ return this.getLocalizableString("dontKnowText");
29426
+ },
29427
+ enumerable: false,
29428
+ configurable: true
29429
+ });
29430
+ QuestionSelectBase.prototype.createDefaultItem = function (defaultValue, name, locName) {
29431
+ var item = new _itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"](defaultValue);
29432
+ var locStr = this.createLocalizableString(name, item, true, locName);
29433
+ item.locOwner = this;
29434
+ item.setLocText(locStr);
29435
+ return item;
29436
+ };
28984
29437
  Object.defineProperty(QuestionSelectBase.prototype, "choicesVisibleIf", {
28985
29438
  /**
28986
29439
  * A Boolean expression that is evaluated against each choice item. If the expression evaluates to `false`, the choice item becomes hidden.
@@ -29402,7 +29855,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29402
29855
  return false;
29403
29856
  if (includeOther && val == this.otherItem.value)
29404
29857
  return false;
29405
- if (this.hasNone && val == this.noneItem.value)
29858
+ if (this.showNoneItem && val == this.noneItem.value)
29859
+ return false;
29860
+ if (this.showRefuseItem && val == this.refuseItem.value)
29861
+ return false;
29862
+ if (this.showDontKnowItem && val == this.dontKnowItem.value)
29406
29863
  return false;
29407
29864
  var choices = isFilteredChoices
29408
29865
  ? this.getFilteredChoices()
@@ -29724,7 +30181,9 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29724
30181
  };
29725
30182
  QuestionSelectBase.prototype.canUseFilteredChoices = function () {
29726
30183
  return (!this.isAddDefaultItems &&
29727
- !this.hasNone &&
30184
+ !this.showNoneItem &&
30185
+ !this.showRefuseItem &&
30186
+ !this.showDontKnowItem &&
29728
30187
  !this.hasOther &&
29729
30188
  this.choicesOrder == "none");
29730
30189
  };
@@ -29742,7 +30201,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29742
30201
  QuestionSelectBase.prototype.addToVisibleChoices = function (items, isAddAll) {
29743
30202
  this.headItemsCount = 0;
29744
30203
  this.footItemsCount = 0;
29745
- if (!this.hasChoicesUrl) {
30204
+ if (!this.isEmptyActiveChoicesInDesign) {
29746
30205
  this.addNewItemToVisibleChoices(items, isAddAll);
29747
30206
  }
29748
30207
  var dict = new Array();
@@ -29777,15 +30236,23 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29777
30236
  }
29778
30237
  };
29779
30238
  QuestionSelectBase.prototype.addNonChoicesItems = function (dict, isAddAll) {
29780
- if (this.supportNone() && this.canShowOptionItem(this.noneItem, isAddAll, this.hasNone)) {
29781
- this.addNonChoiceItem(dict, this.noneItem, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.noneItem);
30239
+ if (this.supportNone()) {
30240
+ this.addNonChoiceItem(dict, this.noneItem, isAddAll, this.showNoneItem, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.noneItem);
30241
+ }
30242
+ if (this.supportRefuse()) {
30243
+ this.addNonChoiceItem(dict, this.refuseItem, isAddAll, this.showRefuseItem, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.refuseItem);
30244
+ }
30245
+ if (this.supportDontKnow()) {
30246
+ this.addNonChoiceItem(dict, this.dontKnowItem, isAddAll, this.showDontKnowItem, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.dontKnowItem);
29782
30247
  }
29783
- if (this.supportOther() && this.canShowOptionItem(this.otherItem, isAddAll, this.hasOther)) {
29784
- this.addNonChoiceItem(dict, this.otherItem, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.otherItem);
30248
+ if (this.supportOther()) {
30249
+ this.addNonChoiceItem(dict, this.otherItem, isAddAll, this.hasOther, _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].specialChoicesOrder.otherItem);
29785
30250
  }
29786
30251
  };
29787
- QuestionSelectBase.prototype.addNonChoiceItem = function (dict, item, order) {
29788
- order.forEach(function (val) { return dict.push({ index: val, item: item }); });
30252
+ QuestionSelectBase.prototype.addNonChoiceItem = function (dict, item, isAddAll, showItem, order) {
30253
+ if (this.canShowOptionItem(item, isAddAll, showItem)) {
30254
+ order.forEach(function (val) { return dict.push({ index: val, item: item }); });
30255
+ }
29789
30256
  };
29790
30257
  QuestionSelectBase.prototype.canShowOptionItem = function (item, isAddAll, hasItem) {
29791
30258
  var res = (isAddAll && (!!this.canShowOptionItemCallback ? this.canShowOptionItemCallback(item) : true)) || hasItem;
@@ -29799,7 +30266,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29799
30266
  if (item === this.otherItem)
29800
30267
  return this.hasOther;
29801
30268
  if (item === this.noneItem)
29802
- return this.hasNone;
30269
+ return this.showNoneItem;
30270
+ if (item === this.refuseItem)
30271
+ return this.showRefuseItem;
30272
+ if (item === this.dontKnowItem)
30273
+ return this.showDontKnowItem;
29803
30274
  if (item === this.newItemValue)
29804
30275
  return false;
29805
30276
  return true;
@@ -29906,13 +30377,30 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29906
30377
  question.addDependedQuestion(this);
29907
30378
  return this.getChoicesFromArrayQuestion(question);
29908
30379
  }
29909
- if (this.isDesignModeV2 && this.hasChoicesUrl)
30380
+ if (this.isEmptyActiveChoicesInDesign)
29910
30381
  return [];
29911
30382
  return this.choicesFromUrl ? this.choicesFromUrl : this.getChoices();
29912
30383
  },
29913
30384
  enumerable: false,
29914
30385
  configurable: true
29915
30386
  });
30387
+ Object.defineProperty(QuestionSelectBase.prototype, "isMessagePanelVisible", {
30388
+ get: function () {
30389
+ return this.getPropertyValue("isMessagePanelVisible", false);
30390
+ },
30391
+ set: function (val) {
30392
+ this.setPropertyValue("isMessagePanelVisible", val);
30393
+ },
30394
+ enumerable: false,
30395
+ configurable: true
30396
+ });
30397
+ Object.defineProperty(QuestionSelectBase.prototype, "isEmptyActiveChoicesInDesign", {
30398
+ get: function () {
30399
+ return this.isDesignModeV2 && (this.hasChoicesUrl || this.isMessagePanelVisible);
30400
+ },
30401
+ enumerable: false,
30402
+ configurable: true
30403
+ });
29916
30404
  QuestionSelectBase.prototype.getCarryForwardQuestion = function (data) {
29917
30405
  var question = this.findCarryForwardQuestion(data);
29918
30406
  var selBaseQuestion = this.getQuestionWithChoicesCore(question);
@@ -29983,7 +30471,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29983
30471
  : undefined;
29984
30472
  var choices = question.visibleChoices;
29985
30473
  for (var i = 0; i < choices.length; i++) {
29986
- if (this.isBuiltInChoice(choices[i], question))
30474
+ if (question.isBuiltInChoice(choices[i]))
29987
30475
  continue;
29988
30476
  if (isSelected === undefined) {
29989
30477
  res.push(this.copyChoiceItem(choices[i]));
@@ -30012,7 +30500,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30012
30500
  choices = this.visibleChoices;
30013
30501
  }
30014
30502
  for (var i = 0; i < choices.length; i++) {
30015
- if (!this.isBuiltInChoice(choices[i], this))
30503
+ if (!this.isBuiltInChoice(choices[i]))
30016
30504
  return true;
30017
30505
  }
30018
30506
  return false;
@@ -30020,10 +30508,16 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30020
30508
  enumerable: false,
30021
30509
  configurable: true
30022
30510
  });
30023
- QuestionSelectBase.prototype.isBuiltInChoice = function (item, question) {
30024
- return (item === question.noneItem ||
30025
- item === question.otherItem ||
30026
- item === question.newItemValue);
30511
+ QuestionSelectBase.prototype.isBuiltInChoice = function (item) {
30512
+ return this.isNoneItem(item) ||
30513
+ item === this.otherItem ||
30514
+ item === this.newItemValue;
30515
+ };
30516
+ QuestionSelectBase.prototype.isNoneItem = function (item) {
30517
+ return this.getNoneItems().indexOf(item) > -1;
30518
+ };
30519
+ QuestionSelectBase.prototype.getNoneItems = function () {
30520
+ return [this.noneItem, this.refuseItem, this.dontKnowItem];
30027
30521
  };
30028
30522
  QuestionSelectBase.prototype.getChoices = function () {
30029
30523
  return this.choices;
@@ -30034,6 +30528,12 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30034
30528
  QuestionSelectBase.prototype.supportNone = function () {
30035
30529
  return this.isSupportProperty("showNoneItem");
30036
30530
  };
30531
+ QuestionSelectBase.prototype.supportRefuse = function () {
30532
+ return this.isSupportProperty("showRefuseItem");
30533
+ };
30534
+ QuestionSelectBase.prototype.supportDontKnow = function () {
30535
+ return this.isSupportProperty("showDontKnowItem");
30536
+ };
30037
30537
  QuestionSelectBase.prototype.isSupportProperty = function (propName) {
30038
30538
  return (!this.isDesignMode ||
30039
30539
  this.getPropertyByName(propName).visible);
@@ -30328,15 +30828,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30328
30828
  configurable: true
30329
30829
  });
30330
30830
  QuestionSelectBase.prototype.clearIncorrectValues = function () {
30331
- if (!this.hasValueToClearIncorrectValues())
30332
- return;
30333
- if (this.carryForwardQuestion && !this.carryForwardQuestion.isReady)
30334
- return;
30335
- if (!!this.survey &&
30336
- this.survey.questionsByValueName(this.getValueName()).length > 1)
30337
- return;
30338
- if (this.hasChoicesUrl &&
30339
- (!this.choicesFromUrl || this.choicesFromUrl.length == 0))
30831
+ if (!this.hasValueToClearIncorrectValues() || !this.canClearIncorrectValues())
30340
30832
  return;
30341
30833
  if (this.clearIncorrectValuesCallback) {
30342
30834
  this.clearIncorrectValuesCallback();
@@ -30345,6 +30837,15 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30345
30837
  this.clearIncorrectValuesCore();
30346
30838
  }
30347
30839
  };
30840
+ QuestionSelectBase.prototype.canClearIncorrectValues = function () {
30841
+ if (this.carryForwardQuestion && !this.carryForwardQuestion.isReady)
30842
+ return false;
30843
+ if (!!this.survey && this.survey.questionsByValueName(this.getValueName()).length > 1)
30844
+ return false;
30845
+ if (this.hasChoicesUrl && (!this.choicesFromUrl || this.choicesFromUrl.length == 0))
30846
+ return false;
30847
+ return true;
30848
+ };
30348
30849
  QuestionSelectBase.prototype.hasValueToClearIncorrectValues = function () {
30349
30850
  if (!!this.survey && this.survey.keepIncorrectValues)
30350
30851
  return false;
@@ -30480,7 +30981,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30480
30981
  Object.defineProperty(QuestionSelectBase.prototype, "dataChoices", {
30481
30982
  get: function () {
30482
30983
  var _this = this;
30483
- return this.visibleChoices.filter(function (item) { return !_this.isBuiltInChoice(item, _this); });
30984
+ return this.visibleChoices.filter(function (item) { return !_this.isBuiltInChoice(item); });
30484
30985
  },
30485
30986
  enumerable: false,
30486
30987
  configurable: true
@@ -30822,6 +31323,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("selectbase", [
30822
31323
  { name: "separateSpecialChoices:boolean", visible: false },
30823
31324
  { name: "showOtherItem:boolean", alternativeName: "hasOther" },
30824
31325
  { name: "showNoneItem:boolean", alternativeName: "hasNone" },
31326
+ { name: "showRefuseItem:boolean", visible: false },
31327
+ { name: "showDontKnowItem:boolean", visible: false },
30825
31328
  {
30826
31329
  name: "otherPlaceholder",
30827
31330
  alternativeName: "otherPlaceHolder",
@@ -30836,7 +31339,23 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("selectbase", [
30836
31339
  serializationProperty: "locNoneText",
30837
31340
  dependsOn: "showNoneItem",
30838
31341
  visibleIf: function (obj) {
30839
- return obj.hasNone;
31342
+ return obj.showNoneItem;
31343
+ },
31344
+ },
31345
+ {
31346
+ name: "refuseText",
31347
+ serializationProperty: "locRefuseText",
31348
+ dependsOn: "showRefuseItem",
31349
+ visibleIf: function (obj) {
31350
+ return obj.showRefuseItem;
31351
+ },
31352
+ },
31353
+ {
31354
+ name: "dontKnowText",
31355
+ serializationProperty: "locDontKnowText",
31356
+ dependsOn: "showDontKnowItem",
31357
+ visibleIf: function (obj) {
31358
+ return obj.showDontKnowItem;
30840
31359
  },
30841
31360
  },
30842
31361
  {
@@ -31240,6 +31759,21 @@ var QuestionBooleanModel = /** @class */ (function (_super) {
31240
31759
  QuestionBooleanModel.prototype.createActionContainer = function (allowAdaptiveActions) {
31241
31760
  return _super.prototype.createActionContainer.call(this, this.renderAs !== "checkbox");
31242
31761
  };
31762
+ Object.defineProperty(QuestionBooleanModel.prototype, "isNewA11yStructure", {
31763
+ //a11y
31764
+ get: function () {
31765
+ return true;
31766
+ },
31767
+ enumerable: false,
31768
+ configurable: true
31769
+ });
31770
+ Object.defineProperty(QuestionBooleanModel.prototype, "a11y_input_ariaRole", {
31771
+ get: function () {
31772
+ return "switch";
31773
+ },
31774
+ enumerable: false,
31775
+ configurable: true
31776
+ });
31243
31777
  __decorate([
31244
31778
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
31245
31779
  ], QuestionBooleanModel.prototype, "booleanValueRendered", void 0);
@@ -31674,8 +32208,11 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
31674
32208
  * @see showSelectAllItem
31675
32209
  */
31676
32210
  get: function () {
31677
- if (this.isItemSelected(this.noneItem))
31678
- return false;
32211
+ var noneItems = this.getNoneItems();
32212
+ for (var i = 0; i < noneItems.length; i++) {
32213
+ if (this.isItemSelected(noneItems[i]))
32214
+ return false;
32215
+ }
31679
32216
  var items = this.getVisibleEnableItems();
31680
32217
  if (items.length === 0)
31681
32218
  return false;
@@ -31732,19 +32269,24 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
31732
32269
  }
31733
32270
  }
31734
32271
  else {
31735
- var newValue = [].concat(this.renderedValue || []);
31736
- var index = newValue.indexOf(item.value);
31737
- if (checked) {
31738
- if (index < 0) {
31739
- newValue.push(item.value);
31740
- }
32272
+ if (this.isNoneItem(item)) {
32273
+ this.renderedValue = [item.value];
31741
32274
  }
31742
32275
  else {
31743
- if (index > -1) {
31744
- newValue.splice(index, 1);
32276
+ var newValue = [].concat(this.renderedValue || []);
32277
+ var index = newValue.indexOf(item.value);
32278
+ if (checked) {
32279
+ if (index < 0) {
32280
+ newValue.push(item.value);
32281
+ }
31745
32282
  }
32283
+ else {
32284
+ if (index > -1) {
32285
+ newValue.splice(index, 1);
32286
+ }
32287
+ }
32288
+ this.renderedValue = newValue;
31746
32289
  }
31747
- this.renderedValue = newValue;
31748
32290
  }
31749
32291
  };
31750
32292
  QuestionCheckboxModel.prototype.isItemSelectedCore = function (item) {
@@ -31973,21 +32515,7 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
31973
32515
  value = [];
31974
32516
  if (this.isTwoValueEquals(value, newValue))
31975
32517
  return;
31976
- if (this.hasNone) {
31977
- var prevNoneIndex = this.noneIndexInArray(value);
31978
- var newNoneIndex = this.noneIndexInArray(newValue);
31979
- if (prevNoneIndex > -1) {
31980
- if (newNoneIndex > -1 && newValue.length > 1) {
31981
- newValue.splice(newNoneIndex, 1);
31982
- }
31983
- }
31984
- else {
31985
- if (newNoneIndex > -1) {
31986
- newValue.splice(0, newValue.length);
31987
- newValue.push(this.noneItem.value);
31988
- }
31989
- }
31990
- }
32518
+ this.removeNoneItemsValues(value, newValue);
31991
32519
  _super.prototype.setNewValue.call(this, newValue);
31992
32520
  };
31993
32521
  QuestionCheckboxModel.prototype.getIsMultipleValue = function () {
@@ -32015,15 +32543,47 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
32015
32543
  }
32016
32544
  return -1;
32017
32545
  };
32018
- QuestionCheckboxModel.prototype.noneIndexInArray = function (val) {
32019
- if (!val || !Array.isArray(val))
32020
- return -1;
32021
- var noneValue = this.noneItem.value;
32022
- for (var i = 0; i < val.length; i++) {
32023
- if (val[i] == noneValue)
32024
- return i;
32546
+ QuestionCheckboxModel.prototype.removeNoneItemsValues = function (value, newValue) {
32547
+ var noneValues = [];
32548
+ if (this.showNoneItem)
32549
+ noneValues.push(this.noneItem.value);
32550
+ if (this.showRefuseItem)
32551
+ noneValues.push(this.refuseItem.value);
32552
+ if (this.showDontKnowItem)
32553
+ noneValues.push(this.dontKnowItem.value);
32554
+ if (noneValues.length > 0) {
32555
+ var prevNone = this.noneIndexInArray(value, noneValues);
32556
+ var newNone = this.noneIndexInArray(newValue, noneValues);
32557
+ if (prevNone.index > -1) {
32558
+ if (prevNone.val === newNone.val) {
32559
+ if (newValue.length > 0) {
32560
+ newValue.splice(newNone.index, 1);
32561
+ }
32562
+ }
32563
+ else {
32564
+ var prevNewNone = this.noneIndexInArray(newValue, [prevNone.val]);
32565
+ if (prevNewNone.index > -1 && prevNewNone.index < newValue.length - 1) {
32566
+ newValue.splice(prevNewNone.index, 1);
32567
+ }
32568
+ }
32569
+ }
32570
+ else {
32571
+ if (newNone.index > -1 && newValue.length > 1) {
32572
+ var itemVal = this.convertValueToObject([newNone.val])[0];
32573
+ newValue.splice(0, newValue.length, itemVal);
32574
+ }
32575
+ }
32025
32576
  }
32026
- return -1;
32577
+ };
32578
+ QuestionCheckboxModel.prototype.noneIndexInArray = function (val, noneValues) {
32579
+ if (!Array.isArray(val))
32580
+ return { index: -1, val: undefined };
32581
+ for (var i = val.length - 1; i >= 0; i--) {
32582
+ var index = noneValues.indexOf(this.getRealValue(val[i]));
32583
+ if (index > -1)
32584
+ return { index: i, val: noneValues[index] };
32585
+ }
32586
+ return { index: -1, val: undefined };
32027
32587
  };
32028
32588
  QuestionCheckboxModel.prototype.canUseFilteredChoices = function () {
32029
32589
  return !this.hasSelectAll && _super.prototype.canUseFilteredChoices.call(this);
@@ -32033,12 +32593,12 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
32033
32593
  };
32034
32594
  QuestionCheckboxModel.prototype.addNonChoicesItems = function (dict, isAddAll) {
32035
32595
  _super.prototype.addNonChoicesItems.call(this, dict, isAddAll);
32036
- if (this.supportSelectAll() && this.canShowOptionItem(this.selectAllItem, isAddAll, this.hasSelectAll)) {
32037
- this.addNonChoiceItem(dict, this.selectAllItem, _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].specialChoicesOrder.selectAllItem);
32596
+ if (this.supportSelectAll()) {
32597
+ this.addNonChoiceItem(dict, this.selectAllItem, isAddAll, this.hasSelectAll, _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].specialChoicesOrder.selectAllItem);
32038
32598
  }
32039
32599
  };
32040
- QuestionCheckboxModel.prototype.isBuiltInChoice = function (item, question) {
32041
- return item === question.selectAllItem || _super.prototype.isBuiltInChoice.call(this, item, question);
32600
+ QuestionCheckboxModel.prototype.isBuiltInChoice = function (item) {
32601
+ return item === this.selectAllItem || _super.prototype.isBuiltInChoice.call(this, item);
32042
32602
  };
32043
32603
  QuestionCheckboxModel.prototype.isItemInList = function (item) {
32044
32604
  if (item == this.selectAllItem)
@@ -32655,6 +33215,35 @@ var ComponentQuestionJSON = /** @class */ (function () {
32655
33215
  enumerable: false,
32656
33216
  configurable: true
32657
33217
  });
33218
+ ComponentQuestionJSON.prototype.getDynamicProperties = function () {
33219
+ if (!Array.isArray(this.dynamicProperties)) {
33220
+ }
33221
+ this.dynamicProperties = this.calcDynamicProperties();
33222
+ return this.dynamicProperties;
33223
+ };
33224
+ ComponentQuestionJSON.prototype.calcDynamicProperties = function () {
33225
+ var baseProps = this.json.inheritBaseProps;
33226
+ if (!baseProps || !this.json.questionJSON)
33227
+ return [];
33228
+ var type = this.json.questionJSON.type;
33229
+ if (!type)
33230
+ return [];
33231
+ if (Array.isArray(baseProps)) {
33232
+ var props_1 = [];
33233
+ baseProps.forEach(function (name) {
33234
+ var prop = _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].findProperty(type, name);
33235
+ if (prop) {
33236
+ props_1.push(prop);
33237
+ }
33238
+ });
33239
+ return props_1;
33240
+ }
33241
+ var invalidNames = [];
33242
+ for (var key in this.json.questionJSON) {
33243
+ invalidNames.push(key);
33244
+ }
33245
+ return _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].getDynamicPropertiesByTypes(this.name, type, invalidNames);
33246
+ };
32658
33247
  return ComponentQuestionJSON;
32659
33248
  }());
32660
33249
 
@@ -32996,8 +33585,18 @@ var QuestionCustomModel = /** @class */ (function (_super) {
32996
33585
  QuestionCustomModel.prototype.getTemplate = function () {
32997
33586
  return "custom";
32998
33587
  };
33588
+ QuestionCustomModel.prototype.getDynamicProperties = function () {
33589
+ return this.customQuestion.getDynamicProperties() || [];
33590
+ };
33591
+ QuestionCustomModel.prototype.getDynamicType = function () {
33592
+ return this.questionWrapper ? this.questionWrapper.getType() : "question";
33593
+ };
33594
+ QuestionCustomModel.prototype.getOriginalObj = function () {
33595
+ return this.questionWrapper;
33596
+ };
32999
33597
  QuestionCustomModel.prototype.createWrapper = function () {
33000
33598
  this.questionWrapper = this.createQuestion();
33599
+ this.createDynamicProperties(this.questionWrapper);
33001
33600
  };
33002
33601
  QuestionCustomModel.prototype.getElement = function () {
33003
33602
  return this.contentQuestion;
@@ -33172,6 +33771,14 @@ var QuestionCustomModel = /** @class */ (function (_super) {
33172
33771
  }
33173
33772
  this.isSettingValueChanged = false;
33174
33773
  };
33774
+ QuestionCustomModel.prototype.createDynamicProperties = function (el) {
33775
+ if (!el)
33776
+ return;
33777
+ var props = this.getDynamicProperties();
33778
+ if (Array.isArray(props)) {
33779
+ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addDynamicPropertiesIntoObj(this, el, props);
33780
+ }
33781
+ };
33175
33782
  QuestionCustomModel.prototype.initElement = function (el) {
33176
33783
  var _this = this;
33177
33784
  _super.prototype.initElement.call(this, el);
@@ -33668,7 +34275,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
33668
34275
  }
33669
34276
  };
33670
34277
  QuestionDropdownModel.prototype.supportGoNextPageAutomatic = function () {
33671
- return true;
34278
+ return !this.isOtherSelected;
33672
34279
  };
33673
34280
  QuestionDropdownModel.prototype.getChoices = function () {
33674
34281
  var items = _super.prototype.getChoices.call(this);
@@ -33917,6 +34524,9 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
33917
34524
  }
33918
34525
  })
33919
34526
  ], QuestionDropdownModel.prototype, "searchEnabled", void 0);
34527
+ __decorate([
34528
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])()
34529
+ ], QuestionDropdownModel.prototype, "searchMode", void 0);
33920
34530
  __decorate([
33921
34531
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
33922
34532
  ], QuestionDropdownModel.prototype, "inputHasValue", void 0);
@@ -33944,6 +34554,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("dropdown", [
33944
34554
  { name: "autocomplete", alternativeName: "autoComplete", choices: _settings__WEBPACK_IMPORTED_MODULE_5__["settings"].questions.dataList, },
33945
34555
  { name: "renderAs", default: "default", visible: false },
33946
34556
  { name: "searchEnabled:boolean", default: true, visible: false },
34557
+ { name: "searchMode", default: "contains", choices: ["contains", "startsWith"], },
33947
34558
  { name: "choicesLazyLoadEnabled:boolean", default: false, visible: false },
33948
34559
  { name: "choicesLazyLoadPageSize:number", default: 25, visible: false },
33949
34560
  { name: "inputFieldComponent", visible: false },
@@ -34533,6 +35144,9 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("expression", [
34533
35144
  return getCurrecyCodes();
34534
35145
  },
34535
35146
  default: "USD",
35147
+ visibleIf: function (obj) {
35148
+ return obj.displayStyle === "currency";
35149
+ }
34536
35150
  },
34537
35151
  { name: "maximumFractionDigits:number", default: -1 },
34538
35152
  { name: "minimumFractionDigits:number", default: -1 },
@@ -34806,7 +35420,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
34806
35420
  };
34807
35421
  _this.doClean = function () {
34808
35422
  if (_this.needConfirmRemoveFile) {
34809
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(_this.confirmRemoveAllMessage, function () { _this.clearFilesCore(); });
35423
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(_this.confirmRemoveAllMessage, function () { _this.clearFilesCore(); }, undefined, _this.getLocale());
34810
35424
  return;
34811
35425
  }
34812
35426
  _this.clearFilesCore();
@@ -35696,7 +36310,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
35696
36310
  QuestionFileModel.prototype.doRemoveFile = function (data) {
35697
36311
  var _this = this;
35698
36312
  if (this.needConfirmRemoveFile) {
35699
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(this.getConfirmRemoveMessage(data.name), function () { _this.removeFileCore(data); });
36313
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(this.getConfirmRemoveMessage(data.name), function () { _this.removeFileCore(data); }, undefined, this.getLocale());
35700
36314
  return;
35701
36315
  }
35702
36316
  this.removeFileCore(data);
@@ -36504,12 +37118,10 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
36504
37118
  enumerable: false,
36505
37119
  configurable: true
36506
37120
  });
36507
- QuestionImagePickerModel.prototype.supportOther = function () {
36508
- return false;
36509
- };
36510
- QuestionImagePickerModel.prototype.supportNone = function () {
36511
- return false;
36512
- };
37121
+ QuestionImagePickerModel.prototype.supportOther = function () { return false; };
37122
+ QuestionImagePickerModel.prototype.supportNone = function () { return false; };
37123
+ QuestionImagePickerModel.prototype.supportRefuse = function () { return false; };
37124
+ QuestionImagePickerModel.prototype.supportDontKnow = function () { return false; };
36513
37125
  QuestionImagePickerModel.prototype.isAnswerCorrect = function () {
36514
37126
  if (!this.multiSelect)
36515
37127
  return _super.prototype.isAnswerCorrect.call(this);
@@ -36733,7 +37345,7 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
36733
37345
  enumerable: false,
36734
37346
  configurable: true
36735
37347
  });
36736
- QuestionImagePickerModel.prototype.isBuiltInChoice = function (item, question) {
37348
+ QuestionImagePickerModel.prototype.isBuiltInChoice = function (item) {
36737
37349
  return false;
36738
37350
  };
36739
37351
  QuestionImagePickerModel.prototype.addToVisibleChoices = function (items, isAddAll) {
@@ -36884,6 +37496,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("imagepicker", [
36884
37496
  { name: "showOtherItem", visible: false },
36885
37497
  { name: "otherText", visible: false },
36886
37498
  { name: "showNoneItem", visible: false },
37499
+ { name: "showRefuseItem", visible: false },
37500
+ { name: "showDontKnowItem", visible: false },
36887
37501
  { name: "noneText", visible: false },
36888
37502
  { name: "optionsCaption", visible: false },
36889
37503
  { name: "otherErrorText", visible: false },
@@ -36990,7 +37604,7 @@ var MatrixRowModel = /** @class */ (function (_super) {
36990
37604
  _this.item = item;
36991
37605
  _this.fullName = fullName;
36992
37606
  _this.data = data;
36993
- _this.value = value;
37607
+ _this.setValueDirectly(value);
36994
37608
  _this.cellClick = function (column) {
36995
37609
  _this.value = column.value;
36996
37610
  };
@@ -37458,6 +38072,11 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37458
38072
  configurable: true
37459
38073
  });
37460
38074
  Object.defineProperty(QuestionMatrixModel.prototype, "cells", {
38075
+ /**
38076
+ * An array of matrix cells. Use this array to get or set cell values.
38077
+ *
38078
+ * [View Demo](https://surveyjs.io/form-library/examples/questiontype-matrix-rubric/ (linkStyle))
38079
+ */
37461
38080
  get: function () {
37462
38081
  return this.cellsValue;
37463
38082
  },
@@ -41666,32 +42285,8 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
41666
42285
  }
41667
42286
  };
41668
42287
  MatrixDropdownColumn.prototype.addProperties = function (curCellType) {
41669
- var question = this.templateQuestion;
41670
- var properties = this.getProperties(curCellType);
41671
- for (var i = 0; i < properties.length; i++) {
41672
- var prop = properties[i];
41673
- this.addProperty(question, prop.name, false);
41674
- if (prop.serializationProperty) {
41675
- this.addProperty(question, prop.serializationProperty, true);
41676
- }
41677
- if (prop.alternativeName) {
41678
- this.addProperty(question, prop.alternativeName, false);
41679
- }
41680
- }
41681
- };
41682
- MatrixDropdownColumn.prototype.addProperty = function (question, propName, isReadOnly) {
41683
- var desc = {
41684
- configurable: true,
41685
- get: function () {
41686
- return question[propName];
41687
- },
41688
- };
41689
- if (!isReadOnly) {
41690
- desc["set"] = function (v) {
41691
- question[propName] = v;
41692
- };
41693
- }
41694
- Object.defineProperty(this, propName, desc);
42288
+ var props = this.getProperties(curCellType);
42289
+ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addDynamicPropertiesIntoObj(this, this.templateQuestion, props);
41695
42290
  };
41696
42291
  return MatrixDropdownColumn;
41697
42292
  }(_base__WEBPACK_IMPORTED_MODULE_1__["Base"]));
@@ -43636,7 +44231,7 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
43636
44231
  confirmDelete = this.isRequireConfirmOnRowDelete(index);
43637
44232
  }
43638
44233
  if (confirmDelete) {
43639
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removeRowAsync(index, row); });
44234
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removeRowAsync(index, row); }, undefined, this.getLocale());
43640
44235
  return;
43641
44236
  }
43642
44237
  this.removeRowAsync(index, row);
@@ -46209,9 +46804,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46209
46804
  }
46210
46805
  }
46211
46806
  }
46212
- var removedPanels = [];
46213
46807
  if (val < this.panelCount) {
46214
- removedPanels = this.panelsCore.splice(val, this.panelCount - val);
46808
+ this.panelsCore.splice(val, this.panelCount - val);
46215
46809
  }
46216
46810
  this.setValueAfterPanelsCreating();
46217
46811
  this.setValueBasedOnPanelCount();
@@ -46817,7 +47411,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46817
47411
  if (!this.canRemovePanel)
46818
47412
  return;
46819
47413
  if (this.isRequireConfirmOnDelete(value)) {
46820
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removePanel(value); });
47414
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removePanel(value); }, undefined, this.getLocale());
46821
47415
  }
46822
47416
  else {
46823
47417
  this.removePanel(value);
@@ -46922,7 +47516,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46922
47516
  }
46923
47517
  };
46924
47518
  QuestionPanelDynamicModel.prototype.getQuestionFromArray = function (name, index) {
46925
- if (index >= this.panelCount)
47519
+ if (index < 0 || index >= this.panelsCore.length)
46926
47520
  return null;
46927
47521
  return this.panelsCore[index].getQuestionByName(name);
46928
47522
  };
@@ -47226,10 +47820,13 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
47226
47820
  };
47227
47821
  QuestionPanelDynamicModel.prototype.clearValueInPanelsIfInvisible = function (reason) {
47228
47822
  for (var i = 0; i < this.panelsCore.length; i++) {
47229
- var questions = this.panelsCore[i].questions;
47823
+ var panel = this.panelsCore[i];
47824
+ var questions = panel.questions;
47230
47825
  this.isSetPanelItemData = {};
47231
47826
  for (var j = 0; j < questions.length; j++) {
47232
47827
  var q = questions[j];
47828
+ if (q.visible && !panel.isVisible)
47829
+ continue;
47233
47830
  q.clearValueIfInvisible(reason);
47234
47831
  this.isSetPanelItemData[q.getValueName()] = this.maxCheckCount + 1;
47235
47832
  }
@@ -48078,7 +48675,7 @@ var QuestionRadiogroupModel = /** @class */ (function (_super) {
48078
48675
  configurable: true
48079
48676
  });
48080
48677
  QuestionRadiogroupModel.prototype.supportGoNextPageAutomatic = function () {
48081
- return this.isMouseDown === true;
48678
+ return this.isMouseDown === true && !this.isOtherSelected;
48082
48679
  };
48083
48680
  QuestionRadiogroupModel.prototype.setNewComment = function (newValue) {
48084
48681
  this.isMouseDown = true;
@@ -48206,8 +48803,11 @@ var QuestionRankingModel = /** @class */ (function (_super) {
48206
48803
  _this.domNode = null;
48207
48804
  _this.onVisibleChoicesChanged = function () {
48208
48805
  _super.prototype.onVisibleChoicesChanged.call(_this);
48806
+ if (_this.carryForwardStartUnranked && !_this.isValueSetByUser && !_this.selectToRankEnabled) {
48807
+ _this.value = [];
48808
+ }
48209
48809
  // ranking question with only one choice doesn't make sense
48210
- if (_this.visibleChoices.length === 1) {
48810
+ if (_this.visibleChoices.length === 1 && !_this.selectToRankEnabled) {
48211
48811
  _this.value = [];
48212
48812
  _this.value.push(_this.visibleChoices[0].value);
48213
48813
  _this.updateRankingChoices();
@@ -48280,12 +48880,14 @@ var QuestionRankingModel = /** @class */ (function (_super) {
48280
48880
  itemsNodes[index].focus();
48281
48881
  }
48282
48882
  };
48883
+ _this.isValueSetByUser = false;
48283
48884
  _this.setValue = function () {
48284
48885
  var value = [];
48285
48886
  _this.rankingChoices.forEach(function (choice) {
48286
48887
  value.push(choice.value);
48287
48888
  });
48288
48889
  _this.value = value;
48890
+ _this.isValueSetByUser = true;
48289
48891
  };
48290
48892
  _this.createNewArray("rankingChoices");
48291
48893
  _this.registerFunctionOnPropertyValueChanged("selectToRankEnabled", function () {
@@ -48541,15 +49143,11 @@ var QuestionRankingModel = /** @class */ (function (_super) {
48541
49143
  QuestionRankingModel.prototype.beforeDestroyQuestionElement = function (el) {
48542
49144
  _super.prototype.beforeDestroyQuestionElement.call(this, el);
48543
49145
  };
48544
- QuestionRankingModel.prototype.supportSelectAll = function () {
48545
- return false;
48546
- };
48547
- QuestionRankingModel.prototype.supportOther = function () {
48548
- return false;
48549
- };
48550
- QuestionRankingModel.prototype.supportNone = function () {
48551
- return false;
48552
- };
49146
+ QuestionRankingModel.prototype.supportSelectAll = function () { return false; };
49147
+ QuestionRankingModel.prototype.supportOther = function () { return false; };
49148
+ QuestionRankingModel.prototype.supportNone = function () { return false; };
49149
+ QuestionRankingModel.prototype.supportRefuse = function () { return false; };
49150
+ QuestionRankingModel.prototype.supportDontKnow = function () { return false; };
48553
49151
  QuestionRankingModel.prototype.handleKeydownSelectToRank = function (event, movedElement) {
48554
49152
  if (this.isDesignMode)
48555
49153
  return;
@@ -48718,6 +49316,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
48718
49316
  __decorate([
48719
49317
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ defaultValue: null })
48720
49318
  ], QuestionRankingModel.prototype, "dropTargetNodeMove", void 0);
49319
+ __decorate([
49320
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ defaultValue: true })
49321
+ ], QuestionRankingModel.prototype, "carryForwardStartUnranked", void 0);
48721
49322
  __decorate([
48722
49323
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ localizable: { defaultStr: "selectToRankEmptyRankedAreaText" } })
48723
49324
  ], QuestionRankingModel.prototype, "selectToRankEmptyRankedAreaText", void 0);
@@ -48733,6 +49334,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_3__["Serializer"].addClass("ranking", [
48733
49334
  { name: "otherErrorText", visible: false, isSerializable: false },
48734
49335
  { name: "storeOthersAsComment", visible: false, isSerializable: false },
48735
49336
  { name: "showNoneItem", visible: false, isSerializable: false },
49337
+ { name: "showRefuseItem", visible: false, isSerializable: false },
49338
+ { name: "showDontKnowItem", visible: false, isSerializable: false },
48736
49339
  { name: "noneText", visible: false, isSerializable: false },
48737
49340
  { name: "showSelectAllItem", visible: false, isSerializable: false },
48738
49341
  { name: "selectAllText", visible: false, isSerializable: false },
@@ -49436,8 +50039,8 @@ var QuestionRatingModel = /** @class */ (function (_super) {
49436
50039
  });
49437
50040
  Object.defineProperty(QuestionRatingModel.prototype, "ratingRootCss", {
49438
50041
  get: function () {
49439
- var baseClass = ((this.displayMode == "buttons" || (!!this.survey && this.survey.isDesignMode)) && this.cssClasses.rootWrappable) ?
49440
- this.cssClasses.rootWrappable : this.cssClasses.root;
50042
+ var baseClassModifier = ((this.displayMode == "buttons" || (!!this.survey && this.survey.isDesignMode)) && this.cssClasses.rootWrappable) ?
50043
+ this.cssClasses.rootWrappable : "";
49441
50044
  var rootClassModifier = "";
49442
50045
  if (this.hasMaxLabel || this.hasMinLabel) {
49443
50046
  if (this.rateDescriptionLocation == "top")
@@ -49448,7 +50051,8 @@ var QuestionRatingModel = /** @class */ (function (_super) {
49448
50051
  rootClassModifier = this.cssClasses.rootLabelsDiagonal;
49449
50052
  }
49450
50053
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__["CssClassBuilder"]()
49451
- .append(baseClass)
50054
+ .append(this.cssClasses.root)
50055
+ .append(baseClassModifier)
49452
50056
  .append(rootClassModifier)
49453
50057
  .append(this.cssClasses.itemSmall, this.itemSmallMode && this.rateType != "labels")
49454
50058
  .toString();
@@ -50948,7 +51552,7 @@ var QuestionTextModel = /** @class */ (function (_super) {
50948
51552
  configurable: true
50949
51553
  });
50950
51554
  QuestionTextModel.prototype.getMaxLength = function () {
50951
- if (this.inputType !== "text")
51555
+ if (!this.isTextInput)
50952
51556
  return null;
50953
51557
  return _super.prototype.getMaxLength.call(this);
50954
51558
  };
@@ -51339,8 +51943,10 @@ var QuestionTextModel = /** @class */ (function (_super) {
51339
51943
  return !this.isReadOnly && this.inputType !== "range";
51340
51944
  };
51341
51945
  QuestionTextModel.prototype.getControlCssClassBuilder = function () {
51946
+ var maxLength = this.getMaxLength();
51342
51947
  return _super.prototype.getControlCssClassBuilder.call(this)
51343
- .append(this.cssClasses.constrolWithCharacterCounter, !!this.getMaxLength());
51948
+ .append(this.cssClasses.constrolWithCharacterCounter, !!maxLength)
51949
+ .append(this.cssClasses.characterCounterBig, maxLength > 99);
51344
51950
  };
51345
51951
  QuestionTextModel.prototype.isReadOnlyRenderDiv = function () {
51346
51952
  return this.isReadOnly && _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].readOnly.textRenderMode === "div";
@@ -52524,8 +53130,8 @@ var settings = {
52524
53130
  * @param message A message to be displayed in the confirm dialog window.
52525
53131
  * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise.
52526
53132
  */
52527
- confirmActionAsync: function (message, callback, applyTitle) {
52528
- return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["showConfirmDialog"])(message, callback, applyTitle);
53133
+ confirmActionAsync: function (message, callback, applyTitle, locale) {
53134
+ return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["showConfirmDialog"])(message, callback, applyTitle, locale);
52529
53135
  },
52530
53136
  /**
52531
53137
  * A minimum width value for all survey elements.
@@ -52576,15 +53182,27 @@ var settings = {
52576
53182
  */
52577
53183
  showItemsInOrder: "default",
52578
53184
  /**
52579
- * A value to save in survey results when respondents select the None choice item.
53185
+ * A value to save in survey results when respondents select the "None" choice item.
52580
53186
  *
52581
53187
  * Default value: `"none"`
52582
53188
  */
52583
53189
  noneItemValue: "none",
52584
53190
  /**
52585
- * An object whose properties specify the order of the special choice items (None, Other, Select All) in select-based questions.
53191
+ * A value to save in survey results when respondents select the "Refuse to answer" choice item.
53192
+ *
53193
+ * Default value: `"refused"`
53194
+ */
53195
+ refuseItemValue: "refused",
53196
+ /**
53197
+ * A value to save in survey results when respondents select the "Don't know" choice item.
53198
+ *
53199
+ * Default value: `"dontknow"`
53200
+ */
53201
+ dontKnowItemValue: "dontknow",
53202
+ /**
53203
+ * An object whose properties specify the order of the special choice items ("None", "Other", "Select All", "Refuse to answer", "Don't know") in select-based questions.
52586
53204
  *
52587
- * Default value: `{ selectAllItem: [-1], noneItem: [1], otherItem: [2] }`
53205
+ * Default value: `{ selectAllItem: [-1], noneItem: [1], otherItem: [2], dontKnowItem: [3], otherItem: [4] }`
52588
53206
  *
52589
53207
  * Use this object to reorder special choices. Each property accepts an array of integer numbers. Negative numbers place a special choice item above regular choice items, positive numbers place it below them. For instance, the code below specifies the following order of choices: None, Select All, regular choices, Other.
52590
53208
  *
@@ -52605,7 +53223,9 @@ var settings = {
52605
53223
  specialChoicesOrder: {
52606
53224
  selectAllItem: [-1],
52607
53225
  noneItem: [1],
52608
- otherItem: [2]
53226
+ refuseItem: [2],
53227
+ dontKnowItem: [3],
53228
+ otherItem: [4]
52609
53229
  },
52610
53230
  /**
52611
53231
  * A list of supported validators by question type.
@@ -52659,6 +53279,12 @@ var settings = {
52659
53279
  * Default value: `true`
52660
53280
  */
52661
53281
  showMaxLengthIndicator: true,
53282
+ /**
53283
+ * Set to `false` to disable animations
53284
+ *
53285
+ * Default value: `true`
53286
+ */
53287
+ animationEnabled: true,
52662
53288
  /**
52663
53289
  * An object that specifies heading levels (`<h1>`, `<h2>`, etc.) to use when rendering survey, page, panel, and question titles.
52664
53290
  *
@@ -52744,7 +53370,8 @@ var settings = {
52744
53370
  "email",
52745
53371
  "impp",
52746
53372
  ]
52747
- }
53373
+ },
53374
+ legacyProgressBarView: false
52748
53375
  };
52749
53376
 
52750
53377
 
@@ -54569,7 +55196,8 @@ __webpack_require__.r(__webpack_exports__);
54569
55196
  /* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./header */ "./src/header.ts");
54570
55197
  /* harmony import */ var _surveytimer__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./surveytimer */ "./src/surveytimer.ts");
54571
55198
  /* harmony import */ var _surveyTaskManager__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./surveyTaskManager */ "./src/surveyTaskManager.ts");
54572
- /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./surveyToc */ "./src/surveyToc.ts");
55199
+ /* harmony import */ var _progress_buttons__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./progress-buttons */ "./src/progress-buttons.ts");
55200
+ /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./surveyToc */ "./src/surveyToc.ts");
54573
55201
  var __extends = (undefined && undefined.__extends) || (function () {
54574
55202
  var extendStatics = function (d, b) {
54575
55203
  extendStatics = Object.setPrototypeOf ||
@@ -54613,6 +55241,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
54613
55241
 
54614
55242
 
54615
55243
 
55244
+
54616
55245
 
54617
55246
 
54618
55247
  /**
@@ -55082,6 +55711,12 @@ var SurveyModel = /** @class */ (function (_super) {
55082
55711
  * [View Demo](https://surveyjs.io/form-library/examples/lazy-loading-dropdown/ (linkStyle))
55083
55712
  */
55084
55713
  _this.onChoicesLazyLoad = _this.addEvent();
55714
+ /**
55715
+ * An event that is raised each time a search string in a [Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) or [Tag Box](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) question changes. Use this event to implement custom filtering of choice options.
55716
+ * @see [QuestionDropdownModel.searchEnabled](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model#searchEnabled)
55717
+ * @see [QuestionDropdownModel.searchMode](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model#searchMode)
55718
+ */
55719
+ _this.onChoicesSearch = _this.addEvent();
55085
55720
  /**
55086
55721
  * Use this event to load a display text for the [default choice item](https://surveyjs.io/form-library/documentation/questiondropdownmodel#defaultValue) in [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel) and [Tag Box](https://surveyjs.io/form-library/documentation/questiontagboxmodel) questions.
55087
55722
  *
@@ -55453,6 +56088,7 @@ var SurveyModel = /** @class */ (function (_super) {
55453
56088
  _this.onScrollCallback = undefined;
55454
56089
  }
55455
56090
  });
56091
+ _this.progressBarValue = new _progress_buttons__WEBPACK_IMPORTED_MODULE_23__["ProgressButtons"](_this);
55456
56092
  _this.layoutElements.push({
55457
56093
  id: "timerpanel",
55458
56094
  template: "survey-timerpanel",
@@ -55462,7 +56098,8 @@ var SurveyModel = /** @class */ (function (_super) {
55462
56098
  _this.layoutElements.push({
55463
56099
  id: "progress-buttons",
55464
56100
  component: "sv-progress-buttons",
55465
- data: _this
56101
+ data: _this.progressBar,
56102
+ processResponsiveness: function (width) { return _this.progressBar.processResponsiveness && _this.progressBar.processResponsiveness(width); }
55466
56103
  });
55467
56104
  _this.layoutElements.push({
55468
56105
  id: "progress-questions",
@@ -55487,10 +56124,10 @@ var SurveyModel = /** @class */ (function (_super) {
55487
56124
  _this.addLayoutElement({
55488
56125
  id: "toc-navigation",
55489
56126
  component: "sv-navigation-toc",
55490
- data: new _surveyToc__WEBPACK_IMPORTED_MODULE_23__["TOCModel"](_this)
56127
+ data: new _surveyToc__WEBPACK_IMPORTED_MODULE_24__["TOCModel"](_this)
55491
56128
  });
55492
56129
  _this.layoutElements.push({
55493
- id: "navigationbuttons",
56130
+ id: "buttons-navigation",
55494
56131
  component: "sv-action-bar",
55495
56132
  data: _this.navigationBar
55496
56133
  });
@@ -57432,6 +58069,13 @@ var SurveyModel = /** @class */ (function (_super) {
57432
58069
  enumerable: false,
57433
58070
  configurable: true
57434
58071
  });
58072
+ Object.defineProperty(SurveyModel.prototype, "progressBar", {
58073
+ get: function () {
58074
+ return this.progressBarValue;
58075
+ },
58076
+ enumerable: false,
58077
+ configurable: true
58078
+ });
57435
58079
  Object.defineProperty(SurveyModel.prototype, "showProgressBar", {
57436
58080
  /**
57437
58081
  * Controls the visibility of the progress bar and specifies its position.
@@ -57439,9 +58083,13 @@ var SurveyModel = /** @class */ (function (_super) {
57439
58083
  * Possible values:
57440
58084
  *
57441
58085
  * - `"off"` (default) - Hides the progress bar.
57442
- * - `"top"` - Displays the progress bar above survey content.
58086
+ * - `"aboveHeader"` - Displays the progress bar above the survey header.
58087
+ * - `"belowHeader"` - Displays the progress bar below the survey header.
57443
58088
  * - `"bottom"` - Displays the progress bar below survey content.
57444
- * - `"both"` - Displays the progress bar above and below survey content.
58089
+ * - `"topBottom"` - Displays the progress bar above and below survey content.
58090
+ * - `"auto"` - Automatically selects between `"aboveHeader"` and `"belowHeader"`.
58091
+ * - `"top"` - *(Obsolete)* Use the `"aboveHeader"` or `"belowHeader"` property value instead.
58092
+ * - `"both"` - *(Obsolete)* Use the `"topBottom"` property value instead.
57445
58093
  *
57446
58094
  * [View Demo](https://surveyjs.io/form-library/examples/navigation-default/ (linkStyle))
57447
58095
  * @see progressBarType
@@ -57466,7 +58114,9 @@ var SurveyModel = /** @class */ (function (_super) {
57466
58114
  * - `"questions"` - The number of answered questions.
57467
58115
  * - `"requiredQuestions"` - The number of answered [required questions](https://surveyjs.io/form-library/documentation/api-reference/question#isRequired).
57468
58116
  * - `"correctQuestions"` - The number of correct questions in a [quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
57469
- * - `"buttons"` - Adds jump links to the progress bar.
58117
+ * - `"buttons"` - *(Obsolete)* Use the `"pages"` property value with the [`progressBarShowPageTitles`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#progressBarShowPageTitles) property set to `true` instead.
58118
+ *
58119
+ * > When `progressBarType` is set to `"pages"`, you can also enable the [`progressBarShowPageNumbers`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#progressBarShowPageNumbers) and [`progressBarShowPageTitles`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#progressBarShowPageTitles) properties if you want to display page numbers and titles in the progress bar.
57470
58120
  *
57471
58121
  * [View Demo](https://surveyjs.io/form-library/examples/navigation-buttons/ (linkStyle))
57472
58122
  * @see progressValue
@@ -57479,16 +58129,33 @@ var SurveyModel = /** @class */ (function (_super) {
57479
58129
  newValue = "correctQuestion";
57480
58130
  if (newValue === "requiredquestion")
57481
58131
  newValue = "requiredQuestion";
58132
+ // if (newValue === "buttons") {
58133
+ // newValue = "pages";
58134
+ // this.progressBarShowPageTitles = true;
58135
+ // }
57482
58136
  this.setPropertyValue("progressBarType", newValue);
57483
58137
  },
57484
58138
  enumerable: false,
57485
58139
  configurable: true
57486
58140
  });
58141
+ Object.defineProperty(SurveyModel.prototype, "progressBarComponentName", {
58142
+ get: function () {
58143
+ var actualProgressBarType = this.progressBarType;
58144
+ if (!_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].legacyProgressBarView && _defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_4__["surveyCss"].currentType === "defaultV2") {
58145
+ if (isStrCiEqual(actualProgressBarType, "pages")) {
58146
+ actualProgressBarType = "buttons";
58147
+ }
58148
+ }
58149
+ return "progress-" + actualProgressBarType;
58150
+ },
58151
+ enumerable: false,
58152
+ configurable: true
58153
+ });
57487
58154
  Object.defineProperty(SurveyModel.prototype, "isShowProgressBarOnTop", {
57488
58155
  get: function () {
57489
58156
  if (!this.canShowProresBar())
57490
58157
  return false;
57491
- return this.showProgressBar === "top" || this.showProgressBar === "both";
58158
+ return ["auto", "aboveheader", "belowheader", "topbottom", "top", "both"].indexOf(this.showProgressBar) !== -1;
57492
58159
  },
57493
58160
  enumerable: false,
57494
58161
  configurable: true
@@ -57497,7 +58164,7 @@ var SurveyModel = /** @class */ (function (_super) {
57497
58164
  get: function () {
57498
58165
  if (!this.canShowProresBar())
57499
58166
  return false;
57500
- return this.showProgressBar === "bottom" || this.showProgressBar === "both";
58167
+ return this.showProgressBar === "bottom" || this.showProgressBar === "both" || this.showProgressBar === "topbottom";
57501
58168
  },
57502
58169
  enumerable: false,
57503
58170
  configurable: true
@@ -59828,6 +60495,7 @@ var SurveyModel = /** @class */ (function (_super) {
59828
60495
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
59829
60496
  .append(this.css.root)
59830
60497
  .append(this.css.rootMobile, this.isMobile)
60498
+ .append(this.css.rootAnimationDisabled, !_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].animationEnabled)
59831
60499
  .append(this.css.rootReadOnly, this.mode === "display")
59832
60500
  .append(this.css.rootCompact, this.isCompact)
59833
60501
  .append(this.css.rootFitToContainer, this.fitToContainer)
@@ -60209,7 +60877,7 @@ var SurveyModel = /** @class */ (function (_super) {
60209
60877
  }
60210
60878
  };
60211
60879
  /**
60212
- * Uploads a file to server.
60880
+ * Uploads files to a server.
60213
60881
  *
60214
60882
  * The following code shows how to call this method:
60215
60883
  *
@@ -60857,6 +61525,12 @@ var SurveyModel = /** @class */ (function (_super) {
60857
61525
  enumerable: false,
60858
61526
  configurable: true
60859
61527
  });
61528
+ /**
61529
+ * Recalculates all [expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) in the survey.
61530
+ */
61531
+ SurveyModel.prototype.runExpressions = function () {
61532
+ this.runConditions();
61533
+ };
60860
61534
  SurveyModel.prototype.runConditions = function () {
60861
61535
  if (this.isCompleted ||
60862
61536
  this.isEndLoadingFromJson === "processing" ||
@@ -61093,6 +61767,12 @@ var SurveyModel = /** @class */ (function (_super) {
61093
61767
  this.onStateAndCurrentPageChanged();
61094
61768
  this.updateState();
61095
61769
  };
61770
+ SurveyModel.prototype.startLoadingFromJson = function (json) {
61771
+ _super.prototype.startLoadingFromJson.call(this, json);
61772
+ if (json && json.locale) {
61773
+ this.locale = json.locale;
61774
+ }
61775
+ };
61096
61776
  SurveyModel.prototype.setJsonObject = function (jsonObj) {
61097
61777
  this.fromJSON(jsonObj);
61098
61778
  };
@@ -62204,7 +62884,9 @@ var SurveyModel = /** @class */ (function (_super) {
62204
62884
  * @see onTimer
62205
62885
  */
62206
62886
  SurveyModel.prototype.startTimer = function () {
62207
- this.timerModel.start();
62887
+ if (this.isEditMode) {
62888
+ this.timerModel.start();
62889
+ }
62208
62890
  };
62209
62891
  SurveyModel.prototype.startTimerFromUI = function () {
62210
62892
  if (this.showTimerPanel != "none" && this.state === "running") {
@@ -62478,7 +63160,7 @@ var SurveyModel = /** @class */ (function (_super) {
62478
63160
  *
62479
63161
  * This method accepts an object with the following layout element properties:
62480
63162
  *
62481
- * - `id`: `string` | `"timerpanel"` | `"progress-buttons"` | `"progress-questions"` | `"progress-pages"` | `"progress-correctquestions"` | `"progress-requiredquestions"` | `"toc-navigation"` | `"navigationbuttons"`\
63163
+ * - `id`: `string` | `"timerpanel"` | `"progress-buttons"` | `"progress-questions"` | `"progress-pages"` | `"progress-correctquestions"` | `"progress-requiredquestions"` | `"toc-navigation"` | `"buttons-navigation"`\
62482
63164
  * A layout element identifier. You can use possible values to access and relocate or customize predefined layout elements.
62483
63165
  *
62484
63166
  * - `container`: `"header"` | `"footer"` | `"left"` | `"right"` | `"contentTop"` | `"contentBottom"`\
@@ -62527,10 +63209,13 @@ var SurveyModel = /** @class */ (function (_super) {
62527
63209
  }
62528
63210
  }
62529
63211
  }
62530
- else if (this.state === "running" && isStrCiEqual(layoutElement.id, "progress-" + this.progressBarType)) {
63212
+ else if (this.state === "running" && isStrCiEqual(layoutElement.id, this.progressBarComponentName)) {
62531
63213
  var headerLayoutElement = this.findLayoutElement("advanced-header");
62532
63214
  var advHeader = headerLayoutElement && headerLayoutElement.data;
62533
63215
  var isBelowHeader = !advHeader || advHeader.hasBackground;
63216
+ if (isStrCiEqual(this.showProgressBar, "aboveHeader")) {
63217
+ isBelowHeader = false;
63218
+ }
62534
63219
  if (container === "header" && !isBelowHeader) {
62535
63220
  layoutElement.index = -150;
62536
63221
  if (this.isShowProgressBarOnTop && !this.isShowStartingPage) {
@@ -62551,7 +63236,7 @@ var SurveyModel = /** @class */ (function (_super) {
62551
63236
  }
62552
63237
  }
62553
63238
  }
62554
- else if (isStrCiEqual(layoutElement.id, "navigationbuttons")) {
63239
+ else if (isStrCiEqual(layoutElement.id, "buttons-navigation")) {
62555
63240
  if (container === "contentTop") {
62556
63241
  if (["top", "both"].indexOf(this.isNavigationButtonsShowing) !== -1) {
62557
63242
  containerLayoutElements.push(layoutElement);
@@ -62761,6 +63446,16 @@ var SurveyModel = /** @class */ (function (_super) {
62761
63446
  __decorate([
62762
63447
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62763
63448
  ], SurveyModel.prototype, "wrapperFormCss", void 0);
63449
+ __decorate([
63450
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({
63451
+ getDefaultValue: function (self) {
63452
+ return self.progressBarType === "buttons";
63453
+ },
63454
+ })
63455
+ ], SurveyModel.prototype, "progressBarShowPageTitles", void 0);
63456
+ __decorate([
63457
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
63458
+ ], SurveyModel.prototype, "progressBarShowPageNumbers", void 0);
62764
63459
  __decorate([
62765
63460
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62766
63461
  ], SurveyModel.prototype, "rootCss", void 0);
@@ -62896,7 +63591,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
62896
63591
  {
62897
63592
  name: "showProgressBar",
62898
63593
  default: "off",
62899
- choices: ["off", "top", "bottom", "both"],
63594
+ choices: ["off", "auto", "aboveHeader", "belowHeader", "bottom", "topBottom"],
62900
63595
  },
62901
63596
  {
62902
63597
  name: "progressBarType",
@@ -62906,9 +63601,10 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
62906
63601
  "questions",
62907
63602
  "requiredQuestions",
62908
63603
  "correctQuestions",
62909
- "buttons",
62910
63604
  ],
62911
63605
  },
63606
+ { name: "progressBarShowPageTitles:switch", category: "navigation" },
63607
+ { name: "progressBarShowPageNumbers:switch", default: false, category: "navigation" },
62912
63608
  {
62913
63609
  name: "showTOC:switch",
62914
63610
  default: false
@@ -63055,56 +63751,6 @@ var SurveyProgressModel = /** @class */ (function () {
63055
63751
 
63056
63752
 
63057
63753
 
63058
- /***/ }),
63059
-
63060
- /***/ "./src/surveyProgressButtons.ts":
63061
- /*!**************************************!*\
63062
- !*** ./src/surveyProgressButtons.ts ***!
63063
- \**************************************/
63064
- /*! exports provided: SurveyProgressButtonsModel */
63065
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
63066
-
63067
- "use strict";
63068
- __webpack_require__.r(__webpack_exports__);
63069
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return SurveyProgressButtonsModel; });
63070
- /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
63071
-
63072
- var SurveyProgressButtonsModel = /** @class */ (function () {
63073
- function SurveyProgressButtonsModel(survey) {
63074
- this.survey = survey;
63075
- }
63076
- SurveyProgressButtonsModel.prototype.isListElementClickable = function (index) {
63077
- if (!this.survey.onServerValidateQuestions ||
63078
- this.survey.onServerValidateQuestions.isEmpty ||
63079
- this.survey.checkErrorsMode === "onComplete") {
63080
- return true;
63081
- }
63082
- return index <= this.survey.currentPageNo + 1;
63083
- };
63084
- SurveyProgressButtonsModel.prototype.getListElementCss = function (index) {
63085
- if (index >= this.survey.visiblePages.length)
63086
- return;
63087
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_0__["CssClassBuilder"]()
63088
- .append(this.survey.css.progressButtonsListElementPassed, this.survey.visiblePages[index].passed)
63089
- .append(this.survey.css.progressButtonsListElementCurrent, this.survey.currentPageNo === index)
63090
- .append(this.survey.css.progressButtonsListElementNonClickable, !this.isListElementClickable(index))
63091
- .toString();
63092
- };
63093
- SurveyProgressButtonsModel.prototype.getScrollButtonCss = function (hasScroller, isLeftScroll) {
63094
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_0__["CssClassBuilder"]()
63095
- .append(this.survey.css.progressButtonsImageButtonLeft, isLeftScroll)
63096
- .append(this.survey.css.progressButtonsImageButtonRight, !isLeftScroll)
63097
- .append(this.survey.css.progressButtonsImageButtonHidden, !hasScroller)
63098
- .toString();
63099
- };
63100
- SurveyProgressButtonsModel.prototype.clickListElement = function (index) {
63101
- this.survey.tryNavigateToPage(this.survey.visiblePages[index]);
63102
- };
63103
- return SurveyProgressButtonsModel;
63104
- }());
63105
-
63106
-
63107
-
63108
63754
  /***/ }),
63109
63755
 
63110
63756
  /***/ "./src/surveyStrings.ts":
@@ -64169,6 +64815,13 @@ var Trigger = /** @class */ (function (_super) {
64169
64815
  }
64170
64816
  return res;
64171
64817
  };
64818
+ Object.defineProperty(Trigger.prototype, "isInternal", {
64819
+ get: function () {
64820
+ return this.isGhost === true;
64821
+ },
64822
+ enumerable: false,
64823
+ configurable: true
64824
+ });
64172
64825
  Object.defineProperty(Trigger.prototype, "operator", {
64173
64826
  get: function () {
64174
64827
  return this.getPropertyValue("operator", "equal");
@@ -65105,8 +65758,11 @@ var PopupUtils = /** @class */ (function () {
65105
65758
  }
65106
65759
  return { left: Math.round(currentLeft), top: Math.round(currentTop) };
65107
65760
  };
65108
- PopupUtils.getCorrectedVerticalDimensions = function (top, height, windowHeight) {
65109
- var result = { height: height, top: top };
65761
+ PopupUtils.getCorrectedVerticalDimensions = function (top, height, windowHeight, verticalPosition) {
65762
+ var result;
65763
+ if (verticalPosition === "top") {
65764
+ result = { height: height, top: top };
65765
+ }
65110
65766
  if (top < 0) {
65111
65767
  result = { height: height + top, top: 0 };
65112
65768
  }
@@ -65484,7 +66140,7 @@ function confirmAction(message) {
65484
66140
  return _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].confirmActionFunc(message);
65485
66141
  return confirm(message);
65486
66142
  }
65487
- function confirmActionAsync(message, funcOnYes, funcOnNo) {
66143
+ function confirmActionAsync(message, funcOnYes, funcOnNo, locale) {
65488
66144
  var callbackFunc = function (res) {
65489
66145
  if (res)
65490
66146
  funcOnYes();
@@ -65492,7 +66148,7 @@ function confirmActionAsync(message, funcOnYes, funcOnNo) {
65492
66148
  funcOnNo();
65493
66149
  };
65494
66150
  if (!!_settings__WEBPACK_IMPORTED_MODULE_1__["settings"] && !!_settings__WEBPACK_IMPORTED_MODULE_1__["settings"].confirmActionAsync) {
65495
- if (_settings__WEBPACK_IMPORTED_MODULE_1__["settings"].confirmActionAsync(message, callbackFunc))
66151
+ if (_settings__WEBPACK_IMPORTED_MODULE_1__["settings"].confirmActionAsync(message, callbackFunc, undefined, locale))
65496
66152
  return;
65497
66153
  }
65498
66154
  callbackFunc(confirmAction(message));
@@ -65841,7 +66497,7 @@ var Logger = /** @class */ (function () {
65841
66497
  return Logger;
65842
66498
  }());
65843
66499
 
65844
- function showConfirmDialog(message, callback, applyTitle) {
66500
+ function showConfirmDialog(message, callback, applyTitle, locale) {
65845
66501
  var locStr = new _localizablestring__WEBPACK_IMPORTED_MODULE_0__["LocalizableString"](undefined);
65846
66502
  var popupViewModel = _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].showDialog({
65847
66503
  componentName: "sv-string-viewer",
@@ -65862,9 +66518,9 @@ function showConfirmDialog(message, callback, applyTitle) {
65862
66518
  var toolbar = popupViewModel.footerToolbar;
65863
66519
  var applyBtn = toolbar.getActionById("apply");
65864
66520
  var cancelBtn = toolbar.getActionById("cancel");
65865
- cancelBtn.title = _surveyStrings__WEBPACK_IMPORTED_MODULE_2__["surveyLocalization"].getString("cancel");
66521
+ cancelBtn.title = _surveyStrings__WEBPACK_IMPORTED_MODULE_2__["surveyLocalization"].getString("cancel", locale);
65866
66522
  cancelBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sd-btn sd-btn--small";
65867
- applyBtn.title = applyTitle || _surveyStrings__WEBPACK_IMPORTED_MODULE_2__["surveyLocalization"].getString("ok");
66523
+ applyBtn.title = applyTitle || _surveyStrings__WEBPACK_IMPORTED_MODULE_2__["surveyLocalization"].getString("ok", locale);
65868
66524
  applyBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sv-popup__button--danger sd-btn sd-btn--small sd-btn--danger";
65869
66525
  popupViewModel.width = "452px";
65870
66526
  return true;