@conduction/nextcloud-vue 2.100.0 → 2.101.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 (127) hide show
  1. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
  2. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +22 -1
  3. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  4. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +26 -16
  5. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  6. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  7. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +51 -7
  8. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  9. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +104 -73
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  11. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue.js +9 -0
  12. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue.js.map +1 -0
  13. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue2.js +139 -0
  14. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue2.js.map +1 -0
  15. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue3.js +76 -0
  16. package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue3.js.map +1 -0
  17. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
  18. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +160 -2
  19. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
  20. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +206 -94
  21. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
  22. package/dist/esm/components/CnFilesBrowser/filesReview.js +61 -0
  23. package/dist/esm/components/CnFilesBrowser/filesReview.js.map +1 -0
  24. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue.js +9 -0
  25. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue.js.map +1 -0
  26. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue2.js +279 -0
  27. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue2.js.map +1 -0
  28. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue3.js +122 -0
  29. package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue3.js.map +1 -0
  30. package/dist/esm/components/CnGroupedCardsWidget/index.js +29 -0
  31. package/dist/esm/components/CnGroupedCardsWidget/index.js.map +1 -0
  32. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +251 -71
  33. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  34. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +317 -209
  35. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  36. package/dist/esm/components/CnIndexPage/useNamedSource.js +4 -1
  37. package/dist/esm/components/CnIndexPage/useNamedSource.js.map +1 -1
  38. package/dist/esm/components/CnMapWidget/CnMapWidget.vue.js +1 -1
  39. package/dist/esm/components/CnMapWidget/CnMapWidget.vue2.js +15 -0
  40. package/dist/esm/components/CnMapWidget/CnMapWidget.vue2.js.map +1 -1
  41. package/dist/esm/components/CnMapWidget/CnMapWidget.vue3.js.map +1 -1
  42. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue.js +1 -1
  43. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +14 -1
  44. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  45. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +14 -6
  46. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  47. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue.js +1 -1
  48. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +10 -0
  49. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
  50. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +6 -1
  51. package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
  52. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js +1 -1
  53. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js +91 -4
  54. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js.map +1 -1
  55. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js +63 -38
  56. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js.map +1 -1
  57. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue.js +9 -0
  58. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue.js.map +1 -0
  59. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue2.js +175 -0
  60. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue2.js.map +1 -0
  61. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue3.js +77 -0
  62. package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue3.js.map +1 -0
  63. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
  64. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +35 -2
  65. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  66. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  67. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +4 -0
  68. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  69. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  70. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  71. package/dist/esm/composables/indexSources.js +167 -20
  72. package/dist/esm/composables/indexSources.js.map +1 -1
  73. package/dist/esm/composables/useEndpointSource.js +28 -6
  74. package/dist/esm/composables/useEndpointSource.js.map +1 -1
  75. package/dist/esm/index.js +1 -0
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/l10n/en.json.js +37 -1
  78. package/dist/esm/l10n/en.json.js.map +1 -1
  79. package/dist/esm/l10n/nl.json.js +35 -1
  80. package/dist/esm/l10n/nl.json.js.map +1 -1
  81. package/dist/esm/library-style.js +1 -1
  82. package/dist/esm/nextcloud-vue.css +769 -251
  83. package/dist/esm/utils/languageMapText.js +50 -0
  84. package/dist/esm/utils/languageMapText.js.map +1 -0
  85. package/dist/esm/utils/libraryWidgetKeys.js +3 -0
  86. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  87. package/dist/esm/utils/mapList.js +71 -0
  88. package/dist/esm/utils/mapList.js.map +1 -0
  89. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  90. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  91. package/dist/nextcloud-vue.cjs.js +8977 -6843
  92. package/dist/nextcloud-vue.cjs.js.map +2 -2
  93. package/dist/nextcloud-vue.css +769 -251
  94. package/l10n/en.json +37 -1
  95. package/l10n/nl.json +35 -1
  96. package/package.json +1 -1
  97. package/src/components/CnChoiceCards/CnChoiceCards.md +39 -0
  98. package/src/components/CnChoiceCards/CnChoiceCards.vue +93 -16
  99. package/src/components/CnDashboardPage/CnDashboardPage.vue +89 -20
  100. package/src/components/CnExportsWidget/CnExportsWidget.vue +233 -0
  101. package/src/components/CnExportsWidget/index.js +7 -0
  102. package/src/components/CnFilesBrowser/CnFilesBrowser.vue +324 -0
  103. package/src/components/CnFilesBrowser/filesReview.js +57 -0
  104. package/src/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue +433 -0
  105. package/src/components/CnGroupedCardsWidget/index.js +28 -0
  106. package/src/components/CnIndexPage/CnIndexPage.vue +240 -4
  107. package/src/components/CnIndexPage/useNamedSource.js +4 -1
  108. package/src/components/CnMapWidget/CnMapWidget.vue +37 -0
  109. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +29 -1
  110. package/src/components/CnObjectSidebar/CnFilesTab.vue +15 -0
  111. package/src/components/CnOrderedListField/CnOrderedListField.vue +151 -5
  112. package/src/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue +272 -0
  113. package/src/components/CnSavedViewAlertWidget/index.js +7 -0
  114. package/src/components/CnSetupWizard/CnSetupWizard.vue +35 -2
  115. package/src/components/CnWidgetGrid/builtInWidgets.js +4 -0
  116. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  117. package/src/components/index.js +3 -0
  118. package/src/composables/indexSources.js +166 -19
  119. package/src/composables/useEndpointSource.js +28 -6
  120. package/src/css/index-page.css +117 -0
  121. package/src/css/look-board.css +44 -0
  122. package/src/index.js +1 -0
  123. package/src/schemas/app-manifest-v2.schema.json +31 -1
  124. package/src/utils/languageMapText.js +46 -0
  125. package/src/utils/libraryWidgetKeys.js +3 -0
  126. package/src/utils/mapList.js +67 -0
  127. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -14,11 +14,12 @@ import ImportIcon from 'vue-material-design-icons/Import.vue';
