@conduction/nextcloud-vue 2.56.0-beta.6 → 2.56.0-beta.8

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 (254) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +14 -1
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  4. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +80 -1
  5. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  6. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +46 -4
  7. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  8. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js +232 -10
  9. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js.map +1 -1
  10. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js +79 -25
  11. package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js.map +1 -1
  12. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js +42 -3
  13. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js.map +1 -1
  14. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js +39 -6
  15. package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js.map +1 -1
  16. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +46 -0
  17. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
  18. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +11 -4
  19. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
  20. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js +10 -0
  21. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js.map +1 -0
  22. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js +39 -0
  23. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js.map +1 -0
  24. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js +16 -0
  25. package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js.map +1 -0
  26. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +117 -1
  27. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
  28. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +147 -89
  29. package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
  30. package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +10 -0
  31. package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js.map +1 -0
  32. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +259 -0
  33. package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -0
  34. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +131 -0
  35. package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -0
  36. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js +10 -0
  37. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js.map +1 -0
  38. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +116 -0
  39. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -0
  40. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js +24 -0
  41. package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -0
  42. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +10 -2
  43. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  44. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  45. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +503 -28
  46. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  47. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +303 -144
  48. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  49. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js +10 -0
  50. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js.map +1 -0
  51. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js +237 -0
  52. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js.map +1 -0
  53. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js +120 -0
  54. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js.map +1 -0
  55. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js +10 -0
  56. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js.map +1 -0
  57. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js +77 -0
  58. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js.map +1 -0
  59. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js +27 -0
  60. package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js.map +1 -0
  61. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +171 -12
  62. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  63. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +15 -7
  64. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  65. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js +37 -3
  66. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js.map +1 -1
  67. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js +44 -16
  68. package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js.map +1 -1
  69. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +132 -3
  70. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  71. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +6 -3
  72. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  73. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue.js +10 -0
  74. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue.js.map +1 -0
  75. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js +316 -0
  76. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js.map +1 -0
  77. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js +105 -0
  78. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js.map +1 -0
  79. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue.js +10 -0
  80. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue.js.map +1 -0
  81. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js +150 -0
  82. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js.map +1 -0
  83. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js +106 -0
  84. package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js.map +1 -0
  85. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js +9 -0
  86. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js.map +1 -0
  87. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js +47 -0
  88. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js.map +1 -0
  89. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js +17 -0
  90. package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js.map +1 -0
  91. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +49 -0
  92. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
  93. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
  94. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js +6 -0
  95. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js.map +1 -1
  96. package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue3.js.map +1 -1
  97. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js +46 -0
  98. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js.map +1 -1
  99. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue3.js +15 -3
  100. package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue3.js.map +1 -1
  101. package/dist/esm/components/CnPageRenderer/pageTypes.js +1 -0
  102. package/dist/esm/components/CnPageRenderer/pageTypes.js.map +1 -1
  103. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js +37 -1
  104. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js.map +1 -1
  105. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js +29 -13
  106. package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js.map +1 -1
  107. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js +50 -3
  108. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js.map +1 -1
  109. package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js.map +1 -1
  110. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js +10 -0
  111. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js.map +1 -0
  112. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js +186 -0
  113. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -0
  114. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js +46 -0
  115. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -0
  116. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue.js +11 -0
  117. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue.js.map +1 -0
  118. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js +298 -0
  119. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js.map +1 -0
  120. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js +77 -0
  121. package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js.map +1 -0
  122. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js +10 -0
  123. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js.map +1 -0
  124. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js +169 -0
  125. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js.map +1 -0
  126. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js +48 -0
  127. package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js.map +1 -0
  128. package/dist/esm/components/CnTabs/CnTab.vue2.js +35 -0
  129. package/dist/esm/components/CnTabs/CnTab.vue2.js.map +1 -1
  130. package/dist/esm/components/CnTabs/CnTab.vue3.js.map +1 -1
  131. package/dist/esm/components/CnTabs/CnTabs.vue2.js +120 -7
  132. package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
  133. package/dist/esm/components/CnTabs/CnTabs.vue3.js +57 -5
  134. package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
  135. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +59 -4
  136. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  137. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +6 -2
  138. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  139. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js +10 -0
  140. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js.map +1 -0
  141. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js +484 -0
  142. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js.map +1 -0
  143. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js +115 -0
  144. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js.map +1 -0
  145. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js +10 -0
  146. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js.map +1 -0
  147. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js +189 -0
  148. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js.map +1 -0
  149. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js +74 -0
  150. package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js.map +1 -0
  151. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +82 -8
  152. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  153. package/dist/esm/index.js +16 -0
  154. package/dist/esm/index.js.map +1 -1
  155. package/dist/esm/l10n/en.json.js +55 -1
  156. package/dist/esm/l10n/en.json.js.map +1 -1
  157. package/dist/esm/l10n/nl.json.js +55 -1
  158. package/dist/esm/l10n/nl.json.js.map +1 -1
  159. package/dist/esm/nextcloud-vue.css +1036 -19
  160. package/dist/esm/utils/dateVariant.js +124 -0
  161. package/dist/esm/utils/dateVariant.js.map +1 -0
  162. package/dist/esm/utils/detailActionModel.js +260 -0
  163. package/dist/esm/utils/detailActionModel.js.map +1 -0
  164. package/dist/esm/utils/dueRule.js +84 -0
  165. package/dist/esm/utils/dueRule.js.map +1 -0
  166. package/dist/esm/utils/fetchAggregate.js +37 -1
  167. package/dist/esm/utils/fetchAggregate.js.map +1 -1
  168. package/dist/esm/utils/fetchFilterCounts.js +186 -0
  169. package/dist/esm/utils/fetchFilterCounts.js.map +1 -0
  170. package/dist/esm/utils/headers.js +28 -2
  171. package/dist/esm/utils/headers.js.map +1 -1
  172. package/dist/esm/utils/libraryWidgetKeys.js +5 -0
  173. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  174. package/dist/esm/utils/readPath.js +30 -0
  175. package/dist/esm/utils/readPath.js.map +1 -0
  176. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  177. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  178. package/dist/nextcloud-vue.cjs.js +16019 -9528
  179. package/dist/nextcloud-vue.cjs.js.map +2 -2
  180. package/dist/nextcloud-vue.css +1036 -19
  181. package/l10n/en.json +55 -1
  182. package/l10n/nl.json +55 -1
  183. package/package.json +1 -1
  184. package/scripts/.jsdoc-baselines.json +4 -0
  185. package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
  186. package/src/components/CnAppNav/CnAppNav.md +26 -0
  187. package/src/components/CnAppNav/CnAppNav.vue +145 -2
  188. package/src/components/CnBannerWidget/CnBannerWidget.vue +373 -11
  189. package/src/components/CnBannerWidgetForm/CnBannerWidgetForm.vue +65 -3
  190. package/src/components/CnBoardView/CnBoardView.vue +77 -0
  191. package/src/components/CnBrandStripe/CnBrandStripe.md +22 -0
  192. package/src/components/CnBrandStripe/CnBrandStripe.vue +100 -0
  193. package/src/components/CnBrandStripe/index.js +4 -0
  194. package/src/components/CnCellRenderer/CnCellRenderer.vue +207 -1
  195. package/src/components/CnConversationThread/CnConversationThread.md +51 -0
  196. package/src/components/CnConversationThread/CnConversationThread.vue +457 -0
  197. package/src/components/CnConversationThread/CnConversationWidget.vue +144 -0
  198. package/src/components/CnConversationThread/index.js +4 -0
  199. package/src/components/CnDashboardPage/CnDashboardPage.vue +10 -2
  200. package/src/components/CnDetailPage/CnDetailPage.md +16 -0
  201. package/src/components/CnDetailPage/CnDetailPage.vue +687 -49
  202. package/src/components/CnDocumentReviewList/CnDocumentReviewList.md +55 -0
  203. package/src/components/CnDocumentReviewList/CnDocumentReviewList.vue +384 -0
  204. package/src/components/CnDocumentReviewList/CnDocumentReviewWidget.vue +108 -0
  205. package/src/components/CnDocumentReviewList/index.js +4 -0
  206. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +191 -14
  207. package/src/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue +53 -3
  208. package/src/components/CnIndexPage/CnIndexPage.vue +135 -3
  209. package/src/components/CnLinkCardsPage/CnLinkCardsPage.vue +484 -0
  210. package/src/components/CnLinkCardsPage/index.js +4 -0
  211. package/src/components/CnNextStepCard/CnNextStepCard.md +40 -0
  212. package/src/components/CnNextStepCard/CnNextStepCard.vue +319 -0
  213. package/src/components/CnNextStepCard/CnNextStepWidget.vue +59 -0
  214. package/src/components/CnNextStepCard/index.js +4 -0
  215. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +49 -0
  216. package/src/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue +6 -0
  217. package/src/components/CnObjectKanban/CnObjectKanban.vue +86 -2
  218. package/src/components/CnPageRenderer/pageTypes.js +1 -0
  219. package/src/components/CnQuickFilterBar/CnQuickFilterBar.md +3 -0
  220. package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +60 -1
  221. package/src/components/CnSavedViewsControl/CnSavedViewsControl.vue +50 -3
  222. package/src/components/CnSegmentedControl/CnSegmentedControl.md +46 -0
  223. package/src/components/CnSegmentedControl/CnSegmentedControl.vue +291 -0
  224. package/src/components/CnSegmentedControl/index.js +4 -0
  225. package/src/components/CnStackedBarWidget/CnStackedBarWidget.md +15 -0
  226. package/src/components/CnStackedBarWidget/CnStackedBarWidget.vue +414 -0
  227. package/src/components/CnStackedBarWidget/index.js +14 -0
  228. package/src/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue +224 -0
  229. package/src/components/CnStackedBarWidgetForm/index.js +4 -0
  230. package/src/components/CnTabs/CnTab.vue +35 -0
  231. package/src/components/CnTabs/CnTabs.vue +244 -10
  232. package/src/components/CnTabsWidget/CnTabsWidget.vue +63 -4
  233. package/src/components/CnWeekStripWidget/CnWeekStripWidget.md +31 -0
  234. package/src/components/CnWeekStripWidget/CnWeekStripWidget.vue +668 -0
  235. package/src/components/CnWeekStripWidget/index.js +14 -0
  236. package/src/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue +265 -0
  237. package/src/components/CnWeekStripWidgetForm/index.js +4 -0
  238. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +74 -0
  239. package/src/components/index.js +12 -0
  240. package/src/css/detail-page.css +57 -2
  241. package/src/index.js +16 -0
  242. package/src/schemas/app-manifest-v2.schema.json +433 -3
  243. package/src/schemas/app-manifest.schema.json +2 -1
  244. package/src/types/manifest.d.ts +1 -1
  245. package/src/utils/dateVariant.js +120 -0
  246. package/src/utils/detailActionModel.js +256 -0
  247. package/src/utils/dueRule.js +94 -0
  248. package/src/utils/fetchAggregate.js +36 -0
  249. package/src/utils/fetchFilterCounts.js +182 -0
  250. package/src/utils/headers.js +28 -2
  251. package/src/utils/index.js +1 -0
  252. package/src/utils/libraryWidgetKeys.js +5 -0
  253. package/src/utils/readPath.js +27 -0
  254. package/src/utils/validateManifestV2.compiled.js +2 -2
