@multiplatform.one/backoffice 7.21.0 → 7.23.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 (521) hide show
  1. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +1 -1
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  3. package/dist/cjs/chrome/CommandPalette.native.js +1 -1
  4. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  5. package/dist/cjs/chrome/HelpMenu.native.js +1 -1
  6. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -1
  7. package/dist/cjs/chrome/NotificationsButton.native.js +1 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  9. package/dist/cjs/chrome/UserMenu.native.js +1 -1
  10. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  11. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  12. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  13. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  14. package/dist/cjs/chrome/help-about-dialog.native.js +1 -1
  15. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  16. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +1 -1
  17. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  18. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  19. package/dist/cjs/chrome/notifications-panel.native.js +1 -1
  20. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  21. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  22. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  23. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  24. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  25. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  26. package/dist/cjs/config/capabilities.native.js.map +1 -1
  27. package/dist/cjs/config/events.native.js.map +1 -1
  28. package/dist/cjs/config/slots.native.js.map +1 -1
  29. package/dist/cjs/desk/Desk.native.js.map +1 -1
  30. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  31. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  32. package/dist/cjs/desk/scope.native.js.map +1 -1
  33. package/dist/cjs/desk/target.native.js.map +1 -1
  34. package/dist/cjs/form/DocFormScreen.native.js +1 -1
  35. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  36. package/dist/cjs/form/FormConnections.native.js +1 -1
  37. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  38. package/dist/cjs/form/FormDialogs.native.js +1 -1
  39. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  40. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  41. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  42. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  43. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  44. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  45. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  46. package/dist/cjs/form/FormTimeline.native.js +1 -1
  47. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  48. package/dist/cjs/form/FormToolbar.native.js +1 -1
  49. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  50. package/dist/cjs/form/connections-data.native.js.map +1 -1
  51. package/dist/cjs/form/createPrefill.native.js.map +1 -1
  52. package/dist/cjs/form/dependsOn.native.js.map +1 -1
  53. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  54. package/dist/cjs/form/docinfo.native.js.map +1 -1
  55. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  56. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  57. package/dist/cjs/form/formActions.native.js.map +1 -1
  58. package/dist/cjs/form/formLayout.native.js.map +1 -1
  59. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  60. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  61. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  62. package/dist/cjs/form/sidebar-dialogs.native.js +1 -1
  63. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  64. package/dist/cjs/form/sidebar-people.native.js +1 -1
  65. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  66. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  67. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  68. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  69. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  70. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  71. package/dist/cjs/i18n/en.native.js.map +1 -1
  72. package/dist/cjs/i18n/index.native.js.map +1 -1
  73. package/dist/cjs/index.native.js +1 -1
  74. package/dist/cjs/index.native.js.map +1 -1
  75. package/dist/cjs/list/AddTagsDialog.native.js +1 -1
  76. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  77. package/dist/cjs/list/AssignToDialog.native.js +1 -1
  78. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  79. package/dist/cjs/list/DoctypeListScreen.cjs +3 -20
  80. package/dist/cjs/list/DoctypeListScreen.native.js +5 -20
  81. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  82. package/dist/cjs/list/ListBulkActionsBar.native.js +1 -1
  83. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  84. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  85. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  86. package/dist/cjs/list/ListSidebar.native.js +1 -1
  87. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  88. package/dist/cjs/list/bulk-edit-dialog.native.js +1 -1
  89. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  90. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  91. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  92. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  93. package/dist/cjs/list/filter-chips.cjs +3 -3
  94. package/dist/cjs/list/filter-chips.native.js +4 -4
  95. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  96. package/dist/cjs/list/filter-editor.cjs +10 -11
  97. package/dist/cjs/list/filter-editor.native.js +11 -12
  98. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  99. package/dist/cjs/list/filter-fields.cjs +15 -267
  100. package/dist/cjs/list/filter-fields.native.js +15 -337
  101. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  102. package/dist/cjs/list/filter-saved.native.js +1 -1
  103. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  104. package/dist/cjs/list/filter-sort.native.js +1 -1
  105. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  106. package/dist/cjs/list/filter-standard.cjs +5 -6
  107. package/dist/cjs/list/filter-standard.native.js +5 -6
  108. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  109. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  110. package/dist/cjs/list/list-tools-sheet.cjs +2 -2
  111. package/dist/cjs/list/list-tools-sheet.native.js +3 -3
  112. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  113. package/dist/cjs/list/listColumns.cjs +2 -371
  114. package/dist/cjs/list/listColumns.native.js +2 -418
  115. package/dist/cjs/list/listColumns.native.js.map +1 -1
  116. package/dist/cjs/list/listFields.cjs +4 -24
  117. package/dist/cjs/list/listFields.native.js +4 -50
  118. package/dist/cjs/list/listFields.native.js.map +1 -1
  119. package/dist/cjs/list/listFormat.cjs +7 -42
  120. package/dist/cjs/list/listFormat.native.js +7 -45
  121. package/dist/cjs/list/listFormat.native.js.map +1 -1
  122. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  123. package/dist/cjs/list/sidebar-section.native.js +1 -1
  124. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  125. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  126. package/dist/cjs/list/statusColors.cjs +2 -76
  127. package/dist/cjs/list/statusColors.native.js +2 -80
  128. package/dist/cjs/list/statusColors.native.js.map +1 -1
  129. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  130. package/dist/cjs/navigation/paths.native.js.map +1 -1
  131. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  132. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +1 -1
  133. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  134. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  135. package/dist/cjs/report/DoctypeReportView.native.js +1 -1
  136. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  137. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  138. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  139. package/dist/cjs/report/queryReportColumns.cjs +2 -2
  140. package/dist/cjs/report/queryReportColumns.native.js +2 -2
  141. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  142. package/dist/cjs/report/queryReportFilterBar.cjs +5 -6
  143. package/dist/cjs/report/queryReportFilterBar.native.js +6 -7
  144. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  145. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  146. package/dist/cjs/report/report-grid.cjs +2 -2
  147. package/dist/cjs/report/report-grid.native.js +3 -3
  148. package/dist/cjs/report/report-grid.native.js.map +1 -1
  149. package/dist/cjs/report/report-toolbar.cjs +2 -2
  150. package/dist/cjs/report/report-toolbar.native.js +3 -3
  151. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  152. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  153. package/dist/cjs/report/reportViewModel.cjs +3 -3
  154. package/dist/cjs/report/reportViewModel.native.js +3 -3
  155. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  156. package/dist/cjs/report/savedReports.native.js.map +1 -1
  157. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  158. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  159. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  160. package/dist/cjs/shared/types.native.js.map +1 -1
  161. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  162. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  163. package/dist/cjs/shared/useFrappeApp.cjs +7 -3
  164. package/dist/cjs/shared/useFrappeApp.native.js +8 -4
  165. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  166. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  167. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  168. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  169. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  170. package/dist/cjs/shell/BackofficeShell.native.js +1 -1
  171. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  172. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  173. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  174. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  175. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  176. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  177. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  178. package/dist/cjs/shell/WorkspaceSidebar.native.js +1 -1
  179. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  180. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  181. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  182. package/dist/cjs/views/CalendarView.native.js +1 -1
  183. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  184. package/dist/cjs/views/DashboardView.native.js +1 -1
  185. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  186. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  187. package/dist/cjs/views/ImageView.native.js +1 -1
  188. package/dist/cjs/views/ImageView.native.js.map +1 -1
  189. package/dist/cjs/views/KanbanView.native.js +1 -1
  190. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  191. package/dist/cjs/views/ReportView.native.js +1 -1
  192. package/dist/cjs/views/ReportView.native.js.map +1 -1
  193. package/dist/cjs/views/TreeView.native.js +1 -1
  194. package/dist/cjs/views/TreeView.native.js.map +1 -1
  195. package/dist/cjs/views/ViewHeader.native.js +1 -1
  196. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  197. package/dist/cjs/views/ViewStates.native.js +1 -1
  198. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  199. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  200. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  201. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  202. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  203. package/dist/cjs/views/connection.native.js.map +1 -1
  204. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  205. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  206. package/dist/cjs/views/kanban-board-controls.native.js +1 -1
  207. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  208. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  209. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  210. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  211. package/dist/cjs/views/report-controls.native.js +1 -1
  212. package/dist/cjs/views/report-controls.native.js.map +1 -1
  213. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  214. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  215. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  216. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  217. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  218. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +1 -1
  219. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  220. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +1 -1
  221. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  222. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +1 -1
  223. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  224. package/dist/cjs/workspace/WorkspaceQuickList.native.js +1 -1
  225. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  226. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  227. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  228. package/dist/cjs/workspace/WorkspaceScreen.native.js +1 -1
  229. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  230. package/dist/cjs/workspace/WorkspaceShortcut.native.js +1 -1
  231. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  232. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  233. package/dist/cjs/workspace/types.native.js.map +1 -1
  234. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  235. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  236. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  237. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  238. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  239. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  240. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  241. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  242. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  243. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  244. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  245. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  246. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  247. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  248. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  249. package/dist/esm/chrome/user-session.native.js.map +1 -1
  250. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  251. package/dist/esm/config/capabilities.native.js.map +1 -1
  252. package/dist/esm/config/events.native.js.map +1 -1
  253. package/dist/esm/config/slots.native.js.map +1 -1
  254. package/dist/esm/desk/Desk.native.js.map +1 -1
  255. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  256. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  257. package/dist/esm/desk/scope.native.js.map +1 -1
  258. package/dist/esm/desk/target.native.js.map +1 -1
  259. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  260. package/dist/esm/form/FormConnections.native.js.map +1 -1
  261. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  262. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  263. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  264. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  265. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  266. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  267. package/dist/esm/form/connections-data.native.js.map +1 -1
  268. package/dist/esm/form/createPrefill.native.js.map +1 -1
  269. package/dist/esm/form/dependsOn.native.js.map +1 -1
  270. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  271. package/dist/esm/form/docinfo.native.js.map +1 -1
  272. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  273. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  274. package/dist/esm/form/formActions.native.js.map +1 -1
  275. package/dist/esm/form/formLayout.native.js.map +1 -1
  276. package/dist/esm/form/platformHooks.native.js.map +1 -1
  277. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  278. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  279. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  280. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  281. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  282. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  283. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  284. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  285. package/dist/esm/i18n/en.native.js.map +1 -1
  286. package/dist/esm/i18n/index.native.js.map +1 -1
  287. package/dist/esm/index.native.js.map +1 -1
  288. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  289. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  290. package/dist/esm/list/DoctypeListScreen.mjs +2 -19
  291. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  292. package/dist/esm/list/DoctypeListScreen.native.js +3 -18
  293. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  294. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  295. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  296. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  297. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  298. package/dist/esm/list/bulk-export.native.js.map +1 -1
  299. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  300. package/dist/esm/list/bulkActions.native.js.map +1 -1
  301. package/dist/esm/list/filter-chips.mjs +1 -1
  302. package/dist/esm/list/filter-chips.native.js +1 -1
  303. package/dist/esm/list/filter-chips.native.js.map +1 -1
  304. package/dist/esm/list/filter-editor.mjs +1 -2
  305. package/dist/esm/list/filter-editor.mjs.map +1 -1
  306. package/dist/esm/list/filter-editor.native.js +1 -2
  307. package/dist/esm/list/filter-editor.native.js.map +1 -1
  308. package/dist/esm/list/filter-fields.mjs +1 -253
  309. package/dist/esm/list/filter-fields.mjs.map +1 -1
  310. package/dist/esm/list/filter-fields.native.js +1 -323
  311. package/dist/esm/list/filter-fields.native.js.map +1 -1
  312. package/dist/esm/list/filter-saved.native.js.map +1 -1
  313. package/dist/esm/list/filter-sort.native.js.map +1 -1
  314. package/dist/esm/list/filter-standard.mjs +1 -2
  315. package/dist/esm/list/filter-standard.mjs.map +1 -1
  316. package/dist/esm/list/filter-standard.native.js +1 -2
  317. package/dist/esm/list/filter-standard.native.js.map +1 -1
  318. package/dist/esm/list/filterConversion.native.js.map +1 -1
  319. package/dist/esm/list/list-tools-sheet.mjs +1 -1
  320. package/dist/esm/list/list-tools-sheet.native.js +1 -1
  321. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  322. package/dist/esm/list/listColumns.mjs +1 -370
  323. package/dist/esm/list/listColumns.mjs.map +1 -1
  324. package/dist/esm/list/listColumns.native.js +1 -417
  325. package/dist/esm/list/listColumns.native.js.map +1 -1
  326. package/dist/esm/list/listFields.mjs +1 -21
  327. package/dist/esm/list/listFields.mjs.map +1 -1
  328. package/dist/esm/list/listFields.native.js +1 -47
  329. package/dist/esm/list/listFields.native.js.map +1 -1
  330. package/dist/esm/list/listFormat.mjs +1 -36
  331. package/dist/esm/list/listFormat.mjs.map +1 -1
  332. package/dist/esm/list/listFormat.native.js +1 -39
  333. package/dist/esm/list/listFormat.native.js.map +1 -1
  334. package/dist/esm/list/listUrlState.native.js.map +1 -1
  335. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  336. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  337. package/dist/esm/list/statusColors.mjs +1 -75
  338. package/dist/esm/list/statusColors.mjs.map +1 -1
  339. package/dist/esm/list/statusColors.native.js +1 -79
  340. package/dist/esm/list/statusColors.native.js.map +1 -1
  341. package/dist/esm/navigation/navigator.native.js.map +1 -1
  342. package/dist/esm/navigation/paths.native.js.map +1 -1
  343. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  344. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  345. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  346. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  347. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  348. package/dist/esm/report/queryReportColumns.mjs +1 -1
  349. package/dist/esm/report/queryReportColumns.native.js +1 -1
  350. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  351. package/dist/esm/report/queryReportFilterBar.mjs +1 -2
  352. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  353. package/dist/esm/report/queryReportFilterBar.native.js +1 -2
  354. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  355. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  356. package/dist/esm/report/report-grid.mjs +1 -1
  357. package/dist/esm/report/report-grid.native.js +1 -1
  358. package/dist/esm/report/report-grid.native.js.map +1 -1
  359. package/dist/esm/report/report-toolbar.mjs +1 -1
  360. package/dist/esm/report/report-toolbar.native.js +1 -1
  361. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  362. package/dist/esm/report/reportShapes.native.js.map +1 -1
  363. package/dist/esm/report/reportViewModel.mjs +1 -1
  364. package/dist/esm/report/reportViewModel.mjs.map +1 -1
  365. package/dist/esm/report/reportViewModel.native.js +1 -1
  366. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  367. package/dist/esm/report/savedReports.native.js.map +1 -1
  368. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  369. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  370. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  371. package/dist/esm/shared/types.native.js.map +1 -1
  372. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  373. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  374. package/dist/esm/shared/useFrappeApp.mjs +7 -3
  375. package/dist/esm/shared/useFrappeApp.mjs.map +1 -1
  376. package/dist/esm/shared/useFrappeApp.native.js +8 -4
  377. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  378. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  379. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  380. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  381. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  382. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  383. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  384. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  385. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  386. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  387. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  388. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  389. package/dist/esm/views/CalendarView.native.js.map +1 -1
  390. package/dist/esm/views/DashboardView.native.js.map +1 -1
  391. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  392. package/dist/esm/views/ImageView.native.js.map +1 -1
  393. package/dist/esm/views/KanbanView.native.js.map +1 -1
  394. package/dist/esm/views/ReportView.native.js.map +1 -1
  395. package/dist/esm/views/TreeView.native.js.map +1 -1
  396. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  397. package/dist/esm/views/ViewStates.native.js.map +1 -1
  398. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  399. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  400. package/dist/esm/views/connection.native.js.map +1 -1
  401. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  402. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  403. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  404. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  405. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  406. package/dist/esm/views/report-controls.native.js.map +1 -1
  407. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  408. package/dist/esm/views/viewMeta.native.js.map +1 -1
  409. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  410. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  411. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  412. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  413. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  414. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  415. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  416. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  417. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  418. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  419. package/dist/esm/workspace/types.native.js.map +1 -1
  420. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  421. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  422. package/dist/jsx/list/DoctypeListScreen.mjs +2 -19
  423. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  424. package/dist/jsx/list/DoctypeListScreen.native.js +4 -19
  425. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  426. package/dist/jsx/list/filter-chips.mjs +1 -1
  427. package/dist/jsx/list/filter-chips.native.js +3 -3
  428. package/dist/jsx/list/filter-editor.mjs +1 -2
  429. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  430. package/dist/jsx/list/filter-editor.native.js +10 -11
  431. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  432. package/dist/jsx/list/filter-fields.mjs +1 -253
  433. package/dist/jsx/list/filter-fields.mjs.map +1 -1
  434. package/dist/jsx/list/filter-fields.native.js +15 -337
  435. package/dist/jsx/list/filter-fields.native.js.map +1 -1
  436. package/dist/jsx/list/filter-standard.mjs +1 -2
  437. package/dist/jsx/list/filter-standard.mjs.map +1 -1
  438. package/dist/jsx/list/filter-standard.native.js +5 -6
  439. package/dist/jsx/list/filter-standard.native.js.map +1 -1
  440. package/dist/jsx/list/list-tools-sheet.mjs +1 -1
  441. package/dist/jsx/list/list-tools-sheet.native.js +2 -2
  442. package/dist/jsx/list/list-tools-sheet.native.js.map +1 -1
  443. package/dist/jsx/list/listColumns.mjs +1 -370
  444. package/dist/jsx/list/listColumns.mjs.map +1 -1
  445. package/dist/jsx/list/listColumns.native.js +2 -418
  446. package/dist/jsx/list/listColumns.native.js.map +1 -1
  447. package/dist/jsx/list/listFields.mjs +1 -21
  448. package/dist/jsx/list/listFields.mjs.map +1 -1
  449. package/dist/jsx/list/listFields.native.js +4 -50
  450. package/dist/jsx/list/listFields.native.js.map +1 -1
  451. package/dist/jsx/list/listFormat.mjs +1 -36
  452. package/dist/jsx/list/listFormat.mjs.map +1 -1
  453. package/dist/jsx/list/listFormat.native.js +7 -45
  454. package/dist/jsx/list/listFormat.native.js.map +1 -1
  455. package/dist/jsx/list/statusColors.mjs +1 -75
  456. package/dist/jsx/list/statusColors.mjs.map +1 -1
  457. package/dist/jsx/list/statusColors.native.js +2 -80
  458. package/dist/jsx/list/statusColors.native.js.map +1 -1
  459. package/dist/jsx/report/queryReportColumns.mjs +1 -1
  460. package/dist/jsx/report/queryReportColumns.native.js +2 -2
  461. package/dist/jsx/report/queryReportColumns.native.js.map +1 -1
  462. package/dist/jsx/report/queryReportFilterBar.mjs +1 -2
  463. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  464. package/dist/jsx/report/queryReportFilterBar.native.js +5 -6
  465. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  466. package/dist/jsx/report/report-grid.mjs +1 -1
  467. package/dist/jsx/report/report-grid.native.js +2 -2
  468. package/dist/jsx/report/report-grid.native.js.map +1 -1
  469. package/dist/jsx/report/report-toolbar.mjs +1 -1
  470. package/dist/jsx/report/report-toolbar.native.js +2 -2
  471. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  472. package/dist/jsx/report/reportViewModel.mjs +1 -1
  473. package/dist/jsx/report/reportViewModel.mjs.map +1 -1
  474. package/dist/jsx/report/reportViewModel.native.js +3 -3
  475. package/dist/jsx/report/reportViewModel.native.js.map +1 -1
  476. package/dist/jsx/shared/useFrappeApp.mjs +7 -3
  477. package/dist/jsx/shared/useFrappeApp.mjs.map +1 -1
  478. package/dist/jsx/shared/useFrappeApp.native.js +8 -4
  479. package/dist/jsx/shared/useFrappeApp.native.js.map +1 -1
  480. package/package.json +12 -12
  481. package/src/backofficeScreens.designLaw.spec.ts +1 -3
  482. package/src/list/DoctypeListScreen.tsx +13 -19
  483. package/src/list/filter-chips.tsx +1 -1
  484. package/src/list/filter-editor.tsx +2 -2
  485. package/src/list/filter-fields.tsx +29 -356
  486. package/src/list/filter-standard.tsx +2 -2
  487. package/src/list/list-tools-sheet.tsx +1 -1
  488. package/src/list/listColumns.tsx +11 -488
  489. package/src/list/listFields.ts +9 -66
  490. package/src/list/listFormat.ts +12 -77
  491. package/src/list/listShim.spec.ts +101 -0
  492. package/src/list/statusColors.ts +7 -92
  493. package/src/report/queryReportColumns.tsx +1 -1
  494. package/src/report/queryReportFilterBar.tsx +7 -2
  495. package/src/report/report-grid.tsx +1 -1
  496. package/src/report/report-toolbar.tsx +1 -1
  497. package/src/report/reportViewModel.ts +5 -1
  498. package/src/shared/useFrappeApp.spec.tsx +28 -0
  499. package/src/shared/useFrappeApp.ts +4 -2
  500. package/types/list/DoctypeListScreen.d.ts +1 -1
  501. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  502. package/types/list/filter-editor.d.ts.map +1 -1
  503. package/types/list/filter-fields.d.ts +10 -78
  504. package/types/list/filter-fields.d.ts.map +1 -1
  505. package/types/list/filter-standard.d.ts.map +1 -1
  506. package/types/list/listColumns.d.ts +10 -40
  507. package/types/list/listColumns.d.ts.map +1 -1
  508. package/types/list/listFields.d.ts +5 -13
  509. package/types/list/listFields.d.ts.map +1 -1
  510. package/types/list/listFormat.d.ts +5 -27
  511. package/types/list/listFormat.d.ts.map +1 -1
  512. package/types/list/statusColors.d.ts +6 -11
  513. package/types/list/statusColors.d.ts.map +1 -1
  514. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  515. package/types/report/reportViewModel.d.ts +1 -1
  516. package/types/report/reportViewModel.d.ts.map +1 -1
  517. package/types/shared/useFrappeApp.d.ts.map +1 -1
  518. package/src/list/filter-fields.spec.ts +0 -29
  519. package/src/list/listFields.spec.ts +0 -148
  520. package/src/list/listFormat.spec.ts +0 -151
  521. package/src/list/statusColors.spec.ts +0 -100
