@conduction/nextcloud-vue 2.64.0 → 2.66.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 (84) hide show
  1. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +99 -3
  2. package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +23 -7
  4. package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
  5. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js +13 -0
  6. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
  7. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +2 -1
  8. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
  9. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +125 -4
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +439 -381
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  13. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js +9 -3
  14. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js.map +1 -1
  15. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js +1 -1
  16. package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js.map +1 -1
  17. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +142 -26
  18. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  19. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +195 -124
  20. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  21. package/dist/esm/components/CnFkResolveCell/CnFkResolveCell.vue2.js +3 -1
  22. package/dist/esm/components/CnFkResolveCell/CnFkResolveCell.vue2.js.map +1 -1
  23. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +144 -4
  24. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  25. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  26. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js +84 -11
  27. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
  28. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +3 -2
  29. package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
  30. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js +11 -0
  31. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -1
  32. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js +2 -1
  33. package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -1
  34. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  35. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  36. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +22 -3
  37. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  38. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +10 -3
  39. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  40. package/dist/esm/l10n/en.json.js +3 -0
  41. package/dist/esm/l10n/en.json.js.map +1 -1
  42. package/dist/esm/l10n/nl.json.js +3 -0
  43. package/dist/esm/l10n/nl.json.js.map +1 -1
  44. package/dist/esm/mixins/pageViews.js +400 -0
  45. package/dist/esm/mixins/pageViews.js.map +1 -0
  46. package/dist/esm/nextcloud-vue.css +182 -0
  47. package/dist/esm/store/useObjectStore.js +118 -33
  48. package/dist/esm/store/useObjectStore.js.map +1 -1
  49. package/dist/esm/utils/actionsDispatcher.js +25 -2
  50. package/dist/esm/utils/actionsDispatcher.js.map +1 -1
  51. package/dist/esm/utils/columnFilters.js +27 -3
  52. package/dist/esm/utils/columnFilters.js.map +1 -1
  53. package/dist/esm/utils/schema.js +40 -2
  54. package/dist/esm/utils/schema.js.map +1 -1
  55. package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
  56. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  57. package/dist/nextcloud-vue.cjs.js +2001 -684
  58. package/dist/nextcloud-vue.cjs.js.map +2 -2
  59. package/dist/nextcloud-vue.css +182 -0
  60. package/l10n/en.json +3 -0
  61. package/l10n/nl.json +3 -0
  62. package/package.json +1 -1
  63. package/src/components/CnAppNav/CnAppNav.vue +148 -7
  64. package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +14 -0
  65. package/src/components/CnDashboardPage/CnDashboardPage.vue +194 -10
  66. package/src/components/CnDataTable/CnColumnFilterPopover.vue +11 -5
  67. package/src/components/CnDetailPage/CnDetailPage.md +5 -1
  68. package/src/components/CnDetailPage/CnDetailPage.vue +208 -11
  69. package/src/components/CnFkResolveCell/CnFkResolveCell.vue +3 -1
  70. package/src/components/CnFormDialog/CnFormDialog.vue +144 -4
  71. package/src/components/CnHeaderWidget/CnHeaderWidget.vue +100 -13
  72. package/src/components/CnSegmentedControl/CnSegmentedControl.md +1 -1
  73. package/src/components/CnSegmentedControl/CnSegmentedControl.vue +12 -0
  74. package/src/components/CnStagesWidget/CnStagesWidget.vue +9 -0
  75. package/src/components/CnStatWidget/CnStatWidget.vue +33 -5
  76. package/src/css/detail-page.css +27 -0
  77. package/src/css/kpi-card.css +47 -0
  78. package/src/mixins/pageViews.js +396 -0
  79. package/src/schemas/app-manifest-v2.schema.json +51 -2
  80. package/src/store/useObjectStore.js +118 -33
  81. package/src/utils/actionsDispatcher.js +25 -2
  82. package/src/utils/columnFilters.js +29 -2
  83. package/src/utils/schema.js +40 -2
  84. package/src/utils/validateManifestV2.compiled.js +2 -2