package/l10n/en.json CHANGED
@@ -294,6 +294,26 @@
294
294
  "JSON pointer": "JSON pointer",
295
295
  "Last": "Last",
296
296
  "Load more": "Load more",
297
+ "Nothing to open here.": "Nothing to open here.",
298
+ "To do": "To do",
299
+ "Next step": "Next step",
300
+ "Review": "Review",
301
+ "No documents to review.": "No documents to review.",
302
+ "Partly public": "Partly public",
303
+ "To review": "To review",
304
+ "{reviewed} of {total} reviewed": "{reviewed} of {total} reviewed",
305
+ "Documents to review": "Documents to review",
306
+ "Reply": "Reply",
307
+ "Send": "Send",
308
+ "You": "You",
309
+ "No messages yet.": "No messages yet.",
310
+ "Conversation": "Conversation",
311
+ "The message could not be sent. Try again.": "The message could not be sent. Try again.",
312
+ "More": "More",
313
+ "More tabs": "More tabs",
314
+ "Due soon": "Due soon",
315
+ "Administration": "Administration",
316
+ "Details": "Details",
297
317
  "Actor": "Actor",
298
318
  "All types": "All types",
299
319
  "All actors": "All actors",
@@ -993,7 +1013,41 @@
993
1013
  "Capabilities in {group}, rated per system.": "Capabilities in {group}, rated per system.",
