@conduction/nextcloud-vue 2.56.0-beta.3 → 2.56.0-beta.5
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/CnActionsBar/CnActionsBar.vue2.js +12 -2
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +1 -2
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +0 -3
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +1 -2
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +21 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +12 -5
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +2 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js +9 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js.map +1 -1
- package/dist/esm/components/CnContextMenu/CnContextMenu.vue2.js +6 -1
- package/dist/esm/components/CnContextMenu/CnContextMenu.vue2.js.map +1 -1
- package/dist/esm/components/CnContextMenu/CnContextMenu.vue3.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +116 -15
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +27 -14
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
- package/dist/esm/components/CnDateAxisView/CnDateAxisView.vue2.js +13 -6
- package/dist/esm/components/CnDateAxisView/CnDateAxisView.vue2.js.map +1 -1
- package/dist/esm/components/CnDateAxisView/CnDateAxisView.vue3.js +2 -0
- package/dist/esm/components/CnDateAxisView/CnDateAxisView.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +29 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js +1 -2
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +3 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +17 -17
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesWidget/CnFilesWidget.vue2.js +4 -21
- package/dist/esm/components/CnFilesWidget/CnFilesWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesWidget/CnFilesWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js +0 -13
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue3.js +8 -8
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowsPage.vue3.js +3 -2
- package/dist/esm/components/CnFlowsPage/CnFlowsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +67 -13
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +15 -8
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/manifestActionDispatch.js +31 -11
- package/dist/esm/components/CnIndexPage/manifestActionDispatch.js.map +1 -1
- package/dist/esm/components/CnIntegrationWidget/CnIntegrationWidgetEmpty.vue2.js.map +1 -1
- package/dist/esm/components/CnIntegrationWidget/CnIntegrationWidgetEmpty.vue3.js +1 -2
- package/dist/esm/components/CnIntegrationWidget/CnIntegrationWidgetEmpty.vue3.js.map +1 -1
- package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue3.js +0 -1
- package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnLinkButtonWidget/CnLinkButtonWidget.vue2.js +2 -17
- package/dist/esm/components/CnLinkButtonWidget/CnLinkButtonWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnLinkButtonWidget/CnLinkButtonWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnLogsPage/CnLogsPage.vue2.js +35 -11
- package/dist/esm/components/CnLogsPage/CnLogsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnLogsPage/CnLogsPage.vue3.js +3 -2
- package/dist/esm/components/CnLogsPage/CnLogsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js +23 -5
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectList/CnObjectList.vue2.js +19 -3
- package/dist/esm/components/CnObjectList/CnObjectList.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectList/CnObjectList.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +45 -15
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +4 -2
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectRow/CnObjectRow.vue2.js +24 -6
- package/dist/esm/components/CnObjectRow/CnObjectRow.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectRow/CnObjectRow.vue3.js +1 -1
- package/dist/esm/components/CnObjectRow/CnObjectRow.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +0 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue3.js +4 -2
- package/dist/esm/components/CnPageRenderer/CnPageRenderer.vue3.js.map +1 -1
- package/dist/esm/components/CnRowActions/CnRowActions.vue2.js +7 -2
- package/dist/esm/components/CnRowActions/CnRowActions.vue2.js.map +1 -1
- package/dist/esm/components/CnRowActions/CnRowActions.vue3.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +49 -5
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnSpendAnalyticsWidget/CnSpendAnalyticsWidget.vue2.js +5 -3
- package/dist/esm/components/CnSpendAnalyticsWidget/CnSpendAnalyticsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnSpendAnalyticsWidget/CnSpendAnalyticsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js +3 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js +1 -0
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksCard.vue2.js +6 -0
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksCard.vue3.js +68 -53
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksTab.vue2.js +17 -0
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksTab.vue3.js +21 -19
- package/dist/esm/integrations/builtin/bookmarks/CnBookmarksTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/collectives/CnCollectivesTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/collectives/CnCollectivesTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/email/CnEmailTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/flow/CnFlowCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/flow/CnFlowCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/flow/CnFlowCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/flow/CnFlowTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/flow/CnFlowTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/flow/CnFlowTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/flow/CnFlowTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/forms/CnFormsCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/forms/CnFormsCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/forms/CnFormsCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/forms/CnFormsTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/forms/CnFormsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/forms/CnFormsTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/forms/CnFormsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/maps/CnMapsCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/maps/CnMapsCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/maps/CnMapsCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/maps/CnMapsTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/maps/CnMapsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/maps/CnMapsTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/maps/CnMapsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/openproject/CnOpenprojectTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/polls/CnPollsCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/polls/CnPollsCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/polls/CnPollsCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/polls/CnPollsTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/polls/CnPollsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/polls/CnPollsTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/polls/CnPollsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/shares/CnSharesTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/shares/CnSharesTab.vue3.js +3 -6
- package/dist/esm/integrations/builtin/shares/CnSharesTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/talk/CnTalkCard.vue2.js +3 -1
- package/dist/esm/integrations/builtin/talk/CnTalkCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/talk/CnTalkCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/talk/CnTalkTab.vue2.js +3 -1
- package/dist/esm/integrations/builtin/talk/CnTalkTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/talk/CnTalkTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/talk/CnTalkTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerTab.vue3.js +1 -2
- package/dist/esm/integrations/builtin/time-tracker/CnTimeTrackerTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/xwiki/CnXwikiCard.vue2.js +4 -1
- package/dist/esm/integrations/builtin/xwiki/CnXwikiCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/xwiki/CnXwikiCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/xwiki/CnXwikiTab.vue2.js +6 -3
- package/dist/esm/integrations/builtin/xwiki/CnXwikiTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/xwiki/CnXwikiTab.vue3.js +2 -4
- package/dist/esm/integrations/builtin/xwiki/CnXwikiTab.vue3.js.map +1 -1
- package/dist/esm/l10n/en.json.js +2 -0
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +2 -0
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/nextcloud-vue.css +78 -7
- package/dist/esm/utils/actionLink.js +5 -0
- package/dist/esm/utils/actionLink.js.map +1 -1
- package/dist/esm/utils/actionsDispatcher.js +16 -1
- package/dist/esm/utils/actionsDispatcher.js.map +1 -1
- package/dist/esm/utils/linkNavigation.js +6 -3
- package/dist/esm/utils/linkNavigation.js.map +1 -1
- package/dist/esm/utils/rowAuxClick.js +30 -5
- package/dist/esm/utils/rowAuxClick.js.map +1 -1
- package/dist/esm/utils/safeHref.js +18 -3
- package/dist/esm/utils/safeHref.js.map +1 -1
- package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +885 -393
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +78 -7
- package/l10n/en.json +2 -0
- package/l10n/nl.json +2 -0
- package/package.json +1 -1
- package/src/components/CnActionsBar/CnActionsBar.vue +14 -5
- package/src/components/CnActionsMenu/CnActionsMenu.vue +0 -3
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +1 -2
- package/src/components/CnAppRoot/CnAppRoot.vue +31 -2
- package/src/components/CnBoardView/CnBoardView.vue +13 -5
- package/src/components/CnCardGrid/CnCardGrid.vue +9 -1
- package/src/components/CnContextMenu/CnContextMenu.vue +6 -1
- package/src/components/CnDataTable/CnDataTable.md +1 -1
- package/src/components/CnDataTable/CnDataTable.vue +131 -17
- package/src/components/CnDateAxisView/CnDateAxisView.vue +15 -6
- package/src/components/CnDetailPage/CnDetailPage.md +1 -1
- package/src/components/CnDetailPage/CnDetailPage.vue +29 -1
- package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +1 -2
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +5 -3
- package/src/components/CnFilesWidget/CnFilesWidget.vue +4 -21
- package/src/components/CnFlowRunsWidget/CnFlowRunsWidget.vue +8 -21
- package/src/components/CnFlowsPage/CnFlowsPage.vue +2 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +75 -14
- package/src/components/CnIndexPage/manifestActionDispatch.js +31 -11
- package/src/components/CnIntegrationWidget/CnIntegrationWidgetEmpty.vue +1 -2
- package/src/components/CnInteractionFormWidget/CnInteractionFormWidget.vue +0 -1
- package/src/components/CnLinkButtonWidget/CnLinkButtonWidget.vue +2 -17
- package/src/components/CnLogsPage/CnLogsPage.vue +37 -12
- package/src/components/CnObjectCard/CnObjectCard.vue +24 -6
- package/src/components/CnObjectList/CnObjectList.vue +19 -3
- package/src/components/CnObjectListWidget/CnObjectListWidget.vue +47 -15
- package/src/components/CnObjectRow/CnObjectRow.vue +25 -7
- package/src/components/CnObjectSidebar/CnFilesTab.vue +0 -1
- package/src/components/CnPageRenderer/CnPageRenderer.vue +2 -0
- package/src/components/CnRowActions/CnRowActions.vue +7 -2
- package/src/components/CnSetupWizard/CnSetupWizard.vue +57 -6
- package/src/components/CnSpendAnalyticsWidget/CnSpendAnalyticsWidget.vue +5 -3
- package/src/components/CnTabs/CnTabs.vue +7 -3
- package/src/components/CnTasksWidget/CnTasksWidget.vue +4 -1
- package/src/css/table.css +26 -0
- package/src/integrations/builtin/analytics/CnAnalyticsCard.vue +3 -2
- package/src/integrations/builtin/analytics/CnAnalyticsTab.vue +5 -6
- package/src/integrations/builtin/bookmarks/CnBookmarksCard.vue +12 -1
- package/src/integrations/builtin/bookmarks/CnBookmarksTab.vue +23 -6
- package/src/integrations/builtin/bookmarks/__tests__/CnBookmarksTab.spec.js +7 -2
- package/src/integrations/builtin/collectives/CnCollectivesCard.vue +3 -2
- package/src/integrations/builtin/collectives/CnCollectivesTab.vue +5 -6
- package/src/integrations/builtin/cospend/CnCospendCard.vue +2 -2
- package/src/integrations/builtin/cospend/CnCospendTab.vue +3 -4
- package/src/integrations/builtin/deck/CnDeckCard.vue +2 -2
- package/src/integrations/builtin/deck/CnDeckTab.vue +3 -4
- package/src/integrations/builtin/email/CnEmailCard.vue +6 -2
- package/src/integrations/builtin/email/CnEmailTab.vue +7 -4
- package/src/integrations/builtin/flow/CnFlowCard.vue +2 -2
- package/src/integrations/builtin/flow/CnFlowTab.vue +3 -4
- package/src/integrations/builtin/forms/CnFormsCard.vue +3 -2
- package/src/integrations/builtin/forms/CnFormsTab.vue +5 -6
- package/src/integrations/builtin/maps/CnMapsCard.vue +3 -2
- package/src/integrations/builtin/maps/CnMapsTab.vue +5 -6
- package/src/integrations/builtin/maps/__tests__/CnMapsTab.spec.js +9 -0
- package/src/integrations/builtin/openproject/CnOpenprojectCard.vue +3 -2
- package/src/integrations/builtin/openproject/CnOpenprojectTab.vue +5 -6
- package/src/integrations/builtin/photos/CnPhotosCard.vue +2 -2
- package/src/integrations/builtin/photos/CnPhotosTab.vue +3 -4
- package/src/integrations/builtin/polls/CnPollsCard.vue +2 -2
- package/src/integrations/builtin/polls/CnPollsTab.vue +3 -4
- package/src/integrations/builtin/shares/CnSharesTab.vue +3 -6
- package/src/integrations/builtin/talk/CnTalkCard.vue +3 -2
- package/src/integrations/builtin/talk/CnTalkTab.vue +5 -6
- package/src/integrations/builtin/time-tracker/CnTimeTrackerCard.vue +2 -2
- package/src/integrations/builtin/time-tracker/CnTimeTrackerTab.vue +3 -4
- package/src/integrations/builtin/xwiki/CnXwikiCard.vue +4 -2
- package/src/integrations/builtin/xwiki/CnXwikiTab.vue +7 -7
- package/src/integrations/builtin/xwiki/__tests__/CnXwikiTab.spec.js +9 -0
- package/src/schemas/app-manifest-v2.schema.json +2 -1
- package/src/utils/actionLink.js +5 -0
- package/src/utils/actionsDispatcher.js +15 -0
- package/src/utils/linkNavigation.js +6 -3
- package/src/utils/rowAuxClick.js +29 -4
- package/src/utils/safeHref.js +18 -3
- package/src/utils/validateManifestV2.compiled.js +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/nextcloud-vue.cjs.js.map
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 33724477 bytes
|
|
4
|
+
sha256: c593f3967574b3cc9859bbff81c44bf2dcc4e304406f11ca2a1267065ef51df2
|
package/dist/nextcloud-vue.css
CHANGED
|
@@ -364,6 +364,32 @@
|
|
|
364
364
|
background-color: var(--color-primary-light);
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
+
/* A row with a route is a real link (see CnDataTable's row link): the anchor
|
|
368
|
+
in its first cell is stretched over the whole row. The row's own controls
|
|
369
|
+
sit above it so they stay usable; keep the list in step with NESTED_CONTROL
|
|
370
|
+
in utils/rowAuxClick.js. */
|
|
371
|
+
.cn-table-row--linked {
|
|
372
|
+
position: relative;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.cn-table-row__link {
|
|
376
|
+
position: absolute;
|
|
377
|
+
inset: 0;
|
|
378
|
+
cursor: pointer;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.cn-table-row__link:focus-visible {
|
|
382
|
+
outline: 2px solid var(--color-main-text);
|
|
383
|
+
outline-offset: -2px;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.cn-table-row--linked .cn-table-col--checkbox,
|
|
387
|
+
.cn-table-row--linked .cn-table-col--actions,
|
|
388
|
+
.cn-table-row--linked td :is(a, button, input, select, textarea, label, summary, [role='button'], [role='checkbox'], [role='link'], [contenteditable='true']):not(.cn-table-row__link) {
|
|
389
|
+
position: relative;
|
|
390
|
+
z-index: 1;
|
|
391
|
+
}
|
|
392
|
+
|
|
367
393
|
/* Column Types */
|
|
368
394
|
.cn-table-col--checkbox {
|
|
369
395
|
width: 50px;
|
|
@@ -5995,6 +6021,32 @@ svg.leaflet-image-layer.leaflet-interactive path {
|
|
|
5995
6021
|
background-color: var(--color-primary-light);
|
|
5996
6022
|
}
|
|
5997
6023
|
|
|
6024
|
+
/* A row with a route is a real link (see CnDataTable's row link): the anchor
|
|
6025
|
+
in its first cell is stretched over the whole row. The row's own controls
|
|
6026
|
+
sit above it so they stay usable; keep the list in step with NESTED_CONTROL
|
|
6027
|
+
in utils/rowAuxClick.js. */
|
|
6028
|
+
.cn-table-row--linked {
|
|
6029
|
+
position: relative;
|
|
6030
|
+
}
|
|
6031
|
+
|
|
6032
|
+
.cn-table-row__link {
|
|
6033
|
+
position: absolute;
|
|
6034
|
+
inset: 0;
|
|
6035
|
+
cursor: pointer;
|
|
6036
|
+
}
|
|
6037
|
+
|
|
6038
|
+
.cn-table-row__link:focus-visible {
|
|
6039
|
+
outline: 2px solid var(--color-main-text);
|
|
6040
|
+
outline-offset: -2px;
|
|
6041
|
+
}
|
|
6042
|
+
|
|
6043
|
+
.cn-table-row--linked .cn-table-col--checkbox,
|
|
6044
|
+
.cn-table-row--linked .cn-table-col--actions,
|
|
6045
|
+
.cn-table-row--linked td :is(a, button, input, select, textarea, label, summary, [role='button'], [role='checkbox'], [role='link'], [contenteditable='true']):not(.cn-table-row__link) {
|
|
6046
|
+
position: relative;
|
|
6047
|
+
z-index: 1;
|
|
6048
|
+
}
|
|
6049
|
+
|
|
5998
6050
|
/* Column Types */
|
|
5999
6051
|
.cn-table-col--checkbox {
|
|
6000
6052
|
width: 50px;
|
|
@@ -9701,14 +9753,18 @@ a.cn-deck-tab__card-title[data-v-3501a864]:hover {
|
|
|
9701
9753
|
background: none;
|
|
9702
9754
|
border: none;
|
|
9703
9755
|
padding: 6px 0;
|
|
9704
|
-
cursor: pointer;
|
|
9705
9756
|
text-align: left;
|
|
9706
9757
|
color: inherit;
|
|
9707
9758
|
font: inherit;
|
|
9708
9759
|
text-decoration: none;
|
|
9709
9760
|
box-sizing: border-box;
|
|
9710
9761
|
}
|
|
9711
|
-
|
|
9762
|
+
|
|
9763
|
+
/* Only a row with Mail ids is a link; the rest must not look clickable. */
|
|
9764
|
+
a.cn-email-card__open[data-v-fda51a6a] {
|
|
9765
|
+
cursor: pointer;
|
|
9766
|
+
}
|
|
9767
|
+
a.cn-email-card__open:hover .cn-email-card__subject[data-v-fda51a6a] {
|
|
9712
9768
|
color: var(--color-primary-element);
|
|
9713
9769
|
}
|
|
9714
9770
|
.cn-email-card__avatar[data-v-fda51a6a] {
|
|
@@ -9949,10 +10005,14 @@ a.cn-deck-tab__card-title[data-v-3501a864]:hover {
|
|
|
9949
10005
|
border-radius: var(--border-radius-large, 8px);
|
|
9950
10006
|
color: inherit;
|
|
9951
10007
|
text-decoration: none;
|
|
9952
|
-
cursor: pointer;
|
|
9953
10008
|
position: relative;
|
|
9954
10009
|
}
|
|
9955
|
-
|
|
10010
|
+
|
|
10011
|
+
/* Only a row with Mail ids is a link; the rest must not look clickable. */
|
|
10012
|
+
a.cn-email-tab__row[data-v-0bcebbac] {
|
|
10013
|
+
cursor: pointer;
|
|
10014
|
+
}
|
|
10015
|
+
a.cn-email-tab__row[data-v-0bcebbac]:hover {
|
|
9956
10016
|
background-color: var(--color-background-hover);
|
|
9957
10017
|
}
|
|
9958
10018
|
.cn-email-tab__unread-dot[data-v-0bcebbac] {
|
|
@@ -17677,7 +17737,11 @@ to { background-position: -200% 0;
|
|
|
17677
17737
|
}
|
|
17678
17738
|
|
|
17679
17739
|
/* A fade over the clipped edge, only on the side that hides tabs. Stops a
|
|
17680
|
-
pixel above the bar's rule so the rule keeps its full colour.
|
|
17740
|
+
pixel above the bar's rule so the rule keeps its full colour.
|
|
17741
|
+
|
|
17742
|
+
z-index 2 so the fades outrank a lifted tab: CnTabsWidget puts the open tab
|
|
17743
|
+
at 1, and a tie goes to DOM order, which would draw that tab over the start
|
|
17744
|
+
fade (it precedes the tabs) while the end fade still covered it. */
|
|
17681
17745
|
.cn-tabs__strip[data-v-5c1a056f]::before,
|
|
17682
17746
|
.cn-tabs__strip[data-v-5c1a056f]::after {
|
|
17683
17747
|
content: '';
|
|
@@ -17686,7 +17750,7 @@ to { background-position: -200% 0;
|
|
|
17686
17750
|
pointer-events: none;
|
|
17687
17751
|
position: absolute;
|
|
17688
17752
|
width: 56px;
|
|
17689
|
-
z-index:
|
|
17753
|
+
z-index: 2;
|
|
17690
17754
|
}
|
|
17691
17755
|
.cn-tabs__strip[data-v-5c1a056f]::before {
|
|
17692
17756
|
background: linear-gradient(to right, var(--color-main-background) 30%, transparent);
|
|
@@ -17720,7 +17784,7 @@ to { background-position: -200% 0;
|
|
|
17720
17784
|
padding: 0;
|
|
17721
17785
|
position: absolute;
|
|
17722
17786
|
width: 28px;
|
|
17723
|
-
z-index:
|
|
17787
|
+
z-index: 3;
|
|
17724
17788
|
}
|
|
17725
17789
|
|
|
17726
17790
|
/* Nextcloud's `button:hover` rule would otherwise fill the chevron. */
|
|
@@ -23058,6 +23122,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
|
|
|
23058
23122
|
color: var(--color-main-text);
|
|
23059
23123
|
}
|
|
23060
23124
|
|
|
23125
|
+
/* An on-demand step that did not run says so quietly: it is a choice the
|
|
23126
|
+
user did not make, not a failure. */
|
|
23127
|
+
.cn-setup-summary__item--not-run .cn-setup-summary__value[data-v-75b2078b] {
|
|
23128
|
+
font-weight: normal;
|
|
23129
|
+
color: var(--color-text-maxcontrast);
|
|
23130
|
+
}
|
|
23131
|
+
|
|
23061
23132
|
|
|
23062
23133
|
.cn-admin-settings-shell[data-v-260aa222] {
|
|
23063
23134
|
max-width: 900px;
|
package/l10n/en.json
CHANGED
|
@@ -354,6 +354,7 @@
|
|
|
354
354
|
"No widgets configured": "No widgets configured",
|
|
355
355
|
"Not configured": "Not configured",
|
|
356
356
|
"Not set": "Not set",
|
|
357
|
+
"Not run": "Not run",
|
|
357
358
|
"Notes": "Notes",
|
|
358
359
|
"Number": "Number",
|
|
359
360
|
"Number configuration": "Number configuration",
|
|
@@ -373,6 +374,7 @@
|
|
|
373
374
|
"One of": "One of",
|
|
374
375
|
"Open": "Open",
|
|
375
376
|
"Open access:": "Open access:",
|
|
377
|
+
"Open row": "Open row",
|
|
376
378
|
"Operator": "Operator",
|
|
377
379
|
"Order": "Order",
|
|
378
380
|
"Owner:": "Owner:",
|
package/l10n/nl.json
CHANGED
|
@@ -354,6 +354,7 @@
|
|
|
354
354
|
"No widgets configured": "Geen widgets geconfigureerd",
|
|
355
355
|
"Not configured": "Niet geconfigureerd",
|
|
356
356
|
"Not set": "Niet ingesteld",
|
|
357
|
+
"Not run": "Niet uitgevoerd",
|
|
357
358
|
"Notes": "Notities",
|
|
358
359
|
"Number": "Getal",
|
|
359
360
|
"Number configuration": "Nummerconfiguratie",
|
|
@@ -371,6 +372,7 @@
|
|
|
371
372
|
"One of": "Één van",
|
|
372
373
|
"Open": "Openen",
|
|
373
374
|
"Open access:": "Openbare toegang:",
|
|
375
|
+
"Open row": "Rij openen",
|
|
374
376
|
"Operator": "Operator",
|
|
375
377
|
"Order": "Volgorde",
|
|
376
378
|
"Owner:": "Eigenaar:",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conduction/nextcloud-vue",
|
|
3
|
-
"version": "2.56.0-beta.
|
|
3
|
+
"version": "2.56.0-beta.5",
|
|
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": {
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
@event add
|
|
110
110
|
@description User clicked the primary Add button. No payload.
|
|
111
111
|
-->
|
|
112
|
-
<!-- With `addHref` / `addTo` the button is a real link (middle-click, new tab), and still emits `add
|
|
112
|
+
<!-- With `addHref` / `addTo` the button is a real link (middle-click, new tab), and still emits `add`, except on a modified click, which opens a new tab. -->
|
|
113
113
|
<NcButton v-if="showAdd"
|
|
114
114
|
variant="primary"
|
|
115
115
|
:disabled="addDisabled"
|
|
@@ -153,8 +153,7 @@
|
|
|
153
153
|
|
|
154
154
|
<NcActionLink v-if="documentationUrl"
|
|
155
155
|
:href="documentationUrl"
|
|
156
|
-
target="_blank"
|
|
157
|
-
rel="noopener noreferrer">
|
|
156
|
+
target="_blank">
|
|
158
157
|
<template #icon>
|
|
159
158
|
<BookOpenVariantOutline :size="20" />
|
|
160
159
|
</template>
|
|
@@ -372,6 +371,7 @@ import ViewGridOutline from 'vue-material-design-icons/ViewGridOutline.vue'
|
|
|
372
371
|
import ViewListOutline from 'vue-material-design-icons/ViewListOutline.vue'
|
|
373
372
|
import CnBuildiqEditButton from '../CnBuildiqEditButton/CnBuildiqEditButton.vue'
|
|
374
373
|
import { followItemActionLink, resolveItemActionLink } from '../../utils/actionLink.js'
|
|
374
|
+
import { isModifiedClick } from '../../utils/linkNavigation.js'
|
|
375
375
|
import { CnIcon } from '../CnIcon/index.js'
|
|
376
376
|
|
|
377
377
|
/**
|
|
@@ -923,12 +923,17 @@ export default {
|
|
|
923
923
|
|
|
924
924
|
/**
|
|
925
925
|
* Add button click: a plain click on an in-app link routes in place,
|
|
926
|
-
* anything else on a link is the browser's. Emits `add
|
|
926
|
+
* anything else on a link is the browser's. Emits `add`, except for a
|
|
927
|
+
* modified click on a link, which opens in a new tab: a host `@add`
|
|
928
|
+
* would otherwise run in the tab the user is leaving.
|
|
927
929
|
*
|
|
928
930
|
* @param {MouseEvent} event The click event.
|
|
929
931
|
*/
|
|
930
932
|
onAddClick(event) {
|
|
931
933
|
if (this.addLink) {
|
|
934
|
+
if (isModifiedClick(event)) {
|
|
935
|
+
return
|
|
936
|
+
}
|
|
932
937
|
followItemActionLink(event, this.addLink, this.$router)
|
|
933
938
|
}
|
|
934
939
|
this.$emit('add')
|
|
@@ -936,13 +941,17 @@ export default {
|
|
|
936
941
|
|
|
937
942
|
/**
|
|
938
943
|
* A header link entry was clicked: route a plain in-app click and emit
|
|
939
|
-
* `header-action` as the button would.
|
|
944
|
+
* `header-action` as the button would. A modified click is the
|
|
945
|
+
* browser's alone (a new tab), so nothing is emitted for it.
|
|
940
946
|
*
|
|
941
947
|
* @param {object} entry The header action.
|
|
942
948
|
* @param {object} link The resolved link.
|
|
943
949
|
* @param {MouseEvent} event The click event.
|
|
944
950
|
*/
|
|
945
951
|
onHeaderLinkClick(entry, link, event) {
|
|
952
|
+
if (isModifiedClick(event)) {
|
|
953
|
+
return
|
|
954
|
+
}
|
|
946
955
|
followItemActionLink(event, link, this.$router)
|
|
947
956
|
this.$emit('header-action', { action: entry.id, id: entry.id })
|
|
948
957
|
},
|
|
@@ -69,7 +69,6 @@
|
|
|
69
69
|
v-if="showRequestFeature && resolvedRequestFeatureUrl"
|
|
70
70
|
:href="resolvedRequestFeatureUrl"
|
|
71
71
|
target="_blank"
|
|
72
|
-
rel="noopener noreferrer"
|
|
73
72
|
:data-testid="`${testidBase}-action-request-feature`"
|
|
74
73
|
:closeAfterClick="true"
|
|
75
74
|
@click="onRequestFeatureClick">
|
|
@@ -92,7 +91,6 @@
|
|
|
92
91
|
v-if="showReportBug && resolvedReportBugUrl"
|
|
93
92
|
:href="resolvedReportBugUrl"
|
|
94
93
|
target="_blank"
|
|
95
|
-
rel="noopener noreferrer"
|
|
96
94
|
:data-testid="`${testidBase}-action-report-bug`"
|
|
97
95
|
:closeAfterClick="true">
|
|
98
96
|
<template #icon>
|
|
@@ -104,7 +102,6 @@
|
|
|
104
102
|
v-if="showDocumentation && resolvedDocumentationUrl"
|
|
105
103
|
:href="resolvedDocumentationUrl"
|
|
106
104
|
target="_blank"
|
|
107
|
-
rel="noopener noreferrer"
|
|
108
105
|
:data-testid="`${testidBase}-action-documentation`"
|
|
109
106
|
:closeAfterClick="true">
|
|
110
107
|
<template #icon>
|
|
@@ -487,9 +487,18 @@
|
|
|
487
487
|
dismissed the walkthrough remounts and the first-visit tour
|
|
488
488
|
starts (or resumes) then. `!== true` keeps apps that opted out
|
|
489
489
|
of the support note (`cnSupportVisible` undefined) unaffected.
|
|
490
|
+
|
|
491
|
+
Withheld the same way while the setup status is still loading
|
|
492
|
+
and while the non-gating setup wizard is open
|
|
493
|
+
(`walkthroughHeldForSetup`). On a first run the wizard and the
|
|
494
|
+
first-visit tour both qualify; the tour used to open behind the
|
|
495
|
+
wizard, and its window-level ESC listener meant closing the
|
|
496
|
+
wizard with ESC also dismissed the tour and recorded it as seen.
|
|
497
|
+
Held back, the tour is never mounted, so nothing is recorded; it
|
|
498
|
+
starts when the wizard is dismissed or finished.
|
|
490
499
|
-->
|
|
491
500
|
<!-- @slot walkthrough Override the gating-free walkthrough overlay. Scope: { manifest, seenVersion }. -->
|
|
492
|
-
<slot v-if="walkthroughEnabled && walkthroughSeenResolved && cnSupportVisible !== true"
|
|
501
|
+
<slot v-if="walkthroughEnabled && walkthroughSeenResolved && cnSupportVisible !== true && !walkthroughHeldForSetup"
|
|
493
502
|
name="walkthrough"
|
|
494
503
|
:manifest="manifest"
|
|
495
504
|
:seenVersion="walkthroughSeenVersion">
|
|
@@ -2376,6 +2385,10 @@ export default {
|
|
|
2376
2385
|
* Neither guard subsumes the other — (1) is about steps the server never
|
|
2377
2386
|
* reports, (2) about steps it can never mark done — so both are needed.
|
|
2378
2387
|
*
|
|
2388
|
+
* 3. On-demand steps (`onDemand: true`) are excluded too: they run only
|
|
2389
|
+
* when the user asks (learniq's "Remove the example data"), so they
|
|
2390
|
+
* are never outstanding work.
|
|
2391
|
+
*
|
|
2379
2392
|
* @return {boolean} True when an actionable optional step is genuinely outstanding.
|
|
2380
2393
|
*/
|
|
2381
2394
|
optionalSetupPending() {
|
|
@@ -2395,7 +2408,9 @@ export default {
|
|
|
2395
2408
|
const outstanding = s.completed.value === true
|
|
2396
2409
|
? (s.optionalUnmetReported ? s.optionalUnmetReported.value : [])
|
|
2397
2410
|
: s.optionalUnmet.value
|
|
2398
|
-
|
|
2411
|
+
// On-demand steps (`onDemand: true`) run only when the user asks,
|
|
2412
|
+
// so they are never outstanding and never reason to open the wizard.
|
|
2413
|
+
return outstanding.some((st) => st.type !== 'info' && st.type !== 'summary' && st.onDemand !== true)
|
|
2399
2414
|
},
|
|
2400
2415
|
|
|
2401
2416
|
/**
|
|
@@ -2478,6 +2493,20 @@ export default {
|
|
|
2478
2493
|
return (w && typeof w.completionConfigKey === 'string' && w.completionConfigKey) || ''
|
|
2479
2494
|
},
|
|
2480
2495
|
|
|
2496
|
+
/**
|
|
2497
|
+
* Whether the setup flow holds the walkthrough back: the setup status
|
|
2498
|
+
* has not settled yet (an outstanding optional step may still open the
|
|
2499
|
+
* wizard), or the non-gating setup wizard is open. The gating setup
|
|
2500
|
+
* phase needs no check here, it replaces the shell (and the tour with
|
|
2501
|
+
* it) outright. Apps without a `setup` block settle immediately, so
|
|
2502
|
+
* this is `false` for them from the first render.
|
|
2503
|
+
*
|
|
2504
|
+
* @return {boolean} True while the tour must wait for setup.
|
|
2505
|
+
*/
|
|
2506
|
+
walkthroughHeldForSetup() {
|
|
2507
|
+
return !this.setupStatusSettled || this.setupWizardOpen
|
|
2508
|
+
},
|
|
2509
|
+
|
|
2481
2510
|
/**
|
|
2482
2511
|
* The user's last-seen app version for walkthrough composition. Resolved
|
|
2483
2512
|
* from the per-user `completionConfigKey` preference (cross-device) with
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
:data-card-id="cardKey(card)"
|
|
109
109
|
:aria-label="cardLabel(card, column)"
|
|
110
110
|
@click="openCard(card, $event)"
|
|
111
|
+
@mousedown="preventMiddleClickAutoscroll"
|
|
111
112
|
@auxclick="onCardAuxClick(card, $event)">
|
|
112
113
|
{{ openLabel }}
|
|
113
114
|
</button>
|
|
@@ -161,7 +162,7 @@ import { translate as t } from '@nextcloud/l10n'
|
|
|
161
162
|
import { buildBoardColumns } from '../../utils/boardColumns.js'
|
|
162
163
|
import { buildSwimlanes } from '../../utils/boardSwimlanes.js'
|
|
163
164
|
import { DROP_OUTCOMES, runBoardDrop } from '../../utils/boardTransition.js'
|
|
164
|
-
import { isRowMiddleClick } from '../../utils/rowAuxClick.js'
|
|
165
|
+
import { isRowMiddleClick, preventMiddleClickAutoscroll } from '../../utils/rowAuxClick.js'
|
|
165
166
|
|
|
166
167
|
/**
|
|
167
168
|
* CnBoardView — the index page's rows as a board, one column per stage.
|
|
@@ -253,7 +254,7 @@ export default {
|
|
|
253
254
|
},
|
|
254
255
|
},
|
|
255
256
|
|
|
256
|
-
emits: ['card-click', 'moved', 'refused', 'stale'],
|
|
257
|
+
emits: ['card-click', 'card-aux-click', 'moved', 'refused', 'stale'],
|
|
257
258
|
|
|
258
259
|
data() {
|
|
259
260
|
return {
|
|
@@ -333,6 +334,8 @@ export default {
|
|
|
333
334
|
methods: {
|
|
334
335
|
t,
|
|
335
336
|
|
|
337
|
+
preventMiddleClickAutoscroll,
|
|
338
|
+
|
|
336
339
|
/**
|
|
337
340
|
* Open one card. The pointer and the keyboard both come through here,
|
|
338
341
|
* so a reader on Enter reaches the same record as a reader on click.
|
|
@@ -343,13 +346,15 @@ export default {
|
|
|
343
346
|
*/
|
|
344
347
|
openCard(card, event) {
|
|
345
348
|
/**
|
|
346
|
-
* @event card-click Emitted when a reader opens a card, by click
|
|
349
|
+
* @event card-click Emitted when a reader opens a card, by click or Enter. Payload: `(card, event)` — the card row and the native event, so the host can open it in a new tab on a ctrl/cmd/shift click. A middle click emits `card-aux-click` instead.
|
|
347
350
|
*/
|
|
348
351
|
this.$emit('card-click', card, event)
|
|
349
352
|
},
|
|
350
353
|
|
|
351
354
|
/**
|
|
352
|
-
* Middle click on a card's open button:
|
|
355
|
+
* Middle click on a card's open button: emits `card-aux-click`, not
|
|
356
|
+
* `card-click`, so an existing listener that navigates never moves the
|
|
357
|
+
* current tab away.
|
|
353
358
|
*
|
|
354
359
|
* @param {object} card The card the reader picked.
|
|
355
360
|
* @param {MouseEvent} event The auxclick event.
|
|
@@ -357,7 +362,10 @@ export default {
|
|
|
357
362
|
*/
|
|
358
363
|
onCardAuxClick(card, event) {
|
|
359
364
|
if (isRowMiddleClick(event)) {
|
|
360
|
-
|
|
365
|
+
/**
|
|
366
|
+
* @event card-aux-click Emitted when a reader middle-clicks a card, for opening it in a new tab (see `openRowTarget`). Payload: `(card, event)` — the card row and the native auxclick event.
|
|
367
|
+
*/
|
|
368
|
+
this.$emit('card-aux-click', card, event)
|
|
361
369
|
}
|
|
362
370
|
},
|
|
363
371
|
|
|
@@ -149,7 +149,7 @@ export default {
|
|
|
149
149
|
},
|
|
150
150
|
},
|
|
151
151
|
|
|
152
|
-
emits: ['click', 'select'],
|
|
152
|
+
emits: ['click', 'select', 'aux-click'],
|
|
153
153
|
|
|
154
154
|
computed: {
|
|
155
155
|
/**
|
|
@@ -184,6 +184,14 @@ export default {
|
|
|
184
184
|
const listeners = { select: () => this.toggleSelect(object) }
|
|
185
185
|
if (!this.selectable || this.clickToView) {
|
|
186
186
|
listeners.click = (_card, event) => this.$emit('click', object, event)
|
|
187
|
+
// A middle click, kept off `click` so a navigating listener stays put.
|
|
188
|
+
listeners['aux-click'] = (_card, event) => {
|
|
189
|
+
/**
|
|
190
|
+
* @event aux-click Emitted when a navigating card is middle-clicked, for opening it in a new tab (see `openRowTarget`). Payload: `(object, event)` — the card's object and the native auxclick event.
|
|
191
|
+
* @type {object} The card's object.
|
|
192
|
+
*/
|
|
193
|
+
this.$emit('aux-click', object, event)
|
|
194
|
+
}
|
|
187
195
|
}
|
|
188
196
|
return listeners
|
|
189
197
|
},
|
|
@@ -94,6 +94,7 @@
|
|
|
94
94
|
import { NcActionButton, NcActionLink, NcActions } from '@nextcloud/vue'
|
|
95
95
|
import { CTX_MENU_DATA_ATTR, CTX_MENU_POPPER_ATTR } from '../../composables/useContextMenu.js'
|
|
96
96
|
import { followItemActionLink, resolveItemActionLink } from '../../utils/actionLink.js'
|
|
97
|
+
import { isModifiedClick } from '../../utils/linkNavigation.js'
|
|
97
98
|
import { CnIcon } from '../CnIcon/index.js'
|
|
98
99
|
|
|
99
100
|
/**
|
|
@@ -493,13 +494,17 @@ export default {
|
|
|
493
494
|
/**
|
|
494
495
|
* A link entry was clicked: route a plain in-app click, leave the rest to
|
|
495
496
|
* the browser, and emit `action` as a button would. The `handler` is not
|
|
496
|
-
* called, since navigating is what the link already does.
|
|
497
|
+
* called, since navigating is what the link already does. A modified
|
|
498
|
+
* click opens a new tab, so nothing is emitted in this one.
|
|
497
499
|
*
|
|
498
500
|
* @param {object} action The action descriptor.
|
|
499
501
|
* @param {object} link The resolved link.
|
|
500
502
|
* @param {MouseEvent} event The click event.
|
|
501
503
|
*/
|
|
502
504
|
onLinkAction(action, link, event) {
|
|
505
|
+
if (isModifiedClick(event)) {
|
|
506
|
+
return
|
|
507
|
+
}
|
|
503
508
|
followItemActionLink(event, link, this.$router)
|
|
504
509
|
this.$emit('action', { action: action.label, row: this.targetItem })
|
|
505
510
|
},
|
|
@@ -229,7 +229,7 @@ features are folded in here as opt-in props (bare-table usage is unchanged):
|
|
|
229
229
|
- `fetchParams` — extra query params for the self-fetch (a resolved filter map,
|
|
230
230
|
`_order[field]` ordering, `_limit`); changing it re-triggers the fetch. Used by
|
|
231
231
|
`CnWidgetObjectTable`'s declarative `source`.
|
|
232
|
-
- `rowClickRoute` — a function mapping a
|
|
232
|
+
- `rowClickRoute` — a function mapping a row to a vue-router route. Each such row renders a real `<a href>` in its first cell, stretched over the row, so hovering shows the URL, a plain or alt click routes in place, a ctrl/cmd/shift or middle click opens a new tab, and the row is reachable with Tab. The link is named by the first cell's text ("Open row" when that is empty or not plain text). There is no link on a `selectable` table without `rowClickToView`, where a row click selects. `CnWidgetObjectTable` rows inherit it. Trade-offs: cell text cannot be selected by dragging on a linked row, and a right-click on it shows the browser's link menu only when no host listens to `row-context-menu`.
|
|
233
233
|
- `hideHeader` — drop the column-label row for a compact list widget.
|
|
234
234
|
- `#footer` slot — supply a custom footer link (e.g. "+ New" or an always-shown
|
|
235
235
|
"View all") with its own handler; works outside a vue-router context.
|