@@ -540,17 +540,113 @@ var script = {
540
540
  * Documentation, Features & Roadmap, About.
541
541
  */
542
542
  footerItems() {
543
- return this.visibleItems.filter((item) => item.section === 'footer')
543
+ const footer = this.visibleItems.filter((item) => item.section === 'footer');
544
+ const declared = this.declaredFooter;
545
+ if (declared === null) {
546
+ return footer
547
+ }
548
+ // A declared footer (`nav.footer`) keeps only the entries it names,
549
+ // in the order it names them.
550
+ return declared
551
+ .map((id) => footer.find((item) => item.id === id))
552
+ .filter(Boolean)
553
+ },
554
+
555
+ /**
556
+ * The footer the manifest declares (`nav.footer`): an ordered list of
557
+ * menu entry ids plus the reserved ids `help` (the `nav.help` entry)
558
+ * and `settings` (the settings foldout). Null when the manifest
559
+ * declares none, which keeps today's footer: the help entry, then
560
+ * every `section: "footer"` entry, then the foldout.
561
+ *
562
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
563
+ * @return {Array<string>|null}
564
+ */
565
+ declaredFooter() {
566
+ const declared = this.effectiveManifest?.nav?.footer;
567
+ if (!Array.isArray(declared)) {
568
+ return null
569
+ }
570
+ return declared.filter((id) => typeof id === 'string' && id !== '')
571
+ },
572
+
573
+ /**
574
+ * Footer-section entries a declared footer leaves out. They move into
575
+ * the settings foldout rather than disappearing, so a page such as
576
+ * Store or Reports stays reachable. Empty without `nav.footer`.
577
+ *
578
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
579
+ * @return {Array<object>}
580
+ */
581
+ undeclaredFooterItems() {
582
+ const declared = this.declaredFooter;
583
+ if (declared === null) {
584
+ return []
585
+ }
586
+ return this.visibleItems.filter((item) => item.section === 'footer' && !declared.includes(item.id))
587
+ },
588
+
589
+ /**
590
+ * Whether the help entry renders: whenever it resolves, unless a
591
+ * declared footer leaves `help` out.
592
+ *
593
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
594
+ * @return {boolean}
595
+ */
596
+ showsHelp() {
597
+ if (!this.resolvedHelp) {
598
+ return false
599
+ }
600
+ return this.declaredFooter === null || this.declaredFooter.includes('help')
601
+ },
602
+
603
+ /**
604
+ * Whether the help entry goes AFTER the footer entries. Only a declared
605
+ * footer that names an entry before `help` puts it there; by default
606
+ * it leads the list.
607
+ *
608
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
609
+ * @return {boolean}
610
+ */
611
+ helpAfterItems() {
612
+ const declared = this.declaredFooter;
613
+ if (declared === null) {
614
+ return false
615
+ }
616
+ const help = declared.indexOf('help');
617
+ return this.footerItems.some((item) => declared.indexOf(item.id) < help)
618
+ },
619
+
620
+ /**
621
+ * Whether the settings foldout goes ABOVE the footer list: only when a
622
+ * declared footer names `settings` before every other entry
623
+ * (`["settings", "help"]`, the board's "Instellingen" then "Hulp en
624
+ * uitleg"). Done with CSS `order` on the two siblings, so the markup
625
+ * of both stays as it is.
626
+ *
627
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
628
+ * @return {boolean}
629
+ */
630
+ settingsFirst() {
631
+ const declared = this.declaredFooter;
632
+ return declared !== null && declared.indexOf('settings') === 0
544
633
  },
545
634
 
546
635
  /**
547
636
  * Items that render INSIDE the NcAppNavigationSettings foldout
548
637
  * (section: "settings"). The foldout is the NC-native gear-icon
549
638
  * button that slides a panel open; these entries are app-level
550
- * configuration pages (Forms, Pipelines, Automations, …).
639
+ * configuration pages (Forms, Pipelines, Automations, …). A declared
640
+ * footer (`nav.footer`) adds the footer entries it leaves out.
641
+ *
642
+ * @spec openspec/changes/zuiddrecht-pixel-gaps-2/specs/zuiddrecht-pixel-gaps-2/spec.md#requirement-the-navigation-footer-can-be-declared
643
+ * @return {Array<object>}
551
644
  */
552
645
  settingsItems() {
553
- return this.visibleItems.filter((item) => item.section === 'settings')
646
+ return [
647
+ ...this.visibleItems.filter((item) => item.section === 'settings'),
648
+ ...this.undeclaredFooterItems,
649
+ ]
554
650
  },
555
651
 
556
652
  /**