@fieldia/designer 0.26.0 → 0.27.0

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 (386) hide show
  1. package/README.md +75 -0
  2. package/package.json +4 -4
  3. package/src/lib/answer-picker.d.mts +22 -0
  4. package/src/lib/answer-picker.d.ts +22 -0
  5. package/src/lib/answer-picker.js +104 -0
  6. package/src/lib/answer-picker.js.map +1 -0
  7. package/src/lib/answer-picker.mjs +99 -0
  8. package/src/lib/answer-picker.mjs.map +1 -0
  9. package/src/lib/canvas-form.js +2 -1
  10. package/src/lib/canvas-form.js.map +1 -1
  11. package/src/lib/canvas-form.mjs +2 -1
  12. package/src/lib/canvas-form.mjs.map +1 -1
  13. package/src/lib/chrome.js +15 -4
  14. package/src/lib/chrome.js.map +1 -1
  15. package/src/lib/chrome.mjs +15 -4
  16. package/src/lib/chrome.mjs.map +1 -1
  17. package/src/lib/clipboard-names.d.mts +1 -1
  18. package/src/lib/clipboard-names.d.ts +1 -1
  19. package/src/lib/clipboard-names.js +25 -4
  20. package/src/lib/clipboard-names.js.map +1 -1
  21. package/src/lib/clipboard-names.mjs +25 -4
  22. package/src/lib/clipboard-names.mjs.map +1 -1
  23. package/src/lib/columns-editor.d.mts +5 -2
  24. package/src/lib/columns-editor.d.ts +5 -2
  25. package/src/lib/columns-editor.js +144 -3
  26. package/src/lib/columns-editor.js.map +1 -1
  27. package/src/lib/columns-editor.mjs +144 -3
  28. package/src/lib/columns-editor.mjs.map +1 -1
  29. package/src/lib/condition-editor.d.mts +5 -1
  30. package/src/lib/condition-editor.d.ts +5 -1
  31. package/src/lib/condition-editor.js +5 -2
  32. package/src/lib/condition-editor.js.map +1 -1
  33. package/src/lib/condition-editor.mjs +5 -2
  34. package/src/lib/condition-editor.mjs.map +1 -1
  35. package/src/lib/conditions.d.mts +6 -2
  36. package/src/lib/conditions.d.ts +6 -2
  37. package/src/lib/conditions.js +9 -3
  38. package/src/lib/conditions.js.map +1 -1
  39. package/src/lib/conditions.mjs +9 -3
  40. package/src/lib/conditions.mjs.map +1 -1
  41. package/src/lib/designer.d.mts +43 -2
  42. package/src/lib/designer.d.ts +43 -2
  43. package/src/lib/designer.js +111 -14
  44. package/src/lib/designer.js.map +1 -1
  45. package/src/lib/designer.mjs +113 -16
  46. package/src/lib/designer.mjs.map +1 -1
  47. package/src/lib/endings-commands.d.mts +27 -0
  48. package/src/lib/endings-commands.d.ts +27 -0
  49. package/src/lib/endings-commands.js +58 -0
  50. package/src/lib/endings-commands.js.map +1 -0
  51. package/src/lib/endings-commands.mjs +55 -0
  52. package/src/lib/endings-commands.mjs.map +1 -0
  53. package/src/lib/endings-editor.d.mts +14 -0
  54. package/src/lib/endings-editor.d.ts +14 -0
  55. package/src/lib/endings-editor.js +131 -0
  56. package/src/lib/endings-editor.js.map +1 -0
  57. package/src/lib/endings-editor.mjs +128 -0
  58. package/src/lib/endings-editor.mjs.map +1 -0
  59. package/src/lib/head-parts.js +1 -1
  60. package/src/lib/head-parts.js.map +1 -1
  61. package/src/lib/head-parts.mjs +2 -2
  62. package/src/lib/head-parts.mjs.map +1 -1
  63. package/src/lib/json-checks.d.mts +2 -1
  64. package/src/lib/json-checks.d.ts +2 -1
  65. package/src/lib/json-checks.js +3 -3
  66. package/src/lib/json-checks.js.map +1 -1
  67. package/src/lib/json-checks.mjs +3 -3
  68. package/src/lib/json-checks.mjs.map +1 -1
  69. package/src/lib/json-view.js +1 -1
  70. package/src/lib/json-view.js.map +1 -1
  71. package/src/lib/json-view.mjs +1 -1
  72. package/src/lib/json-view.mjs.map +1 -1
  73. package/src/lib/kind-commands.d.mts +4 -0
  74. package/src/lib/kind-commands.d.ts +4 -0
  75. package/src/lib/kind-commands.js +19 -0
  76. package/src/lib/kind-commands.js.map +1 -1
  77. package/src/lib/kind-commands.mjs +19 -0
  78. package/src/lib/kind-commands.mjs.map +1 -1
  79. package/src/lib/kind-settings-structures.js +50 -3
  80. package/src/lib/kind-settings-structures.js.map +1 -1
  81. package/src/lib/kind-settings-structures.mjs +50 -3
  82. package/src/lib/kind-settings-structures.mjs.map +1 -1
  83. package/src/lib/kind-settings.js +48 -0
  84. package/src/lib/kind-settings.js.map +1 -1
  85. package/src/lib/kind-settings.mjs +48 -0
  86. package/src/lib/kind-settings.mjs.map +1 -1
  87. package/src/lib/kinds.d.mts +3 -2
  88. package/src/lib/kinds.d.ts +3 -2
  89. package/src/lib/kinds.js +3 -1
  90. package/src/lib/kinds.js.map +1 -1
  91. package/src/lib/kinds.mjs +3 -1
  92. package/src/lib/kinds.mjs.map +1 -1
  93. package/src/lib/limits-settings.d.mts +14 -0
  94. package/src/lib/limits-settings.d.ts +14 -0
  95. package/src/lib/limits-settings.js +66 -0
  96. package/src/lib/limits-settings.js.map +1 -0
  97. package/src/lib/limits-settings.mjs +63 -0
  98. package/src/lib/limits-settings.mjs.map +1 -0
  99. package/src/lib/list-commands.d.mts +21 -3
  100. package/src/lib/list-commands.d.ts +21 -3
  101. package/src/lib/list-commands.js +61 -9
  102. package/src/lib/list-commands.js.map +1 -1
  103. package/src/lib/list-commands.mjs +60 -8
  104. package/src/lib/list-commands.mjs.map +1 -1
  105. package/src/lib/list-properties.js +51 -4
  106. package/src/lib/list-properties.js.map +1 -1
  107. package/src/lib/list-properties.mjs +53 -6
  108. package/src/lib/list-properties.mjs.map +1 -1
  109. package/src/lib/list-rows-settings.js +1 -1
  110. package/src/lib/list-rows-settings.js.map +1 -1
  111. package/src/lib/list-rows-settings.mjs +1 -1
  112. package/src/lib/list-rows-settings.mjs.map +1 -1
  113. package/src/lib/list-source.d.mts +2 -2
  114. package/src/lib/list-source.d.ts +2 -2
  115. package/src/lib/list-source.js +55 -9
  116. package/src/lib/list-source.js.map +1 -1
  117. package/src/lib/list-source.mjs +55 -9
  118. package/src/lib/list-source.mjs.map +1 -1
  119. package/src/lib/locales/ar/changes.js +2 -0
  120. package/src/lib/locales/ar/changes.js.map +1 -1
  121. package/src/lib/locales/ar/changes.mjs +2 -0
  122. package/src/lib/locales/ar/changes.mjs.map +1 -1
  123. package/src/lib/locales/ar/checks.js +1 -0
  124. package/src/lib/locales/ar/checks.js.map +1 -1
  125. package/src/lib/locales/ar/checks.mjs +1 -0
  126. package/src/lib/locales/ar/checks.mjs.map +1 -1
  127. package/src/lib/locales/ar/endings.d.mts +3 -0
  128. package/src/lib/locales/ar/endings.d.ts +3 -0
  129. package/src/lib/locales/ar/endings.js +40 -0
  130. package/src/lib/locales/ar/endings.js.map +1 -0
  131. package/src/lib/locales/ar/endings.mjs +37 -0
  132. package/src/lib/locales/ar/endings.mjs.map +1 -0
  133. package/src/lib/locales/ar/index.js +2 -1
  134. package/src/lib/locales/ar/index.js.map +1 -1
  135. package/src/lib/locales/ar/index.mjs +2 -1
  136. package/src/lib/locales/ar/index.mjs.map +1 -1
  137. package/src/lib/locales/ar/list.js +9 -1
  138. package/src/lib/locales/ar/list.js.map +1 -1
  139. package/src/lib/locales/ar/list.mjs +9 -1
  140. package/src/lib/locales/ar/list.mjs.map +1 -1
  141. package/src/lib/locales/ar/options.js +4 -0
  142. package/src/lib/locales/ar/options.js.map +1 -1
  143. package/src/lib/locales/ar/options.mjs +4 -0
  144. package/src/lib/locales/ar/options.mjs.map +1 -1
  145. package/src/lib/locales/ar/panel.js +20 -0
  146. package/src/lib/locales/ar/panel.js.map +1 -1
  147. package/src/lib/locales/ar/panel.mjs +20 -0
  148. package/src/lib/locales/ar/panel.mjs.map +1 -1
  149. package/src/lib/locales/ar/questions.js +24 -1
  150. package/src/lib/locales/ar/questions.js.map +1 -1
  151. package/src/lib/locales/ar/questions.mjs +24 -1
  152. package/src/lib/locales/ar/questions.mjs.map +1 -1
  153. package/src/lib/locales/ar/refusals.js +15 -2
  154. package/src/lib/locales/ar/refusals.js.map +1 -1
  155. package/src/lib/locales/ar/refusals.mjs +15 -2
  156. package/src/lib/locales/ar/refusals.mjs.map +1 -1
  157. package/src/lib/locales/ar/rules-ui.js +21 -1
  158. package/src/lib/locales/ar/rules-ui.js.map +1 -1
  159. package/src/lib/locales/ar/rules-ui.mjs +21 -1
  160. package/src/lib/locales/ar/rules-ui.mjs.map +1 -1
  161. package/src/lib/locales/ar/rules.js +4 -0
  162. package/src/lib/locales/ar/rules.js.map +1 -1
  163. package/src/lib/locales/ar/rules.mjs +4 -0
  164. package/src/lib/locales/ar/rules.mjs.map +1 -1
  165. package/src/lib/locales/en/changes.d.mts +2 -0
  166. package/src/lib/locales/en/changes.d.ts +2 -0
  167. package/src/lib/locales/en/changes.js +2 -0
  168. package/src/lib/locales/en/changes.js.map +1 -1
  169. package/src/lib/locales/en/changes.mjs +2 -0
  170. package/src/lib/locales/en/changes.mjs.map +1 -1
  171. package/src/lib/locales/en/checks.d.mts +2 -0
  172. package/src/lib/locales/en/checks.d.ts +2 -0
  173. package/src/lib/locales/en/checks.js +2 -0
  174. package/src/lib/locales/en/checks.js.map +1 -1
  175. package/src/lib/locales/en/checks.mjs +2 -0
  176. package/src/lib/locales/en/checks.mjs.map +1 -1
  177. package/src/lib/locales/en/endings.d.mts +38 -0
  178. package/src/lib/locales/en/endings.d.ts +38 -0
  179. package/src/lib/locales/en/endings.js +44 -0
  180. package/src/lib/locales/en/endings.js.map +1 -0
  181. package/src/lib/locales/en/endings.mjs +41 -0
  182. package/src/lib/locales/en/endings.mjs.map +1 -0
  183. package/src/lib/locales/en/index.d.mts +127 -1
  184. package/src/lib/locales/en/index.d.ts +127 -1
  185. package/src/lib/locales/en/index.js +2 -1
  186. package/src/lib/locales/en/index.js.map +1 -1
  187. package/src/lib/locales/en/index.mjs +2 -1
  188. package/src/lib/locales/en/index.mjs.map +1 -1
  189. package/src/lib/locales/en/list.d.mts +8 -0
  190. package/src/lib/locales/en/list.d.ts +8 -0
  191. package/src/lib/locales/en/list.js +9 -1
  192. package/src/lib/locales/en/list.js.map +1 -1
  193. package/src/lib/locales/en/list.mjs +9 -1
  194. package/src/lib/locales/en/list.mjs.map +1 -1
  195. package/src/lib/locales/en/options.d.mts +6 -0
  196. package/src/lib/locales/en/options.d.ts +6 -0
  197. package/src/lib/locales/en/options.js +6 -0
  198. package/src/lib/locales/en/options.js.map +1 -1
  199. package/src/lib/locales/en/options.mjs +6 -0
  200. package/src/lib/locales/en/options.mjs.map +1 -1
  201. package/src/lib/locales/en/panel.d.mts +13 -0
  202. package/src/lib/locales/en/panel.d.ts +13 -0
  203. package/src/lib/locales/en/panel.js +13 -0
  204. package/src/lib/locales/en/panel.js.map +1 -1
  205. package/src/lib/locales/en/panel.mjs +13 -0
  206. package/src/lib/locales/en/panel.mjs.map +1 -1
  207. package/src/lib/locales/en/questions.d.mts +25 -0
  208. package/src/lib/locales/en/questions.d.ts +25 -0
  209. package/src/lib/locales/en/questions.js +25 -1
  210. package/src/lib/locales/en/questions.js.map +1 -1
  211. package/src/lib/locales/en/questions.mjs +25 -1
  212. package/src/lib/locales/en/questions.mjs.map +1 -1
  213. package/src/lib/locales/en/refusals.d.mts +13 -0
  214. package/src/lib/locales/en/refusals.d.ts +13 -0
  215. package/src/lib/locales/en/refusals.js +15 -2
  216. package/src/lib/locales/en/refusals.js.map +1 -1
  217. package/src/lib/locales/en/refusals.mjs +15 -2
  218. package/src/lib/locales/en/refusals.mjs.map +1 -1
  219. package/src/lib/locales/en/rules-ui.d.mts +29 -1
  220. package/src/lib/locales/en/rules-ui.d.ts +29 -1
  221. package/src/lib/locales/en/rules-ui.js +23 -1
  222. package/src/lib/locales/en/rules-ui.js.map +1 -1
  223. package/src/lib/locales/en/rules-ui.mjs +23 -1
  224. package/src/lib/locales/en/rules-ui.mjs.map +1 -1
  225. package/src/lib/locales/en/rules.d.mts +3 -0
  226. package/src/lib/locales/en/rules.d.ts +3 -0
  227. package/src/lib/locales/en/rules.js +4 -0
  228. package/src/lib/locales/en/rules.js.map +1 -1
  229. package/src/lib/locales/en/rules.mjs +4 -0
  230. package/src/lib/locales/en/rules.mjs.map +1 -1
  231. package/src/lib/option-when.d.mts +32 -0
  232. package/src/lib/option-when.d.ts +32 -0
  233. package/src/lib/option-when.js +110 -0
  234. package/src/lib/option-when.js.map +1 -0
  235. package/src/lib/option-when.mjs +106 -0
  236. package/src/lib/option-when.mjs.map +1 -0
  237. package/src/lib/page-checks.d.mts +2 -1
  238. package/src/lib/page-checks.d.ts +2 -1
  239. package/src/lib/page-checks.js +14 -2
  240. package/src/lib/page-checks.js.map +1 -1
  241. package/src/lib/page-checks.mjs +15 -3
  242. package/src/lib/page-checks.mjs.map +1 -1
  243. package/src/lib/page-json.d.mts +5 -3
  244. package/src/lib/page-json.d.ts +5 -3
  245. package/src/lib/page-json.js +4 -4
  246. package/src/lib/page-json.js.map +1 -1
  247. package/src/lib/page-json.mjs +4 -4
  248. package/src/lib/page-json.mjs.map +1 -1
  249. package/src/lib/page-tree.js +3 -3
  250. package/src/lib/page-tree.js.map +1 -1
  251. package/src/lib/page-tree.mjs +4 -4
  252. package/src/lib/page-tree.mjs.map +1 -1
  253. package/src/lib/panel-block.js +3 -1
  254. package/src/lib/panel-block.js.map +1 -1
  255. package/src/lib/panel-block.mjs +3 -1
  256. package/src/lib/panel-block.mjs.map +1 -1
  257. package/src/lib/panel-field.js +4 -1
  258. package/src/lib/panel-field.js.map +1 -1
  259. package/src/lib/panel-field.mjs +4 -1
  260. package/src/lib/panel-field.mjs.map +1 -1
  261. package/src/lib/panel-page.js +16 -2
  262. package/src/lib/panel-page.js.map +1 -1
  263. package/src/lib/panel-page.mjs +16 -2
  264. package/src/lib/panel-page.mjs.map +1 -1
  265. package/src/lib/placeholder-when.js +2 -2
  266. package/src/lib/placeholder-when.js.map +1 -1
  267. package/src/lib/placeholder-when.mjs +2 -2
  268. package/src/lib/placeholder-when.mjs.map +1 -1
  269. package/src/lib/rules-answers.js +10 -4
  270. package/src/lib/rules-answers.js.map +1 -1
  271. package/src/lib/rules-answers.mjs +11 -5
  272. package/src/lib/rules-answers.mjs.map +1 -1
  273. package/src/lib/rules-checks.d.mts +2 -2
  274. package/src/lib/rules-checks.d.ts +2 -2
  275. package/src/lib/rules-checks.js +23 -3
  276. package/src/lib/rules-checks.js.map +1 -1
  277. package/src/lib/rules-checks.mjs +24 -4
  278. package/src/lib/rules-checks.mjs.map +1 -1
  279. package/src/lib/rules-commands.d.mts +5 -3
  280. package/src/lib/rules-commands.d.ts +5 -3
  281. package/src/lib/rules-commands.js +17 -17
  282. package/src/lib/rules-commands.js.map +1 -1
  283. package/src/lib/rules-commands.mjs +17 -17
  284. package/src/lib/rules-commands.mjs.map +1 -1
  285. package/src/lib/rules-defaults.js +3 -1
  286. package/src/lib/rules-defaults.js.map +1 -1
  287. package/src/lib/rules-defaults.mjs +3 -1
  288. package/src/lib/rules-defaults.mjs.map +1 -1
  289. package/src/lib/rules-formula-box.d.mts +4 -2
  290. package/src/lib/rules-formula-box.d.ts +4 -2
  291. package/src/lib/rules-formula-box.js +3 -1
  292. package/src/lib/rules-formula-box.js.map +1 -1
  293. package/src/lib/rules-formula-box.mjs +3 -1
  294. package/src/lib/rules-formula-box.mjs.map +1 -1
  295. package/src/lib/rules-formula.d.mts +13 -6
  296. package/src/lib/rules-formula.d.ts +13 -6
  297. package/src/lib/rules-formula.js +65 -24
  298. package/src/lib/rules-formula.js.map +1 -1
  299. package/src/lib/rules-formula.mjs +65 -25
  300. package/src/lib/rules-formula.mjs.map +1 -1
  301. package/src/lib/rules-sample.d.mts +4 -2
  302. package/src/lib/rules-sample.d.ts +4 -2
  303. package/src/lib/rules-sample.js +5 -4
  304. package/src/lib/rules-sample.js.map +1 -1
  305. package/src/lib/rules-sample.mjs +5 -4
  306. package/src/lib/rules-sample.mjs.map +1 -1
  307. package/src/lib/rules-worked-out.js +72 -17
  308. package/src/lib/rules-worked-out.js.map +1 -1
  309. package/src/lib/rules-worked-out.mjs +73 -18
  310. package/src/lib/rules-worked-out.mjs.map +1 -1
  311. package/src/lib/screen-canvas.js +3 -1
  312. package/src/lib/screen-canvas.js.map +1 -1
  313. package/src/lib/screen-canvas.mjs +3 -1
  314. package/src/lib/screen-canvas.mjs.map +1 -1
  315. package/src/lib/steps-commands.d.mts +5 -3
  316. package/src/lib/steps-commands.d.ts +5 -3
  317. package/src/lib/steps-commands.js +5 -5
  318. package/src/lib/steps-commands.js.map +1 -1
  319. package/src/lib/steps-commands.mjs +5 -5
  320. package/src/lib/steps-commands.mjs.map +1 -1
  321. package/src/lib/steps-editor.js +3 -2
  322. package/src/lib/steps-editor.js.map +1 -1
  323. package/src/lib/steps-editor.mjs +3 -2
  324. package/src/lib/steps-editor.mjs.map +1 -1
  325. package/src/lib/steps-map.d.mts +3 -1
  326. package/src/lib/steps-map.d.ts +3 -1
  327. package/src/lib/steps-map.js +1 -1
  328. package/src/lib/steps-map.js.map +1 -1
  329. package/src/lib/steps-map.mjs +1 -1
  330. package/src/lib/steps-map.mjs.map +1 -1
  331. package/src/lib/steps-settings.d.mts +3 -1
  332. package/src/lib/steps-settings.d.ts +3 -1
  333. package/src/lib/steps-settings.js +5 -2
  334. package/src/lib/steps-settings.js.map +1 -1
  335. package/src/lib/steps-settings.mjs +5 -2
  336. package/src/lib/steps-settings.mjs.map +1 -1
  337. package/src/lib/styles-endings.d.mts +6 -0
  338. package/src/lib/styles-endings.d.ts +6 -0
  339. package/src/lib/styles-endings.js +42 -0
  340. package/src/lib/styles-endings.js.map +1 -0
  341. package/src/lib/styles-endings.mjs +39 -0
  342. package/src/lib/styles-endings.mjs.map +1 -0
  343. package/src/lib/styles-kinds.d.mts +1 -1
  344. package/src/lib/styles-kinds.d.ts +1 -1
  345. package/src/lib/styles-kinds.js +1 -0
  346. package/src/lib/styles-kinds.js.map +1 -1
  347. package/src/lib/styles-kinds.mjs +1 -0
  348. package/src/lib/styles-kinds.mjs.map +1 -1
  349. package/src/lib/styles-rules.d.mts +1 -1
  350. package/src/lib/styles-rules.d.ts +1 -1
  351. package/src/lib/styles-rules.js +6 -1
  352. package/src/lib/styles-rules.js.map +1 -1
  353. package/src/lib/styles-rules.mjs +6 -1
  354. package/src/lib/styles-rules.mjs.map +1 -1
  355. package/src/lib/styles.d.mts +1 -1
  356. package/src/lib/styles.d.ts +1 -1
  357. package/src/lib/styles.js +18 -2
  358. package/src/lib/styles.js.map +1 -1
  359. package/src/lib/styles.mjs +18 -2
  360. package/src/lib/styles.mjs.map +1 -1
  361. package/src/lib/survey-editor.js +14 -4
  362. package/src/lib/survey-editor.js.map +1 -1
  363. package/src/lib/survey-editor.mjs +14 -4
  364. package/src/lib/survey-editor.mjs.map +1 -1
  365. package/src/lib/table-commands.d.mts +4 -2
  366. package/src/lib/table-commands.d.ts +4 -2
  367. package/src/lib/table-commands.js +4 -3
  368. package/src/lib/table-commands.js.map +1 -1
  369. package/src/lib/table-commands.mjs +4 -3
  370. package/src/lib/table-commands.mjs.map +1 -1
  371. package/src/lib/try-it.js +2 -0
  372. package/src/lib/try-it.js.map +1 -1
  373. package/src/lib/try-it.mjs +2 -0
  374. package/src/lib/try-it.mjs.map +1 -1
  375. package/src/lib/uncalled.d.mts +7 -0
  376. package/src/lib/uncalled.d.ts +7 -0
  377. package/src/lib/uncalled.js +21 -0
  378. package/src/lib/uncalled.js.map +1 -0
  379. package/src/lib/uncalled.mjs +18 -0
  380. package/src/lib/uncalled.mjs.map +1 -0
  381. package/src/lib/validate-edit.d.mts +3 -2
  382. package/src/lib/validate-edit.d.ts +3 -2
  383. package/src/lib/validate-edit.js +4 -3
  384. package/src/lib/validate-edit.js.map +1 -1
  385. package/src/lib/validate-edit.mjs +4 -3
  386. package/src/lib/validate-edit.mjs.map +1 -1