14
14
  import TrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue';
15
15
  import Tune from 'vue-material-design-icons/Tune.vue';
16
16
  import ViewColumnOutline from 'vue-material-design-icons/ViewColumnOutline.vue';
17
- import __sfc_main$x from '../../dialogs/CnConfirmDialog.vue.js';
18
- import __sfc_main$y from '../../dialogs/CnQuickEditDialog.vue.js';
19
- import __sfc_main$1 from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
20
- import __sfc_main$3 from '../CnEmptyContent/CnEmptyContent.vue.js';
21
- import __sfc_main$2 from '../CnFollowToggle/CnFollowToggle.vue.js';
17
+ import __sfc_main$y from '../../dialogs/CnConfirmDialog.vue.js';
18
+ import __sfc_main$z from '../../dialogs/CnQuickEditDialog.vue.js';
19
+ import __sfc_main$2 from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
20
+ import __sfc_main$4 from '../CnEmptyContent/CnEmptyContent.vue.js';
21
+ import __sfc_main$3 from '../CnFollowToggle/CnFollowToggle.vue.js';
22
+ import __sfc_main$1 from '../CnStatusBadge/CnStatusBadge.vue.js';
22
23
  import __sfc_main from './CnIndexPageWidgets.vue.js';
23
24
  import { useLook } from '../../composables/useLook.js';
24
25
  import { copyKindsOf } from '../../composables/useObjectCopy.js';
@@ -37,6 +38,7 @@ import { lensUnavailableText } from '../../utils/lensAvailability.js';
37
38
  import { isModifiedClick, openRowTarget } from '../../utils/linkNavigation.js';
38
39
  import { resolveClaimedTeams, splitViewsIntoTabs, viewAsTab, resolveClaimTokens, viewIdOf } from '../../utils/listLenses.js';
39
40
  import { LIST_SHORTCUTS, listPaletteCommands, shortcutFor } from '../../utils/listShortcuts.js';
41
+ import { mapListItems } from '../../utils/mapList.js';
40
42
  import { multiKeySort } from '../../utils/multiKeySort.js';
41
43
  import { fetchGroups } from '../../utils/nextcloudDirectory.js';
42
44
  import { OBJECTS_CHANGED_EVENT } from '../../utils/objectSignals.js';
