@conduction/nextcloud-vue 2.79.0 → 2.81.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 (390) hide show
  1. package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js.map +1 -1
  2. package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js +3 -1
  3. package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js.map +1 -1
  4. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js +32 -3
  5. package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
  6. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +13 -11
  7. package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
  8. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +80 -4
  9. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  10. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +95 -91
  11. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  12. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js +179 -13
  13. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js.map +1 -1
  14. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js +52 -16
  15. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js.map +1 -1
  16. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +96 -4
  17. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  18. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +158 -110
  19. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  20. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue.js +10 -0
  21. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue.js.map +1 -0
  22. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue2.js +252 -0
  23. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue2.js.map +1 -0
  24. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue3.js +140 -0
  25. package/dist/esm/components/CnChipsFieldWidget/CnChipsFieldWidget.vue3.js.map +1 -0
  26. package/dist/esm/components/CnChipsFieldWidget/index.js +26 -0
  27. package/dist/esm/components/CnChipsFieldWidget/index.js.map +1 -0
  28. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue.js +10 -0
  29. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue.js.map +1 -0
  30. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue2.js +354 -0
  31. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue2.js.map +1 -0
  32. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue3.js +172 -0
  33. package/dist/esm/components/CnChoicePickerWidget/CnChoicePickerWidget.vue3.js.map +1 -0
  34. package/dist/esm/components/CnChoicePickerWidget/index.js +27 -0
  35. package/dist/esm/components/CnChoicePickerWidget/index.js.map +1 -0
  36. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +1 -1
  37. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -1
  38. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -1
  39. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js +2 -2
  40. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js.map +1 -1
  41. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue3.js.map +1 -1
  42. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +65 -5
  43. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  44. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -1
  45. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  46. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +19 -11
  47. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  48. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +4 -2
  49. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  50. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +134 -4
  51. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  52. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +21 -4
  53. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  54. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +24 -0
  55. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  56. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +43 -4
  57. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  58. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js +1 -1
  59. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js.map +1 -1
  60. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js.map +1 -1
  61. package/dist/esm/components/CnFacetSidebar/CnFacetSidebar.vue2.js +7 -7
  62. package/dist/esm/components/CnFacetSidebar/CnFacetSidebar.vue2.js.map +1 -1
  63. package/dist/esm/components/CnFacetSidebar/CnFacetSidebar.vue3.js.map +1 -1
  64. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +11 -0
  65. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js.map +1 -0
  66. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +867 -0
  67. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -0
  68. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js +238 -0
  69. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -0
  70. package/dist/esm/components/CnFactsWidget/index.js +30 -0
  71. package/dist/esm/components/CnFactsWidget/index.js.map +1 -0
  72. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue.js +10 -0
  73. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue.js.map +1 -0
  74. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue2.js +626 -0
  75. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue2.js.map +1 -0
  76. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue3.js +396 -0
  77. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue3.js.map +1 -0
  78. package/dist/esm/components/CnFieldListWidget/index.js +29 -0
  79. package/dist/esm/components/CnFieldListWidget/index.js.map +1 -0
  80. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +302 -4
  81. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
  82. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +417 -244
  83. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
  84. package/dist/esm/components/CnFilesBrowser/filesBrowser.js +101 -1
  85. package/dist/esm/components/CnFilesBrowser/filesBrowser.js.map +1 -1
  86. package/dist/esm/components/CnFilesBrowser/filesBrowserColumns.js +141 -1
  87. package/dist/esm/components/CnFilesBrowser/filesBrowserColumns.js.map +1 -1
  88. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +65 -17
  89. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  90. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +4 -4
  91. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  92. package/dist/esm/components/CnFormPage/CnFormPage.vue2.js +78 -3
  93. package/dist/esm/components/CnFormPage/CnFormPage.vue2.js.map +1 -1
  94. package/dist/esm/components/CnFormPage/CnFormPage.vue3.js +74 -49
  95. package/dist/esm/components/CnFormPage/CnFormPage.vue3.js.map +1 -1
  96. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +333 -73
  97. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  98. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +79 -17
  99. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  100. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue.js +10 -0
  101. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue.js.map +1 -0
  102. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js +99 -0
  103. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js.map +1 -0
  104. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js +48 -0
  105. package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js.map +1 -0
  106. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js +7 -7
  107. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
  108. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
  109. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js +1 -1
  110. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js.map +1 -1
  111. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +65 -2
  112. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  113. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +6 -2
  114. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  115. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +63 -1
  116. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
  117. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +8 -1
  118. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
  119. package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js +14 -0
  120. package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js.map +1 -1
  121. package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue3.js +5 -1
  122. package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue3.js.map +1 -1
  123. package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue2.js +29 -1
  124. package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue2.js.map +1 -1
  125. package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue3.js.map +1 -1
  126. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue.js +10 -0
  127. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue.js.map +1 -0
  128. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue2.js +174 -0
  129. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue2.js.map +1 -0
  130. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue3.js +75 -0
  131. package/dist/esm/components/CnRadioCardsWidget/CnRadioCardsWidget.vue3.js.map +1 -0
  132. package/dist/esm/components/CnRadioCardsWidget/index.js +28 -0
  133. package/dist/esm/components/CnRadioCardsWidget/index.js.map +1 -0
  134. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +10 -0
  135. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js.map +1 -0
  136. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +411 -0
  137. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -0
  138. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +178 -0
  139. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -0
  140. package/dist/esm/components/CnRecordListWidget/index.js +31 -0
  141. package/dist/esm/components/CnRecordListWidget/index.js.map +1 -0
  142. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue.js +10 -0
  143. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue.js.map +1 -0
  144. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue2.js +222 -0
  145. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue2.js.map +1 -0
  146. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue3.js +64 -0
  147. package/dist/esm/components/CnSavedViewsWidget/CnSavedViewsWidget.vue3.js.map +1 -0
  148. package/dist/esm/components/CnSavedViewsWidget/index.js +30 -0
  149. package/dist/esm/components/CnSavedViewsWidget/index.js.map +1 -0
  150. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue.js +10 -0
  151. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue.js.map +1 -0
  152. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue2.js +351 -0
  153. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue2.js.map +1 -0
  154. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue3.js +71 -0
  155. package/dist/esm/components/CnSectionsWidget/CnSectionsWidget.vue3.js.map +1 -0
  156. package/dist/esm/components/CnSectionsWidget/index.js +35 -0
  157. package/dist/esm/components/CnSectionsWidget/index.js.map +1 -0
  158. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -1
  159. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -1
  160. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue.js +10 -0
  161. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue.js.map +1 -0
  162. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue2.js +347 -0
  163. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue2.js.map +1 -0
  164. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue3.js +184 -0
  165. package/dist/esm/components/CnSettingsFormWidget/CnSettingsFormWidget.vue3.js.map +1 -0
  166. package/dist/esm/components/CnSettingsFormWidget/index.js +27 -0
  167. package/dist/esm/components/CnSettingsFormWidget/index.js.map +1 -0
  168. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js +81 -2
  169. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  170. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  171. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +87 -6
  172. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  173. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +1 -0
  174. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  175. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js +84 -1
  176. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js.map +1 -1
  177. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js +85 -41
  178. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js.map +1 -1
  179. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue.js +10 -0
  180. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue.js.map +1 -0
  181. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue2.js +159 -0
  182. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue2.js.map +1 -0
  183. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue3.js +60 -0
  184. package/dist/esm/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue3.js.map +1 -0
  185. package/dist/esm/components/CnSwitchRowsWidget/index.js +26 -0
  186. package/dist/esm/components/CnSwitchRowsWidget/index.js.map +1 -0
  187. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +168 -7
  188. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  189. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +86 -23
  190. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  191. package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js +80 -1
  192. package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js.map +1 -1
  193. package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js +75 -32
  194. package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js.map +1 -1
  195. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js +10 -0
  196. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js.map +1 -0
  197. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js +269 -0
  198. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js.map +1 -0
  199. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js +106 -0
  200. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js.map +1 -0
  201. package/dist/esm/components/CnToggleTableWidget/index.js +27 -0
  202. package/dist/esm/components/CnToggleTableWidget/index.js.map +1 -0
  203. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +11 -0
  204. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  205. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +7 -2
  206. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  207. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  208. package/dist/esm/components/CnWidgetObjectTable/dashboardRegistration.js +5 -0
  209. package/dist/esm/components/CnWidgetObjectTable/dashboardRegistration.js.map +1 -1
  210. package/dist/esm/components/CnWorkspaceFilterWidget/CnWorkspaceFilterWidget.vue2.js +301 -6
  211. package/dist/esm/components/CnWorkspaceFilterWidget/CnWorkspaceFilterWidget.vue2.js.map +1 -1
  212. package/dist/esm/components/CnWorkspaceFilterWidget/CnWorkspaceFilterWidget.vue3.js +153 -55
  213. package/dist/esm/components/CnWorkspaceFilterWidget/CnWorkspaceFilterWidget.vue3.js.map +1 -1
  214. package/dist/esm/composables/useFormDraft.js +140 -9
  215. package/dist/esm/composables/useFormDraft.js.map +1 -1
  216. package/dist/esm/composables/useListView.js +4 -4
  217. package/dist/esm/composables/useListView.js.map +1 -1
  218. package/dist/esm/index.js +21 -1
  219. package/dist/esm/index.js.map +1 -1
  220. package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js +28 -20
  221. package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js.map +1 -1
  222. package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue3.js +9 -0
  223. package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue3.js.map +1 -1
  224. package/dist/esm/integrations/builtin/field-inspection.js +21 -0
  225. package/dist/esm/integrations/builtin/field-inspection.js.map +1 -1
  226. package/dist/esm/integrations/offline/checklistSubmission.js +141 -0
  227. package/dist/esm/integrations/offline/checklistSubmission.js.map +1 -0
  228. package/dist/esm/integrations/offline/fieldCollectionHelpers.js +70 -5
  229. package/dist/esm/integrations/offline/fieldCollectionHelpers.js.map +1 -1
  230. package/dist/esm/integrations/offline/index.js +2 -1
  231. package/dist/esm/integrations/offline/index.js.map +1 -1
  232. package/dist/esm/integrations/offline/offlineDb.js +6 -1
  233. package/dist/esm/integrations/offline/offlineDb.js.map +1 -1
  234. package/dist/esm/integrations/offline/syncReplayService.js +8 -2
  235. package/dist/esm/integrations/offline/syncReplayService.js.map +1 -1
  236. package/dist/esm/l10n/en.json.js +20 -1
  237. package/dist/esm/l10n/en.json.js.map +1 -1
  238. package/dist/esm/l10n/nl.json.js +70 -2
  239. package/dist/esm/l10n/nl.json.js.map +1 -1
  240. package/dist/esm/nextcloud-vue.css +2192 -222
  241. package/dist/esm/utils/contentHeaderLink.js +51 -0
  242. package/dist/esm/utils/contentHeaderLink.js.map +1 -0
  243. package/dist/esm/utils/detailActionModel.js +60 -3
  244. package/dist/esm/utils/detailActionModel.js.map +1 -1
  245. package/dist/esm/utils/facets.js +75 -3
  246. package/dist/esm/utils/facets.js.map +1 -1
  247. package/dist/esm/utils/fetchFilterCounts.js +40 -5
  248. package/dist/esm/utils/fetchFilterCounts.js.map +1 -1
  249. package/dist/esm/utils/fillTemplate.js +120 -0
  250. package/dist/esm/utils/fillTemplate.js.map +1 -0
  251. package/dist/esm/utils/initials.js +32 -0
  252. package/dist/esm/utils/initials.js.map +1 -0
  253. package/dist/esm/utils/libraryWidgetKeys.js +11 -0
  254. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  255. package/dist/esm/utils/objectWrite.js +59 -0
  256. package/dist/esm/utils/objectWrite.js.map +1 -0
  257. package/dist/esm/utils/pageControls.js +81 -0
  258. package/dist/esm/utils/pageControls.js.map +1 -0
  259. package/dist/esm/utils/personalLenses.js +40 -3
  260. package/dist/esm/utils/personalLenses.js.map +1 -1
  261. package/dist/esm/utils/queryPresets.js +96 -0
  262. package/dist/esm/utils/queryPresets.js.map +1 -0
  263. package/dist/esm/utils/resolveFilterTokens.js +12 -1
  264. package/dist/esm/utils/resolveFilterTokens.js.map +1 -1
  265. package/dist/esm/utils/resolveManifestTokens.js +2 -0
  266. package/dist/esm/utils/resolveManifestTokens.js.map +1 -1
  267. package/dist/esm/utils/schema.js +21 -0
  268. package/dist/esm/utils/schema.js.map +1 -1
  269. package/dist/esm/utils/sentinelTokens.js +22 -4
  270. package/dist/esm/utils/sentinelTokens.js.map +1 -1
  271. package/dist/esm/utils/userGroupsPeek.js +91 -0
  272. package/dist/esm/utils/userGroupsPeek.js.map +1 -0
  273. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  274. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  275. package/dist/esm/utils/visibleWhen.js +57 -5
  276. package/dist/esm/utils/visibleWhen.js.map +1 -1
  277. package/dist/esm/utils/widgetDispatch.js +7 -1
  278. package/dist/esm/utils/widgetDispatch.js.map +1 -1
  279. package/dist/esm/utils/widgetVisibility.js +4 -57
  280. package/dist/esm/utils/widgetVisibility.js.map +1 -1
  281. package/dist/nextcloud-vue.cjs.js +19708 -9301
  282. package/dist/nextcloud-vue.cjs.js.map +2 -2
  283. package/dist/nextcloud-vue.css +2192 -222
  284. package/l10n/en.json +20 -1
  285. package/l10n/nl.json +70 -2
  286. package/package.json +2 -1
  287. package/scripts/check-docs-mdx.mjs +108 -0
  288. package/src/components/CnActionButtons/CnActionButtons.vue +2 -0
  289. package/src/components/CnActionsBar/CnActionsBar.md +4 -0
  290. package/src/components/CnActionsBar/CnActionsBar.vue +48 -11
  291. package/src/components/CnAppRoot/CnAppRoot.md +4 -2
  292. package/src/components/CnAppRoot/CnAppRoot.vue +151 -59
  293. package/src/components/CnBannerWidget/CnBannerWidget.vue +244 -23
  294. package/src/components/CnCellRenderer/CnCellRenderer.md +2 -0
  295. package/src/components/CnCellRenderer/CnCellRenderer.vue +235 -5
  296. package/src/components/CnChipsFieldWidget/CnChipsFieldWidget.vue +433 -0
  297. package/src/components/CnChipsFieldWidget/index.js +25 -0
  298. package/src/components/CnChoicePickerWidget/CnChoicePickerWidget.vue +556 -0
  299. package/src/components/CnChoicePickerWidget/index.js +26 -0
  300. package/src/components/CnConversationThread/CnConversationWidget.vue +1 -1
  301. package/src/components/CnDashboardGrid/CnDashboardGrid.vue +2 -2
  302. package/src/components/CnDashboardPage/CnDashboardPage.vue +78 -5
  303. package/src/components/CnDataTable/CnDataTable.vue +22 -12
  304. package/src/components/CnDetailPage/CnDetailPage.md +1 -1
  305. package/src/components/CnDetailPage/CnDetailPage.vue +152 -6
  306. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +66 -0
  307. package/src/components/CnDocumentReviewList/CnDocumentReviewWidget.vue +1 -1
  308. package/src/components/CnFacetSidebar/CnFacetSidebar.vue +7 -7
  309. package/src/components/CnFactsWidget/CnFactsWidget.vue +1190 -0
  310. package/src/components/CnFactsWidget/index.js +29 -0
  311. package/src/components/CnFieldListWidget/CnFieldListWidget.vue +1008 -0
  312. package/src/components/CnFieldListWidget/index.js +28 -0
  313. package/src/components/CnFilesBrowser/CnFilesBrowser.vue +588 -117
  314. package/src/components/CnFilesBrowser/filesBrowser.js +100 -0
  315. package/src/components/CnFilesBrowser/filesBrowserColumns.js +140 -0
  316. package/src/components/CnFormDialog/CnFormDialog.md +9 -3
  317. package/src/components/CnFormDialog/CnFormDialog.vue +69 -21
  318. package/src/components/CnFormPage/CnFormPage.vue +99 -3
  319. package/src/components/CnIndexPage/CnIndexPage.vue +309 -9
  320. package/src/components/CnIndexPage/CnIndexPageWidgets.vue +169 -0
  321. package/src/components/CnIndexSidebar/CnIndexSidebar.vue +7 -7
  322. package/src/components/CnNextStepCard/CnNextStepWidget.vue +1 -1
  323. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +69 -2
  324. package/src/components/CnObjectSidebar/CnFilesTab.vue +70 -1
  325. package/src/components/CnObjectSidebar/CnNotesTab.vue +16 -0
  326. package/src/components/CnPageRenderer/CnPageRenderer.vue +29 -1
  327. package/src/components/CnRadioCardsWidget/CnRadioCardsWidget.vue +313 -0
  328. package/src/components/CnRadioCardsWidget/index.js +27 -0
  329. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +652 -0
  330. package/src/components/CnRecordListWidget/index.js +30 -0
  331. package/src/components/CnSavedViewsWidget/CnSavedViewsWidget.vue +296 -0
  332. package/src/components/CnSavedViewsWidget/index.js +29 -0
  333. package/src/components/CnSectionsWidget/CnSectionsWidget.vue +489 -0
  334. package/src/components/CnSectionsWidget/index.js +34 -0
  335. package/src/components/CnSegmentedControl/CnSegmentedControl.vue +13 -0
  336. package/src/components/CnSettingsFormWidget/CnSettingsFormWidget.vue +555 -0
  337. package/src/components/CnSettingsFormWidget/index.js +26 -0
  338. package/src/components/CnStagesWidget/CnStagesWidget.vue +81 -2
  339. package/src/components/CnStatWidget/CnStatWidget.vue +88 -7
  340. package/src/components/CnStatsBlockWidget/CnStatsBlockWidget.vue +180 -3
  341. package/src/components/CnSwitchRowsWidget/CnSwitchRowsWidget.vue +226 -0
  342. package/src/components/CnSwitchRowsWidget/index.js +25 -0
  343. package/src/components/CnTabsWidget/CnTabsWidget.vue +263 -8
  344. package/src/components/CnTasksWidget/CnTasksWidget.vue +175 -15
  345. package/src/components/CnToggleTableWidget/CnToggleTableWidget.vue +386 -0
  346. package/src/components/CnToggleTableWidget/index.js +26 -0
  347. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +11 -0
  348. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +7 -2
  349. package/src/components/CnWidgetObjectTable/dashboardRegistration.js +5 -0
  350. package/src/components/CnWorkspaceFilterWidget/CnWorkspaceFilterWidget.vue +493 -11
  351. package/src/components/index.js +19 -0
  352. package/src/composables/__tests__/useFormDraft.spec.js +69 -0
  353. package/src/composables/useFormDraft.js +139 -8
  354. package/src/composables/useListView.js +4 -4
  355. package/src/css/form-field.css +14 -0
  356. package/src/css/index-page.css +71 -0
  357. package/src/css/kpi-card.css +32 -0
  358. package/src/css/look-board-detail.css +113 -2
  359. package/src/css/look-board-index.css +90 -8
  360. package/src/css/look-board.css +109 -2
  361. package/src/css/table.css +19 -0
  362. package/src/index.js +19 -0
  363. package/src/integrations/builtin/field-inspection/CnFieldInspectionCard.vue +35 -20
  364. package/src/integrations/builtin/field-inspection.js +21 -0
  365. package/src/integrations/offline/checklistSubmission.js +137 -0
  366. package/src/integrations/offline/fieldCollectionHelpers.js +69 -4
  367. package/src/integrations/offline/index.js +3 -0
  368. package/src/integrations/offline/offlineDb.js +6 -1
  369. package/src/integrations/offline/syncReplayService.js +8 -2
  370. package/src/schemas/app-manifest-v2.schema.json +196 -13
  371. package/src/utils/contentHeaderLink.js +48 -0
  372. package/src/utils/detailActionModel.js +59 -2
  373. package/src/utils/facets.js +74 -2
  374. package/src/utils/fetchFilterCounts.js +39 -4
  375. package/src/utils/fillTemplate.js +116 -0
  376. package/src/utils/initials.js +29 -0
  377. package/src/utils/libraryWidgetKeys.js +11 -0
  378. package/src/utils/objectWrite.js +55 -0
  379. package/src/utils/pageControls.js +78 -0
  380. package/src/utils/personalLenses.js +39 -2
  381. package/src/utils/queryPresets.js +93 -0
  382. package/src/utils/resolveFilterTokens.js +14 -1
  383. package/src/utils/resolveManifestTokens.js +2 -0
  384. package/src/utils/schema.js +21 -0
  385. package/src/utils/sentinelTokens.js +22 -4
  386. package/src/utils/userGroupsPeek.js +87 -0
  387. package/src/utils/validateManifestV2.compiled.js +3 -3
  388. package/src/utils/visibleWhen.js +56 -4
  389. package/src/utils/widgetDispatch.js +7 -1
  390. package/src/utils/widgetVisibility.js +7 -56
