@conduction/nextcloud-vue 2.56.0-beta.6 → 2.56.0-beta.7
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/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.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 +46 -0
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +11 -4
- 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/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/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/CnDetailPage/CnDetailPage.vue2.js +503 -28
- 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/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 +132 -3
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +6 -3
- package/dist/esm/components/CnIndexPage/CnIndexPage.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/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/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/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/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/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/l10n/en.json.js +54 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +54 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/nextcloud-vue.css +931 -4
- 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/readPath.js +30 -0
- package/dist/esm/utils/readPath.js.map +1 -0
- 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 +14970 -8991
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +931 -4
- package/l10n/en.json +54 -1
- package/l10n/nl.json +54 -1
- package/package.json +1 -1
- package/scripts/.jsdoc-baselines.json +3 -0
- package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
- 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 +77 -0
- 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/CnCellRenderer/CnCellRenderer.vue +207 -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/CnDetailPage/CnDetailPage.md +16 -0
- package/src/components/CnDetailPage/CnDetailPage.vue +683 -48
- 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/CnHeaderWidget/CnHeaderWidget.vue +189 -14
- package/src/components/CnHeaderWidgetForm/CnHeaderWidgetForm.vue +53 -3
- package/src/components/CnIndexPage/CnIndexPage.vue +135 -3
- 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/CnObjectDataWidget/CnObjectDataWidget.vue +49 -0
- package/src/components/CnObjectDataWidgetForm/CnObjectDataWidgetForm.vue +6 -0
- package/src/components/CnObjectKanban/CnObjectKanban.vue +86 -2
- package/src/components/CnQuickFilterBar/CnQuickFilterBar.md +3 -0
- package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +60 -1
- 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/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 +244 -10
- package/src/components/CnTabsWidget/CnTabsWidget.vue +63 -4
- 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/index.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/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/readPath.js +27 -0
- package/src/utils/validateManifestV2.compiled.js +2 -2
|
@@ -15,12 +15,14 @@ import { useSavedViewsApi } from '../../composables/useSavedViewsApi.js';
|
|
|
15
15
|
import { METADATA_COLUMNS } from '../../constants/metadata.js';
|
|
16
16
|
import { routeHref } from '../../utils/actionLink.js';
|
|
17
17
|
import { resolveRegisteredHandler, buildOnSuccessRoute } from '../../utils/actionsDispatcher.js';
|
|
18
|
+
import { fetchFilterCounts } from '../../utils/fetchFilterCounts.js';
|
|
18
19
|
import { buildExportUrl } from '../../utils/indexExportHelpers.js';
|
|
19
20
|
import { openRowTarget } from '../../utils/linkNavigation.js';
|
|
20
|
-
import { resolveClaimedTeams, splitViewsIntoTabs, viewAsTab, resolveClaimTokens } from '../../utils/listLenses.js';
|
|
21
|
+
import { resolveClaimedTeams, splitViewsIntoTabs, viewAsTab, resolveClaimTokens, viewIdOf } from '../../utils/listLenses.js';
|
|
21
22
|
import { LIST_SHORTCUTS, listPaletteCommands, shortcutFor } from '../../utils/listShortcuts.js';
|
|
22
23
|
import { multiKeySort } from '../../utils/multiKeySort.js';
|
|
23
24
|
import { resolveDeepTokens, resolveFilterValue } from '../../utils/resolveFilterTokens.js';
|
|
25
|
+
import { resolveFilterMap } from '../../utils/routeFilters.js';
|
|
24
26
|
import { DEFAULT_ROW_ACTION_FIELD, availableRowActions, refusalReasonFor, undeclaredRowActions } from '../../utils/rowActionAvailability.js';
|
|
25
27
|
import { isNewTabClick, preventMiddleClickAutoscroll, isRowMiddleClick, isNewTabHandled, markNewTabHandled } from '../../utils/rowAuxClick.js';
|
|
26
28
|
import { DEFAULT_ROW_INDICATOR_CAP } from '../../utils/rowIndicators.js';
|
|
@@ -437,7 +439,6 @@ var script = {
|
|
|
437
439
|
default: null,
|
|
438
440
|
},
|
|
439
441
|
|
|
440
|
-
/* eslint-disable vue/no-unused-properties -- used in useSelfFetchList */
|
|
441
442
|
/**
|
|
442
443
|
* Base filter for the self-fetch path. String values of the form
|
|
443
444
|
* `"@route.<name>"` / `":<name>"` are interpolated from `$route.params`.
|
|
@@ -446,7 +447,6 @@ var script = {
|
|
|
446
447
|
type: Object,
|
|
447
448
|
default: null,
|
|
448
449
|
},
|
|
449
|
-
/* eslint-enable vue/no-unused-properties */
|
|
450
450
|
|
|
451
451
|
/**
|
|
452
452
|
* Self-fetch mode only — an array of clickable filter tabs rendered as
|
|
@@ -1449,6 +1449,19 @@ var script = {
|
|
|
1449
1449
|
default: () => [],
|
|
1450
1450
|
},
|
|
1451
1451
|
|
|
1452
|
+
/**
|
|
1453
|
+
* Which saved views show how many records they match: `true` for all
|
|
1454
|
+
* of them (tabs and the entries in the views control), or a list of
|
|
1455
|
+
* view ids. Off by default, so no count request is made. A quick
|
|
1456
|
+
* filter opts in on its own entry with `showCount: true`.
|
|
1457
|
+
*
|
|
1458
|
+
* @type {boolean|string[]}
|
|
1459
|
+
*/
|
|
1460
|
+
viewCounts: {
|
|
1461
|
+
type: [Boolean, Array],
|
|
1462
|
+
default: false,
|
|
1463
|
+
},
|
|
1464
|
+
|
|
1452
1465
|
/**
|
|
1453
1466
|
* The teams this person may claim. The instance decides this list; it
|
|
1454
1467
|
* is the membership side of `claimedTeams`.
|
|
@@ -1887,6 +1900,10 @@ var script = {
|
|
|
1887
1900
|
data() {
|
|
1888
1901
|
return {
|
|
1889
1902
|
currentViewMode: this.viewMode,
|
|
1903
|
+
/** Count per tab-strip index, for the entries that asked for one; null = none. */
|
|
1904
|
+
tabCounts: null,
|
|
1905
|
+
/** Count per saved-view id, for the views control; null = none. */
|
|
1906
|
+
savedViewCounts: null,
|
|
1890
1907
|
/**
|
|
1891
1908
|
* The non-`_` query keys this page owns, i.e. may clear on the next
|
|
1892
1909
|
* persist. Seeded with what it adopted from the query on load, and
|
|
@@ -2479,6 +2496,55 @@ var script = {
|
|
|
2479
2496
|
return this.splitSavedViews.control
|
|
2480
2497
|
},
|
|
2481
2498
|
|
|
2499
|
+
/**
|
|
2500
|
+
* The filters whose record count this page shows: quick filters that
|
|
2501
|
+
* set `showCount`, and the saved views `viewCounts` names. Empty when
|
|
2502
|
+
* nothing opted in, which is what keeps the page from making a count
|
|
2503
|
+
* request nobody asked for.
|
|
2504
|
+
*
|
|
2505
|
+
* @return {Array<{key: string, filter: object}>} The filters to count.
|
|
2506
|
+
* @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views
|
|
2507
|
+
*/
|
|
2508
|
+
countEntries() {
|
|
2509
|
+
const entries = [];
|
|
2510
|
+
const tabs = this.tabStripEntries || [];
|
|
2511
|
+
const lens = this.lensTabs.length > 0;
|
|
2512
|
+
tabs.forEach((tab, index) => {
|
|
2513
|
+
const wants = lens ? this.viewWantsCount(tab.id) : (tab && tab.showCount === true);
|
|
2514
|
+
if (wants && tab.narrowsToNothing !== true) {
|
|
2515
|
+
entries.push({ key: `tab:${index}`, filter: tab.filter || {} });
|
|
2516
|
+
}
|
|
2517
|
+
});
|
|
2518
|
+
for (const view of this.viewsForControl) {
|
|
2519
|
+
const id = viewIdOf(view);
|
|
2520
|
+
if (this.viewWantsCount(id)) {
|
|
2521
|
+
entries.push({ key: `view:${id}`, filter: viewAsTab(view).filter });
|
|
2522
|
+
}
|
|
2523
|
+
}
|
|
2524
|
+
return entries
|
|
2525
|
+
},
|
|
2526
|
+
|
|
2527
|
+
/**
|
|
2528
|
+
* Changes whenever the counts have to be fetched again: another set
|
|
2529
|
+
* of filters, another register or schema, or a list whose total moved
|
|
2530
|
+
* (a record was added, removed, or left a filter).
|
|
2531
|
+
*
|
|
2532
|
+
* @return {string} The signature.
|
|
2533
|
+
* @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views
|
|
2534
|
+
*/
|
|
2535
|
+
countRequestKey() {
|
|
2536
|
+
if (this.countEntries.length === 0) {
|
|
2537
|
+
return ''
|
|
2538
|
+
}
|
|
2539
|
+
return JSON.stringify({
|
|
2540
|
+
r: this.register,
|
|
2541
|
+
s: this.exportSchemaSlug,
|
|
2542
|
+
f: this.filter || null,
|
|
2543
|
+
e: this.countEntries,
|
|
2544
|
+
t: Number(this.effectivePagination?.total ?? 0),
|
|
2545
|
+
})
|
|
2546
|
+
},
|
|
2547
|
+
|
|
2482
2548
|
/**
|
|
2483
2549
|
* What the tab strip shows: the page's lens tabs when it named any,
|
|
2484
2550
|
* else its quick filters. One strip, never two, so a person is not
|
|
@@ -3517,6 +3583,14 @@ var script = {
|
|
|
3517
3583
|
},
|
|
3518
3584
|
|
|
3519
3585
|
watch: {
|
|
3586
|
+
countRequestKey: {
|
|
3587
|
+
immediate: true,
|
|
3588
|
+
/** @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views */
|
|
3589
|
+
handler() {
|
|
3590
|
+
this.loadFilterCounts();
|
|
3591
|
+
},
|
|
3592
|
+
},
|
|
3593
|
+
|
|
3520
3594
|
// Remember the whole folder set whenever no folder narrows the query.
|
|
3521
3595
|
folderSidebarLiveFacetValues: {
|
|
3522
3596
|
immediate: true,
|
|
@@ -3726,6 +3800,61 @@ var script = {
|
|
|
3726
3800
|
},
|
|
3727
3801
|
|
|
3728
3802
|
methods: {
|
|
3803
|
+
/**
|
|
3804
|
+
* Whether a saved view shows its record count (`viewCounts`).
|
|
3805
|
+
*
|
|
3806
|
+
* @param {string} id The view id.
|
|
3807
|
+
* @return {boolean} True when the view opted in.
|
|
3808
|
+
* @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views
|
|
3809
|
+
*/
|
|
3810
|
+
viewWantsCount(id) {
|
|
3811
|
+
if (this.viewCounts === true) {
|
|
3812
|
+
return true
|
|
3813
|
+
}
|
|
3814
|
+
return Array.isArray(this.viewCounts) && this.viewCounts.map(String).includes(String(id))
|
|
3815
|
+
},
|
|
3816
|
+
|
|
3817
|
+
/**
|
|
3818
|
+
* Fetch the record counts for the filters and views that asked for
|
|
3819
|
+
* one. Filters that narrow the same single field share one grouped
|
|
3820
|
+
* request. A failed count leaves that entry without a number.
|
|
3821
|
+
*
|
|
3822
|
+
* @return {Promise<void>}
|
|
3823
|
+
* @spec openspec/changes/workplace-dashboard-primitives/specs/workplace-dashboard-primitives/spec.md#requirement-counts-on-filters-and-views
|
|
3824
|
+
*/
|
|
3825
|
+
async loadFilterCounts() {
|
|
3826
|
+
const requestKey = this.countRequestKey;
|
|
3827
|
+
const schema = this.exportSchemaSlug;
|
|
3828
|
+
if (requestKey === '' || !this.register || !schema) {
|
|
3829
|
+
this.tabCounts = null;
|
|
3830
|
+
this.savedViewCounts = null;
|
|
3831
|
+
return
|
|
3832
|
+
}
|
|
3833
|
+
const params = (this.$route && this.$route.params) || {};
|
|
3834
|
+
const ctx = typeof this.selfFetchTokenCtx === 'function' ? this.selfFetchTokenCtx() : {};
|
|
3835
|
+
const counts = await fetchFilterCounts({
|
|
3836
|
+
register: this.register,
|
|
3837
|
+
schema,
|
|
3838
|
+
entries: this.countEntries.map((entry) => ({ key: entry.key, filter: resolveFilterMap(entry.filter, params, ctx) })),
|
|
3839
|
+
baseFilter: resolveFilterMap(this.filter, params, ctx),
|
|
3840
|
+
ctx,
|
|
3841
|
+
});
|
|
3842
|
+
if (requestKey !== this.countRequestKey) {
|
|
3843
|
+
return
|
|
3844
|
+
}
|
|
3845
|
+
const tabCounts = {};
|
|
3846
|
+
const viewCounts = {};
|
|
3847
|
+
for (const [key, value] of Object.entries(counts)) {
|
|
3848
|
+
if (key.startsWith('tab:')) {
|
|
3849
|
+
tabCounts[Number(key.slice(4))] = value;
|
|
3850
|
+
} else {
|
|
3851
|
+
viewCounts[key.slice(5)] = value;
|
|
3852
|
+
}
|
|
3853
|
+
}
|
|
3854
|
+
this.tabCounts = tabCounts;
|
|
3855
|
+
this.savedViewCounts = viewCounts;
|
|
3856
|
+
},
|
|
3857
|
+
|
|
3729
3858
|
// ── Split view (case-page-and-list-as-a-place) ──────────────────
|
|
3730
3859
|
|
|
3731
3860
|
/**
|