@conduction/nextcloud-vue 2.58.0 → 2.60.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/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 +14 -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/CnAppNav/CnAppNav.vue2.js +39 -0
- package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
- package/dist/esm/components/CnAppNav/CnAppNav.vue3.js +46 -4
- package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
- package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js +224 -9
- package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js +79 -25
- package/dist/esm/components/CnBannerWidget/CnBannerWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js +42 -3
- package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue2.js.map +1 -1
- package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js +39 -6
- package/dist/esm/components/CnBannerWidgetForm/CnBannerWidgetForm.vue3.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +58 -5
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +13 -5
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js +10 -0
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue.js.map +1 -0
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js +39 -0
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue2.js.map +1 -0
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js +16 -0
- package/dist/esm/components/CnBrandStripe/CnBrandStripe.vue3.js.map +1 -0
- 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/CnCellRenderer/CnCellRenderer.vue2.js +117 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +147 -89
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.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/CnConversationThread/CnConversationThread.vue.js +10 -0
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js.map +1 -0
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +259 -0
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -0
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +131 -0
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js +10 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js.map +1 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +116 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js +24 -0
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -0
- 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 +532 -29
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +300 -142
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js +10 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue.js.map +1 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js +237 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue2.js.map +1 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js +120 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewList.vue3.js.map +1 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js +10 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue.js.map +1 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js +77 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js +27 -0
- package/dist/esm/components/CnDocumentReviewList/CnDocumentReviewWidget.vue3.js.map +1 -0
- 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/CnHeaderWidget/CnHeaderWidget.vue2.js +169 -12
- package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js +15 -7
- package/dist/esm/components/CnHeaderWidget/CnHeaderWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js +37 -3
- package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue2.js.map +1 -1
- package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js +44 -16
- package/dist/esm/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +199 -16
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +20 -10
- 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/CnNextStepCard/CnNextStepCard.vue.js +10 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue.js.map +1 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js +150 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue2.js.map +1 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js +106 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepCard.vue3.js.map +1 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js +9 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue.js.map +1 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js +47 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js +17 -0
- package/dist/esm/components/CnNextStepCard/CnNextStepWidget.vue3.js.map +1 -0
- 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/CnObjectDataWidget/CnObjectDataWidget.vue2.js +49 -0
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js +6 -0
- package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js +46 -0
- package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectKanban/CnObjectKanban.vue3.js +15 -3
- package/dist/esm/components/CnObjectKanban/CnObjectKanban.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/CnQuickFilterBar/CnQuickFilterBar.vue2.js +37 -1
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js.map +1 -1
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js +29 -13
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js +100 -3
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.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/CnSavedViewsControl/CnSavedViewsControl.vue2.js +50 -3
- package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js.map +1 -1
- package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js.map +1 -1
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js +10 -0
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js.map +1 -0
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js +186 -0
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -0
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js +46 -0
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -0
- 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/CnStackedBarWidget/CnStackedBarWidget.vue.js +11 -0
- package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue.js.map +1 -0
- package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js +298 -0
- package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js +77 -0
- package/dist/esm/components/CnStackedBarWidget/CnStackedBarWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js +10 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue.js.map +1 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js +169 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue2.js.map +1 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js +48 -0
- package/dist/esm/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue3.js.map +1 -0
- package/dist/esm/components/CnTabs/CnTab.vue2.js +35 -0
- package/dist/esm/components/CnTabs/CnTab.vue2.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTab.vue3.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue2.js +120 -7
- package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue3.js +57 -5
- package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +59 -4
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +6 -2
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.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/components/CnWeekStripWidget/CnWeekStripWidget.vue.js +10 -0
- package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js.map +1 -0
- package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js +484 -0
- package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js +115 -0
- package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js +10 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue.js.map +1 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js +189 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue2.js.map +1 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js +74 -0
- package/dist/esm/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue3.js.map +1 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +82 -8
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.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 +55 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +55 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/nextcloud-vue.css +998 -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/dateVariant.js +124 -0
- package/dist/esm/utils/dateVariant.js.map +1 -0
- package/dist/esm/utils/detailActionModel.js +260 -0
- package/dist/esm/utils/detailActionModel.js.map +1 -0
- package/dist/esm/utils/dueRule.js +84 -0
- package/dist/esm/utils/dueRule.js.map +1 -0
- package/dist/esm/utils/fetchAggregate.js +37 -1
- package/dist/esm/utils/fetchAggregate.js.map +1 -1
- package/dist/esm/utils/fetchFilterCounts.js +186 -0
- package/dist/esm/utils/fetchFilterCounts.js.map +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js +5 -0
- package/dist/esm/utils/libraryWidgetKeys.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/readPath.js +30 -0
- package/dist/esm/utils/readPath.js.map +1 -0
- 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 +15855 -9353
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +998 -7
- package/l10n/en.json +55 -1
- package/l10n/nl.json +55 -1
- package/package.json +1 -1
- package/scripts/.jsdoc-baselines.json +3 -0
- package/src/components/CnActionsBar/CnActionsBar.vue +14 -5
- package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -4
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +1 -2
- package/src/components/CnAppNav/CnAppNav.md +26 -0
- package/src/components/CnAppNav/CnAppNav.vue +104 -1
- package/src/components/CnBannerWidget/CnBannerWidget.vue +365 -10
- package/src/components/CnBannerWidgetForm/CnBannerWidgetForm.vue +65 -3
- package/src/components/CnBoardView/CnBoardView.vue +90 -5
- package/src/components/CnBrandStripe/CnBrandStripe.md +22 -0
- package/src/components/CnBrandStripe/CnBrandStripe.vue +100 -0
- package/src/components/CnBrandStripe/index.js +4 -0
- package/src/components/CnCardGrid/CnCardGrid.vue +9 -1
- package/src/components/CnCellRenderer/CnCellRenderer.vue +207 -1
- package/src/components/CnContextMenu/CnContextMenu.vue +6 -1
- package/src/components/CnConversationThread/CnConversationThread.md +51 -0
- package/src/components/CnConversationThread/CnConversationThread.vue +457 -0
- package/src/components/CnConversationThread/CnConversationWidget.vue +144 -0
- package/src/components/CnConversationThread/index.js +4 -0
- 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 +17 -1
- package/src/components/CnDetailPage/CnDetailPage.vue +712 -49
- package/src/components/CnDocumentReviewList/CnDocumentReviewList.md +55 -0
- package/src/components/CnDocumentReviewList/CnDocumentReviewList.vue +384 -0
- package/src/components/CnDocumentReviewList/CnDocumentReviewWidget.vue +108 -0
- package/src/components/CnDocumentReviewList/index.js +4 -0
- 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/CnHeaderWidget/CnHeaderWidget.vue +189 -14
- package/src/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue +53 -3
- package/src/components/CnIndexPage/CnIndexPage.vue +210 -17
- 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/CnNextStepCard/CnNextStepCard.md +40 -0
- package/src/components/CnNextStepCard/CnNextStepCard.vue +319 -0
- package/src/components/CnNextStepCard/CnNextStepWidget.vue +59 -0
- package/src/components/CnNextStepCard/index.js +4 -0
- package/src/components/CnObjectCard/CnObjectCard.vue +24 -6
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +49 -0
- package/src/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue +6 -0
- package/src/components/CnObjectKanban/CnObjectKanban.vue +86 -2
- 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/CnQuickFilterBar/CnQuickFilterBar.md +3 -0
- package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +60 -1
- package/src/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue +100 -3
- package/src/components/CnRowActions/CnRowActions.vue +7 -2
- package/src/components/CnSavedViewsControl/CnSavedViewsControl.vue +50 -3
- package/src/components/CnSegmentedControl/CnSegmentedControl.md +46 -0
- package/src/components/CnSegmentedControl/CnSegmentedControl.vue +291 -0
- package/src/components/CnSegmentedControl/index.js +4 -0
- package/src/components/CnSpendAnalyticsWidget/CnSpendAnalyticsWidget.vue +5 -3
- package/src/components/CnStackedBarWidget/CnStackedBarWidget.md +15 -0
- package/src/components/CnStackedBarWidget/CnStackedBarWidget.vue +414 -0
- package/src/components/CnStackedBarWidget/index.js +14 -0
- package/src/components/CnStackedBarWidgetForm/CnStackedBarWidgetForm.vue +224 -0
- package/src/components/CnStackedBarWidgetForm/index.js +4 -0
- package/src/components/CnTabs/CnTab.vue +35 -0
- package/src/components/CnTabs/CnTabs.vue +251 -13
- package/src/components/CnTabsWidget/CnTabsWidget.vue +63 -4
- package/src/components/CnTasksWidget/CnTasksWidget.vue +4 -1
- package/src/components/CnWeekStripWidget/CnWeekStripWidget.md +31 -0
- package/src/components/CnWeekStripWidget/CnWeekStripWidget.vue +668 -0
- package/src/components/CnWeekStripWidget/index.js +14 -0
- package/src/components/CnWeekStripWidgetForm/CnWeekStripWidgetForm.vue +265 -0
- package/src/components/CnWeekStripWidgetForm/index.js +4 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +74 -0
- package/src/components/index.js +11 -0
- package/src/css/detail-page.css +47 -0
- package/src/css/table.css +26 -0
- package/src/index.js +9 -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 +389 -1
- package/src/schemas/app-manifest.schema.json +2 -1
- package/src/utils/actionLink.js +5 -0
- package/src/utils/actionsDispatcher.js +15 -0
- package/src/utils/dateVariant.js +120 -0
- package/src/utils/detailActionModel.js +256 -0
- package/src/utils/dueRule.js +94 -0
- package/src/utils/fetchAggregate.js +36 -0
- package/src/utils/fetchFilterCounts.js +182 -0
- package/src/utils/index.js +1 -0
- package/src/utils/libraryWidgetKeys.js +5 -0
- package/src/utils/linkNavigation.js +6 -3
- package/src/utils/readPath.js +27 -0
- package/src/utils/rowAuxClick.js +29 -4
- package/src/utils/safeHref.js +18 -3
- package/src/utils/validateManifestV2.compiled.js +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { getCurrentUser } from '@nextcloud/auth';
|
|
1
2
|
import { subscribe, unsubscribe } from '@nextcloud/event-bus';
|
|
2
3
|
import { translate } from '@nextcloud/l10n';
|
|
3
|
-
import { NcActionButton, NcActionLink, NcActionSeparator, NcButton, NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue';
|
|
4
|
+
import { NcActionButton, NcActionCaption, NcActionLink, NcActionSeparator, NcButton, NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue';
|
|
4
5
|
import { ref, provide, watch } from 'vue';
|
|
5
6
|
import AlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue';
|
|
6
7
|
import ArrowLeft from 'vue-material-design-icons/ArrowLeft.vue';
|
|
@@ -12,19 +13,20 @@ import InformationOutline from 'vue-material-design-icons/InformationOutline.vue
|
|
|
12
13
|
import Pencil from 'vue-material-design-icons/Pencil.vue';
|
|
13
14
|
import Plus from 'vue-material-design-icons/Plus.vue';
|
|
14
15
|
import Refresh from 'vue-material-design-icons/Refresh.vue';
|
|
15
|
-
import __sfc_main$
|
|
16
|
-
import __sfc_main$
|
|
16
|
+
import __sfc_main$g from '../../dialogs/CnRelationLinkModal.vue.js';
|
|
17
|
+
import __sfc_main$f from '../../dialogs/CnWidgetStyleEditorModal.vue.js';
|
|
17
18
|
import __sfc_main$1 from '../CnActionsMenu/CnActionsMenu.vue.js';
|
|
18
|
-
import __sfc_main$
|
|
19
|
+
import __sfc_main$d from '../CnBodySections/CnBodySections.vue.js';
|
|
19
20
|
import __sfc_main$2 from '../CnBuildiqEditButton/CnBuildiqEditButton.vue.js';
|
|
20
|
-
import __sfc_main$
|
|
21
|
-
import __sfc_main$
|
|
22
|
-
import __sfc_main$
|
|
23
|
-
import __sfc_main$
|
|
21
|
+
import __sfc_main$7 from '../CnDashboardGrid/CnDashboardGrid.vue.js';
|
|
22
|
+
import __sfc_main$5 from '../CnDetailWidgetHost/CnDetailWidgetHost.vue.js';
|
|
23
|
+
import __sfc_main$6 from '../CnFormDialog/CnFormDialog.vue.js';
|
|
24
|
+
import __sfc_main$8 from '../CnLifecycleActions/CnLifecycleActions.vue.js';
|
|
24
25
|
import __sfc_main$3 from '../CnLockedBanner/CnLockedBanner.vue.js';
|
|
25
|
-
import __sfc_main$
|
|
26
|
-
import __sfc_main$
|
|
27
|
-
import __sfc_main$
|
|
26
|
+
import __sfc_main$4 from '../CnNextStepCard/CnNextStepCard.vue.js';
|
|
27
|
+
import __sfc_main$c from '../CnRelatedCollections/CnRelatedCollections.vue.js';
|
|
28
|
+
import __sfc_main$b from '../CnSummaryAggregates/CnSummaryAggregates.vue.js';
|
|
29
|
+
import __sfc_main$e from '../CnTranslatedBadge/CnTranslatedBadge.vue.js';
|
|
28
30
|
import { useIntegrationRegistry } from '../../composables/useIntegrationRegistry.js';
|
|
29
31
|
import { useObjectLock } from '../../composables/useObjectLock.js';
|
|
30
32
|
import { useObjectPresence } from '../../composables/useObjectPresence.js';
|
|
@@ -33,11 +35,13 @@ import { gridLayout } from '../../mixins/gridLayout.js';
|
|
|
33
35
|
import { isAppInstalled } from '../../utils/appInstalled.js';
|
|
34
36
|
import { compactLayoutRows } from '../../utils/dashboardPlacement.js';
|
|
35
37
|
import { defaultDetailGrid } from '../../utils/defaultDetailGrid.js';
|
|
38
|
+
import { stageOf, normalisePinnedAction, stageEntry, MAX_QUICK_ACTIONS, groupMenuEntries, resolveNextStep, resolvePill } from '../../utils/detailActionModel.js';
|
|
36
39
|
import { cnGridCellStyle, hasGridRow } from '../../utils/grid.js';
|
|
37
40
|
import { slotRenders } from '../../utils/slotContent.js';
|
|
38
41
|
import { isDataWidgetDef, isRelatedWidgetDef, isGeoWidgetDef, isContentOnlyWidgetDef, isCardWidgetDef, widgetContentOf, resolveRegistryRenderer, widgetTitleOf } from '../../utils/widgetDispatch.js';
|
|
39
|
-
import __sfc_main$
|
|
42
|
+
import __sfc_main$9 from '../CnActionButtons/CnActionButtons.vue.js';
|
|
40
43
|
import __sfc_main from '../CnIcon/CnIcon.vue.js';
|
|
44
|
+
import __sfc_main$a from '../CnStatusBadge/CnStatusBadge.vue.js';
|
|
41
45
|
import { getWidgetTypeEntry } from '../CnWidgetGrid/dashboardWidgetRegistry.js';
|
|
42
46
|
import '../CnWidgetGrid/registerDashboardWidgets.js';
|
|
43
47
|
import { useObjectStore } from '../../store/useObjectStore.js';
|
|
@@ -162,6 +166,7 @@ var script = {
|
|
|
162
166
|
ChevronLeft,
|
|
163
167
|
ChevronRight,
|
|
164
168
|
NcActionButton,
|
|
169
|
+
NcActionCaption,
|
|
165
170
|
NcActionLink,
|
|
166
171
|
NcActionSeparator,
|
|
167
172
|
NcButton,
|
|
@@ -176,17 +181,19 @@ var script = {
|
|
|
176
181
|
CnActionsMenu: __sfc_main$1,
|
|
177
182
|
CnBuildiqEditButton: __sfc_main$2,
|
|
178
183
|
CnLockedBanner: __sfc_main$3,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
184
|
+
CnNextStepCard: __sfc_main$4,
|
|
185
|
+
CnDetailWidgetHost: __sfc_main$5,
|
|
186
|
+
CnFormDialog: __sfc_main$6,
|
|
187
|
+
CnDashboardGrid: __sfc_main$7,
|
|
188
|
+
CnLifecycleActions: __sfc_main$8,
|
|
189
|
+
CnActionButtons: __sfc_main$9,
|
|
190
|
+
CnStatusBadge: __sfc_main$a,
|
|
191
|
+
CnSummaryAggregates: __sfc_main$b,
|
|
192
|
+
CnRelatedCollections: __sfc_main$c,
|
|
193
|
+
CnBodySections: __sfc_main$d,
|
|
194
|
+
CnTranslatedBadge: __sfc_main$e,
|
|
195
|
+
CnWidgetStyleEditorModal: __sfc_main$f,
|
|
196
|
+
CnRelationLinkModal: __sfc_main$g,
|
|
190
197
|
Cog,
|
|
191
198
|
Plus,
|
|
192
199
|
Pencil,
|
|
@@ -989,6 +996,130 @@ var script = {
|
|
|
989
996
|
type: Boolean,
|
|
990
997
|
default: false,
|
|
991
998
|
},
|
|
999
|
+
|
|
1000
|
+
// ── The action model (detail-action-model-and-case-surfaces) ────
|
|
1001
|
+
|
|
1002
|
+
/**
|
|
1003
|
+
* The primary action per stage (manifest `config.primaryActionByStage`):
|
|
1004
|
+
* a map from a stage value to an action. When the record's stage has
|
|
1005
|
+
* an entry, that action is the page's primary button, so the button
|
|
1006
|
+
* names the next step: "Take on" on a new case, "Publish" on a
|
|
1007
|
+
* decided one. An entry is an action object in the `headerActions`
|
|
1008
|
+
* shape, or the id of a declared header action. A stage without an
|
|
1009
|
+
* entry falls back to `primaryAction`.
|
|
1010
|
+
*
|
|
1011
|
+
* @type {Record<string, string|object>|null}
|
|
1012
|
+
*/
|
|
1013
|
+
primaryActionByStage: {
|
|
1014
|
+
type: Object,
|
|
1015
|
+
default: null,
|
|
1016
|
+
},
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* Dot-path to the field that holds the record's stage. Read by
|
|
1020
|
+
* `primaryActionByStage` and `nextStep`.
|
|
1021
|
+
*
|
|
1022
|
+
* @type {string}
|
|
1023
|
+
*/
|
|
1024
|
+
stageField: {
|
|
1025
|
+
type: String,
|
|
1026
|
+
default: 'status',
|
|
1027
|
+
},
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* Always visible buttons in the header (manifest `config.quickActions`)
|
|
1031
|
+
* for the few actions a handler uses on every record. At most three
|
|
1032
|
+
* render; later entries are dropped. An entry is an action object in
|
|
1033
|
+
* the `headerActions` shape, or the id of a declared header action,
|
|
1034
|
+
* which then leaves the Actions menu.
|
|
1035
|
+
*
|
|
1036
|
+
* @type {Array<string|object>}
|
|
1037
|
+
*/
|
|
1038
|
+
quickActions: {
|
|
1039
|
+
type: Array,
|
|
1040
|
+
default: () => [],
|
|
1041
|
+
},
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* What the Actions menu itself shows (manifest `config.actionsMenu`):
|
|
1045
|
+
* `{ showRefresh?, showHelpLinks?, label? }`. `showRefresh: false`
|
|
1046
|
+
* removes Refresh. `showHelpLinks: false` removes Request a feature,
|
|
1047
|
+
* Report a bug and Documentation, for an app that offers them in its
|
|
1048
|
+
* own help menu. `label` names the menu, for example "More". `null`
|
|
1049
|
+
* (the default) changes nothing.
|
|
1050
|
+
*
|
|
1051
|
+
* @type {{showRefresh?: boolean, showHelpLinks?: boolean, label?: string}|null}
|
|
1052
|
+
*/
|
|
1053
|
+
actionsMenu: {
|
|
1054
|
+
type: Object,
|
|
1055
|
+
default: null,
|
|
1056
|
+
},
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* The "what now" card (manifest `config.nextStep`):
|
|
1060
|
+
* `{ field?, stages: { <stage>: { title?, checklist, after? } } }`.
|
|
1061
|
+
* Each checklist item is `{ label, doneField?, doneWhen?, hint? }`.
|
|
1062
|
+
* Rendered above the body for a stage that declares a checklist, with
|
|
1063
|
+
* the primary button inside it. See `CnNextStepCard`.
|
|
1064
|
+
*
|
|
1065
|
+
* @type {object|null}
|
|
1066
|
+
*/
|
|
1067
|
+
nextStep: {
|
|
1068
|
+
type: Object,
|
|
1069
|
+
default: null,
|
|
1070
|
+
},
|
|
1071
|
+
|
|
1072
|
+
/**
|
|
1073
|
+
* A pill above the title saying what kind of record this is
|
|
1074
|
+
* (manifest `config.typePill`): `{ field, colorMap?, labels?, variant? }`.
|
|
1075
|
+
* Rendered through `CnStatusBadge`; `colorMap` is keyed on the field's
|
|
1076
|
+
* raw value, `labels` maps a raw value to the text to show.
|
|
1077
|
+
*
|
|
1078
|
+
* @type {{field: string, colorMap?: object, labels?: object, variant?: string}|null}
|
|
1079
|
+
*/
|
|
1080
|
+
typePill: {
|
|
1081
|
+
type: Object,
|
|
1082
|
+
default: null,
|
|
1083
|
+
},
|
|
1084
|
+
|
|
1085
|
+
/**
|
|
1086
|
+
* A pill above the title saying where the record stands (manifest
|
|
1087
|
+
* `config.statusPill`). Same shape as `typePill`.
|
|
1088
|
+
*
|
|
1089
|
+
* @type {{field: string, colorMap?: object, labels?: object, variant?: string}|null}
|
|
1090
|
+
*/
|
|
1091
|
+
statusPill: {
|
|
1092
|
+
type: Object,
|
|
1093
|
+
default: null,
|
|
1094
|
+
},
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* A column of cards beside the body (manifest `config.sideColumn`),
|
|
1098
|
+
* for the record's facts: deadline, requester, handler, links. Each
|
|
1099
|
+
* entry is a widget definition (`{ id?, type, title?, content? }`) or
|
|
1100
|
+
* the id of a widget declared in `widgets`. The column stacks under
|
|
1101
|
+
* the body on a narrow page. Empty (the default) leaves the layout as
|
|
1102
|
+
* it is.
|
|
1103
|
+
*
|
|
1104
|
+
* @type {Array<string|object>}
|
|
1105
|
+
*/
|
|
1106
|
+
sideColumn: {
|
|
1107
|
+
type: Array,
|
|
1108
|
+
default: () => [],
|
|
1109
|
+
},
|
|
1110
|
+
|
|
1111
|
+
/**
|
|
1112
|
+
* Whether the current user administers this instance. Shows the
|
|
1113
|
+
* `adminOnly` header actions. `null` (the default) reads it from
|
|
1114
|
+
* `getCurrentUser()`. Visibility only, never an authorization
|
|
1115
|
+
* decision: the endpoint behind an action decides who may call it.
|
|
1116
|
+
*
|
|
1117
|
+
* @type {boolean|null}
|
|
1118
|
+
*/
|
|
1119
|
+
isAdmin: {
|
|
1120
|
+
type: Boolean,
|
|
1121
|
+
default: null,
|
|
1122
|
+
},
|
|
992
1123
|
},
|
|
993
1124
|
|
|
994
1125
|
emits: [
|
|
@@ -1256,7 +1387,7 @@ var script = {
|
|
|
1256
1387
|
* @spec openspec/changes/case-page-and-list-as-a-place/specs/index-page/spec.md
|
|
1257
1388
|
*/
|
|
1258
1389
|
primaryActionAnchorId() {
|
|
1259
|
-
const scope = this.primaryAction?.id || this.pageId || this.objectId || 'record';
|
|
1390
|
+
const scope = this.stagePrimaryEntry?.id || this.primaryAction?.id || this.pageId || this.objectId || 'record';
|
|
1260
1391
|
return `cn-primary-action-${String(scope).replace(/[^A-Za-z0-9_-]/g, '-')}`
|
|
1261
1392
|
},
|
|
1262
1393
|
|
|
@@ -1271,7 +1402,291 @@ var script = {
|
|
|
1271
1402
|
* @spec openspec/changes/case-page-and-list-as-a-place/specs/index-page/spec.md
|
|
1272
1403
|
*/
|
|
1273
1404
|
skipLinkLabel() {
|
|
1274
|
-
return `${this.effectiveTranslate('Skip to')} ${this.
|
|
1405
|
+
return `${this.effectiveTranslate('Skip to')} ${this.effectivePrimaryLabel}`
|
|
1406
|
+
},
|
|
1407
|
+
|
|
1408
|
+
// ── The action model (detail-action-model-and-case-surfaces) ────
|
|
1409
|
+
|
|
1410
|
+
/**
|
|
1411
|
+
* The record's stage, as `primaryActionByStage` and `nextStep` key it.
|
|
1412
|
+
*
|
|
1413
|
+
* @return {string} The stage, or '' while the record has none.
|
|
1414
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1415
|
+
*/
|
|
1416
|
+
recordStage() {
|
|
1417
|
+
return stageOf(this.currentObject, this.stageField)
|
|
1418
|
+
},
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* The stage's primary action as an id, plus its definition when the
|
|
1422
|
+
* map carries one inline.
|
|
1423
|
+
*
|
|
1424
|
+
* @return {{id: string, inline: object|null}|null} The pinned action, or null when this stage declares none.
|
|
1425
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1426
|
+
*/
|
|
1427
|
+
stagePrimary() {
|
|
1428
|
+
return normalisePinnedAction(stageEntry(this.primaryActionByStage, this.recordStage), 'cn-stage-primary')
|
|
1429
|
+
},
|
|
1430
|
+
|
|
1431
|
+
/**
|
|
1432
|
+
* The quick actions as ids, plus definitions for the inline ones.
|
|
1433
|
+
* Capped at three, and never the action that is already the primary
|
|
1434
|
+
* button.
|
|
1435
|
+
*
|
|
1436
|
+
* @return {Array<{id: string, inline: object|null}>} The pinned actions.
|
|
1437
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-quick-actions
|
|
1438
|
+
*/
|
|
1439
|
+
pinnedQuickActions() {
|
|
1440
|
+
const primaryId = this.stagePrimary?.id;
|
|
1441
|
+
return (Array.isArray(this.quickActions) ? this.quickActions : [])
|
|
1442
|
+
.map((entry, index) => normalisePinnedAction(entry, `cn-quick-${index}`))
|
|
1443
|
+
.filter((pinned) => pinned && pinned.id !== primaryId)
|
|
1444
|
+
.slice(0, MAX_QUICK_ACTIONS)
|
|
1445
|
+
},
|
|
1446
|
+
|
|
1447
|
+
/**
|
|
1448
|
+
* The stage's primary action in dispatchable form: the menu entry
|
|
1449
|
+
* CnActionButtons built for it, with its `run()`. Null while the
|
|
1450
|
+
* action is hidden by its own `visibleWhen`, in which case the page
|
|
1451
|
+
* falls back to `primaryAction`.
|
|
1452
|
+
*
|
|
1453
|
+
* @return {object|null} The entry, or null.
|
|
1454
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1455
|
+
*/
|
|
1456
|
+
stagePrimaryEntry() {
|
|
1457
|
+
const id = this.stagePrimary?.id;
|
|
1458
|
+
return (id && this.menuHeaderActions.find((entry) => entry.id === id)) || null
|
|
1459
|
+
},
|
|
1460
|
+
|
|
1461
|
+
/**
|
|
1462
|
+
* The quick actions in dispatchable form, in declaration order.
|
|
1463
|
+
*
|
|
1464
|
+
* @return {Array<object>} The entries that are visible.
|
|
1465
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-quick-actions
|
|
1466
|
+
*/
|
|
1467
|
+
quickActionEntries() {
|
|
1468
|
+
return this.pinnedQuickActions
|
|
1469
|
+
.map((pinned) => this.menuHeaderActions.find((entry) => entry.id === pinned.id))
|
|
1470
|
+
.filter(Boolean)
|
|
1471
|
+
},
|
|
1472
|
+
|
|
1473
|
+
/**
|
|
1474
|
+
* What the primary button says: the stage's action when the stage
|
|
1475
|
+
* declares one, the page's `primaryAction` otherwise. Empty gates
|
|
1476
|
+
* both the button and the skip link.
|
|
1477
|
+
*
|
|
1478
|
+
* @return {string} The label, or an empty string.
|
|
1479
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1480
|
+
*/
|
|
1481
|
+
effectivePrimaryLabel() {
|
|
1482
|
+
return this.stagePrimaryEntry ? this.stagePrimaryEntry.label : this.primaryActionLabel
|
|
1483
|
+
},
|
|
1484
|
+
|
|
1485
|
+
/**
|
|
1486
|
+
* The URL the primary button links to, when its action is a link.
|
|
1487
|
+
*
|
|
1488
|
+
* @return {string} The href, or '' for an action that is dispatched.
|
|
1489
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1490
|
+
*/
|
|
1491
|
+
primaryActionHref() {
|
|
1492
|
+
return this.stagePrimaryEntry?.href || ''
|
|
1493
|
+
},
|
|
1494
|
+
|
|
1495
|
+
/**
|
|
1496
|
+
* The link target that goes with `primaryActionHref`.
|
|
1497
|
+
*
|
|
1498
|
+
* @return {string|undefined} The target, or undefined.
|
|
1499
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1500
|
+
*/
|
|
1501
|
+
primaryActionTarget() {
|
|
1502
|
+
return this.stagePrimaryEntry?.linkTarget || undefined
|
|
1503
|
+
},
|
|
1504
|
+
|
|
1505
|
+
/**
|
|
1506
|
+
* Whether the primary button waits for its own request.
|
|
1507
|
+
*
|
|
1508
|
+
* @return {boolean} True while the stage's action is in flight.
|
|
1509
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
1510
|
+
*/
|
|
1511
|
+
primaryActionDisabled() {
|
|
1512
|
+
return Boolean(this.stagePrimaryEntry?.disabled)
|
|
1513
|
+
},
|
|
1514
|
+
|
|
1515
|
+
/**
|
|
1516
|
+
* Whether the viewer administers this instance, for `adminOnly`
|
|
1517
|
+
* actions. The prop wins; otherwise Nextcloud says.
|
|
1518
|
+
*
|
|
1519
|
+
* @return {boolean} True for an instance admin.
|
|
1520
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-grouped-and-admin-only-menu-actions
|
|
1521
|
+
*/
|
|
1522
|
+
viewerIsAdmin() {
|
|
1523
|
+
if (this.isAdmin !== null) {
|
|
1524
|
+
return this.isAdmin
|
|
1525
|
+
}
|
|
1526
|
+
try {
|
|
1527
|
+
return getCurrentUser()?.isAdmin === true
|
|
1528
|
+
} catch {
|
|
1529
|
+
return false
|
|
1530
|
+
}
|
|
1531
|
+
},
|
|
1532
|
+
|
|
1533
|
+
/**
|
|
1534
|
+
* The declared actions by id, for the `group` and `adminOnly` a menu
|
|
1535
|
+
* entry does not carry itself.
|
|
1536
|
+
*
|
|
1537
|
+
* @return {Record<string, object>} The lookup.
|
|
1538
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-grouped-and-admin-only-menu-actions
|
|
1539
|
+
*/
|
|
1540
|
+
headerActionsById() {
|
|
1541
|
+
return Object.fromEntries(this.effectiveHeaderActions
|
|
1542
|
+
.filter((action) => action && action.id)
|
|
1543
|
+
.map((action) => [action.id, action]))
|
|
1544
|
+
},
|
|
1545
|
+
|
|
1546
|
+
/**
|
|
1547
|
+
* The menu entries in the groups the menu draws: ungrouped first,
|
|
1548
|
+
* named groups in first appearance order, admin actions last and for
|
|
1549
|
+
* admins only. A page that groups nothing gets one captionless group.
|
|
1550
|
+
*
|
|
1551
|
+
* @return {Array<{key: string, label: string, entries: Array<object>}>} The groups.
|
|
1552
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-grouped-and-admin-only-menu-actions
|
|
1553
|
+
*/
|
|
1554
|
+
headerMenuGroups() {
|
|
1555
|
+
const groups = groupMenuEntries(this.headerMenuEntries, this.headerActionsById, {
|
|
1556
|
+
isAdmin: this.viewerIsAdmin,
|
|
1557
|
+
adminLabel: translate('nextcloud-vue', 'Administration'),
|
|
1558
|
+
});
|
|
1559
|
+
return groups.map((group) => ({ ...group, label: group.label ? this.effectiveTranslate(group.label) : '' }))
|
|
1560
|
+
},
|
|
1561
|
+
|
|
1562
|
+
/**
|
|
1563
|
+
* Whether Refresh renders in the Actions menu.
|
|
1564
|
+
*
|
|
1565
|
+
* @return {boolean} The existing rule, unless `actionsMenu.showRefresh` is false.
|
|
1566
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-actions-menu-built-ins-are-optional
|
|
1567
|
+
*/
|
|
1568
|
+
menuShowsRefresh() {
|
|
1569
|
+
return this.actionsMenu?.showRefresh === false ? false : this.effectiveHeaderShowRefresh
|
|
1570
|
+
},
|
|
1571
|
+
|
|
1572
|
+
/**
|
|
1573
|
+
* Whether the help links render in the Actions menu.
|
|
1574
|
+
*
|
|
1575
|
+
* @return {boolean} True unless `actionsMenu.showHelpLinks` is false.
|
|
1576
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-actions-menu-built-ins-are-optional
|
|
1577
|
+
*/
|
|
1578
|
+
menuShowsHelpLinks() {
|
|
1579
|
+
return this.actionsMenu?.showHelpLinks !== false
|
|
1580
|
+
},
|
|
1581
|
+
|
|
1582
|
+
/**
|
|
1583
|
+
* The Actions menu's name.
|
|
1584
|
+
*
|
|
1585
|
+
* @return {string|undefined} `actionsMenu.label` translated, or undefined for the default "Actions".
|
|
1586
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-actions-menu-built-ins-are-optional
|
|
1587
|
+
*/
|
|
1588
|
+
actionsMenuName() {
|
|
1589
|
+
const label = this.actionsMenu?.label;
|
|
1590
|
+
return typeof label === 'string' && label !== '' ? this.effectiveTranslate(label) : undefined
|
|
1591
|
+
},
|
|
1592
|
+
|
|
1593
|
+
/**
|
|
1594
|
+
* Whether the page is showing its body: not the not-found, loading,
|
|
1595
|
+
* error or empty state. The "what now" card and the side column are
|
|
1596
|
+
* siblings of the body and follow it.
|
|
1597
|
+
*
|
|
1598
|
+
* @return {boolean} True when the body renders.
|
|
1599
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-next-step-card
|
|
1600
|
+
*/
|
|
1601
|
+
showsBody() {
|
|
1602
|
+
return !this.objectNotFound && !this.showLoadingState && !this.error && !this.empty
|
|
1603
|
+
},
|
|
1604
|
+
|
|
1605
|
+
/**
|
|
1606
|
+
* The "what now" card for the record's stage, labels translated.
|
|
1607
|
+
*
|
|
1608
|
+
* @return {{stage: string, title: string, items: Array<object>, after: string}|null} The card, or null when the stage declares no checklist.
|
|
1609
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-next-step-card
|
|
1610
|
+
*/
|
|
1611
|
+
nextStepCard() {
|
|
1612
|
+
const card = resolveNextStep(this.nextStep, this.currentObject, this.stageField);
|
|
1613
|
+
if (!card) {
|
|
1614
|
+
return null
|
|
1615
|
+
}
|
|
1616
|
+
const tr = (text) => (text ? this.effectiveTranslate(text) : '');
|
|
1617
|
+
return {
|
|
1618
|
+
...card,
|
|
1619
|
+
title: tr(card.title),
|
|
1620
|
+
after: tr(card.after),
|
|
1621
|
+
items: card.items.map((item) => ({ ...item, label: tr(item.label), hint: tr(item.hint) })),
|
|
1622
|
+
}
|
|
1623
|
+
},
|
|
1624
|
+
|
|
1625
|
+
/**
|
|
1626
|
+
* Whether the "what now" card renders.
|
|
1627
|
+
*
|
|
1628
|
+
* @return {boolean} True when the stage has a checklist and the body is showing.
|
|
1629
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-next-step-card
|
|
1630
|
+
*/
|
|
1631
|
+
showsNextStepCard() {
|
|
1632
|
+
return Boolean(this.nextStepCard) && this.showsBody
|
|
1633
|
+
},
|
|
1634
|
+
|
|
1635
|
+
/**
|
|
1636
|
+
* The pills above the title: type first, then status.
|
|
1637
|
+
*
|
|
1638
|
+
* @return {Array<{key: string, label: string, colorKey: string, colorMap: object|null, variant: string}>} The pills whose field has a value.
|
|
1639
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-header-pills
|
|
1640
|
+
*/
|
|
1641
|
+
headerPills() {
|
|
1642
|
+
return [['type', this.typePill], ['status', this.statusPill]]
|
|
1643
|
+
.map(([key, config]) => {
|
|
1644
|
+
const pill = resolvePill(config, this.resolvedObject);
|
|
1645
|
+
return pill ? { ...pill, key, label: this.effectiveTranslate(pill.label) } : null
|
|
1646
|
+
})
|
|
1647
|
+
.filter(Boolean)
|
|
1648
|
+
},
|
|
1649
|
+
|
|
1650
|
+
/**
|
|
1651
|
+
* The side column's widget definitions. A string names a widget
|
|
1652
|
+
* declared in `widgets`; an object is a definition of its own.
|
|
1653
|
+
*
|
|
1654
|
+
* @return {Array<object>} The definitions that resolve, each with an `id`.
|
|
1655
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-side-column
|
|
1656
|
+
*/
|
|
1657
|
+
sideColumnWidgets() {
|
|
1658
|
+
const declared = Array.isArray(this.widgets) ? this.widgets : [];
|
|
1659
|
+
return (Array.isArray(this.sideColumn) ? this.sideColumn : [])
|
|
1660
|
+
.map((entry, index) => {
|
|
1661
|
+
if (typeof entry === 'string') {
|
|
1662
|
+
return declared.find((widget) => widget && widget.id === entry) || null
|
|
1663
|
+
}
|
|
1664
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
1665
|
+
return null
|
|
1666
|
+
}
|
|
1667
|
+
return entry.id ? entry : { ...entry, id: `cn-side-${index}` }
|
|
1668
|
+
})
|
|
1669
|
+
.filter(Boolean)
|
|
1670
|
+
},
|
|
1671
|
+
|
|
1672
|
+
/**
|
|
1673
|
+
* Whether the side column renders.
|
|
1674
|
+
*
|
|
1675
|
+
* @return {boolean} True when it has widgets and the body is showing.
|
|
1676
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-side-column
|
|
1677
|
+
*/
|
|
1678
|
+
showsSideColumn() {
|
|
1679
|
+
return this.sideColumnWidgets.length > 0 && this.showsBody
|
|
1680
|
+
},
|
|
1681
|
+
|
|
1682
|
+
/**
|
|
1683
|
+
* Accessible name of the side column.
|
|
1684
|
+
*
|
|
1685
|
+
* @return {string} The label.
|
|
1686
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-side-column
|
|
1687
|
+
*/
|
|
1688
|
+
sideColumnLabel() {
|
|
1689
|
+
return translate('nextcloud-vue', 'Details')
|
|
1275
1690
|
},
|
|
1276
1691
|
|
|
1277
1692
|
/**
|
|
@@ -1475,7 +1890,16 @@ var script = {
|
|
|
1475
1890
|
*/
|
|
1476
1891
|
headerMenuEntries() {
|
|
1477
1892
|
const lifecycle = this.showsLifecycleActions ? this.lifecycleMenuEntries : [];
|
|
1478
|
-
|
|
1893
|
+
// An action drawn as a button, the stage's primary one or a quick
|
|
1894
|
+
// action, is not listed a second time in the menu.
|
|
1895
|
+
const pinned = new Set([
|
|
1896
|
+
...(this.stagePrimaryEntry ? [this.stagePrimaryEntry.id] : []),
|
|
1897
|
+
...this.quickActionEntries.map((entry) => entry.id),
|
|
1898
|
+
]);
|
|
1899
|
+
const inMenu = pinned.size > 0
|
|
1900
|
+
? this.menuHeaderActions.filter((entry) => !pinned.has(entry.id))
|
|
1901
|
+
: this.menuHeaderActions;
|
|
1902
|
+
return [...lifecycle, ...inMenu]
|
|
1479
1903
|
},
|
|
1480
1904
|
|
|
1481
1905
|
/**
|
|
@@ -1497,7 +1921,17 @@ var script = {
|
|
|
1497
1921
|
* @return {Array<object>} The action descriptors.
|
|
1498
1922
|
*/
|
|
1499
1923
|
effectiveHeaderActions() {
|
|
1500
|
-
const
|
|
1924
|
+
const authored = Array.isArray(this.headerActions) ? this.headerActions : [];
|
|
1925
|
+
// Inline pinned actions (a stage's primary action, a quick action
|
|
1926
|
+
// written out in place) join the list CnActionButtons dispatches,
|
|
1927
|
+
// so they get the same dialogs, toasts and `visibleWhen` gating as
|
|
1928
|
+
// any header action. An id that is already declared is not added
|
|
1929
|
+
// twice. With nothing pinned inline this is `headerActions` itself.
|
|
1930
|
+
const known = new Set(authored.map((action) => action && action.id));
|
|
1931
|
+
const inline = [this.stagePrimary, ...this.pinnedQuickActions]
|
|
1932
|
+
.filter((pinned) => pinned && pinned.inline && !known.has(pinned.id))
|
|
1933
|
+
.map((pinned) => pinned.inline);
|
|
1934
|
+
const declared = inline.length > 0 ? [...authored, ...inline] : authored;
|
|
1501
1935
|
if (!(this.foldsEditIntoActions && this.canEditRecord)) {
|
|
1502
1936
|
return declared
|
|
1503
1937
|
}
|
|
@@ -2063,8 +2497,9 @@ var script = {
|
|
|
2063
2497
|
* (`@objectId` / `@object.<field>` / `@workspace.<key>`) AND provided on
|
|
2064
2498
|
* `cnSectionContext` for host section components that inject. Mirrors the
|
|
2065
2499
|
* `cnObjectContext` ref the abstract list/stat widgets already read.
|
|
2500
|
+
* `setObject(object)` shows an object a section saved without a re-fetch.
|
|
2066
2501
|
*
|
|
2067
|
-
* @return {{objectId: (string|null), object: (object|null), register: string, schema: string}}
|
|
2502
|
+
* @return {{objectId: (string|null), object: (object|null), register: string, schema: string, setObject: function(object): void}}
|
|
2068
2503
|
*/
|
|
2069
2504
|
sectionContext() {
|
|
2070
2505
|
const resolved = this.resolvedSidebar || {};
|
|
@@ -2074,6 +2509,7 @@ var script = {
|
|
|
2074
2509
|
register: resolved.register || this.register || this.sidebarProps?.register || '',
|
|
2075
2510
|
schema: resolved.schema || this.schema || this.resolvedObjectType || this.sidebarProps?.schema || '',
|
|
2076
2511
|
config: this.cnAppConfigRef,
|
|
2512
|
+
setObject: (object) => this.setCurrentObject(object),
|
|
2077
2513
|
}
|
|
2078
2514
|
},
|
|
2079
2515
|
},
|
|
@@ -2308,7 +2744,11 @@ var script = {
|
|
|
2308
2744
|
* @spec openspec/changes/case-page-and-list-as-a-place/specs/index-page/spec.md
|
|
2309
2745
|
*/
|
|
2310
2746
|
onSkipToPrimaryAction(event) {
|
|
2311
|
-
|
|
2747
|
+
// The ref covers the header button; the id also finds the button
|
|
2748
|
+
// when it sits inside the "what now" card.
|
|
2749
|
+
const target = this.$refs.primaryActionButton?.$el
|
|
2750
|
+
?? this.$refs.primaryActionButton
|
|
2751
|
+
?? this.$el?.querySelector?.(`[id="${this.primaryActionAnchorId}"]`);
|
|
2312
2752
|
const focusable = target?.matches?.('button, a') ? target : target?.querySelector?.('button, a');
|
|
2313
2753
|
if (focusable?.focus) {
|
|
2314
2754
|
event.preventDefault();
|
|
@@ -2316,6 +2756,43 @@ var script = {
|
|
|
2316
2756
|
}
|
|
2317
2757
|
},
|
|
2318
2758
|
|
|
2759
|
+
/**
|
|
2760
|
+
* The primary button was pressed.
|
|
2761
|
+
*
|
|
2762
|
+
* A stage's action is dispatched the way a header action is, through
|
|
2763
|
+
* the `run()` CnActionButtons bound for it, and announced to the host
|
|
2764
|
+
* with its declaration. A link action is left to the browser. Without
|
|
2765
|
+
* a stage action this is the page's `primaryAction`, announced as
|
|
2766
|
+
* before.
|
|
2767
|
+
*
|
|
2768
|
+
* @return {void}
|
|
2769
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-primary-action-follows-the-stage
|
|
2770
|
+
*/
|
|
2771
|
+
onPrimaryActionClick() {
|
|
2772
|
+
const entry = this.stagePrimaryEntry;
|
|
2773
|
+
if (!entry) {
|
|
2774
|
+
this.$emit('primary-action', this.primaryAction);
|
|
2775
|
+
return
|
|
2776
|
+
}
|
|
2777
|
+
this.$emit('primary-action', this.headerActionsById[entry.id] || { id: entry.id, label: entry.label });
|
|
2778
|
+
this.onPinnedActionClick(entry);
|
|
2779
|
+
},
|
|
2780
|
+
|
|
2781
|
+
/**
|
|
2782
|
+
* A pinned action's button was pressed: run it, unless it is a link
|
|
2783
|
+
* the browser is already following.
|
|
2784
|
+
*
|
|
2785
|
+
* @param {object} entry The action's menu entry.
|
|
2786
|
+
* @return {void}
|
|
2787
|
+
* @spec openspec/changes/detail-action-model-and-case-surfaces/specs/detail-action-model/spec.md#requirement-quick-actions
|
|
2788
|
+
*/
|
|
2789
|
+
onPinnedActionClick(entry) {
|
|
2790
|
+
if (!entry || entry.href || typeof entry.run !== 'function') {
|
|
2791
|
+
return
|
|
2792
|
+
}
|
|
2793
|
+
entry.run();
|
|
2794
|
+
},
|
|
2795
|
+
|
|
2319
2796
|
/**
|
|
2320
2797
|
* The active tab changed: tell the host, and put it in the address
|
|
2321
2798
|
* when the page declares that its tab is part of its address.
|
|
@@ -2570,6 +3047,32 @@ var script = {
|
|
|
2570
3047
|
this.$emit('related-row-click', payload);
|
|
2571
3048
|
},
|
|
2572
3049
|
|
|
3050
|
+
/**
|
|
3051
|
+
* Replace the page's object in the store cache, for a section that saved
|
|
3052
|
+
* it and holds the saved version. An object with another id is ignored.
|
|
3053
|
+
*
|
|
3054
|
+
* @param {object} object The saved object.
|
|
3055
|
+
*/
|
|
3056
|
+
setCurrentObject(object) {
|
|
3057
|
+
const store = this.effectiveObjectStore;
|
|
3058
|
+
const type = this.resolvedObjectType;
|
|
3059
|
+
if (!store || !type || !this.objectId || !object) {
|
|
3060
|
+
// eslint-disable-next-line no-console -- tells the integrating section its save is not shown
|
|
3061
|
+
console.warn('[CnDetailPage] setObject ignored: the page has no object store, type or id');
|
|
3062
|
+
return
|
|
3063
|
+
}
|
|
3064
|
+
const id = object.id ?? object['@self']?.id;
|
|
3065
|
+
if (id !== undefined && id !== null && String(id) !== String(this.objectId)) {
|
|
3066
|
+
// eslint-disable-next-line no-console -- tells the integrating section its save is not shown
|
|
3067
|
+
console.warn(`[CnDetailPage] setObject ignored: object ${id} is not the page's object ${this.objectId}`);
|
|
3068
|
+
return
|
|
3069
|
+
}
|
|
3070
|
+
store.objects = {
|
|
3071
|
+
...store.objects,
|
|
3072
|
+
[type]: { ...(store.objects?.[type] || {}), [this.objectId]: object },
|
|
3073
|
+
};
|
|
3074
|
+
},
|
|
3075
|
+
|
|
2573
3076
|
/**
|
|
2574
3077
|
* Schema-driven fetch entry point — no-op outside the
|
|
2575
3078
|
* `register`+`schema`+`objectId` mode. Registers the type on
|