@@ -10,12 +10,14 @@ import DotsHorizontal from 'vue-material-design-icons/DotsHorizontal.vue';
10
10
  import Export from 'vue-material-design-icons/Export.vue';
11
11
  import Eye from 'vue-material-design-icons/Eye.vue';
12
12
  import FilterOutline from 'vue-material-design-icons/FilterOutline.vue';
13
+ import Tune from 'vue-material-design-icons/Tune.vue';
13
14
  import ViewColumnOutline from 'vue-material-design-icons/ViewColumnOutline.vue';
14
- import __sfc_main$v from '../../dialogs/CnConfirmDialog.vue.js';
15
- import __sfc_main$w from '../../dialogs/CnQuickEditDialog.vue.js';
16
- import __sfc_main from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
17
- import __sfc_main$2 from '../CnEmptyContent/CnEmptyContent.vue.js';
18
- import __sfc_main$1 from '../CnFollowToggle/CnFollowToggle.vue.js';
15
+ import __sfc_main$w from '../../dialogs/CnConfirmDialog.vue.js';
16
+ import __sfc_main$x from '../../dialogs/CnQuickEditDialog.vue.js';
17
+ import __sfc_main$1 from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
18
+ import __sfc_main$3 from '../CnEmptyContent/CnEmptyContent.vue.js';
19
+ import __sfc_main$2 from '../CnFollowToggle/CnFollowToggle.vue.js';
20
+ import __sfc_main from './CnIndexPageWidgets.vue.js';
19
21
  import { useLook } from '../../composables/useLook.js';
