@conduction/nextcloud-vue 2.98.0 → 2.99.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/CnActionsMenu/CnActionsMenu.vue2.js +12 -0
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +11 -2
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
- package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue.js +1 -1
- package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
- package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +1 -1
- package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +2 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js +26 -7
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js.map +1 -1
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js +78 -17
- package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js.map +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +9 -0
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js.map +1 -0
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js +265 -0
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -0
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +191 -0
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js +9 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js.map +1 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js +508 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js.map +1 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js +99 -0
- package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js.map +1 -0
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +18 -70
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +6 -44
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js +9 -0
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js.map +1 -0
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js +472 -0
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js +231 -0
- package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnWorkingCalendarWidget/index.js +27 -0
- package/dist/esm/components/CnWorkingCalendarWidget/index.js.map +1 -0
- package/dist/esm/composables/useFlowStore.js +2 -1
- package/dist/esm/composables/useFlowStore.js.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +95 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +109 -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 +660 -81
- package/dist/esm/utils/libraryWidgetKeys.js +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/esm/utils/workingCalendarMonth.js +85 -0
- package/dist/esm/utils/workingCalendarMonth.js.map +1 -0
- package/dist/nextcloud-vue.cjs.js +9355 -7303
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +660 -81
- package/l10n/en.json +95 -1
- package/l10n/nl.json +109 -1
- package/package.json +1 -1
- package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
- package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +1 -0
- package/src/components/CnDetailPage/CnDetailPage.vue +1 -0
- package/src/components/CnOrderedListField/CnOrderedListField.vue +81 -9
- package/src/components/CnSettingsField/CnSettingsField.vue +449 -0
- package/src/components/CnSettingsField/index.js +4 -0
- package/src/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue +613 -0
- package/src/components/CnSettingsFieldsSection/index.js +4 -0
- package/src/components/CnSettingsPage/CnSettingsPage.vue +6 -86
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/src/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue +725 -0
- package/src/components/CnWorkingCalendarWidget/index.js +26 -0
- package/src/components/index.js +3 -0
- package/src/composables/useFlowStore.js +2 -1
- package/src/css/badge.css +32 -16
- package/src/css/look-board-detail.css +80 -8
- package/src/css/look-board-index.css +52 -8
- package/src/css/look-board.css +219 -1
- package/src/index.js +3 -0
- package/src/utils/libraryWidgetKeys.js +1 -0
- package/src/utils/workingCalendarMonth.js +82 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2026 Conduction B.V.
|
|
3
|
+
* SPDX-License-Identifier: EUPL-1.2
|
|
4
|
+
*
|
|
5
|
+
* CnWorkingCalendarWidget — self-registers the `working-calendar` widget type
|
|
6
|
+
* (one month of a working calendar kept as an OpenRegister object, with its
|
|
7
|
+
* closed dates and Add day) into the shared dashboardWidgetRegistry at module
|
|
8
|
+
* load. Renderer only: the calendar object is named in the manifest.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import CnWorkingCalendarWidget from './CnWorkingCalendarWidget.vue'
|
|
12
|
+
import { registerDashboardWidget } from '../CnWidgetGrid/dashboardWidgetRegistry.js'
|
|
13
|
+
|
|
14
|
+
registerDashboardWidget('working-calendar', {
|
|
15
|
+
renderer: CnWorkingCalendarWidget,
|
|
16
|
+
form: null,
|
|
17
|
+
defaultContent: {
|
|
18
|
+
calendar: { register: 'flow-timers', schema: 'working-calendar', filter: {} },
|
|
19
|
+
},
|
|
20
|
+
displayName: 'Working calendar',
|
|
21
|
+
icon: 'CalendarMonthOutline',
|
|
22
|
+
surfaces: ['app-dashboard', 'detail-page'],
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
export { CnWorkingCalendarWidget }
|
|
26
|
+
export default CnWorkingCalendarWidget
|
package/src/components/index.js
CHANGED
|
@@ -13,6 +13,8 @@ export { CnStatusBadge } from './CnStatusBadge/index.js'
|
|
|
13
13
|
export { CnPagination } from './CnPagination/index.js'
|
|
14
14
|
export { CnSettingsCard } from './CnSettingsCard/index.js'
|
|
15
15
|
export { CnSettingsSection } from './CnSettingsSection/index.js'
|
|
16
|
+
export { CnSettingsField } from './CnSettingsField/index.js'
|
|
17
|
+
export { CnSettingsFieldsSection } from './CnSettingsFieldsSection/index.js'
|
|
16
18
|
export { CnLeafDependencySettings } from './CnLeafDependencySettings/index.js'
|
|
17
19
|
export { CnStatsBlock } from './CnStatsBlock/index.js'
|
|
18
20
|
export { CnStructuredDocReview } from './CnStructuredDocReview/index.js'
|
|
@@ -223,6 +225,7 @@ export { CnSectionsWidget } from './CnSectionsWidget/index.js'
|
|
|
223
225
|
export { CnFactsWidget } from './CnFactsWidget/index.js'
|
|
224
226
|
export { CnDeviceFramesWidget } from './CnDeviceFramesWidget/index.js'
|
|
225
227
|
export { CnChecklistRunWidget } from './CnChecklistRunWidget/index.js'
|
|
228
|
+
export { CnWorkingCalendarWidget } from './CnWorkingCalendarWidget/index.js'
|
|
226
229
|
export { CnPartyActionsWidget } from './CnPartyActionsWidget/index.js'
|
|
227
230
|
export { CnFieldListWidget } from './CnFieldListWidget/index.js'
|
|
228
231
|
export { CnSettingsFormWidget } from './CnSettingsFormWidget/index.js'
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
// vocabulary.
|
|
24
24
|
|
|
25
25
|
import axios from '@nextcloud/axios'
|
|
26
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
26
27
|
import { generateUrl } from '@nextcloud/router'
|
|
27
28
|
import { defineStore } from 'pinia'
|
|
28
29
|
import { layoutFlowNodes, needsFullLayout, placeLooseNodes } from './flowGraphLayout.js'
|
|
@@ -968,7 +969,7 @@ export const useFlowStore = defineStore('cnFlow', {
|
|
|
968
969
|
// A new flow is runnable on demand until its author picks a real
|
|
969
970
|
// trigger, so the flow-level trigger and the seeded start node
|
|
970
971
|
// say the same thing.
|
|
971
|
-
this.flow = { ...emptyFlow(), name: 'New flow', app: app || 'openregister', trigger: 'manual' }
|
|
972
|
+
this.flow = { ...emptyFlow(), name: t('nextcloud-vue', 'New flow'), app: app || 'openregister', trigger: 'manual' }
|
|
972
973
|
this.seedStartNode()
|
|
973
974
|
this.dirty = false
|
|
974
975
|
return
|
package/src/css/badge.css
CHANGED
|
@@ -31,84 +31,100 @@
|
|
|
31
31
|
|
|
32
32
|
/* Color variants */
|
|
33
33
|
.cn-status-badge--default {
|
|
34
|
+
--cn-status-badge-ink: var(--color-main-text);
|
|
34
35
|
background-color: var(--color-background-dark);
|
|
35
|
-
color: var(--
|
|
36
|
+
color: var(--cn-status-badge-ink);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
.cn-status-badge--primary {
|
|
40
|
+
--cn-status-badge-ink: var(--color-primary-element);
|
|
39
41
|
background-color: var(--color-primary-element-light);
|
|
40
|
-
color: var(--
|
|
42
|
+
color: var(--cn-status-badge-ink);
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
.cn-status-badge--success {
|
|
46
|
+
--cn-status-badge-ink: var(--color-success-text, var(--color-success));
|
|
44
47
|
background-color: var(--color-success-light, rgba(70, 186, 97, 0.15));
|
|
45
|
-
color: var(--
|
|
48
|
+
color: var(--cn-status-badge-ink);
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
.cn-status-badge--warning {
|
|
52
|
+
--cn-status-badge-ink: var(--color-warning-text, var(--color-warning));
|
|
49
53
|
background-color: var(--color-warning-light, rgba(232, 163, 39, 0.15));
|
|
50
|
-
color: var(--
|
|
54
|
+
color: var(--cn-status-badge-ink);
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
.cn-status-badge--error {
|
|
58
|
+
--cn-status-badge-ink: var(--color-error-text, var(--color-error));
|
|
54
59
|
background-color: var(--color-error-light, rgba(224, 68, 68, 0.15));
|
|
55
|
-
color: var(--
|
|
60
|
+
color: var(--cn-status-badge-ink);
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
.cn-status-badge--info {
|
|
64
|
+
--cn-status-badge-ink: var(--color-info-text, var(--color-info, #0082c9));
|
|
59
65
|
background-color: var(--color-info-light, rgba(0, 130, 201, 0.15));
|
|
60
|
-
color: var(--
|
|
66
|
+
color: var(--cn-status-badge-ink);
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
/* Work in progress ("In behandeling"), a board tone. */
|
|
64
70
|
.cn-status-badge--purple {
|
|
71
|
+
--cn-status-badge-ink: var(--cn-status-purple-text);
|
|
65
72
|
background-color: var(--cn-status-purple-bg);
|
|
66
|
-
color: var(--cn-status-
|
|
73
|
+
color: var(--cn-status-badge-ink);
|
|
67
74
|
}
|
|
68
75
|
|
|
69
76
|
/* Handed on ("Omgezet naar een zaak"), a board tone. */
|
|
70
77
|
.cn-status-badge--teal {
|
|
78
|
+
--cn-status-badge-ink: var(--cn-status-teal-text);
|
|
71
79
|
background-color: var(--cn-status-teal-bg);
|
|
72
|
-
color: var(--cn-status-
|
|
80
|
+
color: var(--cn-status-badge-ink);
|
|
73
81
|
}
|
|
74
82
|
|
|
75
83
|
/* Solid variants — solid background with white text for use on colored backgrounds */
|
|
76
84
|
.cn-status-badge--solid.cn-status-badge--default {
|
|
85
|
+
--cn-status-badge-ink: var(--color-main-text);
|
|
77
86
|
background-color: var(--color-background-dark);
|
|
78
|
-
color: var(--
|
|
87
|
+
color: var(--cn-status-badge-ink);
|
|
79
88
|
}
|
|
80
89
|
|
|
81
90
|
.cn-status-badge--solid.cn-status-badge--primary {
|
|
91
|
+
--cn-status-badge-ink: white;
|
|
82
92
|
background-color: var(--color-primary-element);
|
|
83
|
-
color:
|
|
93
|
+
color: var(--cn-status-badge-ink);
|
|
84
94
|
}
|
|
85
95
|
|
|
86
96
|
.cn-status-badge--solid.cn-status-badge--success {
|
|
97
|
+
--cn-status-badge-ink: white;
|
|
87
98
|
background-color: var(--color-success);
|
|
88
|
-
color:
|
|
99
|
+
color: var(--cn-status-badge-ink);
|
|
89
100
|
}
|
|
90
101
|
|
|
91
102
|
.cn-status-badge--solid.cn-status-badge--warning {
|
|
103
|
+
--cn-status-badge-ink: var(--color-primary-text);
|
|
92
104
|
background-color: var(--color-warning);
|
|
93
|
-
color: var(--
|
|
105
|
+
color: var(--cn-status-badge-ink);
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
.cn-status-badge--solid.cn-status-badge--error {
|
|
109
|
+
--cn-status-badge-ink: white;
|
|
97
110
|
background-color: var(--color-error);
|
|
98
|
-
color:
|
|
111
|
+
color: var(--cn-status-badge-ink);
|
|
99
112
|
}
|
|
100
113
|
|
|
101
114
|
.cn-status-badge--solid.cn-status-badge--info {
|
|
115
|
+
--cn-status-badge-ink: white;
|
|
102
116
|
background-color: var(--color-info, #0082c9);
|
|
103
|
-
color:
|
|
117
|
+
color: var(--cn-status-badge-ink);
|
|
104
118
|
}
|
|
105
119
|
|
|
106
120
|
.cn-status-badge--solid.cn-status-badge--purple {
|
|
121
|
+
--cn-status-badge-ink: white;
|
|
107
122
|
background-color: var(--cn-status-purple-text);
|
|
108
|
-
color:
|
|
123
|
+
color: var(--cn-status-badge-ink);
|
|
109
124
|
}
|
|
110
125
|
|
|
111
126
|
.cn-status-badge--solid.cn-status-badge--teal {
|
|
127
|
+
--cn-status-badge-ink: white;
|
|
112
128
|
background-color: var(--cn-status-teal-text);
|
|
113
|
-
color:
|
|
129
|
+
color: var(--cn-status-badge-ink);
|
|
114
130
|
}
|
|
@@ -152,6 +152,32 @@
|
|
|
152
152
|
margin-top: 16px;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
/* ---- The stages bars (CnStagesWidget `variant: "bars"`) ---------------- */
|
|
156
|
+
/* DqZaak's "Voortgang": the bars sit flush with the content edge (the
|
|
157
|
+
widget's 4px pad is room for the 32px circles, which the bars variant does
|
|
158
|
+
not draw), the label 8px under its bar and the date 8px under the label at
|
|
159
|
+
the normal line height, open steps muted and the done and current ones in
|
|
160
|
+
the main text. Each hands its ink to --nldesign-color-on-surface, which a
|
|
161
|
+
theme that forces the body ink onto every span (thematiq) reads instead. */
|
|
162
|
+
.cn-look-board .cn-stages-widget:has(> .cn-stages-widget__bars):not(.cn-look-nextcloud *) {
|
|
163
|
+
padding: 0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-label:not(.cn-look-nextcloud *) {
|
|
167
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
168
|
+
line-height: normal;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-step--done .cn-stages-widget__bar-label:not(.cn-look-nextcloud *),
|
|
172
|
+
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-step--current .cn-stages-widget__bar-label:not(.cn-look-nextcloud *) {
|
|
173
|
+
--nldesign-color-on-surface: var(--color-main-text);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-date:not(.cn-look-nextcloud *) {
|
|
177
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
178
|
+
line-height: normal;
|
|
179
|
+
}
|
|
180
|
+
|
|
155
181
|
/* ---- The body and the side column ------------------------------------- */
|
|
156
182
|
|
|
157
183
|
.cn-look-board.cn-detail-page--with-side {
|
|
@@ -185,6 +211,7 @@
|
|
|
185
211
|
The open tab overlaps that top border by 1px (the nav's -1px margin) and
|
|
186
212
|
paints over it, so it flows into the card as a folder tab. */
|
|
187
213
|
.cn-look-board .cn-tabs--board .cn-tabs__bar {
|
|
214
|
+
align-items: flex-end;
|
|
188
215
|
border-bottom: none;
|
|
189
216
|
gap: 4px;
|
|
190
217
|
position: relative;
|
|
@@ -227,6 +254,9 @@
|
|
|
227
254
|
row-gap: 4px;
|
|
228
255
|
}
|
|
229
256
|
|
|
257
|
+
/* `margin: 0`: a tab is a <button>, and Nextcloud's core stylesheet gives
|
|
258
|
+
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"). */
|
|
230
260
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-item {
|
|
231
261
|
background-color: var(--color-background-dark);
|
|
232
262
|
border: 1px solid var(--color-border-dark);
|
|
@@ -234,6 +264,7 @@
|
|
|
234
264
|
border-radius: 8px 8px 0 0;
|
|
235
265
|
font-size: 14px;
|
|
236
266
|
font-weight: 400;
|
|
267
|
+
margin: 0;
|
|
237
268
|
min-height: 34px;
|
|
238
269
|
padding: 8px 12px;
|
|
239
270
|
}
|
|
@@ -267,9 +298,12 @@
|
|
|
267
298
|
padding: 0 6px;
|
|
268
299
|
}
|
|
269
300
|
|
|
270
|
-
/* The Actions button at the end of the strip,
|
|
301
|
+
/* The Actions button at the end of the strip: at the top, 8px in from the
|
|
302
|
+
end and 8px clear of the card, so the tabs, aligned to the bottom, sit 6px
|
|
303
|
+
lower than the button (DqZaak "Acties"). */
|
|
271
304
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-end {
|
|
272
305
|
align-self: flex-start;
|
|
306
|
+
margin: 0 8px 8px 0;
|
|
273
307
|
}
|
|
274
308
|
|
|
275
309
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-end .button-vue {
|
|
@@ -327,21 +361,26 @@
|
|
|
327
361
|
|
|
328
362
|
/* ---- Body cards and side cards ----------------------------------------- */
|
|
329
363
|
|
|
364
|
+
/* A CnDetailCard takes the board card wherever it sits, not only on a detail
|
|
365
|
+
page: a dashboard or a custom page that mounts one drew the Nextcloud card
|
|
366
|
+
(a 12px 16px header over a rule). The doubled class keeps the specificity
|
|
367
|
+
the page-scoped rule had. */
|
|
368
|
+
|
|
330
369
|
.cn-look-board .cn-detail-page .cn-widget-wrapper,
|
|
331
|
-
.cn-look-board .cn-detail-
|
|
370
|
+
.cn-look-board .cn-detail-card.cn-detail-card:not(.cn-detail-card--chromeless) {
|
|
332
371
|
background: var(--color-main-background);
|
|
333
372
|
border: 1px solid var(--color-border);
|
|
334
373
|
border-radius: var(--cn-board-card-radius);
|
|
335
374
|
}
|
|
336
375
|
|
|
337
376
|
.cn-look-board .cn-detail-page .cn-widget-wrapper__header,
|
|
338
|
-
.cn-look-board .cn-detail-
|
|
377
|
+
.cn-look-board .cn-detail-card .cn-detail-card__header {
|
|
339
378
|
border-bottom: none;
|
|
340
379
|
padding: 20px 22px 0;
|
|
341
380
|
}
|
|
342
381
|
|
|
343
382
|
.cn-look-board .cn-detail-page .cn-widget-wrapper__title,
|
|
344
|
-
.cn-look-board .cn-detail-
|
|
383
|
+
.cn-look-board .cn-detail-card .cn-detail-card__title {
|
|
345
384
|
font-size: var(--cn-board-heading-size);
|
|
346
385
|
font-weight: 700;
|
|
347
386
|
line-height: 1.3;
|
|
@@ -351,7 +390,7 @@
|
|
|
351
390
|
padding: 12px 22px 20px;
|
|
352
391
|
}
|
|
353
392
|
|
|
354
|
-
.cn-look-board .cn-detail-
|
|
393
|
+
.cn-look-board .cn-detail-card .cn-detail-card__content {
|
|
355
394
|
padding: 12px 22px 20px;
|
|
356
395
|
}
|
|
357
396
|
|
|
@@ -398,10 +437,12 @@
|
|
|
398
437
|
font-weight: 500;
|
|
399
438
|
}
|
|
400
439
|
|
|
401
|
-
/* Side cards: the heading is a 15px muted label, not a title.
|
|
440
|
+
/* Side cards: the heading is a 15px muted label, not a title. The tone
|
|
441
|
+
carries `!important` against a theme that colours every h3 that way
|
|
442
|
+
(thematiq's heading colour). */
|
|
402
443
|
.cn-look-board .cn-detail-page__side .cn-widget-wrapper__title,
|
|
403
444
|
.cn-look-board .cn-detail-page__side .cn-detail-card__title {
|
|
404
|
-
color: var(--color-text-maxcontrast);
|
|
445
|
+
color: var(--color-text-maxcontrast) !important;
|
|
405
446
|
font-size: var(--cn-board-side-heading-size);
|
|
406
447
|
font-weight: 600;
|
|
407
448
|
}
|
|
@@ -456,17 +497,23 @@
|
|
|
456
497
|
|
|
457
498
|
/* ---- The next-step card ------------------------------------------------- */
|
|
458
499
|
|
|
500
|
+
/* The board sets the card at the browser's normal line height: a step row is
|
|
501
|
+
the 20px marker, 28px apart (DqZaak "Wat nu?"). */
|
|
459
502
|
.cn-look-board .cn-next-step-card--board {
|
|
460
503
|
border-radius: 12px;
|
|
461
504
|
gap: 16px 32px;
|
|
505
|
+
line-height: normal;
|
|
462
506
|
padding: 20px 24px 20px 28px;
|
|
463
507
|
}
|
|
464
508
|
|
|
509
|
+
/* The kicker keeps its tone under a theme that colours every h3 with
|
|
510
|
+
`!important` (thematiq's heading colour); only `!important` beats it. */
|
|
465
511
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__title.cn-next-step-card__title {
|
|
466
|
-
color: var(--color-primary-element-light-text);
|
|
512
|
+
color: var(--color-primary-element-light-text) !important;
|
|
467
513
|
font-size: 13px !important;
|
|
468
514
|
font-weight: 700;
|
|
469
515
|
letter-spacing: 0.06em;
|
|
516
|
+
line-height: normal;
|
|
470
517
|
text-transform: uppercase;
|
|
471
518
|
}
|
|
472
519
|
|
|
@@ -497,11 +544,36 @@
|
|
|
497
544
|
padding: 0 20px;
|
|
498
545
|
}
|
|
499
546
|
|
|
547
|
+
/* The label alone sets the width (DqZaak: 198px for "Verder met beoordelen"):
|
|
548
|
+
NcButton pads its text 4px a side inside the button's own padding, from a
|
|
549
|
+
rule that reaches it through `:has()`, hence the doubled class. */
|
|
550
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__side .button-vue .button-vue__text.button-vue__text {
|
|
551
|
+
margin-inline: 0;
|
|
552
|
+
padding-inline: 0;
|
|
553
|
+
}
|
|
554
|
+
|
|
500
555
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__after {
|
|
501
556
|
color: var(--color-text-maxcontrast);
|
|
502
557
|
font-size: 13px;
|
|
503
558
|
}
|
|
504
559
|
|
|
560
|
+
/* Done and open steps are muted, the current one in the main text. Each hands
|
|
561
|
+
its ink to --nldesign-color-on-surface, which a theme that forces the body
|
|
562
|
+
ink onto every li and span (thematiq) reads instead. */
|
|
563
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item,
|
|
564
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__hint,
|
|
565
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__after {
|
|
566
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item--current {
|
|
570
|
+
--nldesign-color-on-surface: var(--color-main-text);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item--current .cn-next-step-card__hint {
|
|
574
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
575
|
+
}
|
|
576
|
+
|
|
505
577
|
/* ---- History: the activity tab ------------------------------------------ */
|
|
506
578
|
|
|
507
579
|
.cn-look-board .cn-activity-tab--board .cn-activity-tab__board-head {
|
|
@@ -184,10 +184,15 @@
|
|
|
184
184
|
outline-offset: 2px;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
/* The selected chip is light on dark, so it hands its ink to
|
|
188
|
+
--nldesign-color-on-surface: thematiq forces the body ink onto every span
|
|
189
|
+
with `!important` and reads it from that property, which left the label
|
|
190
|
+
dark on dark. */
|
|
187
191
|
.cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected,
|
|
188
192
|
.cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected:hover,
|
|
189
193
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active,
|
|
190
194
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active:hover {
|
|
195
|
+
--nldesign-color-on-surface: var(--color-main-background);
|
|
191
196
|
border-color: transparent;
|
|
192
197
|
background: var(--color-main-text);
|
|
193
198
|
color: var(--color-main-background);
|
|
@@ -208,8 +213,12 @@
|
|
|
208
213
|
}
|
|
209
214
|
|
|
210
215
|
.cn-look-board .cn-saved-views__chip--selected .cn-saved-views__chip-count,
|
|
216
|
+
/* On the selected chip the count is a lighter bubble on the dark chip
|
|
217
|
+
(DqZaken: #3d4047 on #1b1c1d); --cn-board-text-soft resolves to the main
|
|
218
|
+
text, the chip's own colour, which hid the bubble. */
|
|
211
219
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active .cn-quick-filter-bar__count {
|
|
212
|
-
|
|
220
|
+
--nldesign-color-on-surface: var(--color-primary-element-text);
|
|
221
|
+
background: color-mix(in srgb, var(--color-main-background) 15%, var(--color-main-text));
|
|
213
222
|
color: var(--color-primary-element-text);
|
|
214
223
|
}
|
|
215
224
|
|
|
@@ -481,12 +490,16 @@
|
|
|
481
490
|
border-radius: 0;
|
|
482
491
|
}
|
|
483
492
|
|
|
484
|
-
/* The header row is near-white on the boards (#fafbfc), not the hover grey
|
|
493
|
+
/* The header row is near-white on the boards (#fafbfc), not the hover grey,
|
|
494
|
+
its labels 14px muted. The ink also goes to --nldesign-color-on-surface,
|
|
495
|
+
which a theme that forces the body ink onto every span (thematiq) reads. */
|
|
485
496
|
.cn-look-board .cn-table-container--board .cn-data-table th {
|
|
497
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
486
498
|
padding: 12px 16px;
|
|
487
499
|
border-bottom: 0;
|
|
488
500
|
background: var(--cn-board-table-head-bg, color-mix(in srgb, var(--color-background-hover) 40%, var(--color-main-background)));
|
|
489
501
|
color: var(--color-text-maxcontrast);
|
|
502
|
+
font-size: 14px;
|
|
490
503
|
font-weight: 600;
|
|
491
504
|
}
|
|
492
505
|
|
|
@@ -497,6 +510,20 @@
|
|
|
497
510
|
font-size: 14px;
|
|
498
511
|
}
|
|
499
512
|
|
|
513
|
+
/* The board sets its table at the normal line height: a row with a title and
|
|
514
|
+
a secondary line is 66px and the header row 50px (DqZaken). Nextcloud's 1.5
|
|
515
|
+
made them 71px and 67px, and the header's sort button kept the 34px
|
|
516
|
+
clickable area. */
|
|
517
|
+
.cn-look-board .cn-table-container--board .cn-data-table {
|
|
518
|
+
line-height: normal;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.cn-look-board .cn-table-container--board .cn-data-table th .cn-table-header__sort {
|
|
522
|
+
min-height: 0;
|
|
523
|
+
height: auto;
|
|
524
|
+
line-height: inherit;
|
|
525
|
+
}
|
|
526
|
+
|
|
500
527
|
.cn-look-board .cn-table-container--board .cn-data-table .cn-table-row {
|
|
501
528
|
border-bottom: 0;
|
|
502
529
|
}
|
|
@@ -552,7 +579,9 @@
|
|
|
552
579
|
margin-inline-start: 4px;
|
|
553
580
|
}
|
|
554
581
|
|
|
555
|
-
/* The selection column: 18px checkboxes, 28px of content
|
|
582
|
+
/* The selection column: 18px checkboxes, 28px of content between 16px of
|
|
583
|
+
padding either side, 60px in all (DqZaken and 130 other boards; the title
|
|
584
|
+
column starts 77px in).
|
|
556
585
|
The box model is set with `!important` and the widths include the padding:
|
|
557
586
|
Nextcloud's server.css sets `box-sizing: border-box` on everything under
|
|
558
587
|
`#content[class*="app-"]`, an id selector no class rule outranks, so a plain
|
|
@@ -560,9 +589,9 @@
|
|
|
560
589
|
header's checkbox showed as a stray bracket). */
|
|
561
590
|
.cn-look-board .cn-table-container--board .cn-data-table .cn-table-col--checkbox {
|
|
562
591
|
box-sizing: border-box !important;
|
|
563
|
-
width:
|
|
564
|
-
min-width:
|
|
565
|
-
padding-inline: 16px
|
|
592
|
+
width: 60px;
|
|
593
|
+
min-width: 60px;
|
|
594
|
+
padding-inline: 16px;
|
|
566
595
|
text-align: start;
|
|
567
596
|
}
|
|
568
597
|
|
|
@@ -570,6 +599,16 @@
|
|
|
570
599
|
--icon-size: 18px;
|
|
571
600
|
}
|
|
572
601
|
|
|
602
|
+
/* The checkbox is the 18px box alone, as the board draws it: NcCheckboxRadioSwitch
|
|
603
|
+
wraps it in a 34px clickable area with 4px 7px of padding, a 42px block that
|
|
604
|
+
set every row's height (71px where DqZaken's rows are 66). The cell around it
|
|
605
|
+
stays the click target's room: 44px wide, a full row high. */
|
|
606
|
+
.cn-look-board .cn-table-container--board .cn-data-table .checkbox-radio-switch .checkbox-radio-switch__content {
|
|
607
|
+
min-height: 0;
|
|
608
|
+
height: auto;
|
|
609
|
+
padding: 0;
|
|
610
|
+
}
|
|
611
|
+
|
|
573
612
|
/* The title column: a 15px weight 600 link, the secondary line under it. */
|
|
574
613
|
.cn-look-board .cn-table-container--board .cn-data-table td.cn-table-col--title {
|
|
575
614
|
color: var(--color-main-text);
|
|
@@ -580,6 +619,7 @@
|
|
|
580
619
|
}
|
|
581
620
|
|
|
582
621
|
.cn-look-board .cn-table-container--board .cn-data-table td.cn-table-col--title .cn-table-cell__secondary {
|
|
622
|
+
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
583
623
|
color: var(--color-text-maxcontrast);
|
|
584
624
|
font-size: 14px;
|
|
585
625
|
font-weight: 400;
|
|
@@ -621,10 +661,14 @@
|
|
|
621
661
|
gap: 10px;
|
|
622
662
|
}
|
|
623
663
|
|
|
664
|
+
/* The initials sit on the light primary tint in the primary ink, the board's
|
|
665
|
+
person chip (DqZaken's Behandelaar, and most boards' people). */
|
|
624
666
|
.cn-look-board .cn-table-container--board .cn-data-table .cn-cell-renderer__avatar-initials {
|
|
625
|
-
|
|
626
|
-
|
|
667
|
+
--nldesign-color-on-surface: var(--color-primary-element-light-text);
|
|
668
|
+
background: var(--color-primary-element-light);
|
|
669
|
+
color: var(--color-primary-element-light-text);
|
|
627
670
|
font-size: 12px;
|
|
671
|
+
font-weight: 700;
|
|
628
672
|
}
|
|
629
673
|
|
|
630
674
|
.cn-look-board .cn-table-container--board .cn-data-table td.cn-table-col--title .cn-cell-renderer__avatar-name {
|