@@ -1,359 +1,32 @@
1
1
  /**
2
- * Field + operator model for the list filter chrome (desk parity).
3
- *
4
- * Maps DoctypeMeta DocFields to kind-aware filter descriptors
5
- * (select/link/check/date/number/text) and defines desk's operator
6
- * vocabulary (=, !=, like, not like, in, not in, comparisons, between,
7
- * is set / is not set) with two-way tuple conversion. This model speaks
8
- * frappe tuples natively — the table package's FilterValue vocabulary is
9
- * bridged separately (filterConversion.ts) for the DataTable surface;
10
- * desk's own operator list is the parity target here.
2
+ * The filterable-field vocabulary — moved to
3
+ * `@multiplatform.one/frappe-ui/src/filterFields` (MPO-15), where it is the
4
+ * one vocabulary both list stacks read: this desk chrome and FrappeTable's
5
+ * toolbar (`docFieldsToFilterFields`). Re-exported here so the barrel and
6
+ * the `@multiplatform.one/backoffice/src/list/filter-fields` deep import
7
+ * keep resolving (the GNOME shim deep-imports this path). New code imports
8
+ * from `@multiplatform.one/frappe-ui`.
11
9
  */
12
- import type { FrappeFilter, FrappeFilters } from "../shared/types";
13
- import type { DocFieldMeta, DoctypeMeta } from "../shared/useDoctypeMeta";
14
10
 
