@sealcode/sealgen 0.8.44 → 0.8.48

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 (423) hide show
  1. package/@types/index.d.ts +1 -0
  2. package/@types/page/stateful-page.d.ts +34 -0
  3. package/@types/templates/stateful-page.d.ts +1 -0
  4. package/@types/utils/base64.d.ts +2 -0
  5. package/@types/utils/utils.d.ts +3 -0
  6. package/lib/add-route.js +3 -0
  7. package/lib/generate-routes.js +2 -1
  8. package/lib/index.js +1 -0
  9. package/lib/make-env.js +1 -1
  10. package/lib/mount.js +1 -1
  11. package/lib/page/stateful-page.js +117 -0
  12. package/lib/templates/stateful-page.js +66 -0
  13. package/lib/utils/base64.js +12 -0
  14. package/lib/utils/utils.js +6 -1
  15. package/package.json +2 -1
  16. package/tsconfig.json +0 -1
  17. package/.arcconfig +0 -12
  18. package/.arclint +0 -18
  19. package/.eslintrc.js +0 -38
  20. package/.mocharc.js +0 -10
  21. package/.nyc_output/00b15432-2e8d-4b16-9dd6-7e23314363c9.json +0 -1
  22. package/.nyc_output/0190dc00-d309-48d0-a5db-e9484e3c7334.json +0 -1
  23. package/.nyc_output/04bfea78-9274-4d35-b7e4-d0bf42636911.json +0 -1
  24. package/.nyc_output/0d4efe84-14e0-4bf0-bf22-b95472fe2be4.json +0 -1
  25. package/.nyc_output/1faea508-9cb4-46f4-b7ad-94a816e1ee7d.json +0 -1
  26. package/.nyc_output/2b2df469-dc31-48c9-ab34-68a74266e2c2.json +0 -1
  27. package/.nyc_output/32b5e63b-c8f8-4d9d-a09b-d97656c0e3f6.json +0 -1
  28. package/.nyc_output/442ce939-4f43-496b-a8a9-2f1fb9cfa619.json +0 -1
  29. package/.nyc_output/4573bb03-90d4-4408-ba15-b6835c618b33.json +0 -1
  30. package/.nyc_output/468fbd9c-6a27-4e33-8423-dbaec01e62a9.json +0 -1
  31. package/.nyc_output/51894388-b88d-4f0b-8d5b-4a1dd71cf668.json +0 -1
  32. package/.nyc_output/56263b22-3ed5-4ce2-9bbb-f2c9575cdeee.json +0 -1
  33. package/.nyc_output/6934a9dd-6431-48aa-93f1-4eeef0095773.json +0 -1
  34. package/.nyc_output/70979008-f285-481b-bb09-ca48a1376f81.json +0 -1
  35. package/.nyc_output/817c9485-a0ef-486d-8dee-906456fe77fb.json +0 -1
  36. package/.nyc_output/9f725153-f783-4948-81d3-c4cc792738bf.json +0 -1
  37. package/.nyc_output/cd4d852c-f8fc-4cb1-807b-7d053a0ef8fc.json +0 -1
  38. package/.nyc_output/ec3011f0-8180-492e-8d85-4d92484ccb44.json +0 -1
  39. package/.nyc_output/f78b831a-65ca-497d-9f9e-001a3efa6f54.json +0 -1
  40. package/.nyc_output/processinfo/00b15432-2e8d-4b16-9dd6-7e23314363c9.json +0 -1
  41. package/.nyc_output/processinfo/0190dc00-d309-48d0-a5db-e9484e3c7334.json +0 -1
  42. package/.nyc_output/processinfo/04bfea78-9274-4d35-b7e4-d0bf42636911.json +0 -1
  43. package/.nyc_output/processinfo/0d4efe84-14e0-4bf0-bf22-b95472fe2be4.json +0 -1
  44. package/.nyc_output/processinfo/1faea508-9cb4-46f4-b7ad-94a816e1ee7d.json +0 -1
  45. package/.nyc_output/processinfo/2b2df469-dc31-48c9-ab34-68a74266e2c2.json +0 -1
  46. package/.nyc_output/processinfo/32b5e63b-c8f8-4d9d-a09b-d97656c0e3f6.json +0 -1
  47. package/.nyc_output/processinfo/442ce939-4f43-496b-a8a9-2f1fb9cfa619.json +0 -1
  48. package/.nyc_output/processinfo/4573bb03-90d4-4408-ba15-b6835c618b33.json +0 -1
  49. package/.nyc_output/processinfo/468fbd9c-6a27-4e33-8423-dbaec01e62a9.json +0 -1
  50. package/.nyc_output/processinfo/51894388-b88d-4f0b-8d5b-4a1dd71cf668.json +0 -1
  51. package/.nyc_output/processinfo/56263b22-3ed5-4ce2-9bbb-f2c9575cdeee.json +0 -1
  52. package/.nyc_output/processinfo/6934a9dd-6431-48aa-93f1-4eeef0095773.json +0 -1
  53. package/.nyc_output/processinfo/70979008-f285-481b-bb09-ca48a1376f81.json +0 -1
  54. package/.nyc_output/processinfo/817c9485-a0ef-486d-8dee-906456fe77fb.json +0 -1
  55. package/.nyc_output/processinfo/9f725153-f783-4948-81d3-c4cc792738bf.json +0 -1
  56. package/.nyc_output/processinfo/cd4d852c-f8fc-4cb1-807b-7d053a0ef8fc.json +0 -1
  57. package/.nyc_output/processinfo/ec3011f0-8180-492e-8d85-4d92484ccb44.json +0 -1
  58. package/.nyc_output/processinfo/f78b831a-65ca-497d-9f9e-001a3efa6f54.json +0 -1
  59. package/.nyc_output/processinfo/index.json +0 -1
  60. package/.nycrc +0 -6
  61. package/.prettierrc +0 -21
  62. package/.xunit +0 -47
  63. package/@types/forms/fields/files-multiple.d.ts +0 -12
  64. package/@types/sealgen-url.d.ts +0 -0
  65. package/@types/tests/manual/multiform.d.ts +0 -1
  66. package/coverage/clover.xml +0 -2240
  67. package/coverage/lcov-report/base.css +0 -224
  68. package/coverage/lcov-report/block-navigation.js +0 -79
  69. package/coverage/lcov-report/favicon.png +0 -0
  70. package/coverage/lcov-report/index.html +0 -231
  71. package/coverage/lcov-report/prettify.css +0 -1
  72. package/coverage/lcov-report/prettify.js +0 -2
  73. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  74. package/coverage/lcov-report/sorter.js +0 -170
  75. package/coverage/lcov-report/src/add-collection.ts.html +0 -173
  76. package/coverage/lcov-report/src/add-route.test.ts.html +0 -254
  77. package/coverage/lcov-report/src/add-route.ts.html +0 -338
  78. package/coverage/lcov-report/src/build.ts.html +0 -359
  79. package/coverage/lcov-report/src/cli.ts.html +0 -188
  80. package/coverage/lcov-report/src/components/components.ts.html +0 -86
  81. package/coverage/lcov-report/src/components/index.html +0 -141
  82. package/coverage/lcov-report/src/components/tabs.ts.html +0 -365
  83. package/coverage/lcov-report/src/components/toggle-modal.ts.html +0 -236
  84. package/coverage/lcov-report/src/example.test.ts.html +0 -89
  85. package/coverage/lcov-report/src/find-scss-includes.ts.html +0 -176
  86. package/coverage/lcov-report/src/forms/controls/array.ts.html +0 -758
  87. package/coverage/lcov-report/src/forms/controls/autocomplete.ts.html +0 -179
  88. package/coverage/lcov-report/src/forms/controls/big-radio-group.ts.html +0 -224
  89. package/coverage/lcov-report/src/forms/controls/checkbox-group.ts.html +0 -293
  90. package/coverage/lcov-report/src/forms/controls/checkbox.ts.html +0 -182
  91. package/coverage/lcov-report/src/forms/controls/checkboxed-list-input.ts.html +0 -230
  92. package/coverage/lcov-report/src/forms/controls/collapsible-checkbox-group.ts.html +0 -164
  93. package/coverage/lcov-report/src/forms/controls/collapsible-field-group.ts.html +0 -362
  94. package/coverage/lcov-report/src/forms/controls/controls.ts.html +0 -170
  95. package/coverage/lcov-report/src/forms/controls/derived-frame.ts.html +0 -353
  96. package/coverage/lcov-report/src/forms/controls/derived.ts.html +0 -404
  97. package/coverage/lcov-report/src/forms/controls/dropdown.ts.html +0 -341
  98. package/coverage/lcov-report/src/forms/controls/editable-collection-subset.ts.html +0 -371
  99. package/coverage/lcov-report/src/forms/controls/field-group.ts.html +0 -287
  100. package/coverage/lcov-report/src/forms/controls/file.ts.html +0 -221
  101. package/coverage/lcov-report/src/forms/controls/form-control.ts.html +0 -152
  102. package/coverage/lcov-report/src/forms/controls/form-field-control.ts.html +0 -146
  103. package/coverage/lcov-report/src/forms/controls/form-header.ts.html +0 -137
  104. package/coverage/lcov-report/src/forms/controls/form-paragraph.ts.html +0 -113
  105. package/coverage/lcov-report/src/forms/controls/frame.ts.html +0 -158
  106. package/coverage/lcov-report/src/forms/controls/hidden-input.ts.html +0 -146
  107. package/coverage/lcov-report/src/forms/controls/html.ts.html +0 -194
  108. package/coverage/lcov-report/src/forms/controls/index.html +0 -561
  109. package/coverage/lcov-report/src/forms/controls/multiple-files.ts.html +0 -848
  110. package/coverage/lcov-report/src/forms/controls/multiple-photos.ts.html +0 -212
  111. package/coverage/lcov-report/src/forms/controls/number.ts.html +0 -194
  112. package/coverage/lcov-report/src/forms/controls/photo.ts.html +0 -302
  113. package/coverage/lcov-report/src/forms/controls/radio.ts.html +0 -209
  114. package/coverage/lcov-report/src/forms/controls/reverse-single-reference.ts.html +0 -230
  115. package/coverage/lcov-report/src/forms/controls/simple-input.ts.html +0 -524
  116. package/coverage/lcov-report/src/forms/controls/textarea.ts.html +0 -260
  117. package/coverage/lcov-report/src/forms/controls/tickable.ts.html +0 -461
  118. package/coverage/lcov-report/src/forms/fields/boolean.test.ts.html +0 -188
  119. package/coverage/lcov-report/src/forms/fields/boolean.ts.html +0 -269
  120. package/coverage/lcov-report/src/forms/fields/checkboxed-list.ts.html +0 -278
  121. package/coverage/lcov-report/src/forms/fields/collection-field.ts.html +0 -266
  122. package/coverage/lcov-report/src/forms/fields/email.test.ts.html +0 -152
  123. package/coverage/lcov-report/src/forms/fields/email.ts.html +0 -140
  124. package/coverage/lcov-report/src/forms/fields/enum-multiple.test.ts.html +0 -173
  125. package/coverage/lcov-report/src/forms/fields/enum-multiple.ts.html +0 -266
  126. package/coverage/lcov-report/src/forms/fields/enum.test.ts.html +0 -155
  127. package/coverage/lcov-report/src/forms/fields/enum.ts.html +0 -248
  128. package/coverage/lcov-report/src/forms/fields/existing-sealious-value.ts.html +0 -146
  129. package/coverage/lcov-report/src/forms/fields/field.ts.html +0 -596
  130. package/coverage/lcov-report/src/forms/fields/file.ts.html +0 -347
  131. package/coverage/lcov-report/src/forms/fields/index.html +0 -456
  132. package/coverage/lcov-report/src/forms/fields/multiple-files.ts.html +0 -140
  133. package/coverage/lcov-report/src/forms/fields/number.test.ts.html +0 -182
  134. package/coverage/lcov-report/src/forms/fields/number.ts.html +0 -290
  135. package/coverage/lcov-report/src/forms/fields/pick-from-list.test.ts.html +0 -137
  136. package/coverage/lcov-report/src/forms/fields/pick-from-list.ts.html +0 -236
  137. package/coverage/lcov-report/src/forms/fields/proxy-field.ts.html +0 -152
  138. package/coverage/lcov-report/src/forms/fields/regexp.test.ts.html +0 -155
  139. package/coverage/lcov-report/src/forms/fields/regexp.ts.html +0 -239
  140. package/coverage/lcov-report/src/forms/fields/reverse-single-reference.ts.html +0 -140
  141. package/coverage/lcov-report/src/forms/fields/simple-form-field.ts.html +0 -170
  142. package/coverage/lcov-report/src/forms/fields/structured-array.ts.html +0 -161
  143. package/coverage/lcov-report/src/forms/form.test.ts.html +0 -1133
  144. package/coverage/lcov-report/src/forms/form.ts.html +0 -962
  145. package/coverage/lcov-report/src/forms/index.html +0 -156
  146. package/coverage/lcov-report/src/forms/multiform.test.ts.html +0 -1700
  147. package/coverage/lcov-report/src/forms/multiform.ts.html +0 -788
  148. package/coverage/lcov-report/src/generate-collections.ts.html +0 -311
  149. package/coverage/lcov-report/src/generate-routes.ts.html +0 -440
  150. package/coverage/lcov-report/src/index.html +0 -321
  151. package/coverage/lcov-report/src/index.ts.html +0 -152
  152. package/coverage/lcov-report/src/make-env.ts.html +0 -125
  153. package/coverage/lcov-report/src/make-hidden-inputs.ts.html +0 -152
  154. package/coverage/lcov-report/src/mount.ts.html +0 -335
  155. package/coverage/lcov-report/src/page/access-control.ts.html +0 -134
  156. package/coverage/lcov-report/src/page/index.html +0 -186
  157. package/coverage/lcov-report/src/page/list.ts.html +0 -800
  158. package/coverage/lcov-report/src/page/mountable-with-fields.ts.html +0 -554
  159. package/coverage/lcov-report/src/page/mountable.ts.html +0 -119
  160. package/coverage/lcov-report/src/page/page.ts.html +0 -218
  161. package/coverage/lcov-report/src/page/props-parser.ts.html +0 -194
  162. package/coverage/lcov-report/src/run.ts.html +0 -80
  163. package/coverage/lcov-report/src/sanitize.ts.html +0 -107
  164. package/coverage/lcov-report/src/templates/collection.ts.html +0 -113
  165. package/coverage/lcov-report/src/templates/form.ts.html +0 -260
  166. package/coverage/lcov-report/src/templates/index.html +0 -216
  167. package/coverage/lcov-report/src/templates/list.ts.html +0 -305
  168. package/coverage/lcov-report/src/templates/multiform.ts.html +0 -254
  169. package/coverage/lcov-report/src/templates/page.ts.html +0 -155
  170. package/coverage/lcov-report/src/templates/post.ts.html +0 -143
  171. package/coverage/lcov-report/src/templates/redirect.ts.html +0 -146
  172. package/coverage/lcov-report/src/templates/route-test.ts.html +0 -161
  173. package/coverage/lcov-report/src/test_utils/index.html +0 -111
  174. package/coverage/lcov-report/src/test_utils/locator_is_visible.ts.html +0 -131
  175. package/coverage/lcov-report/src/utils/assert-throws.ts.html +0 -134
  176. package/coverage/lcov-report/src/utils/browser-creator.js.html +0 -110
  177. package/coverage/lcov-report/src/utils/escape-url-params.ts.html +0 -122
  178. package/coverage/lcov-report/src/utils/exec.ts.html +0 -170
  179. package/coverage/lcov-report/src/utils/format-external-url.ts.html +0 -119
  180. package/coverage/lcov-report/src/utils/import-path.ts.html +0 -155
  181. package/coverage/lcov-report/src/utils/index.html +0 -366
  182. package/coverage/lcov-report/src/utils/input-wrapper.ts.html +0 -143
  183. package/coverage/lcov-report/src/utils/list-collections.ts.html +0 -128
  184. package/coverage/lcov-report/src/utils/make-slug.ts.html +0 -95
  185. package/coverage/lcov-report/src/utils/natural-numbers.ts.html +0 -95
  186. package/coverage/lcov-report/src/utils/prettier.ts.html +0 -119
  187. package/coverage/lcov-report/src/utils/question.ts.html +0 -149
  188. package/coverage/lcov-report/src/utils/render-attributes.ts.html +0 -131
  189. package/coverage/lcov-report/src/utils/sleep.ts.html +0 -89
  190. package/coverage/lcov-report/src/utils/translate.ts.html +0 -119
  191. package/coverage/lcov-report/src/utils/url-with-new-params.ts.html +0 -107
  192. package/coverage/lcov-report/src/utils/utils.ts.html +0 -122
  193. package/coverage/lcov-report/src/utils/walk.ts.html +0 -140
  194. package/coverage/lcov.info +0 -4697
  195. package/jenkins.sanity.sh +0 -3
  196. package/lib/add-collection.js.map +0 -1
  197. package/lib/add-route.js.map +0 -1
  198. package/lib/add-route.test.js.map +0 -1
  199. package/lib/build.js.map +0 -1
  200. package/lib/cli.js.map +0 -1
  201. package/lib/components/components.js.map +0 -1
  202. package/lib/components/tabs.js.map +0 -1
  203. package/lib/components/toggle-modal.js.map +0 -1
  204. package/lib/example.test.js.map +0 -1
  205. package/lib/find-scss-includes.js.map +0 -1
  206. package/lib/forms/controls/array.js.map +0 -1
  207. package/lib/forms/controls/autocomplete.js.map +0 -1
  208. package/lib/forms/controls/big-radio-group.js.map +0 -1
  209. package/lib/forms/controls/checkbox-group.js.map +0 -1
  210. package/lib/forms/controls/checkbox.js.map +0 -1
  211. package/lib/forms/controls/checkboxed-list-input.js.map +0 -1
  212. package/lib/forms/controls/collapsible-checkbox-group.js.map +0 -1
  213. package/lib/forms/controls/collapsible-field-group.js.map +0 -1
  214. package/lib/forms/controls/controls.js.map +0 -1
  215. package/lib/forms/controls/derived-frame.js.map +0 -1
  216. package/lib/forms/controls/derived.js.map +0 -1
  217. package/lib/forms/controls/dropdown.js.map +0 -1
  218. package/lib/forms/controls/editable-collection-subset.js.map +0 -1
  219. package/lib/forms/controls/field-group.js.map +0 -1
  220. package/lib/forms/controls/file.js.map +0 -1
  221. package/lib/forms/controls/form-control.js.map +0 -1
  222. package/lib/forms/controls/form-field-control.js.map +0 -1
  223. package/lib/forms/controls/form-header.js.map +0 -1
  224. package/lib/forms/controls/form-paragraph.js.map +0 -1
  225. package/lib/forms/controls/frame.js.map +0 -1
  226. package/lib/forms/controls/hidden-input.js.map +0 -1
  227. package/lib/forms/controls/html.js.map +0 -1
  228. package/lib/forms/controls/multiple-files.js.map +0 -1
  229. package/lib/forms/controls/multiple-photos.js.map +0 -1
  230. package/lib/forms/controls/number.js.map +0 -1
  231. package/lib/forms/controls/photo.js.map +0 -1
  232. package/lib/forms/controls/radio.js.map +0 -1
  233. package/lib/forms/controls/reverse-single-reference.js.map +0 -1
  234. package/lib/forms/controls/simple-input.js.map +0 -1
  235. package/lib/forms/controls/textarea.js.map +0 -1
  236. package/lib/forms/controls/tickable.js.map +0 -1
  237. package/lib/forms/fields/boolean.js.map +0 -1
  238. package/lib/forms/fields/boolean.test.js.map +0 -1
  239. package/lib/forms/fields/checkboxed-list.js.map +0 -1
  240. package/lib/forms/fields/collection-field.js.map +0 -1
  241. package/lib/forms/fields/email.js.map +0 -1
  242. package/lib/forms/fields/email.test.js.map +0 -1
  243. package/lib/forms/fields/enum-multiple.js.map +0 -1
  244. package/lib/forms/fields/enum-multiple.test.js.map +0 -1
  245. package/lib/forms/fields/enum.js.map +0 -1
  246. package/lib/forms/fields/enum.test.js.map +0 -1
  247. package/lib/forms/fields/existing-sealious-value.js.map +0 -1
  248. package/lib/forms/fields/field.js.map +0 -1
  249. package/lib/forms/fields/file.js.map +0 -1
  250. package/lib/forms/fields/files-multiple.js +0 -18
  251. package/lib/forms/fields/files-multiple.js.map +0 -1
  252. package/lib/forms/fields/multiple-files.js.map +0 -1
  253. package/lib/forms/fields/number.js.map +0 -1
  254. package/lib/forms/fields/number.test.js.map +0 -1
  255. package/lib/forms/fields/pick-from-list.js.map +0 -1
  256. package/lib/forms/fields/pick-from-list.test.js.map +0 -1
  257. package/lib/forms/fields/proxy-field.js.map +0 -1
  258. package/lib/forms/fields/regexp.js.map +0 -1
  259. package/lib/forms/fields/regexp.test.js.map +0 -1
  260. package/lib/forms/fields/reverse-single-reference.js.map +0 -1
  261. package/lib/forms/fields/simple-form-field.js.map +0 -1
  262. package/lib/forms/fields/structured-array.js.map +0 -1
  263. package/lib/forms/form.js.map +0 -1
  264. package/lib/forms/form.test.js.map +0 -1
  265. package/lib/forms/multiform.js.map +0 -1
  266. package/lib/forms/multiform.test.js.map +0 -1
  267. package/lib/generate-collections.js.map +0 -1
  268. package/lib/generate-routes.js.map +0 -1
  269. package/lib/index.js.map +0 -1
  270. package/lib/make-env.js.map +0 -1
  271. package/lib/make-hidden-inputs.js.map +0 -1
  272. package/lib/mount.js.map +0 -1
  273. package/lib/page/access-control.js.map +0 -1
  274. package/lib/page/list.js.map +0 -1
  275. package/lib/page/mountable-with-fields.js.map +0 -1
  276. package/lib/page/mountable.js.map +0 -1
  277. package/lib/page/page.js.map +0 -1
  278. package/lib/page/props-parser.js.map +0 -1
  279. package/lib/run.js.map +0 -1
  280. package/lib/sanitize.js.map +0 -1
  281. package/lib/sealgen-url.js +0 -1
  282. package/lib/sealgen-url.js.map +0 -1
  283. package/lib/templates/collection.js.map +0 -1
  284. package/lib/templates/form.js.map +0 -1
  285. package/lib/templates/list.js.map +0 -1
  286. package/lib/templates/multiform.js.map +0 -1
  287. package/lib/templates/page.js.map +0 -1
  288. package/lib/templates/post.js.map +0 -1
  289. package/lib/templates/redirect.js.map +0 -1
  290. package/lib/templates/route-test.js.map +0 -1
  291. package/lib/test_utils/locator_is_visible.js.map +0 -1
  292. package/lib/tests/manual/multiform.js +0 -95
  293. package/lib/tests/manual/multiform.js.map +0 -1
  294. package/lib/utils/assert-throws.js.map +0 -1
  295. package/lib/utils/browser-creator.js.map +0 -1
  296. package/lib/utils/escape-url-params.js.map +0 -1
  297. package/lib/utils/exec.js.map +0 -1
  298. package/lib/utils/format-external-url.js.map +0 -1
  299. package/lib/utils/import-path.js.map +0 -1
  300. package/lib/utils/input-wrapper.js.map +0 -1
  301. package/lib/utils/list-collections.js.map +0 -1
  302. package/lib/utils/make-slug.js.map +0 -1
  303. package/lib/utils/natural-numbers.js.map +0 -1
  304. package/lib/utils/prettier.js.map +0 -1
  305. package/lib/utils/question.js.map +0 -1
  306. package/lib/utils/render-attributes.js.map +0 -1
  307. package/lib/utils/sleep.js.map +0 -1
  308. package/lib/utils/translate.js.map +0 -1
  309. package/lib/utils/url-with-new-params.js.map +0 -1
  310. package/lib/utils/utils.js.map +0 -1
  311. package/lib/utils/walk.js.map +0 -1
  312. package/mocha_root_hooks.js +0 -6
  313. package/src/add-collection.ts +0 -31
  314. package/src/add-route.test.ts +0 -58
  315. package/src/add-route.ts +0 -86
  316. package/src/build.ts +0 -94
  317. package/src/cli.ts +0 -36
  318. package/src/components/components.ts +0 -2
  319. package/src/components/tabs.ts +0 -95
  320. package/src/components/toggle-modal.ts +0 -52
  321. package/src/example.test.ts +0 -3
  322. package/src/find-scss-includes.ts +0 -32
  323. package/src/forms/controls/array.ts +0 -226
  324. package/src/forms/controls/autocomplete.ts +0 -33
  325. package/src/forms/controls/big-radio-group.ts +0 -48
  326. package/src/forms/controls/checkbox-group.ts +0 -71
  327. package/src/forms/controls/checkbox.ts +0 -34
  328. package/src/forms/controls/checkboxed-list-input.ts +0 -50
  329. package/src/forms/controls/collapsible-checkbox-group.ts +0 -28
  330. package/src/forms/controls/collapsible-field-group.ts +0 -94
  331. package/src/forms/controls/controls.ts +0 -30
  332. package/src/forms/controls/derived-frame.ts +0 -91
  333. package/src/forms/controls/derived.ts +0 -108
  334. package/src/forms/controls/dropdown.ts +0 -87
  335. package/src/forms/controls/editable-collection-subset.ts +0 -97
  336. package/src/forms/controls/field-group.ts +0 -69
  337. package/src/forms/controls/file.ts +0 -47
  338. package/src/forms/controls/form-control.ts +0 -24
  339. package/src/forms/controls/form-field-control.ts +0 -22
  340. package/src/forms/controls/form-header.ts +0 -19
  341. package/src/forms/controls/form-paragraph.ts +0 -11
  342. package/src/forms/controls/frame.ts +0 -26
  343. package/src/forms/controls/hidden-input.ts +0 -22
  344. package/src/forms/controls/html.ts +0 -38
  345. package/src/forms/controls/multiple-files.ts +0 -256
  346. package/src/forms/controls/multiple-photos.ts +0 -44
  347. package/src/forms/controls/number.ts +0 -38
  348. package/src/forms/controls/photo.ts +0 -74
  349. package/src/forms/controls/radio.ts +0 -43
  350. package/src/forms/controls/reverse-single-reference.ts +0 -50
  351. package/src/forms/controls/simple-input.ts +0 -148
  352. package/src/forms/controls/textarea.ts +0 -60
  353. package/src/forms/controls/tickable.ts +0 -127
  354. package/src/forms/fields/boolean.test.ts +0 -36
  355. package/src/forms/fields/boolean.ts +0 -63
  356. package/src/forms/fields/checkboxed-list.ts +0 -66
  357. package/src/forms/fields/collection-field.ts +0 -62
  358. package/src/forms/fields/email.test.ts +0 -24
  359. package/src/forms/fields/email.ts +0 -20
  360. package/src/forms/fields/enum-multiple.test.ts +0 -31
  361. package/src/forms/fields/enum-multiple.ts +0 -62
  362. package/src/forms/fields/enum.test.ts +0 -25
  363. package/src/forms/fields/enum.ts +0 -56
  364. package/src/forms/fields/existing-sealious-value.ts +0 -22
  365. package/src/forms/fields/field.ts +0 -172
  366. package/src/forms/fields/file.ts +0 -89
  367. package/src/forms/fields/multiple-files.ts +0 -20
  368. package/src/forms/fields/number.test.ts +0 -34
  369. package/src/forms/fields/number.ts +0 -70
  370. package/src/forms/fields/pick-from-list.test.ts +0 -19
  371. package/src/forms/fields/pick-from-list.ts +0 -52
  372. package/src/forms/fields/proxy-field.ts +0 -24
  373. package/src/forms/fields/regexp.test.ts +0 -25
  374. package/src/forms/fields/regexp.ts +0 -53
  375. package/src/forms/fields/reverse-single-reference.ts +0 -20
  376. package/src/forms/fields/simple-form-field.ts +0 -30
  377. package/src/forms/fields/structured-array.ts +0 -27
  378. package/src/forms/form.test.ts +0 -351
  379. package/src/forms/form.ts +0 -294
  380. package/src/forms/forms.scss +0 -85
  381. package/src/forms/multiform.test.ts +0 -540
  382. package/src/forms/multiform.ts +0 -236
  383. package/src/generate-collections.ts +0 -77
  384. package/src/generate-routes.ts +0 -120
  385. package/src/index.ts +0 -24
  386. package/src/make-env.ts +0 -15
  387. package/src/make-hidden-inputs.ts +0 -24
  388. package/src/mount.ts +0 -85
  389. package/src/page/access-control.ts +0 -18
  390. package/src/page/list.ts +0 -240
  391. package/src/page/mountable-with-fields.ts +0 -158
  392. package/src/page/mountable.ts +0 -13
  393. package/src/page/page.ts +0 -46
  394. package/src/page/props-parser.ts +0 -38
  395. package/src/run.ts +0 -0
  396. package/src/sanitize.ts +0 -9
  397. package/src/templates/collection.ts +0 -11
  398. package/src/templates/form.ts +0 -60
  399. package/src/templates/list.ts +0 -75
  400. package/src/templates/multiform.ts +0 -58
  401. package/src/templates/page.ts +0 -25
  402. package/src/templates/post.ts +0 -21
  403. package/src/templates/redirect.ts +0 -22
  404. package/src/templates/route-test.ts +0 -27
  405. package/src/test_utils/locator_is_visible.ts +0 -17
  406. package/src/utils/assert-throws.ts +0 -18
  407. package/src/utils/browser-creator.js +0 -10
  408. package/src/utils/escape-url-params.ts +0 -14
  409. package/src/utils/exec.ts +0 -30
  410. package/src/utils/format-external-url.ts +0 -13
  411. package/src/utils/import-path.ts +0 -25
  412. package/src/utils/input-wrapper.ts +0 -21
  413. package/src/utils/list-collections.ts +0 -16
  414. package/src/utils/make-slug.ts +0 -5
  415. package/src/utils/natural-numbers.ts +0 -5
  416. package/src/utils/prettier.ts +0 -13
  417. package/src/utils/question.ts +0 -23
  418. package/src/utils/render-attributes.ts +0 -17
  419. package/src/utils/sleep.ts +0 -3
  420. package/src/utils/translate.ts +0 -13
  421. package/src/utils/url-with-new-params.ts +0 -9
  422. package/src/utils/utils.ts +0 -14
  423. package/src/utils/walk.ts +0 -20
