@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
package/l10n/en.json CHANGED
@@ -54,6 +54,7 @@
54
54
  "Could not update the view \"{name}\"": "Could not update the view \"{name}\"",
55
55
  "Unread": "Unread",
56
56
  "Mark as unread": "Mark as unread",
57
+ "Open sidebar": "Open sidebar",
57
58
  "Could not mark this record as unread.": "Could not mark this record as unread.",
58
59
  "Add to favourites": "Add to favourites",
59
60
  "Remove from favourites": "Remove from favourites",
@@ -67,6 +68,7 @@
67
68
  "Follow this record to get its updates": "Follow this record to get its updates",
68
69
  "You will see it under Following. This register sends no change notifications.": "You will see it under Following. This register sends no change notifications.",
69
70
  "Since {date}": "Since {date}",
71
+ "since {date}": "since {date}",
70
72
  "Remove {name} as a follower": "Remove {name} as a follower",
71
73
  "Could not change following.": "Could not change following.",
72
74
  "Could not add this colleague.": "Could not add this colleague.",
@@ -226,6 +228,7 @@
226
228
  "Access URL": "Access URL",
227
229
  "Action": "Action",
228
230
  "Actions": "Actions",
231
+ "optional": "optional",
229
232
  "Add": "Add",
230
233
  "Add condition": "Add condition",
231
234
  "Add enum value": "Add enum value",
@@ -300,6 +303,9 @@
300
303
  "Constant": "Constant",
301
304
  "Copy": "Copy",
302
305
  "Copied": "Copied",
306
+ "Show": "Show",
307
+ "Copy {label}": "Copy {label}",
308
+ "Show {label}": "Show {label}",
303
309
  "Copy item": "Copy item",
304
310
  "Copy items": "Copy items",
305
311
  "Copy of {name}": "Copy of {name}",
@@ -794,6 +800,7 @@
794
800
  "View all ({total})": "View all ({total})",
795
801
  "No items": "No items",
796
802
  "Nothing here yet": "Nothing here yet",
803
+ "This list could not be loaded.": "This list could not be loaded.",
797
804
  "No items match this filter": "No items match this filter",
798
805
  "Could not load these records": "Could not load these records",
799
806
  "No conversations yet": "No conversations yet",
@@ -1361,9 +1368,21 @@
1361
1368
  "Quick filters": "Quick filters",
1362
1369
  "{count} filters": "{count} filters",
1363
1370
  "{count} more filters": "{count} more filters",
1364
- "{label} — show the other filters": "{label} — show the other filters"
1371
+ "{label} — show the other filters": "{label} — show the other filters",
1372
+ "Select {name}": "Select {name}",
1373
+ "Select all files": "Select all files",
1374
+ "No files match the filter.": "No files match the filter.",
1375
+ "Actions for the selected files": "Actions for the selected files",
1376
+ "{view}: not available on this list": "{view}: not available on this list",
1377
+ "Leave this field empty": "Leave this field empty",
1378
+ "This answer was refused.": "This answer was refused.",
1379
+ "No value ({count})": "No value ({count})"
1365
1380
  },
