@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.
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +22 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +26 -16
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +51 -7
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +104 -73
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue.js +9 -0
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue.js.map +1 -0
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue2.js +139 -0
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue3.js +76 -0
- package/dist/esm/components/CnExportsWidget/CnExportsWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +160 -2
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +206 -94
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/filesReview.js +61 -0
- package/dist/esm/components/CnFilesBrowser/filesReview.js.map +1 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue.js +9 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue.js.map +1 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue2.js +279 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue3.js +122 -0
- package/dist/esm/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnGroupedCardsWidget/index.js +29 -0
- package/dist/esm/components/CnGroupedCardsWidget/index.js.map +1 -0
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +251 -71
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +317 -209
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/useNamedSource.js +4 -1
- package/dist/esm/components/CnIndexPage/useNamedSource.js.map +1 -1
- package/dist/esm/components/CnMapWidget/CnMapWidget.vue.js +1 -1
- package/dist/esm/components/CnMapWidget/CnMapWidget.vue2.js +15 -0
- package/dist/esm/components/CnMapWidget/CnMapWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnMapWidget/CnMapWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +14 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +14 -6
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +10 -0
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +6 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js +91 -4
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js.map +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js +63 -38
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js.map +1 -1
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue.js +9 -0
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue.js.map +1 -0
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue2.js +175 -0
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue3.js +77 -0
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +35 -2
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +4 -0
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/composables/indexSources.js +167 -20
- package/dist/esm/composables/indexSources.js.map +1 -1
- package/dist/esm/composables/useEndpointSource.js +28 -6
- package/dist/esm/composables/useEndpointSource.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +37 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +35 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +769 -251
- package/dist/esm/utils/languageMapText.js +50 -0
- package/dist/esm/utils/languageMapText.js.map +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js +3 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/esm/utils/mapList.js +71 -0
- package/dist/esm/utils/mapList.js.map +1 -0
- package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +8977 -6843
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +769 -251
- package/l10n/en.json +37 -1
- package/l10n/nl.json +35 -1
- package/package.json +1 -1
- package/src/components/CnChoiceCards/CnChoiceCards.md +39 -0
- package/src/components/CnChoiceCards/CnChoiceCards.vue +93 -16
- package/src/components/CnDashboardPage/CnDashboardPage.vue +89 -20
- package/src/components/CnExportsWidget/CnExportsWidget.vue +233 -0
- package/src/components/CnExportsWidget/index.js +7 -0
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +324 -0
- package/src/components/CnFilesBrowser/filesReview.js +57 -0
- package/src/components/CnGroupedCardsWidget/CnGroupedCardsWidget.vue +433 -0
- package/src/components/CnGroupedCardsWidget/index.js +28 -0
- package/src/components/CnIndexPage/CnIndexPage.vue +240 -4
- package/src/components/CnIndexPage/useNamedSource.js +4 -1
- package/src/components/CnMapWidget/CnMapWidget.vue +37 -0
- package/src/components/CnObjectListWidget/CnObjectListWidget.vue +29 -1
- package/src/components/CnObjectSidebar/CnFilesTab.vue +15 -0
- package/src/components/CnOrderedListField/CnOrderedListField.vue +151 -5
- package/src/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue +272 -0
- package/src/components/CnSavedViewAlertWidget/index.js +7 -0
- package/src/components/CnSetupWizard/CnSetupWizard.vue +35 -2
- package/src/components/CnWidgetGrid/builtInWidgets.js +4 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/src/components/index.js +3 -0
- package/src/composables/indexSources.js +166 -19
- package/src/composables/useEndpointSource.js +28 -6
- package/src/css/index-page.css +117 -0
- package/src/css/look-board.css +44 -0
- package/src/index.js +1 -0
- package/src/schemas/app-manifest-v2.schema.json +31 -1
- package/src/utils/languageMapText.js +46 -0
- package/src/utils/libraryWidgetKeys.js +3 -0
- package/src/utils/mapList.js +67 -0
- 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$
|
|
18
|
-
import __sfc_main$
|
|
19
|
-
import __sfc_main$
|
|
20
|
-
import __sfc_main$
|
|
21
|
-
import __sfc_main$
|
|
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$
|
|
57
|
-
import __sfc_main$
|
|
58
|
-
import __sfc_main$
|
|
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$
|
|
63
|
-
import __sfc_main$
|
|
64
|
-
import __sfc_main$
|
|
65
|
-
import __sfc_main$
|
|
66
|
-
import __sfc_main$
|
|
67
|
-
import __sfc_main$
|
|
68
|
-
import __sfc_main$
|
|
69
|
-
import __sfc_main$
|
|
70
|
-
import __sfc_main$
|
|
71
|
-
import __sfc_main$
|
|
72
|
-
import __sfc_main$
|
|
73
|
-
import __sfc_main$
|
|
74
|
-
import __sfc_main$
|
|
75
|
-
import __sfc_main$
|
|
76
|
-
import __sfc_main$
|
|
77
|
-
import __sfc_main$
|
|
78
|
-
import __sfc_main$
|
|
79
|
-
import __sfc_main$
|
|
80
|
-
import __sfc_main$
|
|
81
|
-
import __sfc_main$
|
|
82
|
-
import __sfc_main$
|
|
83
|
-
import __sfc_main$
|
|
84
|
-
import __sfc_main$
|
|
85
|
-
import __sfc_main$
|
|
86
|
-
import __sfc_main$
|
|
87
|
-
import __sfc_main$
|
|
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$
|
|
331
|
-
CnFollowToggle: __sfc_main$
|
|
333
|
+
CnBuildiqEditButton: __sfc_main$2,
|
|
334
|
+
CnFollowToggle: __sfc_main$3,
|
|
332
335
|
NcLoadingIcon,
|
|
333
|
-
CnEmptyContent: __sfc_main$
|
|
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$
|
|
351
|
-
CnQuickFilterBar: __sfc_main$
|
|
352
|
-
CnActionButtons: __sfc_main$
|
|
353
|
-
CnActionsBar: __sfc_main$
|
|
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$
|
|
356
|
-
CnDataTable: __sfc_main$
|
|
357
|
-
CnCardGrid: __sfc_main$
|
|
358
|
-
CnBoardView: __sfc_main$
|
|
359
|
-
CnDateAxisView: __sfc_main$
|
|
360
|
-
CnObjectCalendar: __sfc_main$
|
|
361
|
-
CnMapWidget: __sfc_main$
|
|
362
|
-
CnObjectList: __sfc_main$
|
|
363
|
-
CnFolderSidebar: __sfc_main$
|
|
364
|
-
CnPagination: __sfc_main$
|
|
365
|
-
CnRowActions: __sfc_main$
|
|
366
|
-
CnMassDeleteDialog: __sfc_main$
|
|
367
|
-
CnMassCopyDialog: __sfc_main$
|
|
368
|
-
CnMassExportDialog: __sfc_main$
|
|
369
|
-
CnMassImportDialog: __sfc_main$
|
|
370
|
-
CnDeleteDialog: __sfc_main$
|
|
371
|
-
CnCopyDialog: __sfc_main$
|
|
372
|
-
CnFormDialog: __sfc_main$
|
|
373
|
-
CnAdvancedFormDialog: __sfc_main$
|
|
374
|
-
CnContextMenu: __sfc_main$
|
|
375
|
-
CnIndexSidebar: __sfc_main$
|
|
376
|
-
CnSavedViewsControl: __sfc_main$
|
|
377
|
-
CnSavedViewPresentationDialog: __sfc_main$
|
|
378
|
-
CnSavedViewShareDialog: __sfc_main$
|
|
379
|
-
CnSaveViewDialog: __sfc_main$
|
|
380
|
-
CnConfirmDialog: __sfc_main$
|
|
381
|
-
CnQuickEditDialog: __sfc_main$
|
|
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`,
|
|
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$
|
|
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()
|