package/README.md CHANGED
@@ -89,6 +89,37 @@ customers"). `designer.setRecords({ one, other, a })` sets the records' words,
89
89
  `null` takes them away, and one word without the other is refused in words;
90
90
  `designer.setLowerLabels(on)` sets the labels' case.
91
91
 
92
+ ## What a form says once it is sent, and answers in its words
93
+
94
+ A form of responses lists its endings — on the screen's panel with nothing
95
+ picked (**Once it is sent**), and under a survey's pages — each with when it is
96
+ shown (rules on the answers, as a question's are), its title, its words and its
97
+ button to start again or **No button**; the last is **Shown otherwise**, and
98
+ **Add an ending** puts a new one before it, shown by the first question it can
99
+ test (or says why none can be added: no choice or yes-or-no to choose it by).
100
+ Beside every box where a page's words are typed — a field's label and help, a
101
+ button's words, a survey's question and page title, an ending's title and words —
102
+ a choice's option, a **{ }** button puts an answer in at the caret, `{branch}`,
103
+ which the form shows as it reads ("How was your visit to Zamalek?"), with what
104
+ to say while it is empty if **When empty** says it (`{branch|this branch}`); an
105
+ ending's offers the reference the app gives the response, `{id}`, too. `designer.setEnding(index, patch)` and
106
+ `designer.moveEnding(from, to)` edit them, one undo step each (a run of typing in
107
+ one box, one); what the page check refuses — a `{name}` that is no field, one
108
+ after the ending shown otherwise — is refused in words.
109
+
110
+ ## When a form takes answers, and how many
111
+
112
+ With nothing picked, a form of responses' Rules tab offers **Opens on** and
113
+ **Closes on** — typed in the designer's own date box, on the page's time zone —
114
+ **Most responses**, **One response per person**, and once one of them is set,
115
+ **Words while it takes none**; and, on any screen people type in, **Continue
116
+ later**. A choice's settings offer **Limit places**: a box for each option's
117
+ places, emptied to take one away. `designer.setPageLimits({ opens, closes,
118
+ maxResponses, onePerPerson, message })` sets them (`null` takes one away; a
119
+ close before the open, or limits on a record's screen, are refused in words),
120
+ `designer.setContinueLater(on)` and `designer.setOptionDetails(id, index, {
121
+ seats })` the rest; Publish lists each change.
122
+
92
123
  ## Trying a field's rules
93
124
 
94
125
  Under a field's answer rules — on the panel's Rules tab, and in a survey
@@ -186,6 +217,39 @@ page (Undo brings them back). A look of your own carries each kind's look.
186
217
 
187
218
  ## What an app adds
188
219
 
220
+ ### Functions of its own
221
+
222
+ `functions` gives the designer your app's functions, as the viewer is given them
223
+ (see `@fieldia/core`) — or only what is known of each (`takes`, `values`, `gives`,
224
+ `tip`), without its call. A formula's box offers them after Fieldia's, each with its
225
+ tip, and checks a formula calling one as it checks Fieldia's: how many values, and of
226
+ what kind. Nothing calls them while a page is designed — a formula's made-up values
227
+ give nothing for one — but Try it calls those it has calls for. A name no page may
228
+ call is refused as the designer is made.
229
+
230
+ ```ts
231
+ createDesigner({ page, functions: { districtPrice: { takes: [1, 1], values: ['text'], gives: 'number', tip: 'The district’s average per m²: districtPrice(district)' } } });
232
+ ```
233
+
234
+ Every formula box lists Fieldia's functions by what they work on — Numbers, Dates,
235
+ Words, Choosing — each with its words. A function there is not, or given too many or
236
+ too few values, is refused as a formula is typed; a value of a kind a function does not
237
+ take is said and kept — "“age” takes a date: Notes is text", in the box's result and as
238
+ a "should fix" check, never stopping an edit or a publish.
239
+
240
+ ### Options that follow the answers
241
+
242
+ Each option of a choice has **Show when…** in its row: a condition on another
243
+ question's answer, drawn under the row, its rules taken away to show it always — kept
244
+ as the option's `invisible` (`designer.setOptionDetails(id, index, { invisible })`,
245
+ the one command an option's details go through: its picture, points, places and
246
+ condition). A table's Choice column has the same **Show when…** in each of its
247
+ options' rows, its condition on the line's other columns or — said "… (the record)"
248
+ — the record's fields (`parent.`), kept as the line option's `invisible`
249
+ (`designer.setColumnOptionWhen(id, column, index, invisible)`). A choice's **Choices** may be **Picked in another
250
+ question**: which question, and the answers picked there or those not
251
+ (`optionsFrom: { field, picked }`); its own options follow them.
252
+
189
253
  ### Kinds of its own
190
254
 
191
255
  An app adds kinds of field beside Fieldia's: each is the field a new one starts
@@ -260,6 +324,17 @@ const assistant: DesignerAssistant = {
260
324
  createDesigner({ page, assistant }); // or mountSurveyEditor(host, { designer, assistant })
261
325
  ```
262
326
 
327
+ ### A table's columns
328
+
329
+ A table of lines' panel lists its columns — a label and a kind each: text, a
330
+ number, a date, yes or no, or a choice. A choice column's choices sit under its
331
+ row: written there, an option each (Add option, ×), or one of the app's lists
332
+ (`lists` given to the designer, a box for a name without), with the line's other
333
+ columns and the record's fields (“Workspace (the record)”, `parent.workspace`) it
334
+ changes with — `designer.setColumnChoices(id, column, { labels })`, `{ from: {
335
+ list, dependsOn } }`, `{ from: null }`. A column of a kind it does not offer, such
336
+ as a link, keeps its type.
337
+
263
338
  ### Saved forms placed in a page
264
339
 
265
340
  A store that lists its saved forms — `PageStore.list()`, optional, giving
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fieldia/designer",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "description": "Build Fieldia pages without writing JSON: an editing model with undo and versions, a survey editor, and a canvas.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://fieldia.dev",
@@ -44,9 +44,9 @@
44
44
  "./package.json": "./package.json"
45
45
  },
46
46
  "dependencies": {
47
- "@fieldia/core": "0.26.0",
48
- "@fieldia/viewer": "0.26.0",
49
- "@fieldia/widgets": "0.26.0",
47
+ "@fieldia/core": "0.27.0",
48
+ "@fieldia/viewer": "0.27.0",
49
+ "@fieldia/widgets": "0.27.0",
50
50
  "tslib": "^2.8.1"
51
51
  },
52
52
  "peerDependencies": {
@@ -0,0 +1,22 @@
1
+ import type { Field, Page } from '@fieldia/core';
2
+ import type { ElementFactory } from './chrome.mjs';
3
+ import type { Designer } from './designer.mjs';
4
+ /** The page's fields an answer can be put in words from, in the page's order. */
5
+ export declare function answerFields(page: Page): [string, Field][];
6
+ /**
7
+ * A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
8
+ * beside it that puts an answer in them (`answerButton`).
9
+ */
10
+ export declare function withAnswers(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
11
+ sent?: boolean;
12
+ }): HTMLElement;
13
+ /**
14
+ * The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
15
+ * caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
16
+ * "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
17
+ * say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
18
+ * between the answers, Escape gives the focus back, a press elsewhere closes it.
19
+ */
20
+ export declare function answerButton(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
21
+ sent?: boolean;
22
+ }): HTMLButtonElement;
@@ -0,0 +1,22 @@
1
+ import type { Field, Page } from '@fieldia/core';
2
+ import type { ElementFactory } from './chrome';
3
+ import type { Designer } from './designer';
4
+ /** The page's fields an answer can be put in words from, in the page's order. */
5
+ export declare function answerFields(page: Page): [string, Field][];
6
+ /**
7
+ * A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
8
+ * beside it that puts an answer in them (`answerButton`).
9
+ */
10
+ export declare function withAnswers(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
11
+ sent?: boolean;
12
+ }): HTMLElement;
13
+ /**
14
+ * The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
15
+ * caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
16
+ * "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
17
+ * say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
18
+ * between the answers, Escape gives the focus back, a press elsewhere closes it.
19
+ */
20
+ export declare function answerButton(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
21
+ sent?: boolean;
22
+ }): HTMLButtonElement;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.answerFields = answerFields;
4
+ exports.withAnswers = withAnswers;
5
+ exports.answerButton = answerButton;
6
+ const chrome_language_1 = require("./chrome-language");
7
+ /** The kinds whose value reads as words inside a sentence: what an answer put in words may be. */
8
+ const SAID = new Set(['char', 'text', 'html', 'integer', 'float', 'monetary', 'boolean', 'date', 'datetime', 'selection', 'many2one', 'many2many', 'reference']);
9
+ /** The page's fields an answer can be put in words from, in the page's order. */
10
+ function answerFields(page) {
11
+ return Object.entries(page.fields).filter(([, def]) => SAID.has(def.type));
12
+ }
13
+ /**
14
+ * A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
15
+ * beside it that puts an answer in them (`answerButton`).
16
+ */
17
+ function withAnswers(el, designer, box, options = {}) {
18
+ return el('span', { class: 'fd-words-box' }, box, answerButton(el, designer, box, options));
19
+ }
20
+ /** The one list of answers open, if one is: opening another closes it. */
21
+ let open = null;
22
+ /**
23
+ * The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
24
+ * caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
25
+ * "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
26
+ * say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
27
+ * between the answers, Escape gives the focus back, a press elsewhere closes it.
28
+ */
29
+ function answerButton(el, designer, box, options = {}) {
30
+ const w = designer.words.endings;
31
+ const button = el('button', { type: 'button', class: 'fd-button fd-answer-picker', 'aria-label': w.insertAnswerIn(box.getAttribute('aria-label') ?? ''), title: w.insertAnswer, 'aria-haspopup': 'dialog', 'aria-expanded': 'false' }, '{ }');
32
+ button.addEventListener('click', () => (button.getAttribute('aria-expanded') === 'true' ? open?.() : show()));
33
+ function show() {
34
+ open?.();
35
+ const doc = button.ownerDocument;
36
+ const page = designer.getPage();
37
+ const answers = answerFields(page).map(([name, def]) => [name, def.label || name]);
38
+ if (options.sent && !page.fields['id'])
39
+ answers.unshift(['id', w.reference]);
40
+ const empty = el('input', { class: 'fd-input fd-answer-empty', 'aria-label': w.whenEmpty, placeholder: w.whenEmptyHint, autocomplete: 'off' });
41
+ const picks = answers.map(([name, label]) => {
42
+ const pick = el('button', { type: 'button', class: 'fd-menu-item', 'data-answer': name }, label);
43
+ pick.addEventListener('click', () => {
44
+ close(false);
45
+ put(name, empty.value.replace(/[{}]/g, '').trim());
46
+ });
47
+ return pick;
48
+ });
49
+ const pop = el('div', { class: 'fd-menu fd-answer-menu', role: 'dialog', 'aria-label': w.answersTitle }, el('div', { class: 'fd-menu-title', 'aria-hidden': 'true' }, w.answersTitle), ...(picks.length ? [el('div', { class: 'fd-answer-list', role: 'group', 'aria-label': w.answersTitle }, ...picks)] : [el('p', { class: 'fd-menu-note' }, w.noAnswers)]), el('label', { class: 'fd-answer-empty-row' }, el('span', { class: 'fd-menu-heading' }, w.whenEmpty), empty));
50
+ pop.addEventListener('keydown', (event) => {
51
+ const at = picks.indexOf(doc.activeElement);
52
+ if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && at !== -1) {
53
+ event.preventDefault();
54
+ picks[(at + (event.key === 'ArrowDown' ? 1 : -1) + picks.length) % picks.length]?.focus();
55
+ }
56
+ else if (event.key === 'Escape') {
57
+ event.preventDefault();
58
+ event.stopPropagation();
59
+ close(true);
60
+ }
61
+ });
62
+ const outside = (event) => {
63
+ if (!pop.contains(event.target) && !button.contains(event.target))
64
+ close(false);
65
+ };
66
+ doc.addEventListener('pointerdown', outside, true);
67
+ function close(refocus) {
68
+ if (!pop.isConnected)
69
+ return;
70
+ pop.remove();
71
+ doc.removeEventListener('pointerdown', outside, true);
72
+ button.setAttribute('aria-expanded', 'false');
73
+ if (open === shut)
74
+ open = null;
75
+ if (refocus)
76
+ button.focus();
77
+ }
78
+ const shut = () => close(false);
79
+ open = shut;
80
+ (button.closest('.fd-form') ?? doc.body).append((0, chrome_language_1.speakLike)(pop, button));
81
+ button.setAttribute('aria-expanded', 'true');
82
+ // Under the button, kept in the window.
83
+ const r = button.getBoundingClientRect();
84
+ const view = doc.defaultView;
85
+ const width = pop.offsetWidth || 240;
86
+ const height = pop.offsetHeight || 0;
87
+ const below = r.bottom + 6;
88
+ Object.assign(pop.style, {
89
+ left: `${Math.max(8, Math.min(r.right - width, (view?.innerWidth ?? 1024) - width - 8))}px`,
90
+ top: `${view && below + height > view.innerHeight - 8 && r.top - height - 6 > 8 ? r.top - height - 6 : below}px`,
91
+ });
92
+ (picks[0] ?? empty).focus();
93
+ }
94
+ /** `{name}`, or `{name|words}` with words while empty, where the caret was left — over the words chosen — the caret after it. */
95
+ function put(name, empty) {
96
+ const start = box.selectionStart ?? box.value.length;
97
+ const end = box.selectionEnd ?? start;
98
+ box.focus();
99
+ box.setRangeText(empty ? `{${name}|${empty}}` : `{${name}}`, start, end, 'end');
100
+ box.dispatchEvent(new Event('input', { bubbles: true }));
101
+ }
102
+ return button;
103
+ }
104
+ //# sourceMappingURL=answer-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-picker.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/answer-picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { speakLike } from './chrome-language.mjs';
2
+ /** The kinds whose value reads as words inside a sentence: what an answer put in words may be. */
3
+ const SAID = new Set(['char', 'text', 'html', 'integer', 'float', 'monetary', 'boolean', 'date', 'datetime', 'selection', 'many2one', 'many2many', 'reference']);
4
+ /** The page's fields an answer can be put in words from, in the page's order. */
5
+ export function answerFields(page) {
6
+ return Object.entries(page.fields).filter(([, def]) => SAID.has(def.type));
7
+ }
8
+ /**
9
+ * A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
10
+ * beside it that puts an answer in them (`answerButton`).
11
+ */
12
+ export function withAnswers(el, designer, box, options = {}) {
13
+ return el('span', { class: 'fd-words-box' }, box, answerButton(el, designer, box, options));
14
+ }
15
+ /** The one list of answers open, if one is: opening another closes it. */
16
+ let open = null;
17
+ /**
18
+ * The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
19
+ * caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
20
+ * "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
21
+ * say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
22
+ * between the answers, Escape gives the focus back, a press elsewhere closes it.
23
+ */
24
+ export function answerButton(el, designer, box, options = {}) {
25
+ const w = designer.words.endings;
26
+ const button = el('button', { type: 'button', class: 'fd-button fd-answer-picker', 'aria-label': w.insertAnswerIn(box.getAttribute('aria-label') ?? ''), title: w.insertAnswer, 'aria-haspopup': 'dialog', 'aria-expanded': 'false' }, '{ }');
27
+ button.addEventListener('click', () => (button.getAttribute('aria-expanded') === 'true' ? open?.() : show()));
28
+ function show() {
29
+ open?.();
30
+ const doc = button.ownerDocument;
31
+ const page = designer.getPage();
32
+ const answers = answerFields(page).map(([name, def]) => [name, def.label || name]);
33
+ if (options.sent && !page.fields['id'])
34
+ answers.unshift(['id', w.reference]);
35
+ const empty = el('input', { class: 'fd-input fd-answer-empty', 'aria-label': w.whenEmpty, placeholder: w.whenEmptyHint, autocomplete: 'off' });
36
+ const picks = answers.map(([name, label]) => {
37
+ const pick = el('button', { type: 'button', class: 'fd-menu-item', 'data-answer': name }, label);
38
+ pick.addEventListener('click', () => {
39
+ close(false);
40
+ put(name, empty.value.replace(/[{}]/g, '').trim());
41
+ });
42
+ return pick;
43
+ });
44
+ const pop = el('div', { class: 'fd-menu fd-answer-menu', role: 'dialog', 'aria-label': w.answersTitle }, el('div', { class: 'fd-menu-title', 'aria-hidden': 'true' }, w.answersTitle), ...(picks.length ? [el('div', { class: 'fd-answer-list', role: 'group', 'aria-label': w.answersTitle }, ...picks)] : [el('p', { class: 'fd-menu-note' }, w.noAnswers)]), el('label', { class: 'fd-answer-empty-row' }, el('span', { class: 'fd-menu-heading' }, w.whenEmpty), empty));
45
+ pop.addEventListener('keydown', (event) => {
46
+ const at = picks.indexOf(doc.activeElement);
47
+ if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && at !== -1) {
48
+ event.preventDefault();
49
+ picks[(at + (event.key === 'ArrowDown' ? 1 : -1) + picks.length) % picks.length]?.focus();
50
+ }
51
+ else if (event.key === 'Escape') {
52
+ event.preventDefault();
53
+ event.stopPropagation();
54
+ close(true);
55
+ }
56
+ });
57
+ const outside = (event) => {
58
+ if (!pop.contains(event.target) && !button.contains(event.target))
59
+ close(false);
60
+ };
61
+ doc.addEventListener('pointerdown', outside, true);
62
+ function close(refocus) {
63
+ if (!pop.isConnected)
64
+ return;
65
+ pop.remove();
66
+ doc.removeEventListener('pointerdown', outside, true);
67
+ button.setAttribute('aria-expanded', 'false');
68
+ if (open === shut)
69
+ open = null;
70
+ if (refocus)
71
+ button.focus();
72
+ }
73
+ const shut = () => close(false);
74
+ open = shut;
75
+ (button.closest('.fd-form') ?? doc.body).append(speakLike(pop, button));
76
+ button.setAttribute('aria-expanded', 'true');
77
+ // Under the button, kept in the window.
78
+ const r = button.getBoundingClientRect();
79
+ const view = doc.defaultView;
80
+ const width = pop.offsetWidth || 240;
81
+ const height = pop.offsetHeight || 0;
82
+ const below = r.bottom + 6;
83
+ Object.assign(pop.style, {
84
+ left: `${Math.max(8, Math.min(r.right - width, (view?.innerWidth ?? 1024) - width - 8))}px`,
85
+ top: `${view && below + height > view.innerHeight - 8 && r.top - height - 6 > 8 ? r.top - height - 6 : below}px`,
86
+ });
87
+ (picks[0] ?? empty).focus();
88
+ }
89
+ /** `{name}`, or `{name|words}` with words while empty, where the caret was left — over the words chosen — the caret after it. */
90
+ function put(name, empty) {
91
+ const start = box.selectionStart ?? box.value.length;
92
+ const end = box.selectionEnd ?? start;
93
+ box.focus();
94
+ box.setRangeText(empty ? `{${name}|${empty}}` : `{${name}}`, start, end, 'end');
95
+ box.dispatchEvent(new Event('input', { bubbles: true }));
96
+ }
97
+ return button;
98
+ }
99
+ //# sourceMappingURL=answer-picker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-picker.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/answer-picker.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formViews = formViews;
4
4
  const core_1 = require("@fieldia/core");
5
+ const uncalled_1 = require("./uncalled");
5
6
  const viewer_1 = require("@fieldia/viewer");
6
7
  const icons_1 = require("./icons");
7
8
  const saved_forms_1 = require("./saved-forms");
@@ -98,7 +99,7 @@ function formViews(options) {
98
99
  unmount(view);
99
100
  view.body.replaceChildren();
100
101
  try {
101
- view.viewer = (0, viewer_1.mountViewer)(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages });
102
+ view.viewer = (0, viewer_1.mountViewer)(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages, functions: (0, uncalled_1.uncalled)(designer.functions()) });
102
103
  // Parts the viewer draws later — a tab when first shown, a saved form inside when its page comes — are kept apart too.
103
104
  const Watch = doc.defaultView?.MutationObserver;
104
105
  const drawn = view;
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-form.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-form.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { FORMAT_VERSION } from '@fieldia/core';
2
+ import { uncalled } from './uncalled.mjs';
2
3
  import { mountViewer } from '@fieldia/viewer';
3
4
  import { designerIcon } from './icons.mjs';
4
5
  import { shownTitle } from './saved-forms.mjs';
@@ -95,7 +96,7 @@ export function formViews(options) {
95
96
  unmount(view);
96
97
  view.body.replaceChildren();
97
98
  try {
98
- view.viewer = mountViewer(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages });
99
+ view.viewer = mountViewer(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages, functions: uncalled(designer.functions()) });
99
100
  // Parts the viewer draws later — a tab when first shown, a saved form inside when its page comes — are kept apart too.
100
101
  const Watch = doc.defaultView?.MutationObserver;
101
102
  const drawn = view;
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-form.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-form.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuC,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AAInF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAoC9C,yIAAyI;AACzI,SAAS,OAAO,CAAC,IAAc,EAAE,IAAkB,EAAE,QAA4B;IAC/E,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,EAAE,EAAE,0BAA0B;QAC9B,2GAA2G;QAC3G,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,MAAM,EAAE,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SACjN;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAA0H;IAClJ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,8FAA8F;IAC9F,MAAM,KAAK,GAAG,CAAC,OAAoB,EAAsC,EAAE;QACzE,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;QACpD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACtH,CAAC,CAAC;IAEF,SAAS,IAAI,CAAC,EAAU;QACtB,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,8CAA8C,EAAE,EAAE,CAAC,CAAC,MAAM,CAAsB,CAAC;QACpI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvD,yGAAyG;QACzG,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1G,MAAM,IAAI,GAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7F,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,OAAO,CAAC,IAAU;QACzB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,sIAAsI;IACtI,SAAS,KAAK,CAAC,IAAU;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,MAAM;YACf,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;YAClC,wGAAwG;YACxG,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC/E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEpD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YAClI,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YACD,6GAA6G;YAC7G,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;YAClH,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC1N,uHAAuH;oBACvH,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC;oBAChD,MAAM,KAAK,GAAG,IAAI,CAAC;oBACnB,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC9C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAG,KAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,GAAG;YACN,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/src/lib/chrome.js CHANGED
@@ -8,9 +8,11 @@ exports.optionsEditor = optionsEditor;
8
8
  const find_anything_1 = require("./find-anything");
9
9
  const kinds_1 = require("./kinds");
10
10
  const list_source_1 = require("./list-source");
11
+ const option_when_1 = require("./option-when");
11
12
  const icons_1 = require("./icons");
12
13
  const publish_ui_1 = require("./publish-ui");
13
14
  const writes_1 = require("./writes");
15
+ const answer_picker_1 = require("./answer-picker");
14
16
  function elementFactory(doc) {
15
17
  return (tag, attrs = {}, ...children) => {
16
18
  const node = doc.createElement(tag);
@@ -192,7 +194,9 @@ function optionsEditor(el, designer, nodeId) {
192
194
  const addRow = el('div', { class: 'fd-q-add-row' }, add, or, addOther);
193
195
  const source = (0, list_source_1.listSource)(el, designer, nodeId);
194
196
  const element = el('div', { class: 'fd-q-option-box' }, source.element, list, otherRow, addRow, source.list);
195
- const inputs = () => [...list.querySelectorAll('input')];
197
+ const inputs = () => [...list.querySelectorAll(':scope > li > input')];
198
+ /** Each option's condition, by its box. */
199
+ const whens = new WeakMap();
196
200
  const labels = () => inputs().map((i) => i.value);
197
201
  const focused = (node) => node.ownerDocument.activeElement === node;
198
202
  const focusAt = (index, atEnd = false) => {
@@ -402,17 +406,24 @@ function optionsEditor(el, designer, nodeId) {
402
406
  const grip = el('span', { class: 'fd-q-option-grip', 'aria-hidden': 'true', title: w.grip }, (0, icons_1.designerIcon)(list.ownerDocument, 'grip'));
403
407
  grip.addEventListener('pointerdown', (event) => drag(grip, event));
404
408
  const alone = el('span', { class: 'fd-q-alone', hidden: '' }, w.alone);
405
- list.append(el('li', { class: 'fd-q-option' }, grip, el('span', { class: 'fd-q-bullet', 'aria-hidden': 'true' }, multiple ? '☐' : '◯'), input, alone, remove));
409
+ // An option's words may show an answer given before it: "Yes, call me at {branch}" (answer-picker.ts); shown by
410
+ // another question's answer: "Garden" only for a villa.
411
+ const when = (0, option_when_1.optionWhen)(el, designer);
412
+ whens.set(input, when);
413
+ list.append(el('li', { class: 'fd-q-option' }, grip, el('span', { class: 'fd-q-bullet', 'aria-hidden': 'true' }, multiple ? '☐' : '◯'), input, (0, answer_picker_1.answerButton)(el, designer, input), alone, remove, when.button, when.box));
406
414
  }
407
415
  choices.forEach((option, i) => {
408
416
  const row = list.children[i];
409
417
  const input = row.querySelector('input');
410
418
  if (!focused(input))
411
419
  input.value = option.label;
412
- const remove = row.querySelector('button');
420
+ const remove = row.querySelector(':scope > .fd-icon-button');
413
421
  remove.setAttribute('aria-label', w.removeNamed(option.label));
414
- remove.hidden = choices.length === 1;
422
+ // Options carried from another question may be followed by none of its own.
423
+ remove.hidden = choices.length === 1 && !(field.type === 'selection' && field.optionsFrom);
415
424
  row.querySelector('.fd-q-alone').hidden = !option.exclusive;
425
+ // A page's own choice's row (a table's Choice column's rows have their own: columns-editor.ts).
426
+ whens.get(input)?.update(designer.getPage(), nodeId, i);
416
427
  row.querySelector('.fd-q-option-grip').hidden = choices.length === 1;
417
428
  row.querySelector('.fd-q-bullet').textContent = kind === 'dropdown' ? `${i + 1}.` : multiple ? '☐' : '◯';
418
429
  });