1366
1381
  "plurals": {
1382
+ "{count} selected": [
1383
+ "{count} selected",
1384
+ "{count} selected"
1385
+ ],
1367
1386
  "%n year": [
1368
1387
  "%n year",
1369
1388
  "%n years"
package/l10n/nl.json CHANGED
@@ -54,6 +54,7 @@
54
54
  "Could not update the view \"{name}\"": "Weergave \"{name}\" kon niet worden bijgewerkt",
55
55
  "Unread": "Ongelezen",
56
56
  "Mark as unread": "Markeren als ongelezen",
57
+ "Open sidebar": "Zijbalk openen",
57
58
  "Could not mark this record as unread.": "Dit dossier kon niet als ongelezen worden gemarkeerd.",
58
59
  "Add to favourites": "Aan favorieten toevoegen",
59
60
  "Remove from favourites": "Uit favorieten verwijderen",
@@ -67,6 +68,7 @@
67
68
  "Follow this record to get its updates": "Volg dit dossier om de wijzigingen te ontvangen",
68
69
  "You will see it under Following. This register sends no change notifications.": "U ziet het onder Volgend. Dit register stuurt geen wijzigingsmeldingen.",
69
70
  "Since {date}": "Sinds {date}",
71
+ "since {date}": "sinds {date}",
70
72
  "Remove {name} as a follower": "{name} als volger verwijderen",
71
73
  "Could not change following.": "Volgen kon niet worden gewijzigd.",
72
74
  "Could not add this colleague.": "Deze collega kon niet worden toegevoegd.",
@@ -170,6 +172,52 @@
170
172
  "No integrations available yet.": "Nog geen integraties beschikbaar.",
171
173
  "This integration is not available.": "Deze integratie is niet beschikbaar.",
172
174
  "Integrations": "Integraties",
175
+ "User settings": "Persoonlijke instellingen",
176
+ "Personal settings": "Persoonlijke instellingen",
177
+ "Admin settings": "Beheerinstellingen",
178
+ "Main navigation": "Hoofdnavigatie",
179
+ "Credentials": "Inloggegevens",
180
+ "Notifications": "Meldingen",
181
+ "Walkthrough": "Rondleiding",
182
+ "Take the guided tour of this app again.": "Doe de rondleiding door deze app nog een keer.",
183
+ "Restart walkthrough": "Rondleiding opnieuw starten",
184
+ "These open in another app.": "Deze openen in een andere app.",
185
+ "Notification preferences unavailable": "Meldingsvoorkeuren niet beschikbaar",
186
+ "Notification preferences are provided by OpenRegister and could not be loaded here.": "Meldingsvoorkeuren komen uit OpenRegister en konden hier niet worden geladen.",
187
+ "No notifications": "Geen meldingen",
188
+ "This app has no notifications.": "Deze app stuurt geen meldingen.",
189
+ "Choose which notifications you want to receive. Items you leave unchanged use the app default.": "Kies welke meldingen je wilt krijgen. Wat je niet aanpast, volgt de standaard van de app.",
190
+ "Reset to default": "Standaard herstellen",
191
+ "Could not save notification preference": "De meldingsvoorkeur kon niet worden opgeslagen",
192
+ "Could not reset notification preference": "De meldingsvoorkeur kon niet worden hersteld",
193
+ "When an item is created": "Als een item is aangemaakt",
194
+ "When an item is updated": "Als een item is gewijzigd",
195
+ "When an item is assigned or changes status": "Als een item is toegewezen of van status verandert",
196
+ "Learn about Keepiq": "Meer over Keepiq",
197
+ "What {app} uses": "Wat {app} gebruikt",
198
+ "This app does not use any external credentials.": "Deze app gebruikt geen inloggegevens van andere diensten.",
199
+ "Credentials are provided by OpenRegister and could not be loaded here.": "Inloggegevens komen uit OpenRegister en konden hier niet worden geladen.",
200
+ "Organisation credentials": "Inloggegevens van de organisatie",
201
+ "Your credentials": "Jouw inloggegevens",
202
+ "No credentials stored yet.": "Je hebt nog geen inloggegevens opgeslagen.",
203
+ "Confirm delete": "Verwijderen bevestigen",
204
+ "{app} may use this credential": "{app} mag deze inloggegevens gebruiken",
205
+ "Also allowed for: {apps}": "Ook toegestaan voor: {apps}",
206
+ "Allowed apps": "Toegestane apps",
207
+ "No app may use this credential yet": "Nog geen app mag deze inloggegevens gebruiken",
208
+ "Add credential": "Inloggegevens toevoegen",
209
+ "Which credential do you want to add?": "Welke inloggegevens wil je toevoegen?",
210
+ "Open {provider}": "{provider} openen",
211
+ "A label to recognise this credential later.": "Een naam waaraan je deze inloggegevens later herkent.",
212
+ "Secret": "Geheim",
213
+ "Sent to OpenRegister and stored in Keepiq. It is never shown again.": "Gaat naar OpenRegister en wordt in Keepiq bewaard. Je ziet het hierna nooit meer.",
214
+ "Choose which apps may use it": "Kies welke apps ze mogen gebruiken",
215
+ "{app} will be allowed to use this credential. You can change that afterwards.": "{app} mag deze inloggegevens gebruiken. Dat kun je later aanpassen.",
216
+ "This app": "Deze app",
217
+ "Could not save the credential": "De inloggegevens konden niet worden opgeslagen",
218
+ "Could not delete the credential": "De inloggegevens konden niet worden verwijderd",
219
+ "Could not update the credential": "De inloggegevens konden niet worden bijgewerkt",
220
+ "Could not update allowed apps": "De toegestane apps konden niet worden bijgewerkt",
173
221
  "View": "Bekijken",
174
222
  "Views": "Weergaven",
175
223
  "current step": "huidige stap",
@@ -225,6 +273,7 @@
225
273
  "Access URL": "Toegangs-URL",
226
274
  "Action": "Actie",
227
275
  "Actions": "Acties",
276
+ "optional": "niet verplicht",
228
277
  "Add": "Toevoegen",
229
278
  "Add condition": "Voorwaarde toevoegen",
230
279
  "Add enum value": "Opsommingswaarde toevoegen",
@@ -299,6 +348,9 @@
299
348
  "Constant": "Constante",
300
349
  "Copy": "Kopiëren",
301
350
  "Copied": "Gekopieerd",
351
+ "Show": "Tonen",
352
+ "Copy {label}": "{label} kopiëren",
353
+ "Show {label}": "{label} tonen",
302
354
  "Copy item": "Item kopiëren",
303
355
  "Copy items": "Items kopiëren",
304
356
  "Copy of {name}": "Kopie van {name}",
@@ -569,6 +621,10 @@
569
621
  "Open": "Openen",
570
622
  "Open access:": "Openbare toegang:",
571
623
  "Open row": "Rij openen",
624
+ "Select all rows": "Alle rijen selecteren",
625
+ "Select row": "Rij selecteren",
626
+ "Scrollable table": "Scrollbare tabel",
627
+ "{title} — scrollable table": "{title}, scrollbare tabel",
572
628
  "Operator": "Operator",
573
629
  "Order": "Volgorde",
574
630
  "Owner:": "Eigenaar:",
@@ -793,6 +849,7 @@
793
849
  "View all ({total})": "Alles bekijken ({total})",
794
850
  "No items": "Geen items",
795
851
  "Nothing here yet": "Hier staat nog niets",
852
+ "This list could not be loaded.": "Deze lijst kon niet worden geladen.",
796
853
  "No items match this filter": "Geen items voldoen aan dit filter",
797
854
  "Could not load these records": "Deze gegevens konden niet worden geladen",
798
855
  "No conversations yet": "Nog geen gesprekken",
@@ -1438,7 +1495,6 @@
1438
1495
  "You cannot see this folder": "Je kunt deze map niet zien",
1439
1496
  "{action} did not succeed": "{action} is niet gelukt",
1440
1497
  "Error:": "Fout:",
1441
- "optional": "optioneel",
1442
1498
  "Copy link": "Link kopiëren",
1443
1499
  "Details and sharing": "Details en delen",
1444
1500
  "Link copied": "Link gekopieerd",
@@ -1456,9 +1512,21 @@
1456
1512
  "1 day left": "Nog 1 dag",
1457
1513
  "{count} days left": "Nog {count} dagen",
1458
1514
  "1 day overdue": "1 dag te laat",
1459
- "{count} days overdue": "{count} dagen te laat"
1515
+ "{count} days overdue": "{count} dagen te laat",
1516
+ "Select {name}": "{name} selecteren",
1517
+ "Select all files": "Alle bestanden selecteren",
1518
+ "No files match the filter.": "Geen bestanden passen bij het filter.",
1519
+ "Actions for the selected files": "Acties voor de geselecteerde bestanden",
1520
+ "{view}: not available on this list": "{view}: niet beschikbaar in deze lijst",
1521
+ "Leave this field empty": "Laat dit veld leeg",
1522
+ "This answer was refused.": "Dit antwoord is geweigerd.",
1523
+ "No value ({count})": "Geen waarde ({count})"
1460
1524
  },
1461
1525
  "plurals": {
1526
+ "{count} selected": [
1527
+ "{count} geselecteerd",
1528
+ "{count} geselecteerd"
1529
+ ],
1462
1530
  "%n year": [
1463
1531
  "%n jaar",
1464
1532
  "%n jaar"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduction/nextcloud-vue",
3
- "version": "2.79.0",
3
+ "version": "2.81.0",
4
4
  "description": "Shared Vue component library for Conduction Nextcloud apps — complements @nextcloud/vue with higher-level components, OpenRegister integration, and NL Design System support",
5
5
  "homepage": "https://github.com/ConductionNL/nextcloud-vue#readme",
6
6
  "bugs": {
@@ -72,6 +72,7 @@
72
72
  "check:css-entry": "node scripts/check-css-entry.js",
73
73
  "check:dist-sideeffects": "node scripts/check-dist-sideeffects.mjs",
74
74
  "check:docs": "node scripts/check-docs.js",
75
+ "check:docs-mdx": "node scripts/check-docs-mdx.mjs",
75
76
  "check:docs-fresh": "cd docusaurus && npm run prebuild:docs && cd .. && node scripts/check-docs-fresh.js",
76
77
  "check:integration-parity": "node scripts/check-integration-parity.js",
77
78
  "check:journey-vocabulary": "node scripts/gates/journey-vocabulary.mjs .",
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Compiles every page under docs/ the way the Docusaurus site does (MDX 3,
3
+ * GFM, directives), and fails on the first class of error that breaks the
4
+ * site build: a `<word>` read as a JSX tag, a `{` read as an expression, an
5
+ * unclosed code span inside a table cell.
6
+ *
7
+ * Why this exists: `check:docs` and `check:docs-fresh` read the pages as
8
+ * text, so a page that MDX cannot compile passed both and only failed in the
9
+ * "Deploy Documentation" run after the push to beta (docs/components/
10
+ * cn-actions-bar.md and cn-workspace-filter-widget.md, 11 Oct 2026). The full
11
+ * `docusaurus build` takes minutes; this compiles the same pages in seconds.
12
+ *
13
+ * Needs the docusaurus/ dependencies (`cd docusaurus && npm ci`), which every
14
+ * code-quality check leg already installs.
15
+ *
16
+ * Usage: node scripts/check-docs-mdx.mjs
17
+ */
18
+
19
+ import fs from 'node:fs'
20
+ import { createRequire } from 'node:module'
21
+ import path from 'node:path'
22
+ import { fileURLToPath, pathToFileURL } from 'node:url'
23
+
24
+ const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
25
+ const DOCS_DIR = path.join(ROOT, 'docs')
26
+ const SITE_REQUIRE = createRequire(path.join(ROOT, 'docusaurus', 'package.json'))
27
+
28
+ /**
29
+ * Imports an ESM package from docusaurus/node_modules.
30
+ *
31
+ * @param {string} name package name
32
+ * @return {Promise<object>} the module namespace
33
+ */
34
+ async function importFromSite(name) {
35
+ let resolved
36
+ try {
37
+ resolved = SITE_REQUIRE.resolve(name)
38
+ } catch {
39
+ console.error(`check:docs-mdx: cannot resolve ${name} from docusaurus/. Run \`cd docusaurus && npm ci\` first.`)
40
+ process.exit(2)
41
+ }
42
+ return import(pathToFileURL(resolved).href)
43
+ }
44
+
45
+ /**
46
+ * @param {string} dir directory to walk
47
+ * @return {string[]} every .md / .mdx file below it
48
+ */
49
+ function listPages(dir) {
50
+ const out = []
51
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
52
+ const full = path.join(dir, entry.name)
53
+ if (entry.isDirectory()) {
54
+ out.push(...listPages(full))
55
+ } else if (/\.mdx?$/.test(entry.name)) {
56
+ out.push(full)
57
+ }
58
+ }
59
+ return out
60
+ }
61
+
62
+ const { compile } = await importFromSite('@mdx-js/mdx')
63
+ const remarkFrontmatter = (await importFromSite('remark-frontmatter')).default
64
+ const remarkComment = (await importFromSite('@slorber/remark-comment')).default
65
+ const remarkGfm = (await importFromSite('remark-gfm')).default
66
+ const remarkDirective = (await importFromSite('remark-directive')).default
67
+ const { unwrapMdxCodeBlocks, escapeMarkdownHeadingIds } = SITE_REQUIRE('@docusaurus/utils')
68
+
69
+ // The syntax extensions the site's MDX processor parses with
70
+ // (@docusaurus/mdx-loader lib/processor.js, mdx1Compat defaults on): front
71
+ // matter, HTML comments, GFM tables, admonition directives. A parse error is
72
+ // what breaks the build, so these are the ones that matter here.
73
+ const REMARK_PLUGINS = [remarkFrontmatter, remarkComment, remarkGfm, remarkDirective]
74
+
75
+ /**
76
+ * Applies the string preprocessing @docusaurus/mdx-loader runs before MDX
77
+ * (lib/preprocessor.js): unwrap mdx-code-block fences and escape custom
78
+ * heading ids.
79
+ *
80
+ * @param {string} source page source
81
+ * @return {string} the source MDX actually sees
82
+ */
83
+ function preprocess(source) {
84
+ return escapeMarkdownHeadingIds(unwrapMdxCodeBlocks(source))
85
+ }
86
+
87
+ const pages = listPages(DOCS_DIR)
88
+ const failures = []
89
+ for (const page of pages) {
90
+ const source = preprocess(fs.readFileSync(page, 'utf8'))
91
+ try {
92
+ await compile(source, { remarkPlugins: REMARK_PLUGINS })
93
+ } catch (error) {
94
+ const where = error.line ? `:${error.line}:${error.column ?? 1}` : ''
95
+ failures.push(`${path.relative(ROOT, page)}${where} ${error.reason ?? error.message}`)
96
+ }
97
+ }
98
+
99
+ if (failures.length > 0) {
100
+ console.error(`check:docs-mdx: ${failures.length} of ${pages.length} page(s) do not compile as MDX:\n`)
101
+ for (const line of failures) {
102
+ console.error(` ${line}`)
103
+ }
104
+ console.error('\nEscape a literal `<word>` or `{` with a backslash, or put it in a code span.')
105
+ process.exit(1)
106
+ }
107
+
108
+ console.log(`check:docs-mdx: all ${pages.length} pages compile as MDX.`)
@@ -175,6 +175,8 @@
175
175
  :register="formRegister"
176
176
  :initialData="formInitialValues || {}"
177
177
  :dialogTitle="tr(formEntry.formTitle) || ''"
178
+ :eyebrow="tr(formEntry.formEyebrow) || ''"
179
+ :subtitle="tr(formEntry.formSubtitle) || ''"
178
180
  :includeFields="formEntry.includeFields || null"
179
181
  :excludeFields="formEntry.excludeFields || []"
180
182
  :fieldOverrides="formEntry.fieldOverrides || {}"
@@ -222,3 +222,7 @@ Controlling the inline action button count — `inlineActionCount` sets how many
222
222
  `showBuildiqButton` is documented in the prop table of the component reference (board look, screens-chrome-parity).
223
223
 
224
224
  Slot `actions-end`: custom buttons after the primary Add button (CnIndexPage's saved views). Under the board look it renders in row 1, after the quick-filter chips.
225
+
226
+ ### Disabled view segments
227
+
228
+ Under the board look `disabledViewModes` (an array of modes) draws view switch segments the page cannot open, in the fixed order table, cards, board, map, disabled and titled "<mode>: not available on this list". A mode that is also offered renders once, enabled. `CnIndexPage` fills it from `config.viewSwitch`.
@@ -23,7 +23,7 @@
23
23
  wrap together to the start of the next line (the DqZaken board),
24
24
  never the switch alone.
25
25
  -->
26
- <div v-if="showSidebarToggle || (showViewToggle && viewSegments.length > 1)"
26
+ <div v-if="showSidebarToggle || $slots['filter-menu'] || (showViewToggle && viewSegments.length > 1)"
27
27
  class="cn-actions-bar__view-controls"
28
28
  data-testid="cn-actions-bar-view-controls">
29
29
  <NcButton v-if="showSidebarToggle"
@@ -42,27 +42,35 @@
42
42
  data-testid="cn-actions-bar-filter-badge"
43
43
  :aria-label="filterCountLabel">{{ filterCount }}</span>
44
44
  </NcButton>
45
+ <!--
46
+ @slot filter-menu
47
+ @description Board look, row 1: the Filter button drawn as a menu, for a page with no filter sidebar (`filterMenu`). Ignored while the sidebar toggle is shown.
48
+ -->
49
+ <slot v-else name="filter-menu" />
45
50
  <div v-if="showViewToggle && viewSegments.length > 1"
46
51
  class="cn-actions-bar__view-toggle"
47
52
  role="group"
48
- :aria-label="t('nextcloud-vue', 'View')">
53
+ :aria-label="t('nextcloud-vue', 'View mode')">
54
+ <!-- A segment the page cannot open (`disabledViewModes`) is drawn, as the board does, but disabled and named so. -->
49
55
  <button
50
56
  v-for="seg in viewSegments"
51
57
  :key="seg.mode"
52
58
  type="button"
53
59
  class="cn-actions-bar__view-toggle-btn"
54
- :class="{ 'cn-actions-bar__view-toggle-btn--active': viewMode === seg.mode }"
60
+ :class="{ 'cn-actions-bar__view-toggle-btn--active': viewMode === seg.mode, 'cn-actions-bar__view-toggle-btn--disabled': seg.disabled }"
55
61
  :aria-pressed="viewMode === seg.mode"
56
62
  :aria-label="seg.label"
57
- :title="seg.label"
58
- @click="$emit('view-mode-change', seg.mode)">
63
+ :title="seg.disabled ? unavailableViewLabel(seg.label) : seg.label"
64
+ :disabled="seg.disabled"
65
+ :data-mode="seg.mode"
66
+ @click="seg.disabled || $emit('view-mode-change', seg.mode)">
59
67
  <CnIcon v-if="seg.icon"
60
68
  :name="seg.icon"
61
- :size="24"
69
+ :size="18"
62
70
  class="cn-actions-bar__view-toggle-icon" />
63
- <component :is="seg.fallback"
71
+ <component :is="seg.boardFallback || seg.fallback"
64
72
  v-else
65
- :size="24"
73
+ :size="18"
66
74
  class="cn-actions-bar__view-toggle-icon" />
67
75
  </button>
68
76
  </div>
@@ -527,6 +535,7 @@ import CalendarMonthOutline from 'vue-material-design-icons/CalendarMonthOutline
527
535
  import Close from 'vue-material-design-icons/Close.vue'
528
536
  import ContentCopy from 'vue-material-design-icons/ContentCopy.vue'
529
537
  import Export from 'vue-material-design-icons/Export.vue'
538
+ import FormatListBulleted from 'vue-material-design-icons/FormatListBulleted.vue'
530
539
  import FormatListBulletedSquare from 'vue-material-design-icons/FormatListBulletedSquare.vue'
531
540
  import Import from 'vue-material-design-icons/Import.vue'
532
541
  import Magnify from 'vue-material-design-icons/Magnify.vue'
@@ -585,6 +594,7 @@ export default {
585
594
  Tune,
586
595
  ViewColumnOutline,
587
596
  ViewGridOutline,
597
+ FormatListBulleted,
588
598
  FormatListBulletedSquare,
589
599
  CalendarMonthOutline,
590
600
  MapMarkerOutline,
@@ -634,6 +644,19 @@ export default {
634
644
  default: () => [],
635
645
  },
636
646
 
647
+ /**
648
+ * Board look: view modes the switch draws although the page cannot
649
+ * open them, as disabled segments (the boards always draw table, cards,
650
+ * board and map). Ignored without the board look.
651
+ *
652
+ * @type {Array<string>}
653
+ * @spec openspec/changes/screens-view-switch-parity/specs/view-switch-board-look/spec.md#requirement-the-manifest-can-draw-segments-the-page-cannot-open
654
+ */
655
+ disabledViewModes: {
656
+ type: Array,
657
+ default: () => [],
658
+ },
659
+
637
660
  /**
638
661
  * The number on the Filter button's badge. Empty (`null`) counts the
639
662
  * `activeFilterChips`.
@@ -1165,11 +1188,15 @@ export default {
1165
1188
  // only when the page offers it. A mode the board switch does not
1166
1189
  // name (list, calendar) follows, so it is never lost.
1167
1190
  defs.board = { label: t('nextcloud-vue', 'Board'), icon: '', fallback: ViewColumnOutline }
1191
+ // The board's list icon: plain bullets, not the boxed ones.
1192
+ defs.table.boardFallback = FormatListBulleted
1193
+ const disabled = (this.disabledViewModes || []).filter((mode) => !modes.includes(mode))
1194
+ const all = [...modes, ...disabled]
1168
1195
  const fixed = ['table', 'cards', 'board', 'map']
1169
- const rest = modes.filter((mode) => !fixed.includes(mode))
1170
- return [...fixed.filter((mode) => modes.includes(mode)), ...rest]
1196
+ const rest = all.filter((mode) => !fixed.includes(mode))
1197
+ return [...fixed.filter((mode) => all.includes(mode)), ...rest]
1171
1198
  .filter((mode) => defs[mode])
1172
- .map((mode) => ({ mode, ...defs[mode] }))
1199
+ .map((mode) => ({ mode, ...defs[mode], disabled: disabled.includes(mode) }))
1173
1200
  }
1174
1201
  return modes
1175
1202
  .filter((mode) => defs[mode])
@@ -1228,6 +1255,16 @@ export default {
1228
1255
  },
1229
1256
 
1230
1257
  methods: {
1258
+ /**
1259
+ * The tooltip of a segment the page cannot open.
1260
+ *
1261
+ * @param {string} label The segment's name.
1262
+ * @return {string} "Map: not available on this list".
1263
+ */
1264
+ unavailableViewLabel(label) {
1265
+ return t('nextcloud-vue', '{view}: not available on this list', { view: label })
1266
+ },
1267
+
1231
1268
  /**
1232
1269
  * The accessible name of a filter chip's remove button.
1233
1270
  *
@@ -84,7 +84,8 @@ With loading state, custom components, translate, permissions, and custom page t
84
84
  | `notificationLabels` | Object | No | `{}` | Labels for the app's notification rules in the user-settings notification pane, keyed `<schema>.<key>` or `<key>`; values are translated strings or `{ nl, en }` maps. A rule without a label reads as its key split into words ("Case assigned"), never as the raw key. Provided to descendants as `cnNotificationLabels` |
85
85
  | `permissions` | Array | No | `[]` | Permission strings for the current user; forwarded to `CnAppNav` for menu filtering |
86
86
  | `pageTypes` | Object | No | `null` | Page-type registry map (`type → component`). Falls back to the library's `defaultPageTypes`. Extend with `{ ...defaultPageTypes, report: MyReportPage }` |
87
- | `userSettingsTitle` | String | No | `''` | Title shown at the top of the hosted `NcAppSettingsDialog`. Empty (the default) resolves to `translate('User settings')`. Override per app to brand the modal (e.g. `'Decidiq preferences'`). |
87
+ | `userSettingsTitle` | String | No | `''` | Title shown at the top of the hosted `NcAppSettingsDialog`. Empty (the default) resolves to "User settings" from the library catalogue ("Persoonlijke instellingen" in Dutch), then the app's `translate`. Override per app to brand the modal (e.g. `'Decidiq preferences'`). |
88
+ | `userSettingsSections` | Array | No | `null` | The user-settings sections to draw, in order: `app` (the app's slot content), `notifications`, `credentials`, `walkthrough`, `integrations`. A key left out is not drawn. `null` keeps the defaults: every section after `#user-settings-sections` content, or only the `#user-settings` content and the integrations section. |
88
89
  | `adminSettingsTitle` | String | No | `''` | Title shown at the top of the admin-settings `NcAppSettingsDialog`. Empty (the default) resolves to `translate('Administration')`. Override per app (e.g. `'Pipelinq administration'`). |
89
90
  | `requiresApps` | Array | No | `['openregister']` | App ids that MUST be installed for the host app to function. Checked against the OCS capabilities API on mount. When any required app is missing, CnAppRoot renders the empty state from the `or-missing` slot (default: `<NcEmptyContent>`) instead of the renderer. Pass `[]` to opt out (e.g. launchpad, the docs/styleguide app) — useful for any consumer that does not depend on OpenRegister. |
90
91
  | `look` | String | No | `''` | The look the app is drawn in: `board` or `nextcloud`. Empty falls back to the manifest's top-level `look`, then `nextcloud`. Provided to descendants as `cnLook`. |
@@ -104,7 +105,8 @@ With loading state, custom components, translate, permissions, and custom page t
104
105
  | `header-actions` | — | Extra buttons rendered in the app header |
105
106
  | `sidebar` | — | Sidebar area rendered alongside `NcAppContent` |
106
107
  | `footer` | — | Footer area rendered inside `NcAppContent` |
107
- | `user-settings` | — | `NcAppSettingsSection` children rendered inside the host `NcAppSettingsDialog`. CnAppRoot always mounts the dialog and exposes `cnOpenUserSettings` via inject; CnAppNav binds it to manifest items declaring `action: "user-settings"`. Defaults to a single placeholder section. |
108
+ | `user-settings-sections` | — | The app's own `NcAppSettingsSection` children, ADDED to the default sections (notifications, credentials, walkthrough replay, integrations). Place, order or hide the defaults with `userSettingsSections`. |
109
+ | `user-settings` | — | The older slot: the app's own `NcAppSettingsSection` children, REPLACING the default sections (only this content and the integrations section are drawn, unless `userSettingsSections` names more). CnAppRoot always mounts the dialog and exposes `cnOpenUserSettings` via inject; CnAppNav binds it to manifest items declaring `action: "user-settings"`. |
108
110
 
109
111
  ## AI Chat Companion — Context push
110
112