15
- // ── Field descriptors ─────────────────────────────────────────
16
-
17
- export type FilterFieldKind = "select" | "link" | "check" | "date" | "number" | "text";
18
-
19
- export interface FilterFieldDescriptor {
20
- fieldname: string;
21
- label: string;
22
- fieldtype: string;
23
- kind: FilterFieldKind;
24
- /** Link target doctype, or the raw Select options string. */
25
- options?: string;
26
- }
27
-
28
- /** Layout / non-data fieldtypes that cannot meaningfully filter. */
29
- const NON_FILTERABLE_FIELDTYPES = new Set([
30
- "Section Break",
31
- "Column Break",
32
- "Tab Break",
33
- "Fold",
34
- "Heading",
35
- "HTML",
36
- "Button",
37
- "Image",
38
- "Attach",
39
- "Attach Image",
40
- "Signature",
41
- "Geolocation",
42
- "Password",
43
- ]);
44
-
45
- const NUMBER_FIELDTYPES = new Set(["Int", "Float", "Currency", "Percent", "Duration", "Rating"]);
46
- const DATE_FIELDTYPES = new Set(["Date", "Datetime", "Time"]);
47
-
48
- /** Editor kind for a frappe fieldtype (Dynamic Link has no static target → text). */
49
- export function fieldKind(fieldtype: string): FilterFieldKind {
50
- if (fieldtype === "Select") return "select";
51
- if (fieldtype === "Link") return "link";
52
- if (fieldtype === "Check") return "check";
53
- if (DATE_FIELDTYPES.has(fieldtype)) return "date";
54
- if (NUMBER_FIELDTYPES.has(fieldtype)) return "number";
55
- return "text";
56
- }
57
-
58
- function toDescriptor(field: DocFieldMeta): FilterFieldDescriptor {
59
- return {
60
- fieldname: field.fieldname,
61
- label: field.label || field.fieldname,
62
- fieldtype: field.fieldtype,
63
- kind: fieldKind(field.fieldtype),
64
- options: field.options,
65
- };
66
- }
67
-
68
- /** Standard doc fields present on every doctype but absent from meta.fields. */
69
- export function standardDocFilterFields(): FilterFieldDescriptor[] {
70
- return [
71
- { fieldname: "name", label: "ID", fieldtype: "Data", kind: "text" },
72
- { fieldname: "owner", label: "Created By", fieldtype: "Link", kind: "link", options: "User" },
73
- { fieldname: "creation", label: "Created On", fieldtype: "Datetime", kind: "date" },
74
- { fieldname: "modified", label: "Last Updated On", fieldtype: "Datetime", kind: "date" },
75
- {
76
- fieldname: "modified_by",
77
- label: "Last Updated By",
78
- fieldtype: "Link",
79
- kind: "link",
80
- options: "User",
81
- },
82
- // Desk `_` facet columns — the sidebar facets and heart column write
83
- // tuples on these, so chips and the editor must label them (desk offers
84
- // them in its filter field picker too). Never surface the raw
85
- // underscore fieldname (no-raw-fieldname rule candidate).
86
- { fieldname: "_assign", label: "Assigned To", fieldtype: "Data", kind: "text" },
87
- { fieldname: "_user_tags", label: "Tags", fieldtype: "Data", kind: "text" },
88
- { fieldname: "_liked_by", label: "Liked By", fieldtype: "Data", kind: "text" },
89
- { fieldname: "_comments", label: "Comments", fieldtype: "Data", kind: "text" },
90
- ];
91
- }
92
-
93
- /**
94
- * All fields offered by the filter editor's field picker — data fields from
95
- * meta (hidden ones included, desk parity) plus the standard doc fields.
96
- */
97
- export function filterableFieldsFromMeta(meta?: DoctypeMeta): FilterFieldDescriptor[] {
98
- const out: FilterFieldDescriptor[] = [];
99
- const seen = new Set<string>();
100
- for (const field of meta?.fields ?? []) {
101
- if (!field.fieldname || seen.has(field.fieldname)) continue;
102
- const fieldtype = String(field.fieldtype);
103
- if (NON_FILTERABLE_FIELDTYPES.has(fieldtype) || fieldtype.startsWith("Table")) continue;
104
- seen.add(field.fieldname);
105
- out.push(toDescriptor(field));
106
- }
107
- for (const standard of standardDocFilterFields()) {
108
- if (!seen.has(standard.fieldname)) out.push(standard);
109
- }
110
- return out;
111
- }
112
-
113
- /** Fields flagged `in_standard_filter`, in meta order (the quick-filter row).
114
- * Desk always offers ID plus the title field as live header inputs even when
115
- * those flags are off — typing a fragment of ID/subject is the fastest
116
- * narrowing habit list users have (audit E1). */
117
- export function standardFiltersFromMeta(meta?: DoctypeMeta): FilterFieldDescriptor[] {
118
- const fromMeta = (meta?.fields ?? [])
119
- .filter((field) => field.in_standard_filter === 1 && field.hidden !== 1 && field.fieldname)
120
- .map(toDescriptor);
121
- const seen = new Set(fromMeta.map((field) => field.fieldname));
122
- const extras: FilterFieldDescriptor[] = [];
123
- if (!seen.has("name")) {
124
- extras.push({ fieldname: "name", label: "ID", fieldtype: "Data", kind: "text" });
125
- seen.add("name");
126
- }
127
- const titleField = meta?.title_field;
128
- if (titleField && !seen.has(titleField)) {
129
- const titleMeta = meta?.fields?.find((field) => field.fieldname === titleField);
130
- extras.push({
131
- fieldname: titleField,
132
- label: titleMeta?.label || "Title",
133
- fieldtype: titleMeta?.fieldtype || "Data",
134
- kind: fieldKind(titleMeta?.fieldtype || "Data"),
135
- });
136
- }
137
- return extras.length > 0 ? [...extras, ...fromMeta] : fromMeta;
138
- }
139
-
140
- /** Select fieldtype options string → dropdown options (blank lines dropped). */
141
- export function selectOptionsFromField(options?: string): Array<{ label: string; value: string }> {
142
- return (options ?? "")
143
- .split("\n")
144
- .map((line) => line.trim())
145
- .filter(Boolean)
146
- .map((line) => ({ label: line, value: line }));
147
- }
148
-
149
- /**
150
- * Human label for a fieldname — descriptor label when known, else a
151
- * title-cased form. The raw identifier (underscores) never reaches chips or
152
- * editor rows (no-raw-fieldname rule candidate, parity audit pair 04/16).
153
- */
154
- export function fieldLabelFor(fields: FilterFieldDescriptor[], fieldname: string): string {
155
- const known = fields.find((field) => field.fieldname === fieldname)?.label;
156
- if (known) return known;
157
- const pretty = fieldname
158
- .replace(/^_+/, "")
159
- .split("_")
160
- .filter(Boolean)
161
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
162
- .join(" ");
163
- return pretty || fieldname;
164
- }
165
-
166
- // ── Desk operator vocabulary ──────────────────────────────────
167
-
168
- export type DeskOperator =
169
- | "="
170
- | "!="
171
- | "like"
172
- | "not like"
173
- | "in"
174
- | "not in"
175
- | ">"
176
- | "<"
177
- | ">="
178
- | "<="
179
- | "between"
180
- | "is set"
181
- | "is not set";
182
-
183
- /** English operator labels — translate at render time via t(). */
184
- export const DESK_OPERATOR_LABELS: Record<DeskOperator, string> = {
185
- "=": "Equals",
186
- "!=": "Not Equals",
187
- like: "Like",
188
- "not like": "Not Like",
189
- in: "In",
190
- "not in": "Not In",
191
- ">": "Greater Than",
192
- "<": "Less Than",
193
- ">=": "Greater Than or Equal",
194
- "<=": "Less Than or Equal",
195
- between: "Between",
196
- "is set": "Is Set",
197
- "is not set": "Is Not Set",
198
- };
199
-
200
- const BASE_OPERATORS: DeskOperator[] = [
201
- "=",
202
- "!=",
203
- "like",
204
- "not like",
205
- "in",
206
- "not in",
207
- "is set",
208
- "is not set",
209
- ];
210
-
211
- /** Operators offered for an editor kind (desk's list, comparisons gated). */
212
- export function operatorsForKind(kind: FilterFieldKind): DeskOperator[] {
213
- switch (kind) {
214
- case "check":
215
- return ["=", "!="];
216
- case "number":
217
- case "date":
218
- return ["=", "!=", ">", "<", ">=", "<=", "between", "in", "not in", "is set", "is not set"];
219
- default:
220
- return BASE_OPERATORS;
221
- }
222
- }
223
-
224
- /** Initial operator when a field is picked (desk: text searches, others match). */
225
- export function defaultOperatorForKind(kind: FilterFieldKind): DeskOperator {
226
- return kind === "text" ? "like" : "=";
227
- }
228
-
229
- // ── Editor row model + tuple conversion ───────────────────────
230
-
231
- export interface FilterRowDraft {
232
- fieldname: string;
233
- operator: DeskOperator;
234
- /** Scalar editor value (single input / select / link / comma list). */
235
- value: string;
236
- /** Multi values: in / not in multi-select, or [from, to] for between. */
237
- values: string[];
238
- }
239
-
240
- /**
241
- * Draft → frappe tuple; null while the draft is incomplete.
242
- * `like` wraps `%value%` unless the user typed their own wildcard;
243
- * `is set` / `is not set` become ["field", "is", "set" | "not set"].
244
- */
245
- export function draftToTuple(draft: FilterRowDraft, kind: FilterFieldKind): FrappeFilter | null {
246
- const { fieldname, operator } = draft;
247
- if (!fieldname) return null;
248
- switch (operator) {
249
- case "is set":
250
- return [fieldname, "is", "set"];
251
- case "is not set":
252
- return [fieldname, "is", "not set"];
253
- case "in":
254
- case "not in": {
255
- const values =
256
- kind === "select"
257
- ? draft.values.map((value) => value.trim()).filter(Boolean)
258
- : draft.value
259
- .split(",")
260
- .map((value) => value.trim())
261
- .filter(Boolean);
262
- return values.length ? [fieldname, operator, values] : null;
263
- }
264
- case "between": {
265
- const from = (draft.values[0] ?? "").trim();
266
- const to = (draft.values[1] ?? "").trim();
267
- return from && to ? [fieldname, "between", [from, to]] : null;
268
- }
269
- case "like":
270
- case "not like": {
271
- const text = draft.value.trim();
272
- if (!text) return null;
273
- return [fieldname, operator, text.includes("%") ? text : `%${text}%`];
274
- }
275
- default: {
276
- const text = draft.value.trim();
277
- return text ? [fieldname, operator, text] : null;
278
- }
279
- }
280
- }
281
-
282
- const SCALAR_OPERATORS: readonly string[] = ["=", "!=", "like", "not like", ">", "<", ">=", "<="];
283
-
284
- /** Frappe tuple → editable draft (inverse of draftToTuple). */
285
- export function tupleToDraft(tuple: FrappeFilter): FilterRowDraft {
286
- const [fieldname, operator, raw] = tuple;
287
- if (operator === "is") {
288
- return {
289
- fieldname,
290
- operator: raw === "set" ? "is set" : "is not set",
291
- value: "",
292
- values: [],
293
- };
294
- }
295
- if (operator === "in" || operator === "not in") {
296
- const values = Array.isArray(raw)
297
- ? raw.map(String)
298
- : String(raw ?? "")
299
- .split(",")
300
- .map((value) => value.trim())
301
- .filter(Boolean);
302
- return { fieldname, operator, value: values.join(", "), values };
303
- }
304
- if (operator === "between") {
305
- const values = Array.isArray(raw) ? raw.map(String) : [];
306
- return {
307
- fieldname,
308
- operator: "between",
309
- value: "",
310
- values: [values[0] ?? "", values[1] ?? ""],
311
- };
312
- }
313
- const known = SCALAR_OPERATORS.includes(operator) ? (operator as DeskOperator) : "=";
314
- return {
315
- fieldname,
316
- operator: known,
317
- value: raw === null || raw === undefined ? "" : String(raw),
318
- values: [],
319
- };
320
- }
321
-
322
- // ── Filter list helpers ───────────────────────────────────────
323
-
324
- /**
325
- * Quick-filter semantics: a standard filter control owns every tuple for its
326
- * fieldname — replace them with `tuple`, or clear when `tuple` is undefined.
327
- */
328
- export function setFieldFilter(
329
- filters: FrappeFilters,
330
- fieldname: string,
331
- tuple?: FrappeFilter,
332
- ): FrappeFilters {
333
- const rest = filters.filter(([name]) => name !== fieldname);
334
- return tuple ? [...rest, tuple] : rest;
335
- }
336
-
337
- /** The active quick-filter display value for a fieldname ("" when none). */
338
- export function quickFilterValue(filters: FrappeFilters, fieldname: string): string {
339
- const tuple = filters.find(([name]) => name === fieldname);
340
- if (!tuple) return "";
341
- const [, operator, raw] = tuple;
342
- if (operator === "like") {
343
- const text = String(raw ?? "");
344
- return text.startsWith("%") && text.endsWith("%") && text.length >= 2
345
- ? text.slice(1, -1)
346
- : text;
347
- }
348
- if (operator === "=") return raw === null || raw === undefined ? "" : String(raw);
349
- return "";
350
- }
351
-
352
- /** Chip label: "Status = Open", "Due Date between a, b", "Owner is set". */
353
- export function filterTupleLabel(fields: FilterFieldDescriptor[], tuple: FrappeFilter): string {
354
- const [fieldname, operator, raw] = tuple;
355
- const label = fieldLabelFor(fields, fieldname);
356
- if (operator === "is") return `${label} ${raw === "set" ? "is set" : "is not set"}`;
357
- const value = Array.isArray(raw) ? raw.map(String).join(", ") : String(raw ?? "");
358
- return `${label} ${operator} ${value}`;
359
- }
11
+ export {
12
+ defaultOperatorForKind,
13
+ DESK_OPERATOR_LABELS,
14
+ draftToTuple,
15
+ fieldKind,
16
+ fieldLabelFor,
17
+ filterableFieldsFromMeta,
18
+ filterTupleLabel,
19
+ operatorsForKind,
20
+ quickFilterValue,
21
+ selectOptionsFromField,
22
+ setFieldFilter,
23
+ standardDocFilterFields,
24
+ standardFiltersFromMeta,
25
+ tupleToDraft,
26
+ } from "@multiplatform.one/frappe-ui";
27
+ export type {
28
+ DeskOperator,
29
+ FilterFieldDescriptor,
30
+ FilterFieldKind,
31
+ FilterRowDraft,
32
+ } from "@multiplatform.one/frappe-ui";
@@ -9,17 +9,17 @@
9
9
  */