994
1014
  "Yes": "Yes",
995
1015
  "Partial": "Partial",
996
- "No": "No"
1016
+ "No": "No",
1017
+ "Nothing planned": "Nothing planned",
1018
+ "today": "today",
1019
+ "Late": "Late",
1020
+ "This week, day by day": "This week, day by day",
1021
+ "The items for this week could not be loaded.": "The items for this week could not be loaded.",
1022
+ "Nothing to show yet": "Nothing to show yet",
1023
+ "The numbers could not be loaded.": "The numbers could not be loaded.",
1024
+ "Date field": "Date field",
1025
+ "Title field": "Title field",
1026
+ "Extra fields under the title (comma separated)": "Extra fields under the title (comma separated)",
1027
+ "Days shown": "Days shown",
1028
+ "Page an item opens (page id, optional)": "Page an item opens (page id, optional)",
1029
+ "Text for a day without items": "Text for a day without items",
1030
+ "A date field is required": "A date field is required",
1031
+ "Field to group by": "Field to group by",
1032
+ "Order of the segments (values, comma separated)": "Order of the segments (values, comma separated)",
1033
+ "Text when there is nothing to count": "Text when there is nothing to count",
1034
+ "A field to group by is required": "A field to group by is required",
1035
+ "Layout": "Layout",
1036
+ "Label above the title": "Label above the title",
1037
+ "Reason (why this needs attention)": "Reason (why this needs attention)",
1038
+ "The actions of an attention card are declared in the manifest.": "The actions of an attention card are declared in the manifest.",
1039
+ "An attention card needs a title": "An attention card needs a title",
1040
+ "Good morning, {name}": "Good morning, {name}",
1041
+ "Good morning": "Good morning",
1042
+ "Good afternoon, {name}": "Good afternoon, {name}",
1043
+ "Good afternoon": "Good afternoon",
1044
+ "Good evening, {name}": "Good evening, {name}",
1045
+ "Good evening": "Good evening",
1046
+ "Greet the user by name instead of showing the title": "Greet the user by name instead of showing the title",
1047
+ "Show the date of today above the heading": "Show the date of today above the heading",
1048
+ "Plain header without a coloured background": "Plain header without a coloured background",
1049
+ "Loading…": "Loading…",
1050
+ "A register and schema are required": "A register and schema are required"
997
1051
  },
