@conduction/nextcloud-vue 2.104.0 → 2.106.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/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue.js +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js +18 -0
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js +3 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue.js +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +18 -0
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +93 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +6 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +3 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +112 -5
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue.js +9 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue2.js +24 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue2.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue3.js +49 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue3.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +36 -18
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +17 -38
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +2 -0
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +32 -29
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +53 -2
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +119 -111
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue.js +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js +62 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue.js +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js +73 -4
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js +74 -27
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +208 -46
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +121 -98
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue.js +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js +24 -0
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js +20 -4
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js +25 -6
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js +112 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +100 -44
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +67 -4
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js +9 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js.map +1 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js +88 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js +39 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue.js +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js +295 -12
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js +267 -144
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +4 -0
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +3 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +93 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +322 -246
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue.js +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js +122 -7
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js +189 -93
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +3 -3
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +16 -4
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +42 -0
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +38 -19
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue.js +9 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue.js.map +1 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue2.js +258 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue3.js +69 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +11 -0
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -4
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +16 -14
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +12 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +24 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +24 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +1369 -748
- package/dist/esm/utils/dueText.js +18 -3
- package/dist/esm/utils/dueText.js.map +1 -1
- package/dist/esm/utils/libraryWidgetKeys.js +2 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/esm/utils/nextcloudApps.js +45 -0
- package/dist/esm/utils/nextcloudApps.js.map +1 -0
- package/dist/esm/utils/scopeListLayout.js +9 -2
- package/dist/esm/utils/scopeListLayout.js.map +1 -1
- package/dist/esm/utils/sortOrder.js +11 -1
- package/dist/esm/utils/sortOrder.js.map +1 -1
- package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/esm/utils/visibleWhen.js +12 -4
- package/dist/esm/utils/visibleWhen.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +8965 -6497
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +1369 -748
- package/l10n/en.json +24 -1
- package/l10n/nl.json +24 -1
- package/package.json +1 -1
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +1 -1
- package/src/components/CnCardGrid/CnCardGrid.md +2 -0
- package/src/components/CnCardGrid/CnCardGrid.vue +20 -0
- package/src/components/CnCellRenderer/CnCellRenderer.vue +19 -1
- package/src/components/CnChartWidget/CnChartWidget.md +2 -0
- package/src/components/CnChartWidget/CnChartWidget.vue +93 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +9 -6
- package/src/components/CnDetailPage/CnDetailPage.md +3 -2
- package/src/components/CnDetailPage/CnDetailPage.vue +112 -5
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue +60 -0
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +36 -29
- package/src/components/CnFactsWidget/CnFactsWidget.vue +4 -0
- package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +1 -1
- package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +4 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +70 -4
- package/src/components/CnFlowRunsWidget/CnFlowRunsWidget.vue +62 -1
- package/src/components/CnFlowsPage/CnFlowBoard.vue +132 -8
- package/src/components/CnIndexPage/CnIndexPage.md +8 -5
- package/src/components/CnIndexPage/CnIndexPage.vue +236 -54
- package/src/components/CnIndexPage/CnIndexPageWidgets.vue +36 -1
- package/src/components/CnIndexPage/useSelfFetchList.js +25 -6
- package/src/components/CnIndexSidebar/CnIndexSidebar.md +2 -0
- package/src/components/CnIndexSidebar/CnIndexSidebar.vue +148 -1
- package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +68 -5
- package/src/components/CnNoticeWidget/CnNoticeWidget.vue +153 -0
- package/src/components/CnNoticeWidget/index.js +12 -0
- package/src/components/CnObjectCard/CnObjectCard.md +1 -0
- package/src/components/CnObjectCard/CnObjectCard.vue +354 -13
- package/src/components/CnObjectSidebar/CnFilesTab.vue +6 -0
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +190 -4
- package/src/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue +209 -9
- package/src/components/CnSettingsField/CnSettingsField.vue +4 -1
- package/src/components/CnSetupWizard/CnSetupWizard.vue +9 -1
- package/src/components/CnTabs/CnTabs.vue +11 -0
- package/src/components/CnTabsWidget/CnTabsWidget.vue +91 -18
- package/src/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.md +11 -0
- package/src/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue +382 -0
- package/src/components/CnTeamWorkloadWidget/index.js +14 -0
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +15 -4
- package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +12 -0
- package/src/components/index.js +2 -0
- package/src/css/dialog.css +20 -2
- package/src/css/index-page.css +14 -2
- package/src/css/look-board-detail.css +125 -8
- package/src/css/look-board-index.css +100 -4
- package/src/css/look-board.css +122 -14
- package/src/index.js +2 -1
- package/src/schemas/app-manifest-v2.schema.json +110 -8
- package/src/utils/dueText.js +18 -3
- package/src/utils/libraryWidgetKeys.js +2 -0
- package/src/utils/nextcloudApps.js +50 -0
- package/src/utils/scopeListLayout.js +9 -2
- package/src/utils/sortOrder.js +10 -0
- package/src/utils/validateManifestV2.compiled.js +3 -3
- package/src/utils/visibleWhen.js +12 -4
package/src/css/dialog.css
CHANGED
|
@@ -13,7 +13,11 @@
|
|
|
13
13
|
* --cn-dialog-eyebrow-tracking letter spacing; 0 by default, 0.06em suits capitals
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
/* The nldesign theme sets a dialog's radius with `!important` through its
|
|
17
|
+
dialog radius token, so the board's 12px goes to that token.
|
|
18
|
+
@spec openspec/changes/board-dialog-theme/specs/board-dialog-theme/spec.md#requirement-a-board-dialog-keeps-its-frame-and-inset-under-a-theme */
|
|
16
19
|
.cn-dialog-board {
|
|
20
|
+
--nldesign-component-dialog-border-radius: var(--cn-board-card-radius, 12px);
|
|
17
21
|
--cn-dialog-width: 640px;
|
|
18
22
|
--cn-dialog-danger: var(--color-error);
|
|
19
23
|
--cn-dialog-eyebrow-color: var(--color-primary-element-text, var(--color-main-text));
|
|
@@ -26,16 +30,26 @@
|
|
|
26
30
|
background-color: color-mix(in srgb, var(--color-main-text) 45%, transparent);
|
|
27
31
|
}
|
|
28
32
|
|
|
29
|
-
/* Width by role, capped at the viewport minus a 16px gutter each side.
|
|
33
|
+
/* Width by role, capped at the viewport minus a 16px gutter each side. The
|
|
34
|
+
shadow carries `!important`: the nldesign theme removes every
|
|
35
|
+
`.modal-container`'s shadow with `!important` and offers no token for it. */
|
|
30
36
|
.modal-mask.cn-dialog-board .modal-wrapper--normal > .modal-container,
|
|
31
37
|
.modal-mask.cn-dialog-board .modal-wrapper .modal-container {
|
|
32
38
|
width: var(--cn-dialog-width);
|
|
33
39
|
max-width: min(var(--cn-dialog-width), calc(100% - 32px));
|
|
34
40
|
border-radius: var(--cn-board-card-radius, 12px);
|
|
35
|
-
box-shadow: 0 12px 40px color-mix(in srgb, var(--color-main-text) 28%, transparent);
|
|
41
|
+
box-shadow: 0 12px 40px color-mix(in srgb, var(--color-main-text) 28%, transparent) !important;
|
|
36
42
|
overflow: hidden;
|
|
37
43
|
}
|
|
38
44
|
|
|
45
|
+
/* The board's header and body carry their own 24px inset. NcDialog pads its
|
|
46
|
+
container 4px at the top and 12px at the start, which put the title and
|
|
47
|
+
the fields 36px in; its rule outranked the one above through the scoped
|
|
48
|
+
`.dialog__modal[data-v-…]`, so this one names the class too. */
|
|
49
|
+
.modal-mask.cn-dialog-board.dialog__modal .modal-wrapper .modal-container {
|
|
50
|
+
padding: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
39
53
|
/* The header is ours: NcModal's own close button and NcDialog's heading give
|
|
40
54
|
way (the heading stays as the accessible name, visually hidden). The mask
|
|
41
55
|
class raises the rule above NcButton's `.button-vue[data-v-…]`, whose
|
|
@@ -269,6 +283,10 @@
|
|
|
269
283
|
border-radius: 16px 16px 0 0;
|
|
270
284
|
}
|
|
271
285
|
|
|
286
|
+
.cn-dialog-board {
|
|
287
|
+
--nldesign-component-dialog-border-radius: 16px 16px 0 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
272
290
|
.modal-mask.cn-dialog-board .modal-container::before {
|
|
273
291
|
content: '';
|
|
274
292
|
display: block;
|
package/src/css/index-page.css
CHANGED
|
@@ -411,11 +411,12 @@
|
|
|
411
411
|
.cn-index-page--with-side-panel {
|
|
412
412
|
display: grid;
|
|
413
413
|
grid-template-columns: minmax(0, 1fr) var(--cn-index-side-panel-width, 300px);
|
|
414
|
-
grid-template-rows: auto auto auto auto minmax(0, 1fr) auto;
|
|
414
|
+
grid-template-rows: auto auto auto auto auto minmax(0, 1fr) auto;
|
|
415
415
|
grid-template-areas:
|
|
416
416
|
"head head"
|
|
417
417
|
"below below"
|
|
418
418
|
"stats stats"
|
|
419
|
+
"chips side"
|
|
419
420
|
"bar side"
|
|
420
421
|
"body side"
|
|
421
422
|
"extra extra";
|
|
@@ -444,6 +445,10 @@
|
|
|
444
445
|
grid-area: bar;
|
|
445
446
|
}
|
|
446
447
|
|
|
448
|
+
.cn-index-page--with-side-panel > .cn-index-page__quick-filter-row {
|
|
449
|
+
grid-area: chips;
|
|
450
|
+
}
|
|
451
|
+
|
|
447
452
|
.cn-index-page--with-side-panel > .cn-index-page__body {
|
|
448
453
|
grid-area: body;
|
|
449
454
|
}
|
|
@@ -461,10 +466,11 @@
|
|
|
461
466
|
"below"
|
|
462
467
|
"stats"
|
|
463
468
|
"side"
|
|
469
|
+
"chips"
|
|
464
470
|
"bar"
|
|
465
471
|
"body"
|
|
466
472
|
"extra";
|
|
467
|
-
grid-template-rows: auto auto auto auto auto minmax(0, 1fr) auto;
|
|
473
|
+
grid-template-rows: auto auto auto auto auto auto minmax(0, 1fr) auto;
|
|
468
474
|
}
|
|
469
475
|
|
|
470
476
|
.cn-index-page--with-side-panel > .cn-index-page__side-panel {
|
|
@@ -472,6 +478,12 @@
|
|
|
472
478
|
}
|
|
473
479
|
}
|
|
474
480
|
|
|
481
|
+
/* `quickFilterPlacement: "row"` (DqTeamwachtrij): the chips on a row of
|
|
482
|
+
their own above the toolbar, wrapping onto more lines. */
|
|
483
|
+
.cn-index-page__quick-filter-row {
|
|
484
|
+
margin-bottom: 12px;
|
|
485
|
+
}
|
|
486
|
+
|
|
475
487
|
/* The second filter strip (`filterStrip`, board PqWachtrij "Kanaal"): 34px
|
|
476
488
|
pills, radius 17, the active one in ink, each with a muted count. */
|
|
477
489
|
.cn-index-page__filter-strip {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
/* ---- The header: two rows on the ground ------------------------------- */
|
|
26
26
|
|
|
27
27
|
.cn-look-board .cn-detail-page__header--board {
|
|
28
|
-
align-items:
|
|
28
|
+
align-items: flex-start;
|
|
29
29
|
column-gap: 16px;
|
|
30
30
|
flex-wrap: wrap;
|
|
31
31
|
margin-bottom: 22px;
|
|
@@ -33,10 +33,16 @@
|
|
|
33
33
|
row-gap: 6px;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
/* Row 1: the title takes what the buttons leave, from a
|
|
36
|
+
/* Row 1: the title takes what the buttons leave, from a zero basis, and the
|
|
37
|
+
buttons sit at the row's top beside it (DqZaak: both at 96). From a 320px
|
|
38
|
+
basis the title and its follow control claimed the row first, so on a 960px
|
|
39
|
+
header the buttons centred against a two-line title, and below that they
|
|
40
|
+
dropped to a row of their own. Only when less than 16rem of title fits
|
|
41
|
+
beside the buttons do they still wrap.
|
|
42
|
+
@spec openspec/changes/board-detail-header-row/specs/board-detail-header-row/spec.md#requirement-the-board-detail-header-keeps-its-actions-on-the-title-row */
|
|
37
43
|
.cn-look-board .cn-detail-page__header--board > :first-child {
|
|
38
|
-
flex: 1 1
|
|
39
|
-
min-width:
|
|
44
|
+
flex: 1 1 0;
|
|
45
|
+
min-width: min(100%, 16rem);
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
.cn-look-board .cn-detail-page__header--board .cn-detail-page__title {
|
|
@@ -58,6 +64,44 @@
|
|
|
58
64
|
min-height: var(--cn-board-control-height);
|
|
59
65
|
}
|
|
60
66
|
|
|
67
|
+
/* The quick actions, Edit and the Meer menu are the board's neutral buttons
|
|
68
|
+
(DqZaak): the main background, a grey border, the main text at 600. They
|
|
69
|
+
outrank a theme that gives every secondary button a primary outline with
|
|
70
|
+
`!important` (nldesign), as the index header does. The buildiq square and
|
|
71
|
+
the primary button keep their own rules. */
|
|
72
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions > .button-vue--secondary,
|
|
73
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions .action-item--secondary .action-item__menutoggle {
|
|
74
|
+
--nldesign-color-on-surface: var(--color-main-text);
|
|
75
|
+
height: var(--cn-board-control-height) !important;
|
|
76
|
+
min-height: var(--cn-board-control-height) !important;
|
|
77
|
+
padding: 0 14px !important;
|
|
78
|
+
border: 1px solid var(--color-border-dark) !important;
|
|
79
|
+
border-radius: var(--cn-board-control-radius) !important;
|
|
80
|
+
background: var(--color-main-background) !important;
|
|
81
|
+
color: var(--color-main-text) !important;
|
|
82
|
+
font-size: 14px !important;
|
|
83
|
+
font-weight: 600 !important;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions > .button-vue--secondary:hover,
|
|
87
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions .action-item--secondary .action-item__menutoggle:hover {
|
|
88
|
+
background: var(--color-background-hover) !important;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Each header icon is 16px with 8px to its label; NcButton draws 20px in a 30px slot. */
|
|
92
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions > .button-vue--secondary .button-vue__icon {
|
|
93
|
+
width: 16px;
|
|
94
|
+
min-width: 16px;
|
|
95
|
+
height: 16px;
|
|
96
|
+
min-height: 16px;
|
|
97
|
+
margin-inline-end: 8px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.cn-look-board .cn-detail-page .cn-detail-page__header-actions > .button-vue--secondary .button-vue__icon svg {
|
|
101
|
+
width: 16px;
|
|
102
|
+
height: 16px;
|
|
103
|
+
}
|
|
104
|
+
|
|
61
105
|
/* Row 2: pills, breadcrumb, dot, meta, chips. */
|
|
62
106
|
.cn-look-board .cn-detail-page__header-row2 {
|
|
63
107
|
align-items: center;
|
|
@@ -203,6 +247,58 @@
|
|
|
203
247
|
width: auto;
|
|
204
248
|
}
|
|
205
249
|
|
|
250
|
+
/* ---- The follow pill (DqZaak "Volgen") ---------------------------------- */
|
|
251
|
+
/* The board draws the follow control under the title as a 28px pill: 13px
|
|
252
|
+
text at 600 on the main background, a grey border, a 14px icon 6px from its
|
|
253
|
+
label. Live it was Nextcloud's 34px tertiary button, 15px bold in the
|
|
254
|
+
primary colour. The theme tokens carry the weight and radius past the
|
|
255
|
+
nldesign theme's `!important`; the follower count takes the same pill.
|
|
256
|
+
@spec openspec/changes/board-follow-pill/specs/board-follow-pill/spec.md#requirement-the-board-follow-control-is-a-pill */
|
|
257
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue {
|
|
258
|
+
--nldesign-component-button-font-weight: 600;
|
|
259
|
+
--nldesign-component-button-border-radius: 14px;
|
|
260
|
+
--nldesign-component-button-secondary-action-color: var(--color-main-text);
|
|
261
|
+
--nldesign-component-button-secondary-action-background-color: var(--color-main-background);
|
|
262
|
+
--nldesign-component-button-secondary-action-border-color: var(--color-border-dark);
|
|
263
|
+
--nldesign-component-button-secondary-action-hover-background-color: var(--color-background-hover);
|
|
264
|
+
box-sizing: border-box;
|
|
265
|
+
height: 28px;
|
|
266
|
+
min-height: 28px;
|
|
267
|
+
min-width: 0;
|
|
268
|
+
padding: 0 10px;
|
|
269
|
+
border: 1px solid var(--color-border-dark);
|
|
270
|
+
border-radius: 14px;
|
|
271
|
+
background: var(--color-main-background);
|
|
272
|
+
color: var(--color-main-text);
|
|
273
|
+
font-size: 13px;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue:hover {
|
|
277
|
+
background: var(--color-background-hover);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue .button-vue__wrapper {
|
|
281
|
+
gap: 6px;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue .button-vue__icon {
|
|
285
|
+
width: 14px;
|
|
286
|
+
min-width: 14px;
|
|
287
|
+
height: 14px;
|
|
288
|
+
min-height: 14px;
|
|
289
|
+
color: var(--color-main-text);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue .button-vue__icon svg {
|
|
293
|
+
width: 14px;
|
|
294
|
+
height: 14px;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.cn-look-board .cn-detail-page .cn-follow-toggle .button-vue .button-vue__text {
|
|
298
|
+
margin: 0;
|
|
299
|
+
padding: 0;
|
|
300
|
+
}
|
|
301
|
+
|
|
206
302
|
/* ---- Folder tabs ------------------------------------------------------- */
|
|
207
303
|
|
|
208
304
|
/* The strip draws no line of its own (design-system pull request 147). The card under it
|
|
@@ -222,7 +318,7 @@
|
|
|
222
318
|
}
|
|
223
319
|
|
|
224
320
|
/* Tabs sit on the card's top edge; only the open tab reaches 1px further
|
|
225
|
-
down (min-height
|
|
321
|
+
down (min-height 38px below), over the card's top border. Top-aligned so
|
|
226
322
|
the inactive tabs do not stretch to the open tab's height. */
|
|
227
323
|
.cn-look-board .cn-tabs--board .cn-tabs__nav {
|
|
228
324
|
align-items: flex-start;
|
|
@@ -256,8 +352,15 @@
|
|
|
256
352
|
|
|
257
353
|
/* `margin: 0`: a tab is a <button>, and Nextcloud's core stylesheet gives
|
|
258
354
|
every `button:not(.button-vue)` `margin: 3px 3px 3px 0`, which put the strip
|
|
259
|
-
3px low and the tabs 7px apart instead of 4 (DqZaak "Zaakonderdelen").
|
|
355
|
+
3px low and the tabs 7px apart instead of 4 (DqZaak "Zaakonderdelen").
|
|
356
|
+
The nldesign theme sets every button's weight and radius with `!important`
|
|
357
|
+
through its button tokens, which drew every tab bold with four rounded
|
|
358
|
+
corners; the tab hands the board's values to those tokens. A tab is 37px
|
|
359
|
+
with or without a count (DqZaak), not 34px without one.
|
|
360
|
+
@spec openspec/changes/board-tabs-theme/specs/board-tabs-theme/spec.md#requirement-board-folder-tabs-keep-the-boards-weight-shape-and-height-under-a-theme */
|
|
260
361
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-item {
|
|
362
|
+
--nldesign-component-button-font-weight: 400;
|
|
363
|
+
--nldesign-component-button-border-radius: 8px 8px 0 0;
|
|
261
364
|
background-color: var(--color-background-dark);
|
|
262
365
|
border: 1px solid var(--color-border-dark);
|
|
263
366
|
border-bottom: none;
|
|
@@ -265,17 +368,18 @@
|
|
|
265
368
|
font-size: 14px;
|
|
266
369
|
font-weight: 400;
|
|
267
370
|
margin: 0;
|
|
268
|
-
min-height:
|
|
371
|
+
min-height: 37px;
|
|
269
372
|
padding: 8px 12px;
|
|
270
373
|
}
|
|
271
374
|
|
|
272
375
|
/* The open tab: the panel's colour, bold, and no coloured top edge. */
|
|
273
376
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-item.cn-tabs__nav-item--active {
|
|
377
|
+
--nldesign-component-button-font-weight: 700;
|
|
274
378
|
background-color: var(--color-main-background);
|
|
275
379
|
border-bottom: 1px solid var(--color-main-background);
|
|
276
380
|
border-top: 1px solid var(--color-border-dark);
|
|
277
381
|
font-weight: 700;
|
|
278
|
-
min-height:
|
|
382
|
+
min-height: 38px;
|
|
279
383
|
padding-bottom: 9px;
|
|
280
384
|
padding-top: 8px;
|
|
281
385
|
position: relative;
|
|
@@ -456,6 +560,19 @@
|
|
|
456
560
|
padding: 10px 22px 20px;
|
|
457
561
|
}
|
|
458
562
|
|
|
563
|
+
/* A stat tile in a side card (DqZaak "Termijn") sits on the card's inset as
|
|
564
|
+
the board draws it. The card-fit wrapper is flush, and the wrapper's own
|
|
565
|
+
flush rule loads after this sheet and outranked the side card's padding,
|
|
566
|
+
so the value sat 11px from the card's edge instead of 23px.
|
|
567
|
+
@spec openspec/changes/board-dashboard-widget-inset/specs/board-dashboard-widget-inset/spec.md#requirement-a-stat-tile-in-a-detail-side-card-keeps-the-cards-inset */
|
|
568
|
+
.cn-look-board .cn-detail-page__side .cn-detail-page__card-fit > .cn-widget-wrapper__content:has(> .cn-kpi-card--board) {
|
|
569
|
+
padding: 10px 22px 20px;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
.cn-look-board .cn-detail-page__side .cn-detail-page__card-fit > .cn-widget-wrapper__content > .cn-kpi-card--board {
|
|
573
|
+
padding: 0;
|
|
574
|
+
}
|
|
575
|
+
|
|
459
576
|
/* No Actions menu on a side card. */
|
|
460
577
|
.cn-look-board .cn-detail-page__side .cn-widget-wrapper__actions {
|
|
461
578
|
display: none;
|
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
|
|
11
11
|
/* ------------------------------------------------------------------ header */
|
|
12
12
|
|
|
13
|
-
/* Row 1: the h1 and the buttons at its end
|
|
13
|
+
/* Row 1: the h1 and the buttons at its end, both at the row's top. Row 2:
|
|
14
|
+
the count line, 6px under. The header starts 4px under the content's top
|
|
15
|
+
(DqZaken: the title at 96, the count line at 142).
|
|
16
|
+
@spec openspec/changes/board-page-header-top/specs/board-page-header-top/spec.md#requirement-a-board-page-title-sits-4px-under-the-content-top */
|
|
14
17
|
.cn-look-board .cn-index-page .cn-page-header {
|
|
15
18
|
display: grid;
|
|
16
19
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
17
|
-
align-items:
|
|
20
|
+
align-items: start;
|
|
18
21
|
row-gap: 6px;
|
|
22
|
+
padding-top: 4px;
|
|
19
23
|
margin-bottom: var(--cn-board-section-gap, 20px);
|
|
20
24
|
}
|
|
21
25
|
|
|
@@ -163,8 +167,15 @@
|
|
|
163
167
|
gap: 8px;
|
|
164
168
|
}
|
|
165
169
|
|
|
170
|
+
/* A chip is a <button>: the nldesign theme sets every button's radius and
|
|
171
|
+
weight with `!important` through its button tokens, which drew the chips
|
|
172
|
+
as 8px boxes at 700 (DqTeamwachtrij), so the chip hands its pill radius and
|
|
173
|
+
600 to those tokens.
|
|
174
|
+
@spec openspec/changes/board-chips-theme/specs/board-chips-theme/spec.md#requirement-board-chips-stay-pills-under-a-theme */
|
|
166
175
|
.cn-look-board .cn-saved-views__chips .cn-saved-views__chip,
|
|
167
176
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab {
|
|
177
|
+
--nldesign-component-button-border-radius: 19px;
|
|
178
|
+
--nldesign-component-button-font-weight: 600;
|
|
168
179
|
display: inline-flex;
|
|
169
180
|
align-items: center;
|
|
170
181
|
gap: 8px;
|
|
@@ -267,12 +278,30 @@
|
|
|
267
278
|
padding: 0;
|
|
268
279
|
}
|
|
269
280
|
|
|
270
|
-
/*
|
|
281
|
+
/* The toolbar's buttons are the board's neutral control (DqTeamwachtrij
|
|
282
|
+
"Filter"): the main text at 600 on the main background with a grey border.
|
|
283
|
+
The nldesign theme paints a secondary button in the primary colour with
|
|
284
|
+
`!important` through its button tokens, so the bar hands the board's values
|
|
285
|
+
to those tokens.
|
|
286
|
+
@spec openspec/changes/board-toolbar-buttons-theme/specs/board-toolbar-buttons-theme/spec.md#requirement-board-toolbar-buttons-are-neutral-under-a-theme */
|
|
287
|
+
.cn-look-board .cn-actions-bar:not(.cn-look-nextcloud *) {
|
|
288
|
+
--nldesign-component-button-font-weight: 600;
|
|
289
|
+
--nldesign-component-button-secondary-action-color: var(--color-main-text);
|
|
290
|
+
--nldesign-component-button-secondary-action-background-color: var(--color-main-background);
|
|
291
|
+
--nldesign-component-button-secondary-action-border-color: var(--color-border-dark);
|
|
292
|
+
--nldesign-component-button-secondary-action-hover-background-color: var(--color-background-hover);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* Filter: a labelled secondary button, 36px, radius 8, 12px at both sides
|
|
296
|
+
and 14px text, with the active count. NcButton with an icon pads its start
|
|
297
|
+
4px and sets 15px. */
|
|
271
298
|
.cn-look-board .cn-actions-bar__filter-button.button-vue,
|
|
272
299
|
.cn-look-board .cn-actions-bar__filter-menu .button-vue {
|
|
273
300
|
min-height: 36px;
|
|
274
301
|
height: 36px;
|
|
302
|
+
padding: 0 12px;
|
|
275
303
|
border-radius: 8px;
|
|
304
|
+
font-size: 14px;
|
|
276
305
|
font-weight: 600;
|
|
277
306
|
}
|
|
278
307
|
|
|
@@ -513,9 +542,18 @@
|
|
|
513
542
|
|
|
514
543
|
/* The header row is near-white on the boards (#fafbfc), not the hover grey,
|
|
515
544
|
its labels 14px muted. The ink also goes to --nldesign-color-on-surface,
|
|
516
|
-
which a theme that forces the body ink onto every span (thematiq) reads.
|
|
545
|
+
which a theme that forces the body ink onto every span (thematiq) reads.
|
|
546
|
+
The nldesign theme paints every `th` with `!important` through its table
|
|
547
|
+
header tokens, and the sort button in it through its button weight token
|
|
548
|
+
(bold), so the cell hands the board's ground, ink and weight to those
|
|
549
|
+
tokens too.
|
|
550
|
+
@spec openspec/changes/board-table-head-theme/specs/board-table-head-theme/spec.md#requirement-a-board-table-header-keeps-the-boards-ground-ink-and-weight-under-a-theme */
|
|
517
551
|
.cn-look-board .cn-table-container--board .cn-data-table th {
|
|
518
552
|
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
553
|
+
--nldesign-component-table-header-background-color: var(--cn-board-table-head-bg, color-mix(in srgb, var(--color-background-hover) 40%, var(--color-main-background)));
|
|
554
|
+
--nldesign-component-table-header-color: var(--color-text-maxcontrast);
|
|
555
|
+
--nldesign-component-table-header-font-weight: 600;
|
|
556
|
+
--nldesign-component-button-font-weight: 600;
|
|
519
557
|
padding: 12px 16px;
|
|
520
558
|
border-bottom: 0;
|
|
521
559
|
background: var(--cn-board-table-head-bg, color-mix(in srgb, var(--color-background-hover) 40%, var(--color-main-background)));
|
|
@@ -1023,6 +1061,64 @@
|
|
|
1023
1061
|
border-radius: 8px;
|
|
1024
1062
|
}
|
|
1025
1063
|
|
|
1064
|
+
/* The record layout (`config.cardLayout`, DqAanMijToegewezen): a 20px 22px
|
|
1065
|
+
inset, 10px between its parts; the head pill at the start and the number
|
|
1066
|
+
in 13px muted at the end; a 17px bold title, not underlined; a 14px muted
|
|
1067
|
+
meta line; a footer over a hairline with a pill and the 14px semibold date.
|
|
1068
|
+
@spec openspec/changes/board-record-card-layout/specs/board-record-card-layout/spec.md#requirement-a-board-card-can-draw-the-record-layout-from-config */
|
|
1069
|
+
.cn-look-board .cn-object-card.cn-object-card--board:has(> .cn-object-card__record) {
|
|
1070
|
+
padding: 20px 22px;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record {
|
|
1074
|
+
gap: 10px;
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record-head {
|
|
1078
|
+
display: flex;
|
|
1079
|
+
align-items: center;
|
|
1080
|
+
gap: 8px;
|
|
1081
|
+
min-height: 24px;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record-number {
|
|
1085
|
+
margin-inline-start: auto;
|
|
1086
|
+
color: var(--color-text-maxcontrast);
|
|
1087
|
+
font-size: 13px;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record .cn-object-card__title {
|
|
1091
|
+
margin: 0;
|
|
1092
|
+
font-size: 17px;
|
|
1093
|
+
font-weight: 700;
|
|
1094
|
+
line-height: 1.3;
|
|
1095
|
+
text-decoration: none;
|
|
1096
|
+
white-space: normal;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record-meta {
|
|
1100
|
+
margin: 0;
|
|
1101
|
+
color: var(--color-text-maxcontrast);
|
|
1102
|
+
font-size: 14px;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record-foot {
|
|
1106
|
+
display: flex;
|
|
1107
|
+
align-items: center;
|
|
1108
|
+
justify-content: space-between;
|
|
1109
|
+
gap: 8px;
|
|
1110
|
+
margin-top: auto;
|
|
1111
|
+
padding-top: 10px;
|
|
1112
|
+
border-top: 1px solid var(--cn-board-hairline);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
.cn-look-board .cn-object-card--board .cn-object-card__record-date {
|
|
1116
|
+
margin-inline-start: auto;
|
|
1117
|
+
color: var(--color-main-text);
|
|
1118
|
+
font-size: 14px;
|
|
1119
|
+
font-weight: 600;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1026
1122
|
/* The catalogue card of the store page. */
|
|
1027
1123
|
.cn-look-board .cn-store-page__card.cn-store-page__card--board {
|
|
1028
1124
|
gap: 10px;
|
package/src/css/look-board.css
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
/* Cards. */
|
|
28
28
|
--cn-board-card-radius: 12px;
|
|
29
29
|
--cn-board-card-padding: 20px 22px;
|
|
30
|
+
/* The side inset of a dashboard card: its title and its rows. */
|
|
31
|
+
--cn-board-dashboard-card-inset: 24px;
|
|
30
32
|
/* Hairline inside a card, and the soft secondary text. */
|
|
31
33
|
--cn-board-hairline: var(--color-border);
|
|
32
34
|
--cn-board-text-soft: var(--color-main-text);
|
|
@@ -56,6 +58,23 @@
|
|
|
56
58
|
margin-inline: 0;
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
/* The page shows the content area's ground (the theme's content surface,
|
|
62
|
+
light grey on the boards) and draws none of its own; only its cards are
|
|
63
|
+
white. A theme rule that paints every `[class*="panel"]` with the main
|
|
64
|
+
background (the nldesign theme's element overrides) caught an index page
|
|
65
|
+
with a side panel (`cn-index-page--with-side-panel`) and drew the whole
|
|
66
|
+
page white (DqTeamwachtrij). That rule carries an id through
|
|
67
|
+
`:not(#header *)`, so this one names an id in `:not()` to outrank it.
|
|
68
|
+
@spec openspec/changes/board-page-ground/specs/board-page-ground/spec.md#requirement-a-board-page-draws-no-ground-of-its-own */
|
|
69
|
+
.cn-look-board .cn-index-page:not(#cn-board-page-ground):not(.cn-look-nextcloud *),
|
|
70
|
+
.cn-look-board .cn-detail-page:not(#cn-board-page-ground):not(.cn-look-nextcloud *),
|
|
71
|
+
.cn-look-board .cn-dashboard-page:not(#cn-board-page-ground):not(.cn-look-nextcloud *),
|
|
72
|
+
.cn-look-board .cn-settings-page:not(#cn-board-page-ground):not(.cn-look-nextcloud *),
|
|
73
|
+
.cn-look-board .cn-store-page:not(#cn-board-page-ground):not(.cn-look-nextcloud *),
|
|
74
|
+
.cn-look-board .cn-admin-settings-shell:not(#cn-board-page-ground):not(.cn-look-nextcloud *) {
|
|
75
|
+
background-color: transparent;
|
|
76
|
+
}
|
|
77
|
+
|
|
59
78
|
.cn-look-board .cn-index-page:not(.cn-look-nextcloud *),
|
|
60
79
|
.cn-look-board .cn-settings-page:not(.cn-look-nextcloud *) {
|
|
61
80
|
gap: var(--cn-board-section-gap);
|
|
@@ -82,6 +101,15 @@
|
|
|
82
101
|
margin-bottom: var(--cn-board-section-gap);
|
|
83
102
|
}
|
|
84
103
|
|
|
104
|
+
/* The boards start a page's header 4px under the content's top, so the title
|
|
105
|
+
sits at 96 (DqZaak, DqMijnWerk), not 92. The index page's header carries
|
|
106
|
+
the same inset in look-board-index.css.
|
|
107
|
+
@spec openspec/changes/board-page-header-top/specs/board-page-header-top/spec.md#requirement-a-board-page-title-sits-4px-under-the-content-top */
|
|
108
|
+
.cn-look-board .cn-detail-page:not(.cn-look-nextcloud *) .cn-detail-page__header,
|
|
109
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-dashboard-page__header {
|
|
110
|
+
padding-top: 4px;
|
|
111
|
+
}
|
|
112
|
+
|
|
85
113
|
/* The 56px inset clears the navigation toggle, which overlays the content
|
|
86
114
|
only while the navigation is closed. The store page's own header too: it
|
|
87
115
|
kept the inset with the navigation open, 56px right of the board's title. */
|
|
@@ -121,7 +149,7 @@
|
|
|
121
149
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-dashboard-page__title-row {
|
|
122
150
|
grid-column: 1;
|
|
123
151
|
grid-row: 1;
|
|
124
|
-
align-self:
|
|
152
|
+
align-self: start;
|
|
125
153
|
}
|
|
126
154
|
|
|
127
155
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-dashboard-page__header-left > :not(.cn-dashboard-page__title-row) {
|
|
@@ -155,6 +183,27 @@
|
|
|
155
183
|
gap: 10px;
|
|
156
184
|
}
|
|
157
185
|
|
|
186
|
+
/* The nldesign theme paints every primary and secondary button with
|
|
187
|
+
`!important` through its button tokens: weight 700, and a secondary in
|
|
188
|
+
the primary colour with a primary border on no ground. The board draws
|
|
189
|
+
header buttons at 600, the secondary on the main background with a grey
|
|
190
|
+
border (DqMijnWerk, DqZaak, DqZaken). The look hands the theme those values
|
|
191
|
+
through the same tokens, so the theme's own rules draw the board's button.
|
|
192
|
+
@spec openspec/changes/board-header-buttons-theme/specs/board-header-buttons-theme/spec.md#requirement-board-header-buttons-keep-the-boards-weight-and-ground-under-a-theme */
|
|
193
|
+
.cn-look-board .cn-index-page__header-buttons:not(.cn-look-nextcloud *),
|
|
194
|
+
.cn-look-board .cn-detail-page__header-actions:not(.cn-look-nextcloud *),
|
|
195
|
+
.cn-look-board .cn-dashboard-page__header-actions:not(.cn-look-nextcloud *),
|
|
196
|
+
.cn-look-board .cn-settings-page__header-buttons:not(.cn-look-nextcloud *),
|
|
197
|
+
.cn-look-board .cn-admin-settings-shell__header-buttons:not(.cn-look-nextcloud *),
|
|
198
|
+
.cn-look-board .cn-action-buttons:not(.cn-look-nextcloud *) {
|
|
199
|
+
--nldesign-component-button-font-weight: 600;
|
|
200
|
+
--nldesign-component-button-primary-action-font-weight: 600;
|
|
201
|
+
--nldesign-component-button-secondary-action-color: var(--color-main-text);
|
|
202
|
+
--nldesign-component-button-secondary-action-background-color: var(--color-main-background);
|
|
203
|
+
--nldesign-component-button-secondary-action-border-color: var(--color-border-dark);
|
|
204
|
+
--nldesign-component-button-secondary-action-hover-background-color: var(--color-background-hover);
|
|
205
|
+
}
|
|
206
|
+
|
|
158
207
|
.cn-look-board .cn-index-page__header-buttons:not(.cn-look-nextcloud *) .button-vue,
|
|
159
208
|
.cn-look-board .cn-detail-page__header-actions:not(.cn-look-nextcloud *) .button-vue,
|
|
160
209
|
.cn-look-board .cn-dashboard-page__header-actions:not(.cn-look-nextcloud *) .button-vue,
|
|
@@ -610,6 +659,7 @@
|
|
|
610
659
|
}
|
|
611
660
|
|
|
612
661
|
.cn-look-board .cn-admin-settings-shell__title:not(.cn-look-nextcloud *) {
|
|
662
|
+
min-height: var(--cn-board-control-height);
|
|
613
663
|
margin: 0;
|
|
614
664
|
font-size: 28px;
|
|
615
665
|
font-weight: 700;
|
|
@@ -622,10 +672,23 @@
|
|
|
622
672
|
align-items: center;
|
|
623
673
|
gap: 8px;
|
|
624
674
|
margin-top: 6px;
|
|
625
|
-
font-size:
|
|
675
|
+
font-size: 14px;
|
|
676
|
+
line-height: normal;
|
|
626
677
|
color: var(--color-text-maxcontrast);
|
|
627
678
|
}
|
|
628
679
|
|
|
680
|
+
/* The admin settings header as the board draws it (DqInstellingen): 4px
|
|
681
|
+
under the content's top and 8px above the grid's gap, the crumbs 6px under
|
|
682
|
+
the 40px title row in 14px, and the tab strip 20px under the header (at
|
|
683
|
+
187). The shell is a grid whose gap already spaces its rows, so the
|
|
684
|
+
header's own 20px bottom margin came on top of it and the strip sat at 194.
|
|
685
|
+
@spec openspec/changes/board-admin-settings-header-rhythm/specs/board-admin-settings-header-rhythm/spec.md#requirement-the-board-admin-settings-header-keeps-the-boards-rhythm */
|
|
686
|
+
.cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .cn-admin-settings-shell__header,
|
|
687
|
+
.cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .cn-admin-settings-shell__header {
|
|
688
|
+
margin-bottom: 0;
|
|
689
|
+
padding: 4px 0 8px;
|
|
690
|
+
}
|
|
691
|
+
|
|
629
692
|
.cn-look-board .cn-admin-settings-shell__crumb-list:not(.cn-look-nextcloud *) {
|
|
630
693
|
display: flex;
|
|
631
694
|
flex-wrap: wrap;
|
|
@@ -1158,6 +1221,20 @@
|
|
|
1158
1221
|
line-height: 1.3;
|
|
1159
1222
|
}
|
|
1160
1223
|
|
|
1224
|
+
/* The board draws no rule under a dashboard card's title (DqMijnWerk,
|
|
1225
|
+
DqDashboard, PqMijnWerk): the title sits 20px from the card's top and on
|
|
1226
|
+
the card's 24px side inset, the line its rows start on, 12px above the
|
|
1227
|
+
content. A borderless card has no edge to inset from and keeps the
|
|
1228
|
+
wrapper's padding.
|
|
1229
|
+
@spec openspec/changes/board-dashboard-card-header/specs/board-dashboard-card-header/spec.md#requirement-a-board-dashboard-card-draws-no-header-rule */
|
|
1230
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--nc-dashboard) .cn-widget-wrapper__header {
|
|
1231
|
+
border-bottom: none;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--nc-dashboard):not(.cn-widget-wrapper--borderless) .cn-widget-wrapper__header {
|
|
1235
|
+
padding: 20px var(--cn-board-dashboard-card-inset) 12px;
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1161
1238
|
/* ---- Record list on a dashboard card (PtDashboard) ---------------------- */
|
|
1162
1239
|
/* The dashboard's card body is flush, so the rows carry their own inset: the
|
|
1163
1240
|
board's card pads 24px at the sides and each row 14px, a soft hairline
|
|
@@ -1274,6 +1351,47 @@
|
|
|
1274
1351
|
display: none;
|
|
1275
1352
|
}
|
|
1276
1353
|
|
|
1354
|
+
/* ---- Widgets that drew their rows on the card's edge -------------------- */
|
|
1355
|
+
/* The card body is flush, so a widget carries the card's side inset itself,
|
|
1356
|
+
as the record list and saved views do. Without it the task list's
|
|
1357
|
+
checkboxes, the step bar and its legend, the week strip's days, the bar
|
|
1358
|
+
list and the activity items started on the card's edge, and a table's
|
|
1359
|
+
first column 16px in (DqMijnWerk "Mijn taken", "Mijn 14 zaken per stap",
|
|
1360
|
+
"Termijnen deze week", "Recente activiteit"; DqDashboard "Zaken per
|
|
1361
|
+
status", "Vastgelopen zaken"). The top inset is 4px: with the header's
|
|
1362
|
+
12px it is the board's 16px from title to bar. This also replaces the
|
|
1363
|
+
step bar's and week strip's opt-in `content.inset` on a board dashboard.
|
|
1364
|
+
A borderless card stands on the page ground and keeps its rows flush.
|
|
1365
|
+
@spec openspec/changes/board-dashboard-widget-inset/specs/board-dashboard-widget-inset/spec.md#requirement-a-board-dashboard-widget-keeps-the-cards-side-inset */
|
|
1366
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-tasks-widget {
|
|
1367
|
+
padding: 0 var(--cn-board-dashboard-card-inset) 10px;
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-stacked-bar,
|
|
1371
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-week-strip {
|
|
1372
|
+
box-sizing: border-box;
|
|
1373
|
+
padding: 4px var(--cn-board-dashboard-card-inset) 22px;
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-chart-widget__html {
|
|
1377
|
+
padding: 4px var(--cn-board-dashboard-card-inset) 20px;
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
/* An activity item pads itself 4px, so the body takes 4px less. */
|
|
1381
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-nc-widget-widget__body {
|
|
1382
|
+
padding: 0 calc(var(--cn-board-dashboard-card-inset) - 4px) 16px;
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-widget-object-table .cn-data-table th:first-child,
|
|
1386
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-widget-object-table .cn-data-table td:first-child {
|
|
1387
|
+
padding-inline-start: var(--cn-board-dashboard-card-inset);
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-widget-object-table .cn-data-table th:last-child,
|
|
1391
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-widget-object-table .cn-data-table td:last-child {
|
|
1392
|
+
padding-inline-end: var(--cn-board-dashboard-card-inset);
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1277
1395
|
/* ---- Week strip (DqMijnWerk "Termijnen deze week") ---------------------- */
|
|
1278
1396
|
/* The days wrap inside the card instead of scrolling sideways: a row holds
|
|
1279
1397
|
as many days of at least 120px as the card fits, and the rest go to the
|
|
@@ -1293,23 +1411,13 @@
|
|
|
1293
1411
|
flex-wrap: wrap;
|
|
1294
1412
|
}
|
|
1295
1413
|
|
|
1296
|
-
/* ---- Bar-list and matrix cards (DqDashboard) ----------------------------- */
|
|
1297
|
-
/* The board draws no rule under the title of a card holding a bar list or a
|
|
1298
|
-
matrix. Other cards, plain stat tiles among them, keep theirs.
|
|
1299
|
-
@spec openspec/changes/chart-bar-list-and-matrix/specs/chart-bar-list-and-matrix/spec.md#requirement-board-bar-list-and-matrix-cards-draw-no-header-rule */
|
|
1300
|
-
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:has(.cn-chart-widget__html) .cn-widget-wrapper__header {
|
|
1301
|
-
border-bottom: none;
|
|
1302
|
-
}
|
|
1303
|
-
|
|
1304
1414
|
/* ---- A card of boxed stat tiles (DcRapportages "Vergaderingen en efficiëntie") -- */
|
|
1305
1415
|
/* The board draws this card 22px from its edge on every side but the bottom
|
|
1306
|
-
(20px)
|
|
1307
|
-
|
|
1308
|
-
the sides, with the wrapper's divider under the title.
|
|
1416
|
+
(20px) and the header 14px above the tiles. The card-fit cell padding
|
|
1417
|
+
(8px 14px) plus the grid's own 24px came to 38px at the sides.
|
|
1309
1418
|
@spec openspec/changes/stats-box-card-inset/specs/stats-box-card-inset/spec.md#requirement-a-card-of-boxed-stat-tiles-keeps-the-boards-inset */
|
|
1310
1419
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:has(.cn-stats-block-widget--tiles-box) .cn-widget-wrapper__header {
|
|
1311
1420
|
padding: 20px 22px 0;
|
|
1312
|
-
border-bottom: none;
|
|
1313
1421
|
}
|
|
1314
1422
|
|
|
1315
1423
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:has(.cn-stats-block-widget--tiles-box) .cn-widget-wrapper__content {
|
package/src/index.js
CHANGED
|
@@ -220,6 +220,7 @@ export {
|
|
|
220
220
|
CnNotepadWidget,
|
|
221
221
|
CnNotepadWidgetForm,
|
|
222
222
|
CnNotesCard,
|
|
223
|
+
CnNoticeWidget,
|
|
223
224
|
CnNotificationMatrix,
|
|
224
225
|
CnNotificationPreferences,
|
|
225
226
|
CnObjectAccessTab,
|
|
@@ -375,7 +376,7 @@ export { createOpenRegisterSource } from './components/index.js'
|
|
|
375
376
|
// Workplace dashboard primitives (openspec: workplace-dashboard-primitives):
|
|
376
377
|
// the week strip and stacked bar widgets with their forms, the segmented
|
|
377
378
|
// control, and the brand stripe.
|
|
378
|
-
export { CnBrandStripe, CnSegmentedControl, CnStackedBarWidget, CnStackedBarWidgetForm, CnWeekStripWidget, CnWeekStripWidgetForm } from './components/index.js'
|
|
379
|
+
export { CnBrandStripe, CnSegmentedControl, CnStackedBarWidget, CnStackedBarWidgetForm, CnTeamWorkloadWidget, CnWeekStripWidget, CnWeekStripWidgetForm } from './components/index.js'
|
|
379
380
|
|
|
380
381
|
// Page components the page renderer mounts by `pages[].type` that were missing
|
|
381
382
|
// from this entry. A component reachable from a manifest but not importable
|