@@ -1,11 +0,0 @@
1
- import { FormControl } from "./controls";
2
-
3
- export class FormParagraph extends FormControl {
4
- role = <const>"decoration";
5
- constructor(public text: string) {
6
- super();
7
- }
8
- render() {
9
- return `<p>${this.text}</p>`;
10
- }
11
- }
@@ -1,26 +0,0 @@
1
- import { FlatTemplatable, Templatable } from "tempstream";
2
- import { FormControl } from "./controls";
3
-
4
- /**
5
- * This class will render `turbo-frame` tag so that u can
6
- * embed other route inside your form. This will require
7
- * to add value to `data: FormData` (inside your master form
8
- * render function) with key `Frame.FRAME_PATH_KEY`. Value
9
- * needs to be url to route that you want to embed. If you
10
- * this value wont be provided frame will redner empty string.
11
- * See `src/back/routes/profile/[id].form.ts` for an example.
12
- */
13
- export class Frame extends FormControl {
14
- constructor(public src: string) {
15
- super();
16
- }
17
-
18
- render(): FlatTemplatable | Promise<FlatTemplatable> {
19
- return /* HTML */ `<turbo-frame
20
- id="contrahents"
21
- loading="lazy"
22
- src="${this.src}"
23
- ></turbo-frame>`;
24
- }
25
- role = <const>"decoration";
26
- }
@@ -1,22 +0,0 @@
1
- import { Context } from "koa";
2
- import { FlatTemplatable, tempstream } from "tempstream";
3
- import { attribute } from "../../sanitize";
4
- import { FormField } from "../fields/field";
5
- import { FormDataValue } from "../form";
6
- import { FormControlContext } from "./form-control";
7
- import { FormFieldControl } from "./form-field-control";
8
-
9
- export class HiddenInput extends FormFieldControl {
10
- constructor(public field: FormField) {
11
- super([field]);
12
- }
13
-
14
- async render(fctx: FormControlContext): Promise<FlatTemplatable> {
15
- const { raw } = await this.field.getValue(fctx.ctx, fctx.data);
16
- return tempstream`<input type="hidden" name="${
17
- this.field.name
18
- }" value="${attribute((raw || "").toString())}" form="${
19
- fctx.form_id
20
- }">`;
21
- }
22
- }
@@ -1,38 +0,0 @@
1
- import { Context } from "koa";
2
- import { FlatTemplatable } from "tempstream";
3
- import { FormDataValue, FormMessage } from "../form";
4
- import { FormControl } from "./controls";
5
- import { FormControlContext } from "./form-control";
6
-
7
- type Renderer =
8
- | ((fctx: FormControlContext) => FlatTemplatable)
9
- | FlatTemplatable;
10
-
11
- export class HTML extends FormControl {
12
- role = (<const>"decoration") as "decoration" | "submit";
13
- public renderer: Renderer;
14
-
15
- constructor(role: "decoration" | "submit", renderer: Renderer);
16
- constructor(renderer: Renderer);
17
- constructor(
18
- role_or_renderer: "decoration" | "submit" | Renderer,
19
- renderer_or_undefined?: Renderer | FlatTemplatable
20
- ) {
21
- super();
22
- if (arguments.length == 2) {
23
- this.role = role_or_renderer as "decoration" | "submit";
24
- this.renderer = renderer_or_undefined as Renderer;
25
- } else {
26
- this.renderer = role_or_renderer;
27
- }
28
- }
29
-
30
- async render(fctx: FormControlContext): Promise<FlatTemplatable> {
31
- if (typeof this.renderer === "string") {
32
- return this.renderer;
33
- }
34
- return typeof this.renderer == "function"
35
- ? this.renderer(fctx)
36
- : this.renderer;
37
- }
38
- }
@@ -1,256 +0,0 @@
1
- import Router from "@koa/router";
2
- import {
3
- Collection,
4
- CollectionItem,
5
- File as SealiousFile,
6
- Field as SealiousField,
7
- } from "sealious";
8
- import { Context } from "koa";
9
- import { inputWrapper } from "../../utils/input-wrapper";
10
- import { FlatTemplatable, tempstream } from "tempstream";
11
- import { MultipleFiles as MultipleFilesField } from "../fields/multiple-files";
12
- import { FormFieldControl } from "./form-field-control";
13
- import { is, predicates } from "@sealcode/ts-predicates";
14
- import { renderAttributes } from "../../utils/render-attributes";
15
- import { FormControlContext } from "./form-control";
16
-
17
- export type MultipleFilesOptions = {
18
- label?: string;
19
- uploadLabel?: string;
20
- getAdditionalFields: (
21
- ctx: Context,
22
- file: SealiousFile
23
- ) => Promise<Record<string, unknown>>;
24
- };
25
-
26
- export class MultipleFiles extends FormFieldControl {
27
- public options: MultipleFilesOptions;
28
- constructor(
29
- public field: MultipleFilesField,
30
- options?: Partial<MultipleFilesOptions>
31
- ) {
32
- super([field]);
33
- this.options = { getAdditionalFields: async () => ({}), ...options };
34
- }
35
-
36
- getClassModifiers(): string[] {
37
- return [];
38
- }
39
-
40
- mount(router: Router) {
41
- router.get(this.getFrameRelativeURL(), async (ctx) => {
42
- ctx.body = this.renderFrame(
43
- ctx,
44
- await this.renderFrameContent(ctx)
45
- );
46
- });
47
-
48
- router.post(
49
- this.getFrameRelativeURL() + "/delete/:file_item_id",
50
- async (ctx) => {
51
- await this.deleteFileAssociation(ctx, ctx.params.file_item_id);
52
- ctx.body = this.renderFrame(
53
- ctx,
54
- await this.renderFrameContent(ctx)
55
- );
56
- }
57
- );
58
-
59
- router.post(this.getFrameRelativeURL() + "/add", async (ctx) => {
60
- let files = ctx.$body.files as SealiousFile | SealiousFile[];
61
- if (!files || !is(files, predicates.object)) {
62
- ctx.body = "Missing files";
63
- return;
64
- }
65
- if (!Array.isArray(files)) {
66
- files = [files];
67
- }
68
- await Promise.all(
69
- files.map((file) =>
70
- this.addFileAssociation(
71
- ctx,
72
- file as unknown as SealiousFile
73
- )
74
- )
75
- );
76
- ctx.body = this.renderFrame(
77
- ctx,
78
- await this.renderFrameContent(ctx)
79
- );
80
- });
81
- }
82
-
83
- async deleteFileAssociation(ctx: Context, file_item_id: string) {
84
- await ctx.$app.collections[
85
- this.field.collection_field.referencing_collection
86
- ].removeByID(ctx.$context, file_item_id);
87
- }
88
-
89
- async addFileAssociation(ctx: Context, file: SealiousFile) {
90
- const file_field = this.getFileField();
91
- if (!file_field) {
92
- throw new Error("No file field in referencing collection");
93
- }
94
- const body = {
95
- ...(await this.options.getAdditionalFields(ctx, file)),
96
- [this.field.collection_field.referencing_field]:
97
- await this.field.getItemId(ctx),
98
- [file_field.name]: file,
99
- };
100
- await ctx.$app.collections[
101
- this.field.collection_field.referencing_collection
102
- ].create(ctx.$context, body);
103
- }
104
-
105
- getFrameRelativeURL() {
106
- return `${this.field.name}_files`;
107
- }
108
-
109
- getFrameID(): string {
110
- // the "A" is necessary here
111
- return `A${this.field.name}__multiple-fields-control`;
112
- }
113
-
114
- renderFrame(ctx: Context, content?: FlatTemplatable) {
115
- return tempstream/* HTML */ `<turbo-frame
116
- ${content ? "" : `src="./${this.getFrameRelativeURL()}"`}
117
- id="${this.getFrameID()}"
118
- target="_top"
119
- >
120
- ${content || ""}
121
- </turbo-frame>`;
122
- }
123
-
124
- render(
125
- fctx: FormControlContext
126
- ): FlatTemplatable | Promise<FlatTemplatable> {
127
- return this.renderFrame(fctx.ctx, "");
128
- }
129
-
130
- getReferencingCollection() {
131
- const result =
132
- this.field.collection_field.app.collections[
133
- this.field.collection_field.referencing_collection
134
- ];
135
- return result;
136
- }
137
-
138
- getFileField(): SealiousField | null {
139
- for (const [_, field] of Object.entries(
140
- this.getReferencingCollection().fields
141
- )) {
142
- if (field.handles_large_data) {
143
- return field;
144
- }
145
- }
146
- return null;
147
- }
148
-
149
- async extractFileFromItem(
150
- item: CollectionItem
151
- ): Promise<SealiousFile | null> {
152
- const sealious_field = this.getFileField();
153
- if (!sealious_field) {
154
- return null;
155
- }
156
- return await SealiousFile.fromID(
157
- (item.collection as Collection).app,
158
- item.get(sealious_field.name).id
159
- );
160
- }
161
-
162
- async renderFileItemPreview(
163
- _fileItem: CollectionItem,
164
- file: SealiousFile
165
- ): Promise<FlatTemplatable> {
166
- return file.filename || "no filename";
167
- }
168
-
169
- async renderFileItem(
170
- fileItem: CollectionItem,
171
- file: SealiousFile
172
- ): Promise<FlatTemplatable> {
173
- return tempstream/* HTML */ `<li class="file-list-item">
174
- <a
175
- class="file-list-item__preview"
176
- href="${file.getURL()}"
177
- data-turbo="false"
178
- >
179
- ${this.renderFileItemPreview(fileItem, file)}
180
- </a>
181
- ${this.renderFileRemoveButton(fileItem)}
182
- </li>`;
183
- }
184
-
185
- renderFileRemoveButton(fileItem: CollectionItem): FlatTemplatable {
186
- return /* HTML */ ` <form
187
- data-turbo-frame="${this.getFrameID()}"
188
- action="${this.getFrameRelativeURL()}/delete/${fileItem.id}"
189
- method="POST"
190
- >
191
- <input
192
- type="submit"
193
- value="X"
194
- class="file-list-action file-list-item__button file-list-item__button--delete"
195
- />
196
- </form>`;
197
- }
198
-
199
- async getFileItems(ctx: Context) {
200
- const item_id = await this.field.getItemId(ctx);
201
- const {
202
- items: [item],
203
- } = await this.field.collection_field.collection
204
- .list(ctx.$context)
205
- .ids([item_id])
206
- .attach({ [this.field.collection_field.name]: true })
207
- .fetch();
208
- return item
209
- .getAttachments(this.field.collection_field.name)
210
- .filter((f) => f);
211
- }
212
-
213
- getInputAttributes() {
214
- return { type: "file", name: "files", multiple: true };
215
- }
216
-
217
- async renderFrameContent(ctx: Context): Promise<FlatTemplatable> {
218
- const files = (
219
- await Promise.all(
220
- (
221
- await this.getFileItems(ctx)
222
- )
223
- .filter((item) => item) // filter out undefineds
224
- .map(async (item) => [
225
- item,
226
- await this.extractFileFromItem(item),
227
- ])
228
- )
229
- ).filter(([_, f]) => f !== null) as [CollectionItem, SealiousFile][];
230
-
231
- return inputWrapper(
232
- ["multiple-files", this.field.name, ...this.getClassModifiers()],
233
- tempstream/* HTML */ `
234
- <label>${this.options.label || this.field.name}</label>
235
- <ul class="multiple-files__list">
236
- ${files.map(([item, file]) =>
237
- this.renderFileItem(item, file)
238
- )}
239
- </ul>
240
- <form
241
- action="${this.getFrameRelativeURL()}/add"
242
- method="POST"
243
- enctype="multipart/form-data"
244
- data-turbo-frame="${this.getFrameID()}"
245
- >
246
- <input ${renderAttributes(this.getInputAttributes())} />
247
- <input
248
- type="submit"
249
- value="${this.options.uploadLabel || "Upload"}"
250
- class="file-list-action"
251
- />
252
- </form>
253
- `
254
- );
255
- }
256
- }
@@ -1,44 +0,0 @@
1
- import { File as SealiousFile, CollectionItem } from "sealious";
2
- import { FlatTemplatable, tempstream } from "tempstream";
3
- import { MultipleFiles, MultipleFilesOptions } from "./multiple-files";
4
- import { MultipleFiles as MultipleFilesField } from "../fields/multiple-files";
5
- import KoaResponsiveImageRouter from "koa-responsive-image-router";
6
-
7
- export class MultiplePhotos extends MultipleFiles {
8
- constructor(
9
- public field: MultipleFilesField,
10
- public imageRouter: KoaResponsiveImageRouter,
11
- options?: Partial<MultipleFilesOptions>
12
- ) {
13
- super(field, options);
14
- }
15
-
16
- getClassModifiers() {
17
- return ["multiple-files--photos"];
18
- }
19
-
20
- getInputAttributes() {
21
- return { ...super.getInputAttributes(), accept: "image/*" };
22
- }
23
-
24
- async renderFileItem(
25
- fileItem: CollectionItem,
26
- file: SealiousFile
27
- ): Promise<FlatTemplatable> {
28
- const path = file.getDataPath();
29
- if (!path) {
30
- return "missing file";
31
- }
32
- return tempstream/* HTML */ `<li>
33
- <a href="${file.getURL()}" data-turbo="false">
34
- ${this.imageRouter.image({
35
- path,
36
- resolutions: [150, 300],
37
- sizes_attr: "150px",
38
- })}
39
- </a>
40
- <span class="filename"> ${file.filename || "no filename"}</span>
41
- ${this.renderFileRemoveButton(fileItem)}
42
- </li>`;
43
- }
44
- }
@@ -1,38 +0,0 @@
1
- import { Context } from "koa";
2
- import { FlatTemplatable } from "tempstream";
3
- import { FormField, NumberField } from "../fields/field";
4
- import { FormDataValue } from "../form";
5
- import { FormControlContext } from "./form-control";
6
- import { SimpleInput, SimpleInputOptions } from "./simple-input";
7
-
8
- export type NumberOptions = SimpleInputOptions & Partial<{ step: number }>;
9
-
10
- export class Number extends SimpleInput<number | null> {
11
- field: NumberField;
12
- options: NumberOptions;
13
- constructor(field: NumberField, options: NumberOptions) {
14
- super(field, options);
15
- }
16
-
17
- getType() {
18
- return "number";
19
- }
20
-
21
- async getInputAttributes(
22
- fctx: FormControlContext
23
- ): Promise<Record<string, string | boolean>> {
24
- const original = await super.getInputAttributes(fctx);
25
- return {
26
- ...original,
27
- ...Object.fromEntries([
28
- ...(this.field.options.min
29
- ? [["min", this.field.options.min]]
30
- : []),
31
- ...(this.field.options.max
32
- ? [["max", this.field.options.max]]
33
- : []),
34
- ...(this.options.step ? [["step", this.options.step]] : []),
35
- ]),
36
- };
37
- }
38
- }
@@ -1,74 +0,0 @@
1
- import { Context } from "koa";
2
- import { FlatTemplatable, tempstream } from "tempstream";
3
- import { File } from "./file";
4
- import { File as SealiousFile } from "sealious";
5
- import { FileContainer, FormField } from "../fields/field";
6
- import { SimpleInputOptions } from "./simple-input";
7
- import KoaResponsiveImageRouter from "koa-responsive-image-router";
8
- import { FormControlContext } from "./form-control";
9
-
10
- export class Photo extends File {
11
- constructor(
12
- public field: FormField<boolean, FileContainer>,
13
- public imageRouter: KoaResponsiveImageRouter,
14
- options?: SimpleInputOptions
15
- ) {
16
- super(field, options);
17
- }
18
-
19
- async getImgStyle() {
20
- return "width: 100px; height: 100px; object-fit: contain";
21
- }
22
-
23
- async renderFilePreview(
24
- ctx: Context,
25
- file_data: { id?: string; filename?: string } | null
26
- ): Promise<FlatTemplatable> {
27
- const class_name = "file_preview";
28
- const empty_container = `<div class="${class_name}"></div>`;
29
- if (!file_data) {
30
- return empty_container;
31
- }
32
- const { id } = file_data;
33
- if (!id) {
34
- return empty_container;
35
- }
36
- const file = await SealiousFile.fromID(ctx.$app, id);
37
- return tempstream/* HTML */ `<div class="${class_name}">
38
- ${this.imageRouter.image({
39
- resolutions: [100],
40
- sizes_attr: "100px",
41
- path: file.getDataPath(),
42
- img_style: await this.getImgStyle(),
43
- })}
44
- </div>`;
45
- }
46
-
47
- async getInputAttributes(fctx: FormControlContext) {
48
- const original = (await super.getInputAttributes(fctx)) as Record<
49
- string,
50
- string | boolean
51
- >;
52
- const { parsed } = await this.field.getValue(fctx.ctx, fctx.data);
53
- return {
54
- ...original,
55
- accept: "image/*",
56
- onchange:
57
- (original.onchange || "") +
58
- ";" +
59
- `
60
- const file = this.files[0];
61
- const preview_container = this.parentElement.querySelector(".file_preview");
62
- const target = this;
63
- if (file) {
64
- const fileReader = new FileReader();
65
- fileReader.readAsDataURL(file);
66
- fileReader.addEventListener("load", function () {
67
- preview_container.innerHTML = \`<img src="\${this.result}" style="${await this.getImgStyle()}" />\`;
68
- });
69
- }`
70
- .replaceAll("\n", " ")
71
- .replaceAll(`"`, "'"),
72
- };
73
- }
74
- }
@@ -1,43 +0,0 @@
1
- import { Context } from "koa";
2
- import { FormField } from "../fields/field";
3
- import { FormDataValue } from "../form";
4
- import { Tickable } from "./tickable";
5
-
6
- export class Radio extends Tickable<string> {
7
- type = <const>"radio";
8
-
9
- constructor(
10
- public field: FormField<boolean, string>,
11
- public value: string,
12
- options: { label?: string }
13
- ) {
14
- super(field, options);
15
- }
16
-
17
- makeInputID(): string {
18
- return this.field.name + "-" + this.value.replaceAll(/\W/g, "-");
19
- }
20
-
21
- getValueAttribute(): string {
22
- return this.value;
23
- }
24
-
25
- getWrapperClasses(
26
- ctx: Context,
27
- data: Record<string, FormDataValue>,
28
- value: string
29
- ): string[] {
30
- return [
31
- ...super.getWrapperClasses(ctx, data, value),
32
- this.value.replaceAll(/\W/g, "-"),
33
- ];
34
- }
35
-
36
- isChecked(
37
- _ctx: Context,
38
- _data: Record<string, FormDataValue>,
39
- value: string
40
- ): boolean {
41
- return this.value === value;
42
- }
43
- }
@@ -1,50 +0,0 @@
1
- // import { FormControl } from "./form-control";
2
- // import { FormFieldControl } from "./form-field-control";
3
- // import { ReverseSingleReference as ReverseSingleReferenceField } from "../fields/field";
4
- // import { Context } from "koa";
5
- // import { Fields } from "../..";
6
- // import { ArrayControl } from "./array";
7
-
8
- // export class ReverseSingleReference extends ArrayControl {
9
- // //
10
- // //
11
- // // this isn't finished yet
12
- // //
13
- // //
14
-
15
- // constructor(
16
- // public field: ReverseSingleReferenceField,
17
- // public item_controls: Array<FormControl | UnboundControlStorage>
18
- // ) {
19
- // super(field, item_controls);
20
- // }
21
-
22
- // async getItems(ctx: Context) {
23
- // const target_id = await this.getTargetItemID(ctx);
24
- // const { items } = await this.field.sealious_field
25
- // .getReferencingCollection()
26
- // .list(ctx.$context)
27
- // .filter({
28
- // [this.field.sealious_field.referencing_field]: target_id,
29
- // })
30
- // .fetch();
31
- // return items;
32
- // }
33
-
34
- // makeSubfield(fieldname: string) {
35
- // const collection = this.field.sealious_field.getReferencingCollection();
36
- // if (!collection.fields[fieldname]) {
37
- // return null;
38
- // }
39
- // return new Fields.CollectionField(false, collection.fields[fieldname]);
40
- // }
41
-
42
- // async add(ctx: Context): Promise<void> {
43
- // const collection = this.field.sealious_field.getReferencingCollection();
44
- // await collection.create(ctx.$context, {
45
- // [this.field.sealious_field.referencing_field]:
46
- // await this.getTargetItemID(ctx),
47
- // ...(await this.getDefaultItemBody()),
48
- // });
49
- // }
50
- // }