998
1052
  "plurals": {
999
1053
  "%n year": ["%n year", "%n years"],
package/l10n/nl.json CHANGED
@@ -294,6 +294,26 @@
294
294
  "JSON pointer": "JSON-aanwijzer",
295
295
  "Last": "Laatste",
296
296
  "Load more": "Meer laden",
297
+ "Nothing to open here.": "Hier is niets te openen.",
298
+ "To do": "Nog doen",
299
+ "Next step": "Volgende stap",
300
+ "Review": "Beoordelen",
301
+ "No documents to review.": "Geen documenten om te beoordelen.",
302
+ "Partly public": "Deels openbaar",
303
+ "To review": "Nog beoordelen",
304
+ "{reviewed} of {total} reviewed": "{reviewed} van {total} beoordeeld",
305
+ "Documents to review": "Documenten om te beoordelen",
306
+ "Reply": "Antwoord",
307
+ "Send": "Versturen",
308
+ "You": "U",
309
+ "No messages yet.": "Nog geen berichten.",
310
+ "Conversation": "Gesprek",
311
+ "The message could not be sent. Try again.": "Het bericht is niet verstuurd. Probeer het opnieuw.",
312
+ "More": "Meer",
313
+ "More tabs": "Meer tabbladen",
314
+ "Due soon": "Bijna te laat",
315
+ "Administration": "Beheer",
316
+ "Details": "Details",
297
317
  "Actor": "Actor",
298
318
  "All types": "Alle typen",
299
319
  "All actors": "Alle actoren",
@@ -1037,7 +1057,41 @@
1037
1057
  "Capabilities in {group}, rated per system.": "Functionaliteiten in {group}, beoordeeld per systeem.",
1038
1058
  "Yes": "Ja",
1039
1059
  "Partial": "Gedeeltelijk",
1040
- "No": "Nee"
1060
+ "No": "Nee",
1061
+ "Nothing planned": "Niets gepland",
1062
+ "today": "vandaag",
1063
+ "Late": "Te laat",
1064
+ "This week, day by day": "Deze week, dag voor dag",
1065
+ "The items for this week could not be loaded.": "De items van deze week konden niet worden geladen.",
1066
+ "Nothing to show yet": "Nog niets te tonen",
1067
+ "The numbers could not be loaded.": "De aantallen konden niet worden geladen.",
1068
+ "Date field": "Datumveld",
1069
+ "Title field": "Titelveld",
1070
+ "Extra fields under the title (comma separated)": "Extra velden onder de titel (gescheiden door komma's)",
1071
+ "Days shown": "Aantal dagen",
1072
+ "Page an item opens (page id, optional)": "Pagina die een item opent (pagina-id, optioneel)",
1073
+ "Text for a day without items": "Tekst voor een dag zonder items",
1074
+ "A date field is required": "Een datumveld is verplicht",
1075
+ "Field to group by": "Veld om op te groeperen",
1076
+ "Order of the segments (values, comma separated)": "Volgorde van de segmenten (waarden, gescheiden door komma's)",
1077
+ "Text when there is nothing to count": "Tekst als er niets te tellen is",
1078
+ "A field to group by is required": "Een veld om op te groeperen is verplicht",
1079
+ "Layout": "Opmaak",
1080
+ "Label above the title": "Label boven de titel",
1081
+ "Reason (why this needs attention)": "Reden (waarom dit aandacht vraagt)",
1082
+ "The actions of an attention card are declared in the manifest.": "De acties van een aandachtskaart staan in het manifest.",
1083
+ "An attention card needs a title": "Een aandachtskaart heeft een titel nodig",
1084
+ "Good morning, {name}": "Goedemorgen, {name}",
1085
+ "Good morning": "Goedemorgen",
1086
+ "Good afternoon, {name}": "Goedemiddag, {name}",
1087
+ "Good afternoon": "Goedemiddag",
1088
+ "Good evening, {name}": "Goedenavond, {name}",
1089
+ "Good evening": "Goedenavond",
1090
+ "Greet the user by name instead of showing the title": "Begroet de gebruiker bij naam in plaats van de titel te tonen",
1091
+ "Show the date of today above the heading": "Toon de datum van vandaag boven de kop",
1092
+ "Plain header without a coloured background": "Eenvoudige kop zonder gekleurde achtergrond",
1093
+ "Loading…": "Laden…",
1094
+ "A register and schema are required": "Een register en schema zijn verplicht"
1041
1095
  },
