@multiplatform.one/backoffice 7.34.3 → 7.35.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 (867) hide show
  1. package/dist/cjs/chrome/BackofficeAwesomebar.cjs +14 -7
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +14 -7
  3. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  4. package/dist/cjs/chrome/CommandPalette.cjs +23 -17
  5. package/dist/cjs/chrome/CommandPalette.native.js +25 -17
  6. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  7. package/dist/cjs/chrome/NotificationsButton.cjs +3 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js +3 -1
  9. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  10. package/dist/cjs/chrome/UserMenu.cjs +144 -78
  11. package/dist/cjs/chrome/UserMenu.native.js +158 -91
  12. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  13. package/dist/cjs/chrome/awesomebar-data.cjs +45 -18
  14. package/dist/cjs/chrome/awesomebar-data.native.js +45 -17
  15. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  16. package/dist/cjs/chrome/command-palette-model.cjs +8 -7
  17. package/dist/cjs/chrome/command-palette-model.native.js +10 -7
  18. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  19. package/dist/cjs/chrome/notifications-data.cjs +2 -38
  20. package/dist/cjs/chrome/notifications-data.native.js +2 -39
  21. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  22. package/dist/cjs/chrome/notifications-panel.cjs +3 -4
  23. package/dist/cjs/chrome/notifications-panel.native.js +3 -4
  24. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  25. package/dist/cjs/chrome/user-session.cjs +20 -11
  26. package/dist/cjs/chrome/user-session.native.js +21 -13
  27. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  28. package/dist/cjs/config/BackofficeProvider.cjs +3 -1
  29. package/dist/cjs/config/BackofficeProvider.native.js +3 -1
  30. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  31. package/dist/cjs/config/capabilities.cjs +3 -0
  32. package/dist/cjs/config/capabilities.native.js +3 -0
  33. package/dist/cjs/config/capabilities.native.js.map +1 -1
  34. package/dist/cjs/desk/Desk.cjs +17 -0
  35. package/dist/cjs/desk/Desk.native.js +17 -0
  36. package/dist/cjs/desk/Desk.native.js.map +1 -1
  37. package/dist/cjs/desk/DeskSurface.cjs +10 -0
  38. package/dist/cjs/desk/DeskSurface.native.js +10 -0
  39. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  40. package/dist/cjs/desk/resolveDeskPath.cjs +6 -0
  41. package/dist/cjs/desk/resolveDeskPath.native.js +6 -0
  42. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  43. package/dist/cjs/desk/target.cjs +5 -0
  44. package/dist/cjs/desk/target.native.js +5 -0
  45. package/dist/cjs/desk/target.native.js.map +1 -1
  46. package/dist/cjs/form/DocFormScreen.cjs +24 -3
  47. package/dist/cjs/form/DocFormScreen.native.js +27 -6
  48. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  49. package/dist/cjs/form/FormConnections.cjs +2 -2
  50. package/dist/cjs/form/FormConnections.native.js +2 -2
  51. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  52. package/dist/cjs/form/FormErrorBoundary.cjs +1 -1
  53. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  54. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  55. package/dist/cjs/form/FormSidebarPanel.cjs +1 -1
  56. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  57. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  58. package/dist/cjs/form/FormTimeline.cjs +1 -2
  59. package/dist/cjs/form/FormTimeline.native.js +1 -2
  60. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  61. package/dist/cjs/form/FormToolbar.cjs +97 -87
  62. package/dist/cjs/form/FormToolbar.native.js +98 -94
  63. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  64. package/dist/cjs/formBuilder/DoctypePicker.cjs +89 -0
  65. package/dist/cjs/formBuilder/DoctypePicker.native.js +98 -0
  66. package/dist/cjs/formBuilder/DoctypePicker.native.js.map +1 -0
  67. package/dist/cjs/formBuilder/FieldPalette.cjs +148 -0
  68. package/dist/cjs/formBuilder/FieldPalette.native.js +165 -0
  69. package/dist/cjs/formBuilder/FieldPalette.native.js.map +1 -0
  70. package/dist/cjs/formBuilder/FieldPropertiesPanel.cjs +186 -0
  71. package/dist/cjs/formBuilder/FieldPropertiesPanel.native.js +237 -0
  72. package/dist/cjs/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  73. package/dist/cjs/formBuilder/FormBuilderCanvas.cjs +407 -0
  74. package/dist/cjs/formBuilder/FormBuilderCanvas.native.js +472 -0
  75. package/dist/cjs/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  76. package/dist/cjs/formBuilder/FormBuilderScreen.cjs +448 -0
  77. package/dist/cjs/formBuilder/FormBuilderScreen.native.js +537 -0
  78. package/dist/cjs/formBuilder/FormBuilderScreen.native.js.map +1 -0
  79. package/dist/cjs/formBuilder/api.cjs +160 -0
  80. package/dist/cjs/formBuilder/api.native.js +193 -0
  81. package/dist/cjs/formBuilder/api.native.js.map +1 -0
  82. package/dist/cjs/formBuilder/fieldtypes.cjs +114 -0
  83. package/dist/cjs/formBuilder/fieldtypes.native.js +133 -0
  84. package/dist/cjs/formBuilder/fieldtypes.native.js.map +1 -0
  85. package/dist/cjs/formBuilder/index.cjs +68 -0
  86. package/dist/cjs/formBuilder/index.native.js +71 -0
  87. package/dist/cjs/formBuilder/index.native.js.map +1 -0
  88. package/dist/cjs/formBuilder/model.cjs +466 -0
  89. package/dist/cjs/formBuilder/model.native.js +714 -0
  90. package/dist/cjs/formBuilder/model.native.js.map +1 -0
  91. package/dist/cjs/formBuilder/useFormBuilderDrag.cjs +399 -0
  92. package/dist/cjs/formBuilder/useFormBuilderDrag.native.js +434 -0
  93. package/dist/cjs/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  94. package/dist/cjs/i18n/en.cjs +294 -4
  95. package/dist/cjs/i18n/en.native.js +294 -4
  96. package/dist/cjs/i18n/en.native.js.map +1 -1
  97. package/dist/cjs/index.cjs +41 -1
  98. package/dist/cjs/index.native.js +40 -0
  99. package/dist/cjs/index.native.js.map +1 -1
  100. package/dist/cjs/list/DoctypeListScreen.cjs +147 -43
  101. package/dist/cjs/list/DoctypeListScreen.native.js +164 -56
  102. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  103. package/dist/cjs/list/ListFilterBar.cjs +8 -4
  104. package/dist/cjs/list/ListFilterBar.native.js +8 -4
  105. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  106. package/dist/cjs/list/ListSidebar.cjs +4 -3
  107. package/dist/cjs/list/ListSidebar.native.js +4 -3
  108. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  109. package/dist/cjs/list/filter-chips.cjs +10 -4
  110. package/dist/cjs/list/filter-chips.native.js +10 -4
  111. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  112. package/dist/cjs/list/filter-editor.cjs +1 -10
  113. package/dist/cjs/list/filter-editor.native.js +1 -10
  114. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  115. package/dist/cjs/list/filter-saved.cjs +0 -1
  116. package/dist/cjs/list/filter-saved.native.js +0 -1
  117. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  118. package/dist/cjs/list/filter-sort.cjs +0 -1
  119. package/dist/cjs/list/filter-sort.native.js +0 -1
  120. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  121. package/dist/cjs/list/filter-standard.cjs +1 -3
  122. package/dist/cjs/list/filter-standard.native.js +1 -3
  123. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  124. package/dist/cjs/list/list-tools-sheet.cjs +10 -3
  125. package/dist/cjs/list/list-tools-sheet.native.js +12 -3
  126. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  127. package/dist/cjs/navigation/paths.cjs +5 -0
  128. package/dist/cjs/navigation/paths.native.js +7 -0
  129. package/dist/cjs/navigation/paths.native.js.map +1 -1
  130. package/dist/cjs/report/QueryReportScreen.cjs +1 -1
  131. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  132. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  133. package/dist/cjs/report/queryReportFilterBar.cjs +3 -8
  134. package/dist/cjs/report/queryReportFilterBar.native.js +3 -8
  135. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  136. package/dist/cjs/shared/sessionUser.cjs +107 -0
  137. package/dist/cjs/shared/sessionUser.native.js +137 -0
  138. package/dist/cjs/shared/sessionUser.native.js.map +1 -0
  139. package/dist/cjs/shared/useSessionUserId.cjs +2 -26
  140. package/dist/cjs/shared/useSessionUserId.native.js +2 -28
  141. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  142. package/dist/cjs/shell/BackofficeShell.cjs +129 -86
  143. package/dist/cjs/shell/BackofficeShell.native.js +146 -99
  144. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  145. package/dist/cjs/shell/HomeRedirect.cjs +17 -21
  146. package/dist/cjs/shell/HomeRedirect.native.js +17 -20
  147. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  148. package/dist/cjs/shell/WorkspaceSidebar.cjs +53 -25
  149. package/dist/cjs/shell/WorkspaceSidebar.native.js +55 -25
  150. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  151. package/dist/cjs/shell/shellSidebarSlot.cjs +31 -0
  152. package/dist/cjs/shell/shellSidebarSlot.native.js +34 -0
  153. package/dist/cjs/shell/shellSidebarSlot.native.js.map +1 -0
  154. package/dist/cjs/shell/useWorkspaces.cjs +25 -37
  155. package/dist/cjs/shell/useWorkspaces.native.js +27 -41
  156. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  157. package/dist/cjs/views/DashboardView.cjs +2 -2
  158. package/dist/cjs/views/DashboardView.native.js +2 -2
  159. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  160. package/dist/cjs/views/ImageView.cjs +14 -5
  161. package/dist/cjs/views/ImageView.native.js +14 -5
  162. package/dist/cjs/views/ImageView.native.js.map +1 -1
  163. package/dist/cjs/views/ViewHeader.cjs +17 -6
  164. package/dist/cjs/views/ViewHeader.native.js +17 -6
  165. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  166. package/dist/cjs/views/ViewSwitcherMenu.cjs +10 -9
  167. package/dist/cjs/views/ViewSwitcherMenu.native.js +10 -9
  168. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  169. package/dist/cjs/views/viewAvailability.cjs +17 -9
  170. package/dist/cjs/views/viewAvailability.native.js +18 -8
  171. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  172. package/dist/cjs/views/viewMeta.cjs +24 -1
  173. package/dist/cjs/views/viewMeta.native.js +30 -1
  174. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  175. package/dist/cjs/workspace/WorkspaceChartBlock.cjs +1 -1
  176. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  177. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  178. package/dist/cjs/workspace/WorkspaceLinkDirectory.cjs +2 -2
  179. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +2 -2
  180. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  181. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -1
  182. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  183. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  184. package/dist/cjs/workspace/WorkspaceShortcut.cjs +1 -1
  185. package/dist/cjs/workspace/WorkspaceShortcut.native.js +1 -1
  186. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  187. package/dist/esm/chrome/BackofficeAwesomebar.mjs +15 -8
  188. package/dist/esm/chrome/BackofficeAwesomebar.mjs.map +1 -1
  189. package/dist/esm/chrome/BackofficeAwesomebar.native.js +15 -8
  190. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  191. package/dist/esm/chrome/CommandPalette.mjs +25 -19
  192. package/dist/esm/chrome/CommandPalette.mjs.map +1 -1
  193. package/dist/esm/chrome/CommandPalette.native.js +27 -19
  194. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  195. package/dist/esm/chrome/NotificationsButton.mjs +4 -2
  196. package/dist/esm/chrome/NotificationsButton.mjs.map +1 -1
  197. package/dist/esm/chrome/NotificationsButton.native.js +4 -2
  198. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  199. package/dist/esm/chrome/UserMenu.mjs +146 -80
  200. package/dist/esm/chrome/UserMenu.mjs.map +1 -1
  201. package/dist/esm/chrome/UserMenu.native.js +160 -93
  202. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  203. package/dist/esm/chrome/awesomebar-data.mjs +45 -18
  204. package/dist/esm/chrome/awesomebar-data.mjs.map +1 -1
  205. package/dist/esm/chrome/awesomebar-data.native.js +45 -17
  206. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  207. package/dist/esm/chrome/command-palette-model.mjs +8 -7
  208. package/dist/esm/chrome/command-palette-model.mjs.map +1 -1
  209. package/dist/esm/chrome/command-palette-model.native.js +10 -7
  210. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  211. package/dist/esm/chrome/notifications-data.mjs +3 -39
  212. package/dist/esm/chrome/notifications-data.mjs.map +1 -1
  213. package/dist/esm/chrome/notifications-data.native.js +3 -40
  214. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  215. package/dist/esm/chrome/notifications-panel.mjs +4 -5
  216. package/dist/esm/chrome/notifications-panel.mjs.map +1 -1
  217. package/dist/esm/chrome/notifications-panel.native.js +4 -5
  218. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  219. package/dist/esm/chrome/user-session.mjs +20 -11
  220. package/dist/esm/chrome/user-session.mjs.map +1 -1
  221. package/dist/esm/chrome/user-session.native.js +21 -13
  222. package/dist/esm/chrome/user-session.native.js.map +1 -1
  223. package/dist/esm/config/BackofficeProvider.mjs +3 -1
  224. package/dist/esm/config/BackofficeProvider.mjs.map +1 -1
  225. package/dist/esm/config/BackofficeProvider.native.js +3 -1
  226. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  227. package/dist/esm/config/capabilities.mjs +3 -0
  228. package/dist/esm/config/capabilities.mjs.map +1 -1
  229. package/dist/esm/config/capabilities.native.js +3 -0
  230. package/dist/esm/config/capabilities.native.js.map +1 -1
  231. package/dist/esm/desk/Desk.mjs +17 -0
  232. package/dist/esm/desk/Desk.mjs.map +1 -1
  233. package/dist/esm/desk/Desk.native.js +17 -0
  234. package/dist/esm/desk/Desk.native.js.map +1 -1
  235. package/dist/esm/desk/DeskSurface.mjs +10 -0
  236. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  237. package/dist/esm/desk/DeskSurface.native.js +10 -0
  238. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  239. package/dist/esm/desk/resolveDeskPath.mjs +6 -0
  240. package/dist/esm/desk/resolveDeskPath.mjs.map +1 -1
  241. package/dist/esm/desk/resolveDeskPath.native.js +6 -0
  242. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  243. package/dist/esm/desk/target.mjs +5 -0
  244. package/dist/esm/desk/target.mjs.map +1 -1
  245. package/dist/esm/desk/target.native.js +5 -0
  246. package/dist/esm/desk/target.native.js.map +1 -1
  247. package/dist/esm/form/DocFormScreen.mjs +24 -3
  248. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  249. package/dist/esm/form/DocFormScreen.native.js +27 -6
  250. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  251. package/dist/esm/form/FormConnections.mjs +2 -2
  252. package/dist/esm/form/FormConnections.mjs.map +1 -1
  253. package/dist/esm/form/FormConnections.native.js +2 -2
  254. package/dist/esm/form/FormConnections.native.js.map +1 -1
  255. package/dist/esm/form/FormErrorBoundary.mjs +1 -1
  256. package/dist/esm/form/FormErrorBoundary.mjs.map +1 -1
  257. package/dist/esm/form/FormErrorBoundary.native.js +1 -1
  258. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  259. package/dist/esm/form/FormSidebarPanel.mjs +1 -1
  260. package/dist/esm/form/FormSidebarPanel.mjs.map +1 -1
  261. package/dist/esm/form/FormSidebarPanel.native.js +1 -1
  262. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  263. package/dist/esm/form/FormTimeline.mjs +1 -2
  264. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  265. package/dist/esm/form/FormTimeline.native.js +1 -2
  266. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  267. package/dist/esm/form/FormToolbar.mjs +99 -89
  268. package/dist/esm/form/FormToolbar.mjs.map +1 -1
  269. package/dist/esm/form/FormToolbar.native.js +100 -96
  270. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  271. package/dist/esm/formBuilder/DoctypePicker.mjs +64 -0
  272. package/dist/esm/formBuilder/DoctypePicker.mjs.map +1 -0
  273. package/dist/esm/formBuilder/DoctypePicker.native.js +70 -0
  274. package/dist/esm/formBuilder/DoctypePicker.native.js.map +1 -0
  275. package/dist/esm/formBuilder/FieldPalette.mjs +123 -0
  276. package/dist/esm/formBuilder/FieldPalette.mjs.map +1 -0
  277. package/dist/esm/formBuilder/FieldPalette.native.js +137 -0
  278. package/dist/esm/formBuilder/FieldPalette.native.js.map +1 -0
  279. package/dist/esm/formBuilder/FieldPropertiesPanel.mjs +161 -0
  280. package/dist/esm/formBuilder/FieldPropertiesPanel.mjs.map +1 -0
  281. package/dist/esm/formBuilder/FieldPropertiesPanel.native.js +209 -0
  282. package/dist/esm/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  283. package/dist/esm/formBuilder/FormBuilderCanvas.mjs +382 -0
  284. package/dist/esm/formBuilder/FormBuilderCanvas.mjs.map +1 -0
  285. package/dist/esm/formBuilder/FormBuilderCanvas.native.js +444 -0
  286. package/dist/esm/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  287. package/dist/esm/formBuilder/FormBuilderScreen.mjs +423 -0
  288. package/dist/esm/formBuilder/FormBuilderScreen.mjs.map +1 -0
  289. package/dist/esm/formBuilder/FormBuilderScreen.native.js +509 -0
  290. package/dist/esm/formBuilder/FormBuilderScreen.native.js.map +1 -0
  291. package/dist/esm/formBuilder/api.mjs +129 -0
  292. package/dist/esm/formBuilder/api.mjs.map +1 -0
  293. package/dist/esm/formBuilder/api.native.js +159 -0
  294. package/dist/esm/formBuilder/api.native.js.map +1 -0
  295. package/dist/esm/formBuilder/fieldtypes.mjs +82 -0
  296. package/dist/esm/formBuilder/fieldtypes.mjs.map +1 -0
  297. package/dist/esm/formBuilder/fieldtypes.native.js +98 -0
  298. package/dist/esm/formBuilder/fieldtypes.native.js.map +1 -0
  299. package/dist/esm/formBuilder/index.mjs +6 -0
  300. package/dist/esm/formBuilder/index.mjs.map +1 -0
  301. package/dist/esm/formBuilder/index.native.js +6 -0
  302. package/dist/esm/formBuilder/index.native.js.map +1 -0
  303. package/dist/esm/formBuilder/model.mjs +420 -0
  304. package/dist/esm/formBuilder/model.mjs.map +1 -0
  305. package/dist/esm/formBuilder/model.native.js +665 -0
  306. package/dist/esm/formBuilder/model.native.js.map +1 -0
  307. package/dist/esm/formBuilder/useFormBuilderDrag.mjs +374 -0
  308. package/dist/esm/formBuilder/useFormBuilderDrag.mjs.map +1 -0
  309. package/dist/esm/formBuilder/useFormBuilderDrag.native.js +406 -0
  310. package/dist/esm/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  311. package/dist/esm/i18n/en.mjs +294 -4
  312. package/dist/esm/i18n/en.mjs.map +1 -1
  313. package/dist/esm/i18n/en.native.js +294 -4
  314. package/dist/esm/i18n/en.native.js.map +1 -1
  315. package/dist/esm/index.mjs +3 -2
  316. package/dist/esm/index.mjs.map +1 -1
  317. package/dist/esm/index.native.js +3 -2
  318. package/dist/esm/index.native.js.map +1 -1
  319. package/dist/esm/list/DoctypeListScreen.mjs +150 -46
  320. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  321. package/dist/esm/list/DoctypeListScreen.native.js +167 -59
  322. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  323. package/dist/esm/list/ListFilterBar.mjs +9 -5
  324. package/dist/esm/list/ListFilterBar.mjs.map +1 -1
  325. package/dist/esm/list/ListFilterBar.native.js +9 -5
  326. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  327. package/dist/esm/list/ListSidebar.mjs +4 -3
  328. package/dist/esm/list/ListSidebar.mjs.map +1 -1
  329. package/dist/esm/list/ListSidebar.native.js +4 -3
  330. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  331. package/dist/esm/list/filter-chips.mjs +10 -4
  332. package/dist/esm/list/filter-chips.mjs.map +1 -1
  333. package/dist/esm/list/filter-chips.native.js +10 -4
  334. package/dist/esm/list/filter-chips.native.js.map +1 -1
  335. package/dist/esm/list/filter-editor.mjs +1 -10
  336. package/dist/esm/list/filter-editor.mjs.map +1 -1
  337. package/dist/esm/list/filter-editor.native.js +1 -10
  338. package/dist/esm/list/filter-editor.native.js.map +1 -1
  339. package/dist/esm/list/filter-saved.mjs +0 -1
  340. package/dist/esm/list/filter-saved.mjs.map +1 -1
  341. package/dist/esm/list/filter-saved.native.js +0 -1
  342. package/dist/esm/list/filter-saved.native.js.map +1 -1
  343. package/dist/esm/list/filter-sort.mjs +0 -1
  344. package/dist/esm/list/filter-sort.mjs.map +1 -1
  345. package/dist/esm/list/filter-sort.native.js +0 -1
  346. package/dist/esm/list/filter-sort.native.js.map +1 -1
  347. package/dist/esm/list/filter-standard.mjs +1 -3
  348. package/dist/esm/list/filter-standard.mjs.map +1 -1
  349. package/dist/esm/list/filter-standard.native.js +1 -3
  350. package/dist/esm/list/filter-standard.native.js.map +1 -1
  351. package/dist/esm/list/list-tools-sheet.mjs +10 -3
  352. package/dist/esm/list/list-tools-sheet.mjs.map +1 -1
  353. package/dist/esm/list/list-tools-sheet.native.js +12 -3
  354. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  355. package/dist/esm/navigation/paths.mjs +5 -1
  356. package/dist/esm/navigation/paths.mjs.map +1 -1
  357. package/dist/esm/navigation/paths.native.js +7 -1
  358. package/dist/esm/navigation/paths.native.js.map +1 -1
  359. package/dist/esm/report/QueryReportScreen.mjs +1 -1
  360. package/dist/esm/report/QueryReportScreen.mjs.map +1 -1
  361. package/dist/esm/report/QueryReportScreen.native.js +1 -1
  362. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  363. package/dist/esm/report/queryReportFilterBar.mjs +3 -8
  364. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  365. package/dist/esm/report/queryReportFilterBar.native.js +3 -8
  366. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  367. package/dist/esm/shared/sessionUser.mjs +78 -0
  368. package/dist/esm/shared/sessionUser.mjs.map +1 -0
  369. package/dist/esm/shared/sessionUser.native.js +105 -0
  370. package/dist/esm/shared/sessionUser.native.js.map +1 -0
  371. package/dist/esm/shared/useSessionUserId.mjs +2 -26
  372. package/dist/esm/shared/useSessionUserId.mjs.map +1 -1
  373. package/dist/esm/shared/useSessionUserId.native.js +2 -28
  374. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  375. package/dist/esm/shell/BackofficeShell.mjs +132 -89
  376. package/dist/esm/shell/BackofficeShell.mjs.map +1 -1
  377. package/dist/esm/shell/BackofficeShell.native.js +149 -102
  378. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  379. package/dist/esm/shell/HomeRedirect.mjs +20 -24
  380. package/dist/esm/shell/HomeRedirect.mjs.map +1 -1
  381. package/dist/esm/shell/HomeRedirect.native.js +20 -23
  382. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  383. package/dist/esm/shell/WorkspaceSidebar.mjs +55 -27
  384. package/dist/esm/shell/WorkspaceSidebar.mjs.map +1 -1
  385. package/dist/esm/shell/WorkspaceSidebar.native.js +57 -27
  386. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  387. package/dist/esm/shell/shellSidebarSlot.mjs +3 -0
  388. package/dist/esm/shell/shellSidebarSlot.mjs.map +1 -0
  389. package/dist/esm/shell/shellSidebarSlot.native.js +3 -0
  390. package/dist/esm/shell/shellSidebarSlot.native.js.map +1 -0
  391. package/dist/esm/shell/useWorkspaces.mjs +28 -40
  392. package/dist/esm/shell/useWorkspaces.mjs.map +1 -1
  393. package/dist/esm/shell/useWorkspaces.native.js +30 -44
  394. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  395. package/dist/esm/views/DashboardView.mjs +2 -2
  396. package/dist/esm/views/DashboardView.mjs.map +1 -1
  397. package/dist/esm/views/DashboardView.native.js +2 -2
  398. package/dist/esm/views/DashboardView.native.js.map +1 -1
  399. package/dist/esm/views/ImageView.mjs +15 -6
  400. package/dist/esm/views/ImageView.mjs.map +1 -1
  401. package/dist/esm/views/ImageView.native.js +15 -6
  402. package/dist/esm/views/ImageView.native.js.map +1 -1
  403. package/dist/esm/views/ViewHeader.mjs +18 -7
  404. package/dist/esm/views/ViewHeader.mjs.map +1 -1
  405. package/dist/esm/views/ViewHeader.native.js +18 -7
  406. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  407. package/dist/esm/views/ViewSwitcherMenu.mjs +11 -10
  408. package/dist/esm/views/ViewSwitcherMenu.mjs.map +1 -1
  409. package/dist/esm/views/ViewSwitcherMenu.native.js +11 -10
  410. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  411. package/dist/esm/views/viewAvailability.mjs +17 -9
  412. package/dist/esm/views/viewAvailability.mjs.map +1 -1
  413. package/dist/esm/views/viewAvailability.native.js +18 -8
  414. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  415. package/dist/esm/views/viewMeta.mjs +23 -1
  416. package/dist/esm/views/viewMeta.mjs.map +1 -1
  417. package/dist/esm/views/viewMeta.native.js +29 -1
  418. package/dist/esm/views/viewMeta.native.js.map +1 -1
  419. package/dist/esm/workspace/WorkspaceChartBlock.mjs +1 -1
  420. package/dist/esm/workspace/WorkspaceChartBlock.mjs.map +1 -1
  421. package/dist/esm/workspace/WorkspaceChartBlock.native.js +1 -1
  422. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  423. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs +2 -2
  424. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  425. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js +2 -2
  426. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  427. package/dist/esm/workspace/WorkspaceRecents.mjs +2 -2
  428. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  429. package/dist/esm/workspace/WorkspaceRecents.native.js +2 -2
  430. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  431. package/dist/esm/workspace/WorkspaceShortcut.mjs +2 -2
  432. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  433. package/dist/esm/workspace/WorkspaceShortcut.native.js +2 -2
  434. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  435. package/dist/jsx/chrome/BackofficeAwesomebar.mjs +15 -8
  436. package/dist/jsx/chrome/BackofficeAwesomebar.mjs.map +1 -1
  437. package/dist/jsx/chrome/BackofficeAwesomebar.native.js +14 -7
  438. package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -1
  439. package/dist/jsx/chrome/CommandPalette.mjs +25 -19
  440. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -1
  441. package/dist/jsx/chrome/CommandPalette.native.js +25 -17
  442. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  443. package/dist/jsx/chrome/NotificationsButton.mjs +4 -2
  444. package/dist/jsx/chrome/NotificationsButton.mjs.map +1 -1
  445. package/dist/jsx/chrome/NotificationsButton.native.js +3 -1
  446. package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -1
  447. package/dist/jsx/chrome/UserMenu.mjs +146 -80
  448. package/dist/jsx/chrome/UserMenu.mjs.map +1 -1
  449. package/dist/jsx/chrome/UserMenu.native.js +158 -91
  450. package/dist/jsx/chrome/UserMenu.native.js.map +1 -1
  451. package/dist/jsx/chrome/awesomebar-data.mjs +45 -18
  452. package/dist/jsx/chrome/awesomebar-data.mjs.map +1 -1
  453. package/dist/jsx/chrome/awesomebar-data.native.js +45 -17
  454. package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -1
  455. package/dist/jsx/chrome/command-palette-model.mjs +8 -7
  456. package/dist/jsx/chrome/command-palette-model.mjs.map +1 -1
  457. package/dist/jsx/chrome/command-palette-model.native.js +10 -7
  458. package/dist/jsx/chrome/command-palette-model.native.js.map +1 -1
  459. package/dist/jsx/chrome/notifications-data.mjs +3 -39
  460. package/dist/jsx/chrome/notifications-data.mjs.map +1 -1
  461. package/dist/jsx/chrome/notifications-data.native.js +2 -39
  462. package/dist/jsx/chrome/notifications-data.native.js.map +1 -1
  463. package/dist/jsx/chrome/notifications-panel.mjs +4 -5
  464. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -1
  465. package/dist/jsx/chrome/notifications-panel.native.js +3 -4
  466. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  467. package/dist/jsx/chrome/user-session.mjs +20 -11
  468. package/dist/jsx/chrome/user-session.mjs.map +1 -1
  469. package/dist/jsx/chrome/user-session.native.js +21 -13
  470. package/dist/jsx/chrome/user-session.native.js.map +1 -1
  471. package/dist/jsx/config/BackofficeProvider.mjs +3 -1
  472. package/dist/jsx/config/BackofficeProvider.mjs.map +1 -1
  473. package/dist/jsx/config/BackofficeProvider.native.js +3 -1
  474. package/dist/jsx/config/BackofficeProvider.native.js.map +1 -1
  475. package/dist/jsx/config/capabilities.mjs +3 -0
  476. package/dist/jsx/config/capabilities.mjs.map +1 -1
  477. package/dist/jsx/config/capabilities.native.js +3 -0
  478. package/dist/jsx/config/capabilities.native.js.map +1 -1
  479. package/dist/jsx/desk/Desk.mjs +17 -0
  480. package/dist/jsx/desk/Desk.mjs.map +1 -1
  481. package/dist/jsx/desk/Desk.native.js +17 -0
  482. package/dist/jsx/desk/Desk.native.js.map +1 -1
  483. package/dist/jsx/desk/DeskSurface.mjs +10 -0
  484. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  485. package/dist/jsx/desk/DeskSurface.native.js +10 -0
  486. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  487. package/dist/jsx/desk/resolveDeskPath.mjs +6 -0
  488. package/dist/jsx/desk/resolveDeskPath.mjs.map +1 -1
  489. package/dist/jsx/desk/resolveDeskPath.native.js +6 -0
  490. package/dist/jsx/desk/resolveDeskPath.native.js.map +1 -1
  491. package/dist/jsx/desk/target.mjs +5 -0
  492. package/dist/jsx/desk/target.mjs.map +1 -1
  493. package/dist/jsx/desk/target.native.js +5 -0
  494. package/dist/jsx/desk/target.native.js.map +1 -1
  495. package/dist/jsx/form/DocFormScreen.mjs +24 -3
  496. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  497. package/dist/jsx/form/DocFormScreen.native.js +27 -6
  498. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  499. package/dist/jsx/form/FormConnections.mjs +2 -2
  500. package/dist/jsx/form/FormConnections.mjs.map +1 -1
  501. package/dist/jsx/form/FormConnections.native.js +2 -2
  502. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  503. package/dist/jsx/form/FormErrorBoundary.mjs +1 -1
  504. package/dist/jsx/form/FormErrorBoundary.mjs.map +1 -1
  505. package/dist/jsx/form/FormErrorBoundary.native.js +1 -1
  506. package/dist/jsx/form/FormErrorBoundary.native.js.map +1 -1
  507. package/dist/jsx/form/FormSidebarPanel.mjs +1 -1
  508. package/dist/jsx/form/FormSidebarPanel.mjs.map +1 -1
  509. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  510. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  511. package/dist/jsx/form/FormTimeline.mjs +1 -2
  512. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  513. package/dist/jsx/form/FormTimeline.native.js +1 -2
  514. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  515. package/dist/jsx/form/FormToolbar.mjs +99 -89
  516. package/dist/jsx/form/FormToolbar.mjs.map +1 -1
  517. package/dist/jsx/form/FormToolbar.native.js +98 -94
  518. package/dist/jsx/form/FormToolbar.native.js.map +1 -1
  519. package/dist/jsx/formBuilder/DoctypePicker.mjs +64 -0
  520. package/dist/jsx/formBuilder/DoctypePicker.mjs.map +1 -0
  521. package/dist/jsx/formBuilder/DoctypePicker.native.js +98 -0
  522. package/dist/jsx/formBuilder/DoctypePicker.native.js.map +1 -0
  523. package/dist/jsx/formBuilder/FieldPalette.mjs +123 -0
  524. package/dist/jsx/formBuilder/FieldPalette.mjs.map +1 -0
  525. package/dist/jsx/formBuilder/FieldPalette.native.js +165 -0
  526. package/dist/jsx/formBuilder/FieldPalette.native.js.map +1 -0
  527. package/dist/jsx/formBuilder/FieldPropertiesPanel.mjs +161 -0
  528. package/dist/jsx/formBuilder/FieldPropertiesPanel.mjs.map +1 -0
  529. package/dist/jsx/formBuilder/FieldPropertiesPanel.native.js +237 -0
  530. package/dist/jsx/formBuilder/FieldPropertiesPanel.native.js.map +1 -0
  531. package/dist/jsx/formBuilder/FormBuilderCanvas.mjs +382 -0
  532. package/dist/jsx/formBuilder/FormBuilderCanvas.mjs.map +1 -0
  533. package/dist/jsx/formBuilder/FormBuilderCanvas.native.js +472 -0
  534. package/dist/jsx/formBuilder/FormBuilderCanvas.native.js.map +1 -0
  535. package/dist/jsx/formBuilder/FormBuilderScreen.mjs +423 -0
  536. package/dist/jsx/formBuilder/FormBuilderScreen.mjs.map +1 -0
  537. package/dist/jsx/formBuilder/FormBuilderScreen.native.js +537 -0
  538. package/dist/jsx/formBuilder/FormBuilderScreen.native.js.map +1 -0
  539. package/dist/jsx/formBuilder/api.mjs +129 -0
  540. package/dist/jsx/formBuilder/api.mjs.map +1 -0
  541. package/dist/jsx/formBuilder/api.native.js +193 -0
  542. package/dist/jsx/formBuilder/api.native.js.map +1 -0
  543. package/dist/jsx/formBuilder/fieldtypes.mjs +82 -0
  544. package/dist/jsx/formBuilder/fieldtypes.mjs.map +1 -0
  545. package/dist/jsx/formBuilder/fieldtypes.native.js +133 -0
  546. package/dist/jsx/formBuilder/fieldtypes.native.js.map +1 -0
  547. package/dist/jsx/formBuilder/index.mjs +6 -0
  548. package/dist/jsx/formBuilder/index.mjs.map +1 -0
  549. package/dist/jsx/formBuilder/index.native.js +71 -0
  550. package/dist/jsx/formBuilder/index.native.js.map +1 -0
  551. package/dist/jsx/formBuilder/model.mjs +420 -0
  552. package/dist/jsx/formBuilder/model.mjs.map +1 -0
  553. package/dist/jsx/formBuilder/model.native.js +714 -0
  554. package/dist/jsx/formBuilder/model.native.js.map +1 -0
  555. package/dist/jsx/formBuilder/useFormBuilderDrag.mjs +374 -0
  556. package/dist/jsx/formBuilder/useFormBuilderDrag.mjs.map +1 -0
  557. package/dist/jsx/formBuilder/useFormBuilderDrag.native.js +434 -0
  558. package/dist/jsx/formBuilder/useFormBuilderDrag.native.js.map +1 -0
  559. package/dist/jsx/i18n/en.mjs +294 -4
  560. package/dist/jsx/i18n/en.mjs.map +1 -1
  561. package/dist/jsx/i18n/en.native.js +294 -4
  562. package/dist/jsx/i18n/en.native.js.map +1 -1
  563. package/dist/jsx/index.js +3 -2
  564. package/dist/jsx/index.js.map +1 -1
  565. package/dist/jsx/index.mjs +3 -2
  566. package/dist/jsx/index.mjs.map +1 -1
  567. package/dist/jsx/index.native.js +40 -0
  568. package/dist/jsx/index.native.js.map +1 -1
  569. package/dist/jsx/list/DoctypeListScreen.mjs +150 -46
  570. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  571. package/dist/jsx/list/DoctypeListScreen.native.js +164 -56
  572. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  573. package/dist/jsx/list/ListFilterBar.mjs +9 -5
  574. package/dist/jsx/list/ListFilterBar.mjs.map +1 -1
  575. package/dist/jsx/list/ListFilterBar.native.js +8 -4
  576. package/dist/jsx/list/ListFilterBar.native.js.map +1 -1
  577. package/dist/jsx/list/ListSidebar.mjs +4 -3
  578. package/dist/jsx/list/ListSidebar.mjs.map +1 -1
  579. package/dist/jsx/list/ListSidebar.native.js +4 -3
  580. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  581. package/dist/jsx/list/filter-chips.mjs +10 -4
  582. package/dist/jsx/list/filter-chips.mjs.map +1 -1
  583. package/dist/jsx/list/filter-chips.native.js +10 -4
  584. package/dist/jsx/list/filter-chips.native.js.map +1 -1
  585. package/dist/jsx/list/filter-editor.mjs +1 -10
  586. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  587. package/dist/jsx/list/filter-editor.native.js +1 -10
  588. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  589. package/dist/jsx/list/filter-saved.mjs +0 -1
  590. package/dist/jsx/list/filter-saved.mjs.map +1 -1
  591. package/dist/jsx/list/filter-saved.native.js +0 -1
  592. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  593. package/dist/jsx/list/filter-sort.mjs +0 -1
  594. package/dist/jsx/list/filter-sort.mjs.map +1 -1
  595. package/dist/jsx/list/filter-sort.native.js +0 -1
  596. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  597. package/dist/jsx/list/filter-standard.mjs +1 -3
  598. package/dist/jsx/list/filter-standard.mjs.map +1 -1
  599. package/dist/jsx/list/filter-standard.native.js +1 -3
  600. package/dist/jsx/list/filter-standard.native.js.map +1 -1
  601. package/dist/jsx/list/list-tools-sheet.mjs +10 -3
  602. package/dist/jsx/list/list-tools-sheet.mjs.map +1 -1
  603. package/dist/jsx/list/list-tools-sheet.native.js +12 -3
  604. package/dist/jsx/list/list-tools-sheet.native.js.map +1 -1
  605. package/dist/jsx/navigation/paths.mjs +5 -1
  606. package/dist/jsx/navigation/paths.mjs.map +1 -1
  607. package/dist/jsx/navigation/paths.native.js +7 -0
  608. package/dist/jsx/navigation/paths.native.js.map +1 -1
  609. package/dist/jsx/report/QueryReportScreen.mjs +1 -1
  610. package/dist/jsx/report/QueryReportScreen.mjs.map +1 -1
  611. package/dist/jsx/report/QueryReportScreen.native.js +1 -1
  612. package/dist/jsx/report/QueryReportScreen.native.js.map +1 -1
  613. package/dist/jsx/report/queryReportFilterBar.mjs +3 -8
  614. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  615. package/dist/jsx/report/queryReportFilterBar.native.js +3 -8
  616. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  617. package/dist/jsx/shared/sessionUser.mjs +78 -0
  618. package/dist/jsx/shared/sessionUser.mjs.map +1 -0
  619. package/dist/jsx/shared/sessionUser.native.js +137 -0
  620. package/dist/jsx/shared/sessionUser.native.js.map +1 -0
  621. package/dist/jsx/shared/useSessionUserId.mjs +2 -26
  622. package/dist/jsx/shared/useSessionUserId.mjs.map +1 -1
  623. package/dist/jsx/shared/useSessionUserId.native.js +2 -28
  624. package/dist/jsx/shared/useSessionUserId.native.js.map +1 -1
  625. package/dist/jsx/shell/BackofficeShell.mjs +132 -89
  626. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -1
  627. package/dist/jsx/shell/BackofficeShell.native.js +146 -99
  628. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  629. package/dist/jsx/shell/HomeRedirect.mjs +20 -24
  630. package/dist/jsx/shell/HomeRedirect.mjs.map +1 -1
  631. package/dist/jsx/shell/HomeRedirect.native.js +17 -20
  632. package/dist/jsx/shell/HomeRedirect.native.js.map +1 -1
  633. package/dist/jsx/shell/WorkspaceSidebar.mjs +55 -27
  634. package/dist/jsx/shell/WorkspaceSidebar.mjs.map +1 -1
  635. package/dist/jsx/shell/WorkspaceSidebar.native.js +55 -25
  636. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -1
  637. package/dist/jsx/shell/shellSidebarSlot.mjs +3 -0
  638. package/dist/jsx/shell/shellSidebarSlot.mjs.map +1 -0
  639. package/dist/jsx/shell/shellSidebarSlot.native.js +34 -0
  640. package/dist/jsx/shell/shellSidebarSlot.native.js.map +1 -0
  641. package/dist/jsx/shell/useWorkspaces.mjs +28 -40
  642. package/dist/jsx/shell/useWorkspaces.mjs.map +1 -1
  643. package/dist/jsx/shell/useWorkspaces.native.js +27 -41
  644. package/dist/jsx/shell/useWorkspaces.native.js.map +1 -1
  645. package/dist/jsx/views/DashboardView.mjs +2 -2
  646. package/dist/jsx/views/DashboardView.mjs.map +1 -1
  647. package/dist/jsx/views/DashboardView.native.js +2 -2
  648. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  649. package/dist/jsx/views/ImageView.mjs +15 -6
  650. package/dist/jsx/views/ImageView.mjs.map +1 -1
  651. package/dist/jsx/views/ImageView.native.js +14 -5
  652. package/dist/jsx/views/ImageView.native.js.map +1 -1
  653. package/dist/jsx/views/ViewHeader.mjs +18 -7
  654. package/dist/jsx/views/ViewHeader.mjs.map +1 -1
  655. package/dist/jsx/views/ViewHeader.native.js +17 -6
  656. package/dist/jsx/views/ViewHeader.native.js.map +1 -1
  657. package/dist/jsx/views/ViewSwitcherMenu.mjs +11 -10
  658. package/dist/jsx/views/ViewSwitcherMenu.mjs.map +1 -1
  659. package/dist/jsx/views/ViewSwitcherMenu.native.js +10 -9
  660. package/dist/jsx/views/ViewSwitcherMenu.native.js.map +1 -1
  661. package/dist/jsx/views/viewAvailability.mjs +17 -9
  662. package/dist/jsx/views/viewAvailability.mjs.map +1 -1
  663. package/dist/jsx/views/viewAvailability.native.js +18 -8
  664. package/dist/jsx/views/viewAvailability.native.js.map +1 -1
  665. package/dist/jsx/views/viewMeta.mjs +23 -1
  666. package/dist/jsx/views/viewMeta.mjs.map +1 -1
  667. package/dist/jsx/views/viewMeta.native.js +30 -1
  668. package/dist/jsx/views/viewMeta.native.js.map +1 -1
  669. package/dist/jsx/workspace/WorkspaceChartBlock.mjs +1 -1
  670. package/dist/jsx/workspace/WorkspaceChartBlock.mjs.map +1 -1
  671. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +1 -1
  672. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  673. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs +2 -2
  674. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  675. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +2 -2
  676. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  677. package/dist/jsx/workspace/WorkspaceRecents.mjs +2 -2
  678. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  679. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  680. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  681. package/dist/jsx/workspace/WorkspaceShortcut.mjs +2 -2
  682. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  683. package/dist/jsx/workspace/WorkspaceShortcut.native.js +1 -1
  684. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  685. package/package.json +12 -12
  686. package/src/backofficeScreens.designLaw.spec.ts +27 -0
  687. package/src/chrome/BackofficeAwesomebar.tsx +18 -9
  688. package/src/chrome/CommandPalette.spec.tsx +31 -0
  689. package/src/chrome/CommandPalette.tsx +47 -31
  690. package/src/chrome/NotificationsButton.screen.spec.tsx +1 -0
  691. package/src/chrome/NotificationsButton.tsx +4 -2
  692. package/src/chrome/UserMenu.screen.spec.tsx +76 -6
  693. package/src/chrome/UserMenu.tsx +174 -110
  694. package/src/chrome/awesomebar-data.tsx +28 -19
  695. package/src/chrome/command-palette-model.spec.tsx +148 -0
  696. package/src/chrome/command-palette-model.ts +13 -5
  697. package/src/chrome/notifications-data.tsx +3 -50
  698. package/src/chrome/notifications-panel.tsx +3 -6
  699. package/src/chrome/user-session.tsx +26 -15
  700. package/src/config/BackofficeProvider.spec.tsx +6 -2
  701. package/src/config/BackofficeProvider.tsx +10 -0
  702. package/src/config/capabilities.spec.ts +13 -0
  703. package/src/config/capabilities.ts +4 -0
  704. package/src/desk/Desk.spec.tsx +48 -0
  705. package/src/desk/Desk.tsx +25 -1
  706. package/src/desk/DeskSurface.spec.tsx +2 -0
  707. package/src/desk/DeskSurface.tsx +8 -0
  708. package/src/desk/resolveDeskPath.spec.ts +20 -0
  709. package/src/desk/resolveDeskPath.ts +6 -1
  710. package/src/desk/target.ts +3 -0
  711. package/src/form/DocFormScreen.guest.screen.spec.tsx +7 -3
  712. package/src/form/DocFormScreen.rights.spec.tsx +113 -8
  713. package/src/form/DocFormScreen.tsx +65 -44
  714. package/src/form/FormConnections.tsx +2 -2
  715. package/src/form/FormErrorBoundary.spec.tsx +2 -3
  716. package/src/form/FormErrorBoundary.tsx +1 -1
  717. package/src/form/FormSidebarPanel.tsx +1 -1
  718. package/src/form/FormTimeline.tsx +0 -1
  719. package/src/form/FormToolbar.screen.spec.tsx +90 -29
  720. package/src/form/FormToolbar.tsx +98 -132
  721. package/src/formBuilder/DoctypePicker.tsx +72 -0
  722. package/src/formBuilder/FieldPalette.tsx +119 -0
  723. package/src/formBuilder/FieldPropertiesPanel.tsx +213 -0
  724. package/src/formBuilder/FormBuilderCanvas.tsx +468 -0
  725. package/src/formBuilder/FormBuilderScreen.screen.spec.tsx +392 -0
  726. package/src/formBuilder/FormBuilderScreen.stories.tsx +122 -0
  727. package/src/formBuilder/FormBuilderScreen.tsx +491 -0
  728. package/src/formBuilder/api.spec.ts +301 -0
  729. package/src/formBuilder/api.ts +198 -0
  730. package/src/formBuilder/fieldtypes.ts +140 -0
  731. package/src/formBuilder/index.ts +58 -0
  732. package/src/formBuilder/model.spec.ts +401 -0
  733. package/src/formBuilder/model.ts +522 -0
  734. package/src/formBuilder/useFormBuilderDrag.spec.tsx +170 -0
  735. package/src/formBuilder/useFormBuilderDrag.ts +498 -0
  736. package/src/i18n/en.ts +293 -3
  737. package/src/index.ts +58 -1
  738. package/src/list/DoctypeListScreen.guest.screen.spec.tsx +144 -4
  739. package/src/list/DoctypeListScreen.tsx +213 -88
  740. package/src/list/ListFilterBar.screen.spec.tsx +1 -1
  741. package/src/list/ListFilterBar.tsx +16 -6
  742. package/src/list/ListSidebar.tsx +11 -2
  743. package/src/list/filter-chips.tsx +19 -4
  744. package/src/list/filter-editor.tsx +1 -10
  745. package/src/list/filter-saved.tsx +0 -1
  746. package/src/list/filter-sort.tsx +0 -1
  747. package/src/list/filter-standard.tsx +1 -3
  748. package/src/list/list-tools-sheet.tsx +32 -13
  749. package/src/navigation/paths.spec.ts +19 -0
  750. package/src/navigation/paths.ts +8 -0
  751. package/src/report/DoctypeReportView.screen.spec.tsx +12 -0
  752. package/src/report/QueryReportScreen.tsx +1 -1
  753. package/src/report/queryReportFilterBar.tsx +0 -5
  754. package/src/shared/sessionUser.spec.tsx +119 -0
  755. package/src/shared/sessionUser.ts +80 -0
  756. package/src/shared/useSessionUserId.ts +2 -40
  757. package/src/shell/BackofficeShell.spec.tsx +115 -3
  758. package/src/shell/BackofficeShell.tsx +186 -116
  759. package/src/shell/HomeRedirect.spec.tsx +89 -0
  760. package/src/shell/HomeRedirect.tsx +31 -20
  761. package/src/shell/WorkspaceSidebar.spec.tsx +15 -0
  762. package/src/shell/WorkspaceSidebar.tsx +58 -29
  763. package/src/shell/shellSidebarSlot.spec.tsx +178 -0
  764. package/src/shell/shellSidebarSlot.tsx +7 -0
  765. package/src/shell/useWorkspaces.spec.tsx +45 -0
  766. package/src/shell/useWorkspaces.ts +27 -62
  767. package/src/views/DashboardView.tsx +2 -2
  768. package/src/views/ImageView.tsx +19 -3
  769. package/src/views/ViewHeader.tsx +13 -14
  770. package/src/views/ViewSwitcherMenu.spec.tsx +3 -0
  771. package/src/views/ViewSwitcherMenu.tsx +11 -10
  772. package/src/views/viewAvailability.spec.ts +45 -12
  773. package/src/views/viewAvailability.ts +27 -24
  774. package/src/views/viewMeta.ts +30 -0
  775. package/src/workspace/WorkspaceChartBlock.tsx +1 -1
  776. package/src/workspace/WorkspaceLinkDirectory.tsx +2 -2
  777. package/src/workspace/WorkspaceRecents.tsx +9 -2
  778. package/src/workspace/WorkspaceShortcut.tsx +12 -2
  779. package/types/chrome/BackofficeAwesomebar.d.ts.map +1 -1
  780. package/types/chrome/CommandPalette.d.ts +7 -1
  781. package/types/chrome/CommandPalette.d.ts.map +1 -1
  782. package/types/chrome/NotificationsButton.d.ts.map +1 -1
  783. package/types/chrome/UserMenu.d.ts.map +1 -1
  784. package/types/chrome/awesomebar-data.d.ts +4 -3
  785. package/types/chrome/awesomebar-data.d.ts.map +1 -1
  786. package/types/chrome/command-palette-model.d.ts +1 -0
  787. package/types/chrome/command-palette-model.d.ts.map +1 -1
  788. package/types/chrome/notifications-data.d.ts.map +1 -1
  789. package/types/chrome/notifications-panel.d.ts.map +1 -1
  790. package/types/chrome/user-session.d.ts.map +1 -1
  791. package/types/config/BackofficeProvider.d.ts +7 -1
  792. package/types/config/BackofficeProvider.d.ts.map +1 -1
  793. package/types/config/capabilities.d.ts +3 -0
  794. package/types/config/capabilities.d.ts.map +1 -1
  795. package/types/desk/Desk.d.ts +2 -1
  796. package/types/desk/Desk.d.ts.map +1 -1
  797. package/types/desk/DeskSurface.d.ts.map +1 -1
  798. package/types/desk/resolveDeskPath.d.ts +4 -1
  799. package/types/desk/resolveDeskPath.d.ts.map +1 -1
  800. package/types/desk/target.d.ts +3 -0
  801. package/types/desk/target.d.ts.map +1 -1
  802. package/types/form/DocFormScreen.d.ts +1 -1
  803. package/types/form/DocFormScreen.d.ts.map +1 -1
  804. package/types/form/FormTimeline.d.ts.map +1 -1
  805. package/types/form/FormToolbar.d.ts +5 -32
  806. package/types/form/FormToolbar.d.ts.map +1 -1
  807. package/types/formBuilder/DoctypePicker.d.ts +2 -0
  808. package/types/formBuilder/DoctypePicker.d.ts.map +1 -0
  809. package/types/formBuilder/FieldPalette.d.ts +6 -0
  810. package/types/formBuilder/FieldPalette.d.ts.map +1 -0
  811. package/types/formBuilder/FieldPropertiesPanel.d.ts +10 -0
  812. package/types/formBuilder/FieldPropertiesPanel.d.ts.map +1 -0
  813. package/types/formBuilder/FormBuilderCanvas.d.ts +17 -0
  814. package/types/formBuilder/FormBuilderCanvas.d.ts.map +1 -0
  815. package/types/formBuilder/FormBuilderScreen.d.ts +7 -0
  816. package/types/formBuilder/FormBuilderScreen.d.ts.map +1 -0
  817. package/types/formBuilder/api.d.ts +32 -0
  818. package/types/formBuilder/api.d.ts.map +1 -0
  819. package/types/formBuilder/fieldtypes.d.ts +21 -0
  820. package/types/formBuilder/fieldtypes.d.ts.map +1 -0
  821. package/types/formBuilder/index.d.ts +5 -0
  822. package/types/formBuilder/index.d.ts.map +1 -0
  823. package/types/formBuilder/model.d.ts +76 -0
  824. package/types/formBuilder/model.d.ts.map +1 -0
  825. package/types/formBuilder/useFormBuilderDrag.d.ts +44 -0
  826. package/types/formBuilder/useFormBuilderDrag.d.ts.map +1 -0
  827. package/types/i18n/en.d.ts +293 -3
  828. package/types/i18n/en.d.ts.map +1 -1
  829. package/types/index.d.ts +4 -3
  830. package/types/index.d.ts.map +1 -1
  831. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  832. package/types/list/ListFilterBar.d.ts +10 -4
  833. package/types/list/ListFilterBar.d.ts.map +1 -1
  834. package/types/list/ListSidebar.d.ts +7 -1
  835. package/types/list/ListSidebar.d.ts.map +1 -1
  836. package/types/list/filter-chips.d.ts +9 -1
  837. package/types/list/filter-chips.d.ts.map +1 -1
  838. package/types/list/filter-saved.d.ts.map +1 -1
  839. package/types/list/filter-sort.d.ts.map +1 -1
  840. package/types/list/list-tools-sheet.d.ts +9 -1
  841. package/types/list/list-tools-sheet.d.ts.map +1 -1
  842. package/types/navigation/paths.d.ts +3 -0
  843. package/types/navigation/paths.d.ts.map +1 -1
  844. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  845. package/types/shared/sessionUser.d.ts +10 -0
  846. package/types/shared/sessionUser.d.ts.map +1 -0
  847. package/types/shared/useSessionUserId.d.ts +0 -4
  848. package/types/shared/useSessionUserId.d.ts.map +1 -1
  849. package/types/shell/BackofficeShell.d.ts +6 -1
  850. package/types/shell/BackofficeShell.d.ts.map +1 -1
  851. package/types/shell/HomeRedirect.d.ts +3 -1
  852. package/types/shell/HomeRedirect.d.ts.map +1 -1
  853. package/types/shell/WorkspaceSidebar.d.ts.map +1 -1
  854. package/types/shell/shellSidebarSlot.d.ts +2 -0
  855. package/types/shell/shellSidebarSlot.d.ts.map +1 -0
  856. package/types/shell/useWorkspaces.d.ts +4 -5
  857. package/types/shell/useWorkspaces.d.ts.map +1 -1
  858. package/types/views/ImageView.d.ts.map +1 -1
  859. package/types/views/ViewHeader.d.ts +1 -10
  860. package/types/views/ViewHeader.d.ts.map +1 -1
  861. package/types/views/ViewSwitcherMenu.d.ts.map +1 -1
  862. package/types/views/viewAvailability.d.ts +12 -15
  863. package/types/views/viewAvailability.d.ts.map +1 -1
  864. package/types/views/viewMeta.d.ts +10 -0
  865. package/types/views/viewMeta.d.ts.map +1 -1
  866. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  867. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