10
10
  import { XStack, YStack } from "@multiplatform.one/components";
11
11
  import { Checkbox, Input, Select } from "@multiplatform.one/forms";
12
- import { Link as LinkField } from "@multiplatform.one/frappe-ui";
13
12
  import { useEffect, useRef, useState } from "react";
14
13
  import type { FrappeFilter, FrappeFilters } from "../shared/types";
15
14
  import type { DoctypeMeta } from "../shared/useDoctypeMeta";
16
15
  import {
16
+ Link as LinkField,
17
17
  quickFilterValue,
18
18
  selectOptionsFromField,
19
19
  setFieldFilter,
20
20
  standardFiltersFromMeta,
21
21
  type FilterFieldDescriptor,
22
- } from "./filter-fields";
22
+ } from "@multiplatform.one/frappe-ui";
23
23
 
24
24
  export interface StandardFiltersProps {
25
25
  meta?: DoctypeMeta;
@@ -19,7 +19,7 @@ import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
19
19
  import type { FrappeFilters } from "../shared/types";
20
20
  import type { DoctypeMeta } from "../shared/useDoctypeMeta";
21
21
  import { FilterEditorPanel } from "./filter-editor";
22
- import { standardFiltersFromMeta } from "./filter-fields";
22
+ import { standardFiltersFromMeta } from "@multiplatform.one/frappe-ui";
23
23
  import { SavedFiltersControl } from "./filter-saved";
24
24
  import { SortControl } from "./filter-sort";
25
25
  import { StandardFilters } from "./filter-standard";