1042
1096
  "plurals": {
1043
1097
  "%n year": ["%n jaar", "%n jaar"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduction/nextcloud-vue",
3
- "version": "2.56.0-beta.6",
3
+ "version": "2.56.0-beta.8",
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": {
@@ -41,6 +41,7 @@
41
41
  "CnContainerWidget": 1,
42
42
  "CnContainerWidgetForm": 1,
43
43
  "CnContextMenu": 1,
44
+ "CnConversationThread": 1,
44
45
  "CnCopyDialog": 0.82,
45
46
  "CnCospendCreate": 1,
46
47
  "CnCospendPicker": 1,
@@ -67,6 +68,7 @@
67
68
  "CnDetailWidgetHost": 1,
68
69
  "CnDividerWidget": 1,
69
70
  "CnDividerWidgetForm": 1,
71
+ "CnDocumentReviewList": 1,
70
72
  "CnEmailPicker": 1,
71
73
  "CnExportWizard": 1,
72
74
  "CnFacetSidebar": 0.78,
@@ -128,6 +130,7 @@
128
130
  "CnLifecycleActions": 1,
129
131
  "CnLinkButtonWidget": 1,
130
132
  "CnLinkButtonWidgetForm": 1,
133
+ "CnLinkCardsPage": 1,
131
134
  "CnLinksWidget": 1,
132
135
  "CnLinksWidgetForm": 1,
133
136
  "CnLockedBanner": 1,
@@ -152,6 +155,7 @@
152
155
  "CnNcDashboardWidgetForm": 1,
153
156
  "CnNcWidgetGridPicker": 1,
154
157
  "CnNcWidgetWidget": 1,
158
+ "CnNextStepCard": 1,
155
159
  "CnNoteCard": 0.67,
156
160
  "CnNotesCard": 0.81,
157
161
  "CnNotificationPreferences": 1,
@@ -490,6 +490,19 @@ export default {
490
490
  default: () => t('nextcloud-vue', 'Actions'),
491
491
  },
492
492
 
493
+ /**
494
+ * Tell the menu that `#primary-items` has content. Only needed by a
495
+ * host that switches every built-in item off: the menu decides whether
496
+ * to render at all in a computed, and a slot that fills in later (a
497
+ * page's actions arrive after mount) is not something a computed
498
+ * notices. With any built-in item showing, the menu renders anyway
499
+ * and this changes nothing.
500
+ */
501
+ hasPrimaryItems: {
502
+ type: Boolean,
503
+ default: false,
504
+ },
505
+
493
506
  /**
494
507
  * Prefix for the `data-testid`s emitted on the menu container and
495
508
  * its items: `<base>-actions` (container), `<base>-action-refresh`,
@@ -542,7 +555,7 @@ export default {
542
555
  if (this.showRequestFeature) {
543
556
  return true
544
557
  }
545
- if (this.$slots['primary-items']) {
558
+ if (this.hasPrimaryItems || this.$slots['primary-items']) {
546
559
  return true
547
560
  }
548
561
  return Boolean(this.$slots['action-items']) || Boolean(this.$slots && this.$slots['action-items'])
@@ -159,3 +159,29 @@ export default {
159
159
  }
160
160
  </script>
161
161
  ```
162
+
163
+ A brand block at the top. The `brand` prop takes a logo, a name and a caption, and the manifest's `nav.brand` is the fallback. Use the `#brand` slot to draw the block yourself:
164
+
165
+ ```vue {static}
166
+ <template>
167
+ <div style="height: 240px; width: 260px; background: var(--color-main-background); border: 1px solid var(--color-border); border-radius: 8px; overflow: hidden;">
168
+ <CnAppNav
169
+ :manifest="manifest"
170
+ :brand="{ name: 'dossiq', caption: 'Gemeente Zuiddrecht' }"
171
+ :translate="(key) => key" />
172
+ </div>
173
+ </template>
174
+ <script>
175
+ export default {
176
+ data() {
177
+ return {
178
+ manifest: {
179
+ menu: [
180
+ { id: 'cases', label: 'All cases', icon: 'icon-folder', route: 'cases', order: 1 },
181
+ ],
182
+ },
183
+ }
184
+ },
185
+ }
186
+ </script>
187
+ ```
@@ -75,7 +75,34 @@
75
75
  -->
76
76
  <template>
77
77
  <NcAppNavigation :aria-label="ariaLabel" data-testid="cn-nav">
78
- <template v-if="$slots.search || $slots.search" #search>
78
+ <template v-if="$slots.search || $slots.brand || resolvedBrand" #search>
79
+ <!--
80
+ @slot brand
81
+ @description Replace the brand block at the very top of the
82
+ navigation. Default content: the logo, name and caption from
83
+ the `brand` prop or the manifest's `nav.brand`. Renders
84
+ nothing when neither is set.
85
+ @binding {object|null} brand The resolved brand (`{ logo, name, caption, alt }`), or null.
86
+ -->
87
+ <slot name="brand" :brand="resolvedBrand">
88
+ <div
89
+ v-if="resolvedBrand"
90
+ class="cn-app-nav__brand"
91
+ data-testid="cn-nav-brand">
92
+ <!-- Decorative beside a name: the name already says whose
93
+ app this is, and an alt text would say it twice. A logo
94
+ on its own carries the name as its alt text. -->
95
+ <img
96
+ v-if="resolvedBrand.logo"
97
+ class="cn-app-nav__brand-logo"
98
+ :src="resolvedBrand.logo"
99
+ :alt="resolvedBrand.name ? '' : resolvedBrand.alt">
100
+ <span v-if="resolvedBrand.name || resolvedBrand.caption" class="cn-app-nav__brand-text">
101
+ <strong v-if="resolvedBrand.name" class="cn-app-nav__brand-name">{{ resolvedBrand.name }}</strong>
102
+ <span v-if="resolvedBrand.caption" class="cn-app-nav__brand-caption">{{ resolvedBrand.caption }}</span>
103
+ </span>
104
+ </div>
105
+ </slot>
79
106
  <!--
80
107
  @slot search
81
108
  @description Forwarded into NcAppNavigation's #search slot.
@@ -531,6 +558,20 @@ export default {
531
558
  type: String,
532
559
  default: () => t('nextcloud-vue', 'Main navigation'),
533
560
  },
561
+
562
+ /**
563
+ * The brand block at the top of the navigation:
564
+ * `{ logo?, name?, caption?, alt? }`. `logo` is an image URL, `name`
565
+ * the app or organisation name, `caption` a line under it. Falls back
566
+ * to the manifest's `nav.brand`. `null` (the default) with no manifest
567
+ * brand renders nothing.
568
+ *
569
+ * @type {{logo?: string, name?: string, caption?: string, alt?: string}|null}
570
+ */
571
+ brand: {
572
+ type: Object,
573
+ default: null,
574
+ },
534
575
  },
535
576
 
536
577
  emits: ['primary-action', 'primary-action-click'],
@@ -560,6 +601,31 @@ export default {
560
601
  return this.translate ?? this.cnTranslate
561
602
  },
562
603
 
604
+ /**
605
+ * The brand to draw: the `brand` prop, else the manifest's
606
+ * `nav.brand`. Name and caption go through the translate function,
607
+ * like every other manifest label. Null when there is nothing to
608
+ * show, which is what keeps the block out of a navigation that
609
+ * declares no brand.
610
+ *
611
+ * @return {{logo: string, name: string, caption: string, alt: string}|null} The brand, or null.
612
+ * @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-navigation-brand
613
+ */
614
+ resolvedBrand() {
615
+ const declared = this.brand ?? this.effectiveManifest?.nav?.brand
616
+ if (!declared || typeof declared !== 'object') {
617
+ return null
618
+ }
619
+ const text = (value) => (typeof value === 'string' && value !== '' ? this.effectiveTranslate(value) : '')
620
+ const brand = {
621
+ logo: typeof declared.logo === 'string' ? declared.logo : '',
622
+ name: text(declared.name),
623
+ caption: text(declared.caption),
624
+ alt: text(declared.alt),
625
+ }
626
+ return (brand.logo || brand.name || brand.caption) ? brand : null
627
+ },
628
+
563
629
  /**
564
630
  * Manifest-declared root-level primary action (`nav.primaryAction`)
565
631
  * — retained for backwards compatibility with code that reads this
@@ -1118,11 +1184,51 @@ export default {
1118
1184
  return this.effectiveTranslate(item.label)
1119
1185
  },
1120
1186
 
1187
+ /**
1188
+ * Whether a menu entry is the page the reader is on.
1189
+ *
1190
+ * Two entries may share a route and differ only in `query` ("My
1191
+ * work" and "Queue" on one list). The route name alone lit both. An
1192
+ * entry with a `query` is active only when the address carries that
1193
+ * query; an entry without one steps back when a sibling's query
1194
+ * matches, so exactly one of them is marked.
1195
+ *
1196
+ * @param {object} item Menu entry.
1197
+ * @return {boolean} True when the entry is the current page.
1198
+ * @spec openspec/changes/link-cards-page/specs/link-cards-page/spec.md#requirement-menu-entries-that-differ-in-query
1199
+ */
1121
1200
  isActive(item) {
1122
1201
  if (item.href || !item.route) {
1123
1202
  return false
1124
1203
  }
1125
- return item.route === this.activeRouteName
1204
+ if (item.route !== this.activeRouteName) {
1205
+ return false
1206
+ }
1207
+ if (item.query && typeof item.query === 'object') {
1208
+ return this.queryMatches(item)
1209
+ }
1210
+ const siblings = []
1211
+ for (const entry of this.visibleItems) {
1212
+ siblings.push(entry, ...this.visibleChildren(entry))
1213
+ }
1214
+ return !siblings.some((entry) => entry !== item
1215
+ && entry.route === item.route
1216
+ && entry.query && typeof entry.query === 'object'
1217
+ && this.queryMatches(entry))
1218
+ },
1219
+
1220
+ /**
1221
+ * Whether the address carries every key of an entry's `query`.
1222
+ * Values are compared as strings, since an address has no numbers.
1223
+ *
1224
+ * @param {object} item Menu entry with a `query`.
1225
+ * @return {boolean} True when every declared key matches.
1226
+ * @spec openspec/changes/link-cards-page/specs/link-cards-page/spec.md#requirement-menu-entries-that-differ-in-query
1227
+ */
1228
+ queryMatches(item) {
1229
+ const current = this.$route?.query ?? {}
1230
+ const keys = Object.keys(item.query)
1231
+ return keys.length > 0 && keys.every((key) => String(current[key] ?? '') === String(item.query[key]))
1126
1232
  },
1127
1233
 
1128
1234
  /**
@@ -1479,6 +1585,43 @@ export default {
1479
1585
  </script>
1480
1586
 
1481
1587
  <style>
1588
+ /* The brand block at the top of the navigation. */
1589
+ .cn-app-nav__brand {
1590
+ align-items: center;
1591
+ display: flex;
1592
+ gap: calc(2.5 * var(--default-grid-baseline));
1593
+ min-width: 0;
1594
+ padding: calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline));
1595
+ }
1596
+
1597
+ .cn-app-nav__brand-logo {
1598
+ flex: none;
1599
+ height: 34px;
1600
+ max-width: 50%;
1601
+ object-fit: contain;
1602
+ width: auto;
1603
+ }
1604
+
1605
+ .cn-app-nav__brand-text {
1606
+ display: flex;
1607
+ flex-direction: column;
1608
+ line-height: 1.15;
1609
+ min-width: 0;
1610
+ }
1611
+
1612
+ .cn-app-nav__brand-name {
1613
+ color: var(--color-main-text);
1614
+ font-size: 1.2em;
1615
+ font-weight: 700;
1616
+ overflow-wrap: anywhere;
1617
+ }
1618
+
1619
+ .cn-app-nav__brand-caption {
1620
+ color: var(--color-text-maxcontrast);
1621
+ font-size: 0.85em;
1622
+ overflow-wrap: anywhere;
1623
+ }
1624
+
1482
1625
  /*
1483
1626
  * The legacy `icon-*` classes in Nextcloud render a background-image
1484
1627
  * with a hardcoded dark fill, so they stay grey when an entry becomes