@@ -53,38 +55,38 @@ import { viewMatchesScope, extractViewState, buildRouteQueryFromViewState, extra
53
55
  import { fieldsFromSchema, columnsFromSchema } from '../../utils/schema.js';
54
56
  import { resolveScopeLayout, resolveScopePresentation } from '../../utils/scopeListLayout.js';
55
57
  import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js';
56
- import __sfc_main$6 from '../CnActionButtons/CnActionButtons.vue.js';
57
- import __sfc_main$7 from '../CnActionsBar/CnActionsBar.vue.js';
58
- import __sfc_main$q from '../CnAdvancedFormDialog/CnAdvancedFormDialog.vue.js';
58
+ import __sfc_main$7 from '../CnActionButtons/CnActionButtons.vue.js';
59
+ import __sfc_main$8 from '../CnActionsBar/CnActionsBar.vue.js';
60
+ import __sfc_main$r from '../CnAdvancedFormDialog/CnAdvancedFormDialog.vue.js';
59
61
  import '../CnAdvancedFormDialog/CnMetadataTab.vue.js';
60
62
  import '../CnAdvancedFormDialog/CnPropertiesTab.vue.js';
61
63
  import '../CnAdvancedFormDialog/CnPropertyValueCell.vue.js';
62
- import __sfc_main$b from '../CnBoardView/CnBoardView.vue.js';
63
- import __sfc_main$a from '../CnCardGrid/CnCardGrid.vue.js';
64
- import __sfc_main$r from '../CnContextMenu/CnContextMenu.vue.js';
65
- import __sfc_main$o from '../CnCopyDialog/CnCopyDialog.vue.js';
66
- import __sfc_main$9 from '../CnDataTable/CnDataTable.vue.js';
67
- import __sfc_main$c from '../CnDateAxisView/CnDateAxisView.vue.js';
68
- import __sfc_main$n from '../CnDeleteDialog/CnDeleteDialog.vue.js';
69
- import __sfc_main$g from '../CnFolderSidebar/CnFolderSidebar.vue.js';
70
- import __sfc_main$p from '../CnFormDialog/CnFormDialog.vue.js';
71
- import __sfc_main$8 from '../CnIcon/CnIcon.vue.js';
72
- import __sfc_main$s from '../CnIndexSidebar/CnIndexSidebar.vue.js';
73
- import __sfc_main$e from '../CnMapWidget/CnMapWidget.vue.js';
74
- import __sfc_main$k from '../CnMassCopyDialog/CnMassCopyDialog.vue.js';
75
- import __sfc_main$j from '../CnMassDeleteDialog/CnMassDeleteDialog.vue.js';
76
- import __sfc_main$l from '../CnMassExportDialog/CnMassExportDialog.vue.js';
77
- import __sfc_main$m from '../CnMassImportDialog/CnMassImportDialog.vue.js';
78
- import __sfc_main$d from '../CnObjectCalendar/CnObjectCalendar.vue.js';
79
- import __sfc_main$f from '../CnObjectList/CnObjectList.vue.js';
80
- import __sfc_main$4 from '../CnPageHeader/CnPageHeader.vue.js';
81
- import __sfc_main$h from '../CnPagination/CnPagination.vue.js';
82
- import __sfc_main$5 from '../CnQuickFilterBar/CnQuickFilterBar.vue.js';
83
- import __sfc_main$i from '../CnRowActions/CnRowActions.vue.js';
84
- import __sfc_main$u from '../CnSavedViewPresentationDialog/CnSavedViewPresentationDialog.vue.js';
85
- import __sfc_main$t from '../CnSavedViewsControl/CnSavedViewsControl.vue.js';
86
- import __sfc_main$v from '../CnSavedViewShareDialog/CnSavedViewShareDialog.vue.js';
87
- import __sfc_main$w from '../CnSaveViewDialog/CnSaveViewDialog.vue.js';
64
+ import __sfc_main$c from '../CnBoardView/CnBoardView.vue.js';
65
+ import __sfc_main$b from '../CnCardGrid/CnCardGrid.vue.js';
66
+ import __sfc_main$s from '../CnContextMenu/CnContextMenu.vue.js';
67
+ import __sfc_main$p from '../CnCopyDialog/CnCopyDialog.vue.js';
68
+ import __sfc_main$a from '../CnDataTable/CnDataTable.vue.js';
69
+ import __sfc_main$d from '../CnDateAxisView/CnDateAxisView.vue.js';
70
+ import __sfc_main$o from '../CnDeleteDialog/CnDeleteDialog.vue.js';
71
+ import __sfc_main$h from '../CnFolderSidebar/CnFolderSidebar.vue.js';
72
+ import __sfc_main$q from '../CnFormDialog/CnFormDialog.vue.js';
73
+ import __sfc_main$9 from '../CnIcon/CnIcon.vue.js';
74
+ import __sfc_main$t from '../CnIndexSidebar/CnIndexSidebar.vue.js';
75
+ import __sfc_main$f from '../CnMapWidget/CnMapWidget.vue.js';
76
+ import __sfc_main$l from '../CnMassCopyDialog/CnMassCopyDialog.vue.js';
77
+ import __sfc_main$k from '../CnMassDeleteDialog/CnMassDeleteDialog.vue.js';
78
+ import __sfc_main$m from '../CnMassExportDialog/CnMassExportDialog.vue.js';
79
+ import __sfc_main$n from '../CnMassImportDialog/CnMassImportDialog.vue.js';
80
+ import __sfc_main$e from '../CnObjectCalendar/CnObjectCalendar.vue.js';
81
+ import __sfc_main$g from '../CnObjectList/CnObjectList.vue.js';
82
+ import __sfc_main$5 from '../CnPageHeader/CnPageHeader.vue.js';
83
+ import __sfc_main$i from '../CnPagination/CnPagination.vue.js';
84
+ import __sfc_main$6 from '../CnQuickFilterBar/CnQuickFilterBar.vue.js';
85
+ import __sfc_main$j from '../CnRowActions/CnRowActions.vue.js';
86
+ import __sfc_main$v from '../CnSavedViewPresentationDialog/CnSavedViewPresentationDialog.vue.js';
87
+ import __sfc_main$u from '../CnSavedViewsControl/CnSavedViewsControl.vue.js';
88
+ import __sfc_main$w from '../CnSavedViewShareDialog/CnSavedViewShareDialog.vue.js';
89
+ import __sfc_main$x from '../CnSaveViewDialog/CnSaveViewDialog.vue.js';
88
90
  import { applyAiContext } from './aiContext.js';
89
91
  import { buildDefaultActions } from './defaultActions.js';
90
92
  import { dispatchAction } from './manifestActionDispatch.js';
@@ -326,11 +328,12 @@ var script = {
326
328
 
327
329
  components: {
328
330
  CnIndexPageWidgets: __sfc_main,
331
+ CnStatusBadge: __sfc_main$1,
329
332
  NcNoteCard,
330
- CnBuildiqEditButton: __sfc_main$1,
331
- CnFollowToggle: __sfc_main$2,
333
+ CnBuildiqEditButton: __sfc_main$2,
334
+ CnFollowToggle: __sfc_main$3,
332
335
  NcLoadingIcon,
333
- CnEmptyContent: __sfc_main$3,
336
+ CnEmptyContent: __sfc_main$4,
334
337
  NcActions,
335
338
  NcActionLink,
336
339
  NcActionButton,
@@ -347,38 +350,38 @@ var script = {
347
350
  Tune,
348
351
  ViewColumnOutline,
349
352
  NcCheckboxRadioSwitch,
350
- CnPageHeader: __sfc_main$4,
351
- CnQuickFilterBar: __sfc_main$5,
352
- CnActionButtons: __sfc_main$6,
353
- CnActionsBar: __sfc_main$7,
353
+ CnPageHeader: __sfc_main$5,
354
+ CnQuickFilterBar: __sfc_main$6,
355
+ CnActionButtons: __sfc_main$7,
356
+ CnActionsBar: __sfc_main$8,
354
357
  DotsHorizontal,
355
- CnIcon: __sfc_main$8,
356
- CnDataTable: __sfc_main$9,
357
- CnCardGrid: __sfc_main$a,
358
- CnBoardView: __sfc_main$b,
359
- CnDateAxisView: __sfc_main$c,
360
- CnObjectCalendar: __sfc_main$d,
361
- CnMapWidget: __sfc_main$e,
362
- CnObjectList: __sfc_main$f,
363
- CnFolderSidebar: __sfc_main$g,
364
- CnPagination: __sfc_main$h,
365
- CnRowActions: __sfc_main$i,
366
- CnMassDeleteDialog: __sfc_main$j,
367
- CnMassCopyDialog: __sfc_main$k,
368
- CnMassExportDialog: __sfc_main$l,
369
- CnMassImportDialog: __sfc_main$m,
370
- CnDeleteDialog: __sfc_main$n,
371
- CnCopyDialog: __sfc_main$o,
372
- CnFormDialog: __sfc_main$p,
373
- CnAdvancedFormDialog: __sfc_main$q,
374
- CnContextMenu: __sfc_main$r,
375
- CnIndexSidebar: __sfc_main$s,
376
- CnSavedViewsControl: __sfc_main$t,
377
- CnSavedViewPresentationDialog: __sfc_main$u,
378
- CnSavedViewShareDialog: __sfc_main$v,
379
- CnSaveViewDialog: __sfc_main$w,
380
- CnConfirmDialog: __sfc_main$x,
381
- CnQuickEditDialog: __sfc_main$y,
358
+ CnIcon: __sfc_main$9,
359
+ CnDataTable: __sfc_main$a,
360
+ CnCardGrid: __sfc_main$b,
361
+ CnBoardView: __sfc_main$c,
362
+ CnDateAxisView: __sfc_main$d,
363
+ CnObjectCalendar: __sfc_main$e,
364
+ CnMapWidget: __sfc_main$f,
365
+ CnObjectList: __sfc_main$g,
366
+ CnFolderSidebar: __sfc_main$h,
367
+ CnPagination: __sfc_main$i,
368
+ CnRowActions: __sfc_main$j,
369
+ CnMassDeleteDialog: __sfc_main$k,
370
+ CnMassCopyDialog: __sfc_main$l,
371
+ CnMassExportDialog: __sfc_main$m,
372
+ CnMassImportDialog: __sfc_main$n,
373
+ CnDeleteDialog: __sfc_main$o,
374
+ CnCopyDialog: __sfc_main$p,
375
+ CnFormDialog: __sfc_main$q,
376
+ CnAdvancedFormDialog: __sfc_main$r,
377
+ CnContextMenu: __sfc_main$s,
378
+ CnIndexSidebar: __sfc_main$t,
379
+ CnSavedViewsControl: __sfc_main$u,
380
+ CnSavedViewPresentationDialog: __sfc_main$v,
381
+ CnSavedViewShareDialog: __sfc_main$w,
382
+ CnSaveViewDialog: __sfc_main$x,
383
+ CnConfirmDialog: __sfc_main$y,
384
+ CnQuickEditDialog: __sfc_main$z,
382
385
  },
383
386
 
384
387
  /**
@@ -394,6 +397,29 @@ var script = {
394
397
  * Falls back to an empty object so `CnIndexPage` works standalone
395
398
  * (unit tests, isolated mount) without `CnAppRoot`.
396
399
  */
400
+ /**
401
+ * The list a side-panel widget reads (`cnIndexList`): the applied saved
402
+ * view, the list's total, and a way to hand back a view that changed
403
+ * (the saved-view alert widget). Getters, so a widget follows the page.
404
+ *
405
+ * @return {object}
406
+ */
407
+ provide() {
408
+ return {
409
+ cnIndexList: Object.defineProperties({}, {
410
+ appliedView: { enumerable: true, get: () => this.appliedSavedView },
411
+ total: {
412
+ enumerable: true,
413
+ get: () => {
414
+ const total = this.effectivePagination && this.effectivePagination.total;
415
+ return typeof total === 'number' ? total : undefined
416
+ },
417
+ },
418
+ replaceSavedView: { enumerable: true, value: (view) => this.replaceSavedView(view) },
419
+ }),
420
+ }
421
+ },
422
+
397
423
  inject: {
398
424
  cnCustomComponents: { default: () => ({}) },
399
425
  /** The permissions the user holds, provided by CnAppRoot; for gated page tabs. */
@@ -691,7 +717,9 @@ var script = {
691
717
  * variant?, icon?, format?, id? }`: `action` is `add` (the Add flow;
692
718
  * its label defaults to the Add label), `export` (the export leaf in
693
719
  * `format`, `csv` by default, else the export dialog), `import`,
694
- * `refresh`, or the id of a `headerActions` entry; `variant` is
720
+ * `refresh`, `save-view` (the save-current-view dialog: the board's
721
+ * "Zoekopdracht opslaan", label "Save view" by default), or the id of a
722
+ * `headerActions` entry; `variant` is
695
723
  * `primary` or `secondary` (the default). Shown only with
696
724
  * `showTitle`. When they show, the actions bar drops its Views and
697
725
  * Actions menus, and the Add button and Export menu when a button
@@ -1003,6 +1031,16 @@ var script = {
1003
1031
  default: true,
1004
1032
  },
1005
1033
 
1034
+ /**
1035
+ * Draw the table without its column-header row (manifest
1036
+ * `config.hideTableHeader`), for a list the board draws as plain rows
1037
+ * (DqTeamwachtrij). Pair it with `selectable: false` for no checkboxes.
1038
+ */
1039
+ hideTableHeader: {
1040
+ type: Boolean,
1041
+ default: false,
1042
+ },
1043
+
1006
1044
  /**
1007
1045
  * When true, a row/card click emits `row-click` (to open/navigate) even
1008
1046
  * while `selectable` — selection then happens via the checkbox only.
@@ -1146,8 +1184,15 @@ var script = {
1146
1184
  * - `popupField` — object property rendered in the marker popup.
1147
1185
  * - `center` — optional `[lat, lng]` fallback centre when the filtered set
1148
1186
  * has no plottable rows.
1187
+ * - `zoom` — the map's initial zoom level.
1188
+ * - `list` — a numbered list beside the map, map and list in one card
1189
+ * (DqZakenKaart): `{ title, sub?, pills?: [{ path?, text?, map?,
1190
+ * colorMap? }], due? }`, field templates read per row. The pins carry the
1191
+ * list's numbers, the row under the pointer is marked on both, the rows
1192
+ * without a place are counted under the list with a link to the table,
1193
+ * and the page's count line adds how many are on the map.
1149
1194
  *
1150
- * @type {{ latField?: string, lngField?: string, geoField?: string, popupField?: string, center?: [number, number] }}
1195
+ * @type {{ latField?: string, lngField?: string, geoField?: string, popupField?: string, center?: [number, number], zoom?: number, list?: object }}
1151
1196
  */
1152
1197
  mapConfig: {
1153
1198
  type: Object,
@@ -2563,6 +2608,8 @@ var script = {
2563
2608
  pageTabCounts: {},
2564
2609
  /** The `headerMetaCounts` totals, by name; a failed one is null. */
2565
2610
  headerMetaCountValues: {},
2611
+ /** The row the pointer is on in the map list, by key; '' for none. */
2612
+ activeMapKey: '',
2566
2613
  /** The tabs `quickFiltersFrom` produced, or null before they load. */
2567
2614
  generatedQuickFilters: null,
2568
2615
  /** Count per saved-view id, for the views control; null = none. */
@@ -4321,6 +4368,8 @@ var script = {
4321
4368
  */
4322
4369
  mapMarkers() {
4323
4370
  const features = [];
4371
+ // With the list beside the map, a pin carries the row's number there.
4372
+ const numbers = this.mapListEnabled ? new Map(this.mapList.items.map((item) => [item.row, item.n])) : null;
4324
4373
  for (const row of this.displayObjects) {
4325
4374
  const geometry = this.resolveRowGeometry(row);
4326
4375
  if (!geometry) {
@@ -4332,6 +4381,7 @@ var script = {
4332
4381
  properties: {
4333
4382
  [this.rowKey]: row[this.rowKey],
4334
4383
  ...(this.mapConfig.popupField ? { [this.mapConfig.popupField]: row[this.mapConfig.popupField] } : {}),
4384
+ ...(numbers && numbers.has(row) ? { markerNumber: numbers.get(row), markerActive: this.activeMapKey === String(row[this.rowKey]) } : {}),
4335
4385
  },
4336
4386
  });
4337
4387
  }
@@ -4358,6 +4408,57 @@ var script = {
4358
4408
  return this.mapConfig.clustering !== false
4359
4409
  },
4360
4410
 
4411
+ /** @return {number|undefined} The map's initial zoom (`mapConfig.zoom`), when a number. */
4412
+ mapZoom() {
4413
+ const zoom = this.mapConfig && this.mapConfig.zoom;
4414
+ return typeof zoom === 'number' && Number.isFinite(zoom) ? zoom : undefined
4415
+ },
4416
+
4417
+ /** @return {boolean} Whether the map draws its numbered list (`mapConfig.list`). */
4418
+ mapListEnabled() {
4419
+ const list = this.mapConfig && this.mapConfig.list;
4420
+ return Boolean(list && typeof list === 'object' && typeof list.title === 'string' && list.title !== '')
4421
+ },
4422
+
4423
+ /**
4424
+ * The map list's entries, numbered as the pins, and the rows without a
4425
+ * place. Templates go through the host's translate first.
4426
+ *
4427
+ * @return {{items: Array<object>, missing: Array<object>}}
4428
+ */
4429
+ mapList() {
4430
+ if (!this.mapListEnabled) {
4431
+ return { items: [], missing: [] }
4432
+ }
4433
+ const list = this.mapConfig.list;
4434
+ const translated = {
4435
+ ...list,
4436
+ title: this.cnTranslate(list.title),
4437
+ sub: list.sub ? this.cnTranslate(list.sub) : '',
4438
+ due: list.due ? this.cnTranslate(list.due) : '',
4439
+ };
4440
+ return mapListItems(this.displayObjects, translated, {
4441
+ rowKey: this.rowKey,
4442
+ located: (row) => Boolean(this.resolveRowGeometry(row)),
4443
+ translate: (text) => this.cnTranslate(text),
4444
+ })
4445
+ },
4446
+
4447
+ /** @return {string} The list's accessible name. */
4448
+ mapListLabel() {
4449
+ return translate('nextcloud-vue', 'On the map')
4450
+ },
4451
+
4452
+ /** @return {string} The card under the list, for the rows without a place. */
4453
+ mapMissingTitle() {
4454
+ return translatePlural('nextcloud-vue', '%n without an address', '%n without an address', this.mapList.missing.length)
4455
+ },
4456
+
4457
+ /** @return {string} The link from that card to the table. */
4458
+ mapMissingLink() {
4459
+ return translate('nextcloud-vue', 'Show them in the table')
4460
+ },
4461
+
4361
4462
  /**
4362
4463
  * Extra (non-background) map layers — WMS / WFS / GeoJSON overlays declared in
4363
4464
  * `mapConfig.layers`. The background map comes from `mapBasemaps` instead, so
@@ -4458,9 +4559,51 @@ var script = {
4458
4559
  if (this.selfFetchFailed) {
4459
4560
  return { ...this.list.pagination.value, total: 0, page: 1, pages: 1 }
4460
4561
  }
4562
+ // A named source that reports its own total (the search source)
4563
+ // gives the count line its number.
4564
+ if (this.isNamedSource && this.namedSource && typeof this.namedSource.total === 'function') {
4565
+ return { ...(this.pagination || {}), total: this.namedSource.total() }
4566
+ }
4461
4567
  return this.isSelfFetchMode ? this.list.pagination.value : this.pagination
4462
4568
  },
4463
4569
 
4570
+ /**
4571
+ * The saved view the page has applied, or null.
4572
+ *
4573
+ * @return {object|null}
4574
+ */
4575
+ appliedSavedView() {
4576
+ const id = this.appliedSavedViewId;
4577
+ if (!id) {
4578
+ return null
4579
+ }
4580
+ return (this.savedViews || []).find((view) => view && (String(view.id) === id || String(view.slug) === id || String(view.uuid) === id)) || null
4581
+ },
4582
+
4583
+ /**
4584
+ * The term a named source searched for, for `{term}` in the title and
4585
+ * the count line ("Zoeken: Lindelaan"), or ''.
4586
+ *
4587
+ * @return {string}
4588
+ */
4589
+ sourceTerm() {
4590
+ return this.isNamedSource && this.namedSource && typeof this.namedSource.term === 'function' ? String(this.namedSource.term() || '') : ''
4591
+ },
4592
+
4593
+ /**
4594
+ * The page title with `{term}` filled in.
4595
+ *
4596
+ * @return {string}
4597
+ */
4598
+ shownTitle() {
4599
+ const title = this.presented('title');
4600
+ // A title with the term is translated here, before the term goes in,
4601
+ // so its catalogue entry is found ("Zoeken: {term}").
4602
+ return typeof title === 'string' && title.includes('{term}')
4603
+ ? this.cnTranslate(title).replace(/\{term\}/g, this.sourceTerm)
4604
+ : title
4605
+ },
4606
+
4464
4607
  /**
4465
4608
  * Whether the table marks unread rows. The boards draw every row alike,
4466
4609
  * so under the board look only a page that offers the Unread lens
@@ -5201,6 +5344,9 @@ var script = {
5201
5344
  if (label === '' && button.action === 'actions-menu') {
5202
5345
  label = translate('nextcloud-vue', 'Actions');
5203
5346
  }
5347
+ if (label === '' && button.action === 'save-view') {
5348
+ label = translate('nextcloud-vue', 'Save view');
5349
+ }
5204
5350
  return {
5205
5351
  key: String(button.id || button.action || index),
5206
5352
  label,
@@ -5528,7 +5674,23 @@ var script = {
5528
5674
  return valid.length > 0 ? JSON.stringify(valid) : ''
5529
5675
  },
5530
5676
 
5677
+ /**
5678
+ * The header's description line, and on the map with its list the
5679
+ * number of rows on the map after a middle dot ("· 5 met een adres op
5680
+ * de kaart", DqZakenKaart).
5681
+ *
5682
+ * @return {string}
5683
+ */
5531
5684
  headerDescription() {
5685
+ const base = this.headerDescriptionBase;
5686
+ if (this.currentViewMode !== 'map' || !this.mapListEnabled) {
5687
+ return base
5688
+ }
5689
+ const onMap = translatePlural('nextcloud-vue', '%n with an address on the map', '%n with an address on the map', this.mapList.items.length);
5690
+ return base ? `${base} · ${onMap}` : onMap
5691
+ },
5692
+
5693
+ headerDescriptionBase() {
5532
5694
  const total = this.effectivePagination?.total;
5533
5695
  // Board look: the count line is a template over the rows on this page
5534
5696
  // and all rows, "{shown} of {total}" unless the page says otherwise.
@@ -5549,6 +5711,7 @@ var script = {
5549
5711
  return this.cnTranslate(countText)
5550
5712
  .replace('{shown}', String(shown))
5551
5713
  .replace('{total}', String(total))
5714
+ .replace(/\{term\}/g, this.sourceTerm)
5552
5715
  }
5553
5716
  return this.countLine(this.countSubtitle, total, shown)
5554
5717
  }
@@ -6995,6 +7158,8 @@ var script = {
6995
7158
  this.showImportDialog = true;
6996
7159
  } else if (button.action === 'refresh') {
6997
7160
  this.onRefreshEvent();
7161
+ } else if (button.action === 'save-view') {
7162
+ this.showSaveViewDialog = true;
6998
7163
  } else {
6999
7164
  this.onHeaderAction({ action: button.action, id: button.action });
7000
7165
  }
@@ -8258,7 +8423,7 @@ var script = {
8258
8423
  this.cnIndexSidebarConfig.value = {
8259
8424
  // markRaw: the holder is CnAppRoot `data()`, so it is deeply
8260
8425
  // reactive and would proxy the component definition itself.
8261
- component: markRaw(__sfc_main$s),
8426
+ component: markRaw(__sfc_main$t),
8262
8427
  props: this.hoistedSidebarProps,
8263
8428
  listeners: {
8264
8429
  'update:open': (val) => {
@@ -9005,6 +9170,21 @@ var script = {
9005
9170
  }
9006
9171
  },
9007
9172
 
9173
+ /**
9174
+ * Put a saved view that changed elsewhere (its alert) back in the list,
9175
+ * matched on its id or uuid.
9176
+ *
9177
+ * @param {object} view The saved view as the server returned it.
9178
+ * @return {void}
9179
+ */
9180
+ replaceSavedView(view) {
9181
+ if (!view || typeof view !== 'object') {
9182
+ return
9183
+ }
9184
+ const same = (other) => other && ((view.id !== undefined && other.id === view.id) || (view.uuid && other.uuid === view.uuid));
9185
+ this.savedViews = (this.savedViews || []).map((other) => (same(other) ? view : other));
9186
+ },
9187
+
9008
9188
  async onSaveViewConfirm({ name, isPublic, sharedWith, presentation }) {
9009
9189
  const state = this.isSelfFetchMode
9010
9190
  ? this.currentViewState()