20
22
  import { copyKindsOf } from '../../composables/useObjectCopy.js';
21
23
  import { createRefLabelResolver } from '../../composables/useRefLabels.js';
@@ -45,37 +47,37 @@ import { viewMatchesScope, extractViewState, buildRouteQueryFromViewState, extra
45
47
  import { fieldsFromSchema, columnsFromSchema } from '../../utils/schema.js';
46
48
  import { resolveScopeLayout } from '../../utils/scopeListLayout.js';
47
49
  import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js';
48
- import __sfc_main$5 from '../CnActionsBar/CnActionsBar.vue.js';
49
- import __sfc_main$o from '../CnAdvancedFormDialog/CnAdvancedFormDialog.vue.js';
50
+ import __sfc_main$6 from '../CnActionsBar/CnActionsBar.vue.js';
51
+ import __sfc_main$p from '../CnAdvancedFormDialog/CnAdvancedFormDialog.vue.js';
50
52
  import '../CnAdvancedFormDialog/CnMetadataTab.vue.js';
51
53
  import '../CnAdvancedFormDialog/CnPropertiesTab.vue.js';
52
54
  import '../CnAdvancedFormDialog/CnPropertyValueCell.vue.js';
53
- import __sfc_main$9 from '../CnBoardView/CnBoardView.vue.js';
54
- import __sfc_main$8 from '../CnCardGrid/CnCardGrid.vue.js';
55
- import __sfc_main$p from '../CnContextMenu/CnContextMenu.vue.js';
56
- import __sfc_main$m from '../CnCopyDialog/CnCopyDialog.vue.js';
57
- import __sfc_main$7 from '../CnDataTable/CnDataTable.vue.js';
58
- import __sfc_main$a from '../CnDateAxisView/CnDateAxisView.vue.js';
59
- import __sfc_main$l from '../CnDeleteDialog/CnDeleteDialog.vue.js';
60
- import __sfc_main$e from '../CnFolderSidebar/CnFolderSidebar.vue.js';
61
- import __sfc_main$n from '../CnFormDialog/CnFormDialog.vue.js';
62
- import __sfc_main$6 from '../CnIcon/CnIcon.vue.js';
63
- import __sfc_main$q from '../CnIndexSidebar/CnIndexSidebar.vue.js';
64
- import __sfc_main$c from '../CnMapWidget/CnMapWidget.vue.js';
65
- import __sfc_main$i from '../CnMassCopyDialog/CnMassCopyDialog.vue.js';
66
- import __sfc_main$h from '../CnMassDeleteDialog/CnMassDeleteDialog.vue.js';
67
- import __sfc_main$j from '../CnMassExportDialog/CnMassExportDialog.vue.js';
68
- import __sfc_main$k from '../CnMassImportDialog/CnMassImportDialog.vue.js';
69
- import __sfc_main$b from '../CnObjectCalendar/CnObjectCalendar.vue.js';
70
- import __sfc_main$d from '../CnObjectList/CnObjectList.vue.js';
71
- import __sfc_main$3 from '../CnPageHeader/CnPageHeader.vue.js';
72
- import __sfc_main$f from '../CnPagination/CnPagination.vue.js';
73
- import __sfc_main$4 from '../CnQuickFilterBar/CnQuickFilterBar.vue.js';
74
- import __sfc_main$g from '../CnRowActions/CnRowActions.vue.js';
75
- import __sfc_main$s from '../CnSavedViewPresentationDialog/CnSavedViewPresentationDialog.vue.js';
76
- import __sfc_main$r from '../CnSavedViewsControl/CnSavedViewsControl.vue.js';
77
- import __sfc_main$t from '../CnSavedViewShareDialog/CnSavedViewShareDialog.vue.js';
78
- import __sfc_main$u from '../CnSaveViewDialog/CnSaveViewDialog.vue.js';
55
+ import __sfc_main$a from '../CnBoardView/CnBoardView.vue.js';
56
+ import __sfc_main$9 from '../CnCardGrid/CnCardGrid.vue.js';
57
+ import __sfc_main$q from '../CnContextMenu/CnContextMenu.vue.js';
58
+ import __sfc_main$n from '../CnCopyDialog/CnCopyDialog.vue.js';
59
+ import __sfc_main$8 from '../CnDataTable/CnDataTable.vue.js';
60
+ import __sfc_main$b from '../CnDateAxisView/CnDateAxisView.vue.js';
61
+ import __sfc_main$m from '../CnDeleteDialog/CnDeleteDialog.vue.js';
62
+ import __sfc_main$f from '../CnFolderSidebar/CnFolderSidebar.vue.js';
63
+ import __sfc_main$o from '../CnFormDialog/CnFormDialog.vue.js';
64
+ import __sfc_main$7 from '../CnIcon/CnIcon.vue.js';
65
+ import __sfc_main$r from '../CnIndexSidebar/CnIndexSidebar.vue.js';
66
+ import __sfc_main$d from '../CnMapWidget/CnMapWidget.vue.js';
67
+ import __sfc_main$j from '../CnMassCopyDialog/CnMassCopyDialog.vue.js';
68
+ import __sfc_main$i from '../CnMassDeleteDialog/CnMassDeleteDialog.vue.js';
69
+ import __sfc_main$k from '../CnMassExportDialog/CnMassExportDialog.vue.js';
70
+ import __sfc_main$l from '../CnMassImportDialog/CnMassImportDialog.vue.js';
71
+ import __sfc_main$c from '../CnObjectCalendar/CnObjectCalendar.vue.js';
72
+ import __sfc_main$e from '../CnObjectList/CnObjectList.vue.js';
73
+ import __sfc_main$4 from '../CnPageHeader/CnPageHeader.vue.js';
74
+ import __sfc_main$g from '../CnPagination/CnPagination.vue.js';
75
+ import __sfc_main$5 from '../CnQuickFilterBar/CnQuickFilterBar.vue.js';
76
+ import __sfc_main$h from '../CnRowActions/CnRowActions.vue.js';
77
+ import __sfc_main$t from '../CnSavedViewPresentationDialog/CnSavedViewPresentationDialog.vue.js';
78
+ import __sfc_main$s from '../CnSavedViewsControl/CnSavedViewsControl.vue.js';
79
+ import __sfc_main$u from '../CnSavedViewShareDialog/CnSavedViewShareDialog.vue.js';
80
+ import __sfc_main$v from '../CnSaveViewDialog/CnSaveViewDialog.vue.js';
79
81
  import { applyAiContext } from './aiContext.js';
80
82
  import { buildDefaultActions } from './defaultActions.js';
81
83
  import { dispatchAction } from './manifestActionDispatch.js';
@@ -303,10 +305,11 @@ var script = {
303
305
  name: 'CnIndexPage',
304
306
 
305
307
  components: {
306
- CnBuildiqEditButton: __sfc_main,
307
- CnFollowToggle: __sfc_main$1,
308
+ CnIndexPageWidgets: __sfc_main,
309
+ CnBuildiqEditButton: __sfc_main$1,
310
+ CnFollowToggle: __sfc_main$2,
308
311
  NcLoadingIcon,
309
- CnEmptyContent: __sfc_main$2,
312
+ CnEmptyContent: __sfc_main$3,
310
313
  NcActions,
311
314
  NcActionButton,
312
315
  NcActionCaption,
@@ -318,39 +321,40 @@ var script = {
318
321
  DatabaseSearch,
319
322
  Export,
320
323
  FilterOutline,
324
+ Tune,
321
325
  ViewColumnOutline,
322
326
  NcCheckboxRadioSwitch,
323
- CnPageHeader: __sfc_main$3,
324
- CnQuickFilterBar: __sfc_main$4,
325
- CnActionsBar: __sfc_main$5,
327
+ CnPageHeader: __sfc_main$4,
328
+ CnQuickFilterBar: __sfc_main$5,
329
+ CnActionsBar: __sfc_main$6,
326
330
  DotsHorizontal,
327
- CnIcon: __sfc_main$6,
328
- CnDataTable: __sfc_main$7,
329
- CnCardGrid: __sfc_main$8,
330
- CnBoardView: __sfc_main$9,
331
- CnDateAxisView: __sfc_main$a,
332
- CnObjectCalendar: __sfc_main$b,
333
- CnMapWidget: __sfc_main$c,
334
- CnObjectList: __sfc_main$d,
335
- CnFolderSidebar: __sfc_main$e,
336
- CnPagination: __sfc_main$f,
337
- CnRowActions: __sfc_main$g,
338
- CnMassDeleteDialog: __sfc_main$h,
339
- CnMassCopyDialog: __sfc_main$i,
340
- CnMassExportDialog: __sfc_main$j,
341
- CnMassImportDialog: __sfc_main$k,
342
- CnDeleteDialog: __sfc_main$l,
343
- CnCopyDialog: __sfc_main$m,
344
- CnFormDialog: __sfc_main$n,
345
- CnAdvancedFormDialog: __sfc_main$o,
346
- CnContextMenu: __sfc_main$p,
347
- CnIndexSidebar: __sfc_main$q,
348
- CnSavedViewsControl: __sfc_main$r,
349
- CnSavedViewPresentationDialog: __sfc_main$s,
350
- CnSavedViewShareDialog: __sfc_main$t,
351
- CnSaveViewDialog: __sfc_main$u,
352
- CnConfirmDialog: __sfc_main$v,
353
- CnQuickEditDialog: __sfc_main$w,
331
+ CnIcon: __sfc_main$7,
332
+ CnDataTable: __sfc_main$8,
333
+ CnCardGrid: __sfc_main$9,
334
+ CnBoardView: __sfc_main$a,
335
+ CnDateAxisView: __sfc_main$b,
336
+ CnObjectCalendar: __sfc_main$c,
337
+ CnMapWidget: __sfc_main$d,
338
+ CnObjectList: __sfc_main$e,
339
+ CnFolderSidebar: __sfc_main$f,
340
+ CnPagination: __sfc_main$g,
341
+ CnRowActions: __sfc_main$h,
342
+ CnMassDeleteDialog: __sfc_main$i,
343
+ CnMassCopyDialog: __sfc_main$j,
344
+ CnMassExportDialog: __sfc_main$k,
345
+ CnMassImportDialog: __sfc_main$l,
346
+ CnDeleteDialog: __sfc_main$m,
347
+ CnCopyDialog: __sfc_main$n,
348
+ CnFormDialog: __sfc_main$o,
349
+ CnAdvancedFormDialog: __sfc_main$p,
350
+ CnContextMenu: __sfc_main$q,
351
+ CnIndexSidebar: __sfc_main$r,
352
+ CnSavedViewsControl: __sfc_main$s,
353
+ CnSavedViewPresentationDialog: __sfc_main$t,
354
+ CnSavedViewShareDialog: __sfc_main$u,
355
+ CnSaveViewDialog: __sfc_main$v,
356
+ CnConfirmDialog: __sfc_main$w,
357
+ CnQuickEditDialog: __sfc_main$x,
354
358
  },
355
359
 
356
360
  /**
@@ -499,7 +503,6 @@ var script = {
499
503
  default: true,
500
504
  },
501
505
 
502
- // eslint-disable-next-line vue/no-unused-properties
503
506
  /**
504
507
  * Draw this page in the `board` look (or `nextcloud`) whatever the app
505
508
  * does. Empty follows the `cnLook` CnAppRoot provides. Manifest key
@@ -647,7 +650,13 @@ var script = {
647
650
  * `$route.params` just like the `filter` prop. The first tab with
648
651
  * `default:true` (else index 0) is active on mount; changing tabs
649
652
  * re-fetches at page 1. Omit (or `null`) → no tab strip, behaviour
650
- * unchanged.
653
+ * unchanged. Under the board look a tab with `activeLabel` ("Pipeline:
654
+ * Sales") adds a removable chip with that text to the Active line and
655
+ * counts on the Filter badge while it is selected; removing the chip
656
+ * goes back to the default tab. A tab can say `empty: "field"` (or a
657
+ * list of fields) for the rows where the field has no value, and
658
+ * `notEmpty` for the rows where it has one: it reads as the filter
659
+ * `{ field: { isnull: true } }`.
651
660
  */
652
661
  quickFilters: {
653
662
  type: Array,
@@ -1018,6 +1027,22 @@ var script = {
1018
1027
  default: null,
1019
1028
  },
1020
1029
 
1030
+ /**
1031
+ * Board look: the segments the view switch draws, e.g. `['table',
1032
+ * 'cards', 'board', 'map']` as the boards do. A listed mode the page
1033
+ * can open is an ordinary segment; one it cannot (no board columns, no
1034
+ * map configured) is drawn disabled, named "<mode>: not available on
1035
+ * this list". Fed from `pages[].config.viewSwitch`. Ignored without the
1036
+ * board look, and absent the switch is as before.
1037
+ *
1038
+ * @type {Array<'table' | 'cards' | 'board' | 'map'>}
1039
+ * @spec openspec/changes/screens-view-switch-parity/specs/view-switch-board-look/spec.md#requirement-the-manifest-can-draw-segments-the-page-cannot-open
1040
+ */
1041
+ viewSwitch: {
1042
+ type: Array,
1043
+ default: null,
1044
+ },
1045
+
1021
1046
  /**
1022
1047
  * The board's configuration, mirroring the manifest `config.board`
1023
1048
  * block: `{ statusField, cardFields, swimlaneField }`. The board is
@@ -1704,6 +1729,35 @@ var script = {
1704
1729
  default: null,
1705
1730
  },
1706
1731
 
1732
+ /**
1733
+ * KPI tiles above the list (manifest `config.statRow`): dashboard
1734
+ * widget definitions `{ id, type, title?, content }`, usually `stat`,
1735
+ * drawn in an auto-fit row (each at least 200px) in the listed order.
1736
+ * Types resolve like dashboard widgets: the app registry, then the
1737
+ * dashboard catalog. Empty by default.
1738
+ *
1739
+ * @spec openspec/changes/screens-index-stat-row/specs/index-page/spec.md#requirement-an-index-page-can-draw-a-stat-row-above-the-list
1740
+ * @type {Array<object>}
1741
+ */
1742
+ statRow: {
1743
+ type: Array,
1744
+ default: () => [],
1745
+ },
1746
+
1747
+ /**
1748
+ * Cards beside the list (manifest `config.sidePanel`): dashboard
1749
+ * widget definitions `{ id, type, title?, content, headerLink? }`
1750
+ * drawn in a 300px column right of the toolbar and the list. Empty
1751
+ * by default; below 1024px the column moves above the list.
1752
+ *
1753
+ * @spec openspec/changes/screens-index-stat-row/specs/index-page/spec.md#requirement-an-index-page-can-draw-a-side-panel-beside-the-list
1754
+ * @type {Array<object>}
1755
+ */
1756
+ sidePanel: {
1757
+ type: Array,
1758
+ default: () => [],
1759
+ },
1760
+
1707
1761
  /**
1708
1762
  * Where a row carries the actions the server says this caller may run
1709
1763
  * on it: a dotted path, read off the rows the list already fetched, so
@@ -1887,6 +1941,8 @@ var script = {
1887
1941
  * Show a filter menu (funnel button) in the table header, above the
1888
1942
  * row-actions column. Its menu lists every enum/badge column's values as
1889
1943
  * toggleable facet filters — a compact alternative to the facet sidebar.
1944
+ * Under the board look, on a page with no filter sidebar, it is the
1945
+ * toolbar's labelled Filter button instead (row 1, before the view switch).
1890
1946
  * Fed from the manifest as `pages[].config.filterMenu`.
1891
1947
  */
1892
1948
  filterMenu: {
@@ -2383,6 +2439,16 @@ var script = {
2383
2439
  },
2384
2440
 
2385
2441
  computed: {
2442
+ /**
2443
+ * Whether the page draws cards beside its list (`sidePanel`).
2444
+ *
2445
+ * @spec openspec/changes/screens-index-stat-row/specs/index-page/spec.md#requirement-an-index-page-can-draw-a-side-panel-beside-the-list
2446
+ * @return {boolean}
2447
+ */
2448
+ hasSidePanel() {
2449
+ return Array.isArray(this.sidePanel) && this.sidePanel.length > 0
2450
+ },
2451
+
2386
2452
  /**
2387
2453
  * The empty-state copy run through the host translate function
2388
2454
  * (the injected `cnTranslate`, identity by default). Only this
@@ -2755,6 +2821,21 @@ var script = {
2755
2821
  return Object.keys(this.mapConfig || {}).length > 0
2756
2822
  },
2757
2823
 
2824
+ /**
2825
+ * Board look: the modes `viewSwitch` lists that this page cannot open,
2826
+ * drawn as disabled segments.
2827
+ *
2828
+ * @return {Array<string>} The disabled modes.
2829
+ * @spec openspec/changes/screens-view-switch-parity/specs/view-switch-board-look/spec.md#requirement-the-manifest-can-draw-segments-the-page-cannot-open
2830
+ */
2831
+ viewSwitchDisabledModes() {
2832
+ if (!this.isBoardLook || !Array.isArray(this.viewSwitch)) {
2833
+ return []
2834
+ }
2835
+ const offered = [...this.effectiveToggleModes, ...(this.showMapSegment ? ['map'] : [])];
2836
+ return this.viewSwitch.filter((mode) => ['table', 'cards', 'board', 'map'].includes(mode) && !offered.includes(mode))
2837
+ },
2838
+
2758
2839
  /**
2759
2840
  * The base view-toggle segments (cards/table/list) passed to CnActionsBar.
2760
2841
  * Beta's explicit `viewModes` whitelist wins when set; otherwise the
@@ -4324,11 +4405,11 @@ var script = {
4324
4405
  return []
4325
4406
  }
4326
4407
  const props = this.effectiveSchema?.properties || {};
4327
- const chips = [];
4408
+ const chips = [...this.quickFilterActiveChips];
4328
4409
  for (const [key, raw] of Object.entries(this.effectiveActiveFilters || {})) {
4329
4410
  const values = (Array.isArray(raw) ? raw : [raw])
4330
4411
  .filter((value) => value !== null && value !== undefined && value !== '')
4331
- .map((value) => String(value));
4412
+ .map((value) => this.activeFilterValueLabel(key, value));
4332
4413
  if (values.length === 0) {
4333
4414
  continue
4334
4415
  }
@@ -4338,6 +4419,87 @@ var script = {
4338
4419
  return chips
4339
4420
  },
4340
4421
 
4422
+ /**
4423
+ * The Active line's chips for the selected quick filters: one per
4424
+ * selected tab that declares an `activeLabel` ("Pipeline: Sales"), run
4425
+ * through the app's translate. A tab without one (an "All" tab) adds no
4426
+ * chip. The chip carries the tab's index so removing it can deselect it.
4427
+ *
4428
+ * @spec openspec/changes/screens-active-filter-line-parity/specs/active-filter-line-board-look/spec.md#requirement-a-quick-filter-with-an-active-label-joins-the-active-line
4429
+ * @return {Array<{key: string, label: string, quickFilterIndex: number}>}
4430
+ */
4431
+ quickFilterActiveChips() {
4432
+ const tabs = this.tabStripEntries || [];
4433
+ if (tabs.length === 0) {
4434
+ return []
4435
+ }
4436
+ const indices = this.quickFilterMultiple
4437
+ ? (this.selectedQuickFilterIndices || [])
4438
+ : [this.activeQuickFilterIndex];
4439
+ return indices
4440
+ .filter((index) => typeof index === 'number' && tabs[index] && typeof tabs[index].activeLabel === 'string' && tabs[index].activeLabel !== '')
4441
+ .map((index) => ({ key: `quick-filter:${index}`, label: this.cnTranslate(tabs[index].activeLabel), quickFilterIndex: index }))
4442
+ },
4443
+
4444
+ /**
4445
+ * Filter keys over a reference property that the Active line must name,
4446
+ * and that no reference column resolves already: one spec each, with the
4447
+ * referenced register and schema off the page schema's `$ref`.
4448
+ *
4449
+ * @spec openspec/changes/screens-active-filter-line-parity/specs/active-filter-line-board-look/spec.md#requirement-an-active-chip-names-the-value-not-its-id
4450
+ * @return {Array<{key: string, labelField: string, register: string, schema: string}>}
4451
+ */
4452
+ activeFilterRefSpecs() {
4453
+ if (!this.isBoardLook || !this.effectiveSchema) {
4454
+ return []
4455
+ }
4456
+ const keys = Object.keys(this.effectiveActiveFilters || {});
4457
+ if (keys.length === 0) {
4458
+ return []
4459
+ }
4460
+ const covered = new Set(this.refLabelSpecs.map((spec) => spec.key));
4461
+ const fields = fieldsFromSchema(this.effectiveSchema, { includeReadOnly: true });
4462
+ const specs = [];
4463
+ for (const key of keys) {
4464
+ if (covered.has(key)) {
4465
+ continue
4466
+ }
4467
+ const field = fields.find((f) => f.key === key);
4468
+ const ref = field && field.reference;
4469
+ if (!ref || ref.schema === undefined || ref.schema === null) {
4470
+ continue
4471
+ }
4472
+ specs.push({
4473
+ key,
4474
+ labelField: '',
4475
+ register: ref.register || (typeof this.register === 'string' ? this.register : ''),
4476
+ schema: String(ref.schema),
4477
+ });
4478
+ }
4479
+ return specs
4480
+ },
4481
+
4482
+ /**
4483
+ * The ids each active reference filter holds, per filter key, for the
4484
+ * label lookup of the Active line.
4485
+ *
4486
+ * @return {{[key: string]: string[]}} Distinct ids per filter key.
4487
+ */
4488
+ activeFilterRefIds() {
4489
+ const out = {};
4490
+ const keys = new Set([...this.refLabelSpecs, ...this.activeFilterRefSpecs].map((spec) => spec.key));
4491
+ for (const [key, raw] of Object.entries(this.effectiveActiveFilters || {})) {
4492
+ if (!keys.has(key)) {
4493
+ continue
4494
+ }
4495
+ out[key] = (Array.isArray(raw) ? raw : [raw])
4496
+ .filter((id) => id !== null && id !== undefined && id !== '' && typeof id !== 'object')
4497
+ .map((id) => String(id))
4498
+ .sort();
4499
+ }
4500
+ return out
4501
+ },
4502
+
4341
4503
  /**
4342
4504
  * The plural the board bulk band names: "With the selected cases".
4343
4505
  * The schema's `titlePlural` (or `plural`), else the lower-cased
@@ -4495,6 +4657,27 @@ var script = {
4495
4657
  return !!this.resolvedSidebar.enabled && this.resolvedSidebar.show !== false
4496
4658
  },
4497
4659
 
4660
+ /**
4661
+ * Whether the board toolbar draws the Filter button as a menu: the
4662
+ * board look, `filterMenu` on, something to filter by, and no filter
4663
+ * sidebar (whose toggle is that button otherwise).
4664
+ *
4665
+ * @return {boolean}
4666
+ */
4667
+ boardFilterMenu() {
4668
+ return this.isBoardLook && this.filterMenu && !this.hasSidebar && this.filterableFields.length > 0
4669
+ },
4670
+
4671
+ /**
4672
+ * Whether the funnel menu sits in the table header: `filterMenu` with
4673
+ * values to offer, unless the toolbar's Filter button is that menu.
4674
+ *
4675
+ * @return {boolean}
4676
+ */
4677
+ showHeaderFilterMenu() {
4678
+ return this.filterMenu && this.filterableFields.length > 0 && !this.boardFilterMenu
4679
+ },
4680
+
4498
4681
  /** Search props forwarded to the embedded CnIndexSidebar (defaults applied per CnIndexSidebar). */
4499
4682
  sidebarSearchProps() {
4500
4683
  return (this.sidebar && this.sidebar.search) || {}
@@ -4618,6 +4801,14 @@ var script = {
4618
4801
  },
4619
4802
  },
4620
4803
 
4804
+ // The Active line names a referenced value, not its id.
4805
+ activeFilterRefIds: {
4806
+ deep: true,
4807
+ handler() {
4808
+ this.loadRefLabels();
4809
+ },
4810
+ },
4811
+
4621
4812
  countRequestKey: {
4622
4813
  immediate: true,
4623
4814
  /** @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views */
@@ -4886,7 +5077,7 @@ var script = {
4886
5077
  * @spec openspec/changes/index-ref-column-labels/tasks.md#task-2
4887
5078
  */
4888
5079
  async loadRefLabels() {
4889
- const specs = this.refLabelSpecs;
5080
+ const specs = [...this.refLabelSpecs, ...this.activeFilterRefSpecs];
4890
5081
  if (specs.length === 0) {
4891
5082
  return
4892
5083
  }
@@ -4901,7 +5092,8 @@ var script = {
4901
5092
  }
4902
5093
  await Promise.all(specs.map(async (spec) => {
4903
5094
  const known = this.refLabels[spec.key] || {};
4904
- const ids = (this.refLabelIds[spec.key] || []).filter((id) => !Object.hasOwn(known, id));
5095
+ const wanted = new Set([...(this.refLabelIds[spec.key] || []), ...(this.activeFilterRefIds[spec.key] || [])]);
5096
+ const ids = [...wanted].filter((id) => !Object.hasOwn(known, id));
4905
5097
  if (ids.length === 0) {
4906
5098
  return
4907
5099
  }
@@ -5585,6 +5777,11 @@ var script = {
5585
5777
  * @return {void}
5586
5778
  */
5587
5779
  onClearFilters() {
5780
+ // "Clear all" on the Active line also undoes the quick filters it
5781
+ // listed (a tab without an `activeLabel` is not a filter there).
5782
+ for (const chip of this.quickFilterActiveChips) {
5783
+ this.deselectQuickFilterChip(chip.quickFilterIndex);
5784
+ }
5588
5785
  // Clearing the view brings the person's own columns back.
5589
5786
  this.appliedViewColumns = null;
5590
5787
  this.appliedSavedViewId = '';
@@ -5675,11 +5872,74 @@ var script = {
5675
5872
  * @spec openspec/changes/screens-index-list-parity/specs/index-list-board-look/spec.md#requirement-the-toolbar-sits-on-the-ground-in-two-rows
5676
5873
  */
5677
5874
  onRemoveActiveFilter(chip) {
5875
+ if (chip && typeof chip.quickFilterIndex === 'number') {
5876
+ this.deselectQuickFilterChip(chip.quickFilterIndex);
5877
+ return
5878
+ }
5678
5879
  if (chip && typeof chip.key === 'string') {
5679
5880
  this.onFilterEvent({ key: chip.key, values: [] });
5680
5881
  }
5681
5882
  },
5682
5883
 
5884
+ /**
5885
+ * Undo a quick filter from the Active line. With several tabs selectable
5886
+ * the tab leaves the selection; with one, the page goes back to its
5887
+ * default tab when that tab names no active filter itself, and else to no
5888
+ * tab at all, so the chip does not come straight back.
5889
+ *
5890
+ * @param {number} index The tab index the chip stands for.
5891
+ * @return {void}
5892
+ * @spec openspec/changes/screens-active-filter-line-parity/specs/active-filter-line-board-look/spec.md#requirement-a-quick-filter-with-an-active-label-joins-the-active-line
5893
+ */
5894
+ deselectQuickFilterChip(index) {
5895
+ if (this.quickFilterMultiple) {
5896
+ this.onQuickFilterMultiChange((this.selectedQuickFilterIndices || []).filter((i) => i !== index));
5897
+ return
5898
+ }
5899
+ if (this.activeQuickFilterIndex !== index) {
5900
+ return
5901
+ }
5902
+ const tabs = this.tabStripEntries || [];
5903
+ let fallback = tabs.findIndex((tab) => tab && tab.default === true);
5904
+ if (fallback < 0 && tabs.length > 0) {
5905
+ fallback = 0;
5906
+ }
5907
+ const fallbackNamed = fallback >= 0 && typeof tabs[fallback].activeLabel === 'string' && tabs[fallback].activeLabel !== '';
5908
+ this.onQuickFilterChange(fallback >= 0 && fallback !== index && !fallbackNamed ? fallback : null);
5909
+ },
5910
+
5911
+ /**
5912
+ * The text an Active chip shows for one filter value: the referenced
5913
+ * object's label, the facet bucket's label, the schema's `oneOf` title,
5914
+ * else the value itself.
5915
+ *
5916
+ * @param {string} key The filter key.
5917
+ * @param {unknown} value One value of that filter.
5918
+ * @return {string} The label.
5919
+ * @spec openspec/changes/screens-active-filter-line-parity/specs/active-filter-line-board-look/spec.md#requirement-an-active-chip-names-the-value-not-its-id
5920
+ */
5921
+ activeFilterValueLabel(key, value) {
5922
+ const id = String(value);
5923
+ const refs = this.refLabels[key];
5924
+ if (refs && typeof refs[id] === 'string' && refs[id] !== '') {
5925
+ return refs[id]
5926
+ }
5927
+ const facet = this.effectiveFacetData && this.effectiveFacetData[key];
5928
+ const bucket = facet && Array.isArray(facet.values)
5929
+ ? facet.values.find((fv) => fv && typeof fv === 'object' && String(fv.value) === id)
5930
+ : null;
5931
+ if (bucket && typeof bucket.label === 'string' && bucket.label !== '') {
5932
+ return this.cnTranslate(bucket.label)
5933
+ }
5934
+ const prop = this.effectiveSchema?.properties?.[key];
5935
+ const options = prop && Array.isArray(prop.oneOf) ? prop.oneOf : [];
5936
+ const option = options.find((o) => o && String(o.const) === id && typeof o.title === 'string');
5937
+ if (option) {
5938
+ return this.cnTranslate(option.title)
5939
+ }
5940
+ return id
5941
+ },
5942
+
5683
5943
  /**
5684
5944
  * A header filter was applied or cleared. One column can own several
5685
5945
  * query parameters (a range is `key[gte]` and `key[lte]`), so they are
@@ -6374,7 +6634,7 @@ var script = {
6374
6634
  this.cnIndexSidebarConfig.value = {
6375
6635
  // markRaw: the holder is CnAppRoot `data()`, so it is deeply
6376
6636
  // reactive and would proxy the component definition itself.
6377
- component: markRaw(__sfc_main$q),
6637
+ component: markRaw(__sfc_main$r),
6378
6638
  props: this.hoistedSidebarProps,
6379
6639
  listeners: {
6380
6640
  'update:open': (val) => {