@@ -0,0 +1,401 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { keyboardLift, keyboardMove, resolveDrop } from "@multiplatform.one/components";
3
+ import pokemon from "../../../../apps/frappe/apps/core/core/app/doctype/pokemon/pokemon.json";
4
+ import {
5
+ addColumn,
6
+ addSection,
7
+ addTab,
8
+ canDeleteField,
9
+ fieldLocation,
10
+ fieldsFromLayout,
11
+ findField,
12
+ insertField,
13
+ layoutFromFields,
14
+ moveField,
15
+ moveFieldBy,
16
+ moveFieldToSection,
17
+ newFieldFromType,
18
+ removeColumn,
19
+ removeField,
20
+ removeSection,
21
+ removeTab,
22
+ scrub,
23
+ tabBoard,
24
+ updateBreak,
25
+ updateField,
26
+ validateLayout,
27
+ } from "./model";
28
+ import { fieldtypeCatalog, holdsValue, isBreakType, needsOptions, optionsHint } from "./fieldtypes";
29
+
30
+ const seed = () => layoutFromFields(pokemon.fields);
31
+ const names = (layout: ReturnType<typeof seed>) =>
32
+ fieldsFromLayout(layout).map((df) => df.fieldname);
33
+ const keyOf = (layout: ReturnType<typeof seed>, name: string) =>
34
+ layout.tabs
35
+ .flatMap((t) => t.sections.flatMap((s) => s.columns.flatMap((c) => c.fields)))
36
+ .find((f) => f.df.fieldname === name)!.key;
37
+
38
+ function freeze<T>(value: T): T {
39
+ if (value && typeof value === "object") {
40
+ Object.freeze(value);
41
+ for (const child of Object.values(value)) freeze(child);
42
+ }
43
+ return value;
44
+ }
45
+
46
+ describe("DocType layout", () => {
47
+ it.each(["Tab Break", "Section Break", "Column Break"])(
48
+ "converts a field to %s without losing its following fields",
49
+ (fieldtype) => {
50
+ const layout = seed();
51
+ const key = keyOf(layout, "height");
52
+ const result = updateField(freeze(layout), key, { fieldtype, label: "Measurements" });
53
+ expect(findField(result, key)).toBeUndefined();
54
+ expect(names(result)).toEqual(pokemon.field_order);
55
+ expect(fieldsFromLayout(result).find((df) => df.fieldname === "height")).toMatchObject({
56
+ fieldtype,
57
+ label: "Measurements",
58
+ idx: 4,
59
+ });
60
+ const nodes = result.tabs.flatMap((tab) => [
61
+ tab,
62
+ ...tab.sections.flatMap((section) => [section, ...section.columns]),
63
+ ]);
64
+ expect(nodes.find((node) => node.key === key)?.df?.fieldtype).toBe(fieldtype);
65
+ expect(fieldsFromLayout(layoutFromFields(fieldsFromLayout(result)))).toEqual(
66
+ fieldsFromLayout(result),
67
+ );
68
+ },
69
+ );
70
+
71
+ it("lays Pokemon out in an implicit Details tab and round trips every property", () => {
72
+ const layout = seed();
73
+ expect(layout.tabs).toHaveLength(1);
74
+ expect(layout.tabs[0].df).toBeUndefined();
75
+ const [main, stats] = layout.tabs[0].sections;
76
+ expect(main.df).toBeUndefined();
77
+ expect(main.columns.map((c) => c.fields.map((f) => f.df.fieldname))).toEqual([
78
+ pokemon.field_order.slice(0, 6),
79
+ ["sprite_front", "sprite_back"],
80
+ ]);
81
+ expect(stats.df?.label).toBe("Stats");
82
+ expect(stats.columns[0].fields[0].df.fieldname).toBe("stats");
83
+ expect(fieldsFromLayout(layout)).toEqual(
84
+ pokemon.fields.map((df, i) => ({ ...df, idx: i + 1 })),
85
+ );
86
+ expect(fieldsFromLayout(layoutFromFields([...fieldsFromLayout(layout)].reverse()))).toEqual(
87
+ fieldsFromLayout(layout),
88
+ );
89
+ });
90
+
91
+ it("moves sprite_back into the first column without mutating the input", () => {
92
+ const layout = freeze(seed());
93
+ const result = moveField(layout, keyOf(layout, "sprite_back"), {
94
+ columnId: layout.tabs[0].sections[0].columns[0].key,
95
+ index: 1,
96
+ });
97
+ const order = [
98
+ "pokemon_name",
99
+ "sprite_back",
100
+ "poke_id",
101
+ "species",
102
+ "height",
103
+ "weight",
104
+ "base_experience",
105
+ "column_break_1",
106
+ "sprite_front",
107
+ "section_break_stats",
108
+ "stats",
109
+ ];
110
+ expect(fieldsFromLayout(result)).toEqual(
111
+ order.map((name, i) => ({ ...pokemon.fields.find((f) => f.fieldname === name), idx: i + 1 })),
112
+ );
113
+ });
114
+
115
+ it("accepts without-dragged coordinates for a reorder in the same column", () => {
116
+ const layout = seed();
117
+ const col = layout.tabs[0].sections[0].columns[0];
118
+ const result = moveField(layout, col.fields[0].key, { columnId: col.key, index: 2 });
119
+ expect(names(result).slice(0, 3)).toEqual(["poke_id", "species", "pokemon_name"]);
120
+ expect(moveField(layout, col.fields[0].key, { columnId: "missing", index: 0 })).toBe(layout);
121
+ });
122
+
123
+ it("moves across sections and through the shared keyboard machine", () => {
124
+ const layout = seed();
125
+ const key = keyOf(layout, "sprite_back");
126
+ const board = tabBoard(layout, layout.tabs[0].key, (_column, index) => `Column ${index + 1}`);
127
+ expect(board.map((c) => [c.title, c.count])).toEqual([
128
+ ["Column 1", 6],
129
+ ["Column 2", 2],
130
+ ["Column 3", 1],
131
+ ]);
132
+ const drag = keyboardLift(board, board[1].id, 1)!;
133
+ const drop = resolveDrop(keyboardMove(drag, board, "right"));
134
+ expect(drop.commit).toBe(true);
135
+ const result = moveField(layout, key, drop.to);
136
+ expect(names(result).slice(-3)).toEqual(["section_break_stats", "stats", "sprite_back"]);
137
+ expect(moveFieldToSection(layout, key, layout.tabs[0].sections[1].key)).toEqual(result);
138
+ expect(fieldLocation(result, key)).toEqual({
139
+ tabKey: layout.tabs[0].key,
140
+ sectionKey: layout.tabs[0].sections[1].key,
141
+ columnKey: board[2].id,
142
+ index: 1,
143
+ });
144
+ });
145
+
146
+ it("derives a unique fieldname until a user edits it by hand", () => {
147
+ const layout = freeze(seed());
148
+ const { layout: inserted, key } = insertField(layout, newFieldFromType(layout, "Data"), {
149
+ columnId: layout.tabs[0].sections[0].columns[0].key,
150
+ index: 1,
151
+ });
152
+ const edited = updateField(inserted, key, { label: "Nickname", reqd: 1 });
153
+ expect(findField(edited, key)).toMatchObject({
154
+ key,
155
+ isNew: true,
156
+ df: { fieldname: "nickname", reqd: 1 },
157
+ });
158
+ expect(fieldsFromLayout(edited)[1]).toEqual({
159
+ fieldname: "nickname",
160
+ fieldtype: "Data",
161
+ label: "Nickname",
162
+ reqd: 1,
163
+ idx: 2,
164
+ });
165
+ expect(findField(updateField(edited, key, { label: "Species" }), key)?.df.fieldname).toBe(
166
+ "species_1",
167
+ );
168
+ const manual = updateField(edited, key, { fieldname: "alias" });
169
+ expect(findField(updateField(manual, key, { label: "Changed" }), key)?.df.fieldname).toBe(
170
+ "alias",
171
+ );
172
+ expect(names(removeField(edited, key))).toEqual(pokemon.field_order);
173
+ expect(
174
+ findField(
175
+ updateField(layout, keyOf(layout, "species"), { label: "Changed" }),
176
+ keyOf(layout, "species"),
177
+ )?.df.fieldname,
178
+ ).toBe("species");
179
+ });
180
+
181
+ it("synthesizes noncolliding breaks and drops empty sections and later tabs", () => {
182
+ const layout = seed();
183
+ const added = addColumn(layout, layout.tabs[0].sections[0].key);
184
+ expect(names(added)).toContain("column_break_2");
185
+ const section = addSection(added, added.tabs[0].key);
186
+ expect(fieldsFromLayout(section)).toEqual(fieldsFromLayout(added));
187
+ expect(fieldsFromLayout(addTab(section))).toEqual(fieldsFromLayout(added));
188
+ const materialized = updateBreak(added, added.tabs[0].sections[0].columns[2].key, {
189
+ label: "More",
190
+ });
191
+ expect(
192
+ fieldsFromLayout(materialized).find((df) => df.fieldname === "column_break_2")?.label,
193
+ ).toBe("More");
194
+ });
195
+
196
+ it.each(["Tab Break", "Section Break", "Column Break"])(
197
+ "inserts palette %s as structure",
198
+ (fieldtype) => {
199
+ const layout = seed();
200
+ const result = insertField(layout, newFieldFromType(layout, fieldtype), {
201
+ columnId: layout.tabs[0].sections[0].columns[0].key,
202
+ index: 0,
203
+ });
204
+ expect(findField(result.layout, result.key)).toBeUndefined();
205
+ const nodes = result.layout.tabs.flatMap((t) => [
206
+ t,
207
+ ...t.sections.flatMap((s) => [s, ...s.columns]),
208
+ ]);
209
+ expect(nodes.find((n) => n.key === result.key)?.df?.fieldtype).toBe(fieldtype);
210
+ },
211
+ );
212
+
213
+ it("keeps an empty first column as Frappe's builder does", () => {
214
+ const base = layoutFromFields([{ fieldname: "a", fieldtype: "Data" }]);
215
+ const layout = addColumn(base, base.tabs[0].sections[0].key);
216
+ const [first, second] = layout.tabs[0].sections[0].columns;
217
+ const moved = moveField(layout, first.fields[0].key, { columnId: second.key, index: 0 });
218
+ expect(fieldsFromLayout(moved).map((df) => [df.fieldtype, df.idx])).toEqual([
219
+ ["Column Break", 1],
220
+ ["Column Break", 2],
221
+ ["Data", 3],
222
+ ]);
223
+ const reloaded = layoutFromFields(fieldsFromLayout(moved));
224
+ expect(reloaded.tabs[0].sections[0].columns.map((column) => column.fields.length)).toEqual([
225
+ 0, 1,
226
+ ]);
227
+ });
228
+
229
+ it("relocates fields when removing a column or a section", () => {
230
+ const layout = freeze(seed());
231
+ const [main, stats] = layout.tabs[0].sections;
232
+ expect(names(removeColumn(layout, main.columns[1].key))).toEqual(
233
+ pokemon.field_order.filter((n) => n !== "column_break_1"),
234
+ );
235
+ const firstRemoved = removeColumn(layout, main.columns[0].key);
236
+ expect(firstRemoved.tabs[0].sections[0].columns[0].fields.map((f) => f.df.fieldname)).toEqual([
237
+ ...pokemon.field_order.slice(0, 6),
238
+ "sprite_front",
239
+ "sprite_back",
240
+ ]);
241
+ expect(names(removeSection(layout, stats.key))).toEqual(
242
+ pokemon.field_order.filter((n) => n !== "section_break_stats"),
243
+ );
244
+ expect(
245
+ removeSection(layout, main.key).tabs[0].sections[0].columns[0].fields.map(
246
+ (f) => f.df.fieldname,
247
+ ),
248
+ ).toEqual([
249
+ ...pokemon.field_order.filter((n) => !n.includes("break") && n !== "stats"),
250
+ "stats",
251
+ ]);
252
+ expect(removeColumn(layout, stats.columns[0].key)).toBe(layout);
253
+ const only = layoutFromFields([{ fieldname: "a", fieldtype: "Data" }]);
254
+ expect(removeSection(only, only.tabs[0].sections[0].key)).toBe(only);
255
+ expect(removeTab(only, only.tabs[0].key)).toBe(only);
256
+ });
257
+
258
+ it("merges removed tabs into their neighbour and removes a sole section across tabs", () => {
259
+ const layout = addTab(seed());
260
+ const moved = moveFieldToSection(
261
+ layout,
262
+ keyOf(layout, "stats"),
263
+ layout.tabs[1].sections[0].key,
264
+ );
265
+ const back = removeTab(freeze(moved), moved.tabs[1].key);
266
+ expect(back.tabs).toHaveLength(1);
267
+ expect(back.tabs[0].sections).toHaveLength(3);
268
+ expect(names(back).at(-1)).toBe("stats");
269
+ const forward = removeTab(moved, moved.tabs[0].key);
270
+ expect(forward.tabs[0].sections[0].columns[0].fields[0].df.fieldname).toBe("pokemon_name");
271
+ expect(names(removeSection(moved, moved.tabs[1].sections[0].key))).toEqual(pokemon.field_order);
272
+ });
273
+
274
+ it("steps across column edges but never across tabs", () => {
275
+ const layout = seed();
276
+ const key = keyOf(layout, "base_experience");
277
+ const result = moveFieldBy(layout, key, 1);
278
+ expect(result.tabs[0].sections[0].columns[1].fields[0].key).toBe(key);
279
+ expect(moveFieldBy(result, key, -1)).toEqual(layout);
280
+ expect(moveFieldBy(layout, keyOf(layout, "pokemon_name"), -1)).toBe(layout);
281
+ expect(moveFieldBy(addTab(layout), keyOf(layout, "stats"), 1).tabs[0]).toEqual(layout.tabs[0]);
282
+ });
283
+
284
+ it("recognizes a leading Tab Break after sorting by idx", () => {
285
+ const layout = layoutFromFields([
286
+ { fieldname: "a", fieldtype: "Data", idx: 2 },
287
+ { fieldname: "tab", fieldtype: "Tab Break", idx: 1 },
288
+ ]);
289
+ expect(layout.tabs).toHaveLength(1);
290
+ expect(layout.tabs[0].df?.fieldname).toBe("tab");
291
+ });
292
+
293
+ it("keeps fields before an explicit tab when input rows arrive out of order", () => {
294
+ const layout = layoutFromFields([
295
+ { fieldname: "tab", fieldtype: "Tab Break", idx: 2 },
296
+ { fieldname: "a", fieldtype: "Data", idx: 1 },
297
+ { fieldname: "b", fieldtype: "Data", idx: 3 },
298
+ ]);
299
+ expect(layout.tabs).toHaveLength(2);
300
+ expect(names(layout)).toEqual(["a", "tab", "b"]);
301
+ });
302
+
303
+ it("does not treat a transient Customize Form standard row as a custom field", () => {
304
+ const layout = layoutFromFields([{ fieldname: "standard", fieldtype: "Data", __islocal: 1 }]);
305
+ expect(canDeleteField(layout.tabs[0].sections[0].columns[0].fields[0], "customize")).toBe(
306
+ false,
307
+ );
308
+ });
309
+
310
+ it("preserves leading explicit breaks", () => {
311
+ const fields = [
312
+ { fieldname: "intro", fieldtype: "Tab Break", label: "Intro" },
313
+ { fieldname: "section", fieldtype: "Section Break" },
314
+ { fieldname: "column", fieldtype: "Column Break" },
315
+ { fieldname: "a", fieldtype: "Data" },
316
+ ];
317
+ const layout = layoutFromFields(fields);
318
+ expect(layout.tabs).toHaveLength(1);
319
+ expect(layout.tabs[0].df).toEqual(fields[0]);
320
+ expect(fieldsFromLayout(layout)).toEqual(fields.map((df, i) => ({ ...df, idx: i + 1 })));
321
+ expect(fieldsFromLayout(layoutFromFields([]))).toEqual([]);
322
+ });
323
+
324
+ it("validates duplicate names, fieldname syntax, labels and required options", () => {
325
+ const layout = layoutFromFields([
326
+ { fieldname: "same", fieldtype: "Data" },
327
+ { fieldname: "same", fieldtype: "Data" },
328
+ { fieldname: "1Bad", fieldtype: "Data" },
329
+ { fieldname: "", fieldtype: "Data" },
330
+ { fieldname: "choice", fieldtype: "Select", options: " \n " },
331
+ { fieldname: "link", fieldtype: "Link" },
332
+ { fieldname: "ok", fieldtype: "Select", options: "\nYes\nNo" },
333
+ ]);
334
+ const errors = validateLayout(layout);
335
+ expect(Object.keys(errors)).toHaveLength(6);
336
+ expect(
337
+ Object.values(errors)
338
+ .flat()
339
+ .map((e) => e.key),
340
+ ).toEqual(
341
+ expect.arrayContaining([
342
+ "formBuilder.validation.duplicateFieldname",
343
+ "formBuilder.validation.invalidFieldname",
344
+ "formBuilder.validation.fieldnameRequired",
345
+ "formBuilder.validation.optionsRequired",
346
+ "formBuilder.validation.labelRequired",
347
+ ]),
348
+ );
349
+ expect(
350
+ Object.values(errors)
351
+ .flat()
352
+ .every((e) => e.default.length > 0),
353
+ ).toBe(true);
354
+ expect(validateLayout(seed())).toEqual({});
355
+ });
356
+
357
+ it("only permits custom or new field deletion in Customize Form", () => {
358
+ const layout = seed();
359
+ const field = findField(layout, keyOf(layout, "species"))!;
360
+ expect(canDeleteField(field, "customize")).toBe(false);
361
+ expect(canDeleteField(field, "doctype")).toBe(true);
362
+ expect(canDeleteField({ ...field, df: { ...field.df, is_custom_field: 1 } }, "customize")).toBe(
363
+ true,
364
+ );
365
+ expect(canDeleteField(newFieldFromType(layout, "Data"), "customize")).toBe(true);
366
+ expect(scrub("My-Field Name! É")).toBe("my_field_name_");
367
+ });
368
+ });
369
+
370
+ describe("fieldtype palette", () => {
371
+ it("covers the v15 DocField types with stable translation defaults", () => {
372
+ const expected =
373
+ "Autocomplete,Attach,Attach Image,Attachment Gallery,Barcode,Button,Check,Code,Color,Column Break,Currency,Data,Date,Datetime,Duration,Dynamic Link,Float,Fold,Geolocation,Heading,HTML,HTML Editor,Icon,Image,Int,JSON,Link,Long Text,Markdown Editor,Password,Percent,Phone,Read Only,Rating,Section Break,Select,Signature,Small Text,Tab Break,Table,Table MultiSelect,Text,Text Editor,Time".split(
374
+ ",",
375
+ );
376
+ expect(fieldtypeCatalog.map((entry) => entry.fieldtype).sort()).toEqual(expected.sort());
377
+ expect(new Set(fieldtypeCatalog.map((e) => e.labelKey)).size).toBe(expected.length);
378
+ expect(fieldtypeCatalog.every((e) => e.label && e.description && e.descriptionKey)).toBe(true);
379
+ expect(needsOptions("Dynamic Link")).toBe(true);
380
+ expect(needsOptions("Table MultiSelect")).toBe(true);
381
+ expect(optionsHint("Select")?.default).toContain("line");
382
+ expect(optionsHint("Data")?.default).toContain("Optional");
383
+ for (const type of ["Data", "Code", "HTML", "Image", "Currency", "Read Only", "Autocomplete"]) {
384
+ expect(optionsHint(type)).toBeDefined();
385
+ expect(needsOptions(type)).toBe(false);
386
+ }
387
+ for (const type of [
388
+ "Tab Break",
389
+ "Section Break",
390
+ "Column Break",
391
+ "HTML",
392
+ "Heading",
393
+ "Button",
394
+ "Image",
395
+ "Fold",
396
+ ])
397
+ expect(holdsValue(type)).toBe(false);
398
+ expect(holdsValue("Data")).toBe(true);
399
+ expect(isBreakType("Tab Break")).toBe(true);
400
+ });
401
+ });