@conduction/nextcloud-vue 2.56.0-beta.65 → 2.56.0-beta.67
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/CnActionButtons/CnActionButtons.vue.js +1 -1
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js +4 -6
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js.map +1 -1
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js.map +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue.js +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js +3 -2
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js +4 -2
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue.js +1 -1
- package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue2.js +3 -2
- package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue3.js +2 -1
- package/dist/esm/components/CnAssignDialog/CnAssignDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +54 -5
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +16 -2
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue.js +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js +10 -0
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js +2 -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 +22 -2
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +17 -3
- 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.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +18 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +52 -13
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +31 -3
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +48 -11
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +160 -97
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue.js +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +2 -2
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +222 -15
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +24 -7
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnNcDashboardList/CnNcDashboardList.vue.js +1 -1
- package/dist/esm/components/CnNcDashboardList/CnNcDashboardList.vue2.js +21 -1
- package/dist/esm/components/CnNcDashboardList/CnNcDashboardList.vue2.js.map +1 -1
- package/dist/esm/components/CnNcDashboardList/CnNcDashboardList.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue.js +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js +36 -2
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js +44 -5
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js.map +1 -1
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue.js +1 -0
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue.js.map +1 -1
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue2.js +22 -2
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue3.js +36 -16
- package/dist/esm/components/CnPartyPicker/CnPartyPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnReportsPage/CnReportsPage.vue.js +1 -1
- package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js +29 -12
- package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js +3 -1
- package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue.js +1 -1
- package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue2.js.map +1 -1
- package/dist/esm/components/CnSearchSelect/CnSearchSelect.vue3.js.map +1 -1
- package/dist/esm/composables/useRefLabels.js +26 -6
- package/dist/esm/composables/useRefLabels.js.map +1 -1
- package/dist/esm/integrations/registry.js +4 -0
- package/dist/esm/integrations/registry.js.map +1 -1
- package/dist/esm/l10n/en.json.js +3 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +3 -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 +680 -449
- package/dist/esm/store/plugins/liveUpdates.js +3 -1
- package/dist/esm/store/plugins/liveUpdates.js.map +1 -1
- package/dist/esm/store/plugins/logs.js +2 -1
- package/dist/esm/store/plugins/logs.js.map +1 -1
- package/dist/esm/utils/actionLink.js +104 -1
- package/dist/esm/utils/actionLink.js.map +1 -1
- package/dist/esm/utils/detailActionModel.js +28 -1
- package/dist/esm/utils/detailActionModel.js.map +1 -1
- package/dist/esm/utils/fillTemplate.js +13 -5
- package/dist/esm/utils/fillTemplate.js.map +1 -1
- package/dist/esm/utils/headerFieldChips.js +21 -2
- package/dist/esm/utils/headerFieldChips.js.map +1 -1
- package/dist/esm/utils/mapList.js +26 -11
- package/dist/esm/utils/mapList.js.map +1 -1
- package/dist/esm/utils/savedViewMenu.js +12 -5
- package/dist/esm/utils/savedViewMenu.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/nextcloud-vue.cjs.js +2800 -1933
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +680 -449
- package/l10n/en.json +3 -1
- package/l10n/nl.json +3 -1
- package/package.json +1 -1
- package/src/components/CnActionButtons/CnActionButtons.vue +4 -6
- package/src/components/CnActionDialog/CnActionDialog.vue +32 -9
- package/src/components/CnAssignDialog/CnAssignDialog.vue +4 -2
- package/src/components/CnBoardView/CnBoardView.vue +58 -5
- package/src/components/CnCardGrid/CnCardGrid.md +1 -0
- package/src/components/CnCardGrid/CnCardGrid.vue +11 -0
- package/src/components/CnCellRenderer/CnCellRenderer.vue +27 -3
- package/src/components/CnChartWidget/CnChartWidget.vue +6 -0
- package/src/components/CnChoiceCards/CnChoiceCards.vue +0 -3
- package/src/components/CnDashboardPage/CnDashboardPage.vue +20 -5
- package/src/components/CnDetailPage/CnDetailPage.vue +62 -14
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +100 -5
- package/src/components/CnFormDialog/CnFormDialog.vue +1 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +233 -18
- package/src/components/CnNcDashboardList/CnNcDashboardList.vue +21 -1
- package/src/components/CnObjectCard/CnObjectCard.md +1 -0
- package/src/components/CnObjectCard/CnObjectCard.vue +51 -5
- package/src/components/CnPartyPicker/CnPartyPicker.vue +62 -16
- package/src/components/CnReportsPage/CnReportsPage.vue +31 -12
- package/src/components/CnSearchSelect/CnSearchSelect.vue +8 -0
- package/src/composables/useRefLabels.js +25 -5
- package/src/css/badge.css +15 -13
- package/src/css/board.css +0 -1
- package/src/css/dialog.css +53 -3
- package/src/css/index-page.css +26 -1
- package/src/css/look-board-detail.css +36 -15
- package/src/css/look-board-index.css +67 -15
- package/src/css/look-board.css +32 -18
- package/src/integrations/registry.js +4 -0
- package/src/schemas/app-manifest-v2.schema.json +61 -13
- package/src/store/plugins/liveUpdates.js +3 -1
- package/src/store/plugins/logs.js +2 -1
- package/src/utils/actionLink.js +103 -0
- package/src/utils/detailActionModel.js +27 -0
- package/src/utils/fillTemplate.js +13 -5
- package/src/utils/headerFieldChips.js +21 -2
- package/src/utils/mapList.js +26 -11
- package/src/utils/savedViewMenu.js +12 -5
- package/src/utils/validateManifestV2.compiled.js +3 -3
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
/* Card h2 and side heading. */
|
|
21
21
|
--cn-board-heading-size: 17px;
|
|
22
22
|
--cn-board-side-heading-size: 15px;
|
|
23
|
+
/* The boards set text at the font's normal line height (1.2 for Fira
|
|
24
|
+
Sans), Nextcloud at 1.5: a card body's first line carries this much
|
|
25
|
+
half-leading above its glyphs that a board does not draw. A gap the
|
|
26
|
+
boards measure from a title to the text under it is the board's value
|
|
27
|
+
minus this. Resolved in the element that uses it. */
|
|
28
|
+
--cn-board-first-line-leading: 0.15em;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
/* ---- The header: two rows on the ground ------------------------------- */
|
|
@@ -212,24 +218,27 @@
|
|
|
212
218
|
widget's 4px pad is room for the 32px circles, which the bars variant does
|
|
213
219
|
not draw), the label 8px under its bar and the date 8px under the label at
|
|
214
220
|
the normal line height, open steps muted and the done and current ones in
|
|
215
|
-
the main text. Each
|
|
216
|
-
theme that forces the body ink
|
|
221
|
+
the main text. Each sets its ink as `color`, and also hands it to
|
|
222
|
+
--nldesign-color-on-surface for a theme that still forces the body ink. */
|
|
217
223
|
.cn-look-board .cn-stages-widget:has(> .cn-stages-widget__bars):not(.cn-look-nextcloud *) {
|
|
218
224
|
padding: 0;
|
|
219
225
|
}
|
|
220
226
|
|
|
221
227
|
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-label:not(.cn-look-nextcloud *) {
|
|
222
228
|
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
229
|
+
color: var(--color-text-maxcontrast);
|
|
223
230
|
line-height: normal;
|
|
224
231
|
}
|
|
225
232
|
|
|
226
233
|
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-step--done .cn-stages-widget__bar-label:not(.cn-look-nextcloud *),
|
|
227
234
|
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-step--current .cn-stages-widget__bar-label:not(.cn-look-nextcloud *) {
|
|
228
235
|
--nldesign-color-on-surface: var(--color-main-text);
|
|
236
|
+
color: var(--color-main-text);
|
|
229
237
|
}
|
|
230
238
|
|
|
231
239
|
.cn-look-board .cn-stages-widget__bars .cn-stages-widget__bar-date:not(.cn-look-nextcloud *) {
|
|
232
240
|
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
241
|
+
color: var(--color-text-maxcontrast);
|
|
233
242
|
line-height: normal;
|
|
234
243
|
}
|
|
235
244
|
|
|
@@ -367,13 +376,15 @@
|
|
|
367
376
|
The nldesign theme sets every button's weight and radius with `!important`
|
|
368
377
|
through its button tokens, which drew every tab bold with four rounded
|
|
369
378
|
corners; the tab hands the board's values to those tokens. A tab is 37px
|
|
370
|
-
with or without a count (DqZaak), not 34px without one.
|
|
379
|
+
with or without a count (DqZaak), not 34px without one. Its outline is
|
|
380
|
+
the widget card's border, so tab and card meet in one line.
|
|
381
|
+
@spec openspec/changes/board-tabs-widget-border/specs/board-tabs-widget-border/spec.md#requirement-board-folder-tabs-draw-the-widget-card-border
|
|
371
382
|
@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 */
|
|
372
383
|
.cn-look-board .cn-tabs--board .cn-tabs__nav-item {
|
|
373
384
|
--nldesign-component-button-font-weight: 400;
|
|
374
385
|
--nldesign-component-button-border-radius: 8px 8px 0 0;
|
|
375
386
|
background-color: var(--color-background-dark);
|
|
376
|
-
border: 1px solid var(--color-border
|
|
387
|
+
border: 1px solid var(--color-border);
|
|
377
388
|
border-bottom: none;
|
|
378
389
|
border-radius: 8px 8px 0 0;
|
|
379
390
|
font-size: 14px;
|
|
@@ -388,7 +399,7 @@
|
|
|
388
399
|
--nldesign-component-button-font-weight: 700;
|
|
389
400
|
background-color: var(--color-main-background);
|
|
390
401
|
border-bottom: 1px solid var(--color-main-background);
|
|
391
|
-
border-top: 1px solid var(--color-border
|
|
402
|
+
border-top: 1px solid var(--color-border);
|
|
392
403
|
font-weight: 700;
|
|
393
404
|
min-height: 38px;
|
|
394
405
|
padding-bottom: 9px;
|
|
@@ -499,15 +510,17 @@
|
|
|
499
510
|
.cn-look-board .cn-detail-card .cn-detail-card__title {
|
|
500
511
|
font-size: var(--cn-board-heading-size);
|
|
501
512
|
font-weight: 700;
|
|
502
|
-
line-height:
|
|
513
|
+
line-height: normal;
|
|
503
514
|
}
|
|
504
515
|
|
|
516
|
+
/* 12px from the title's glyphs to the first line's glyphs, as drawn.
|
|
517
|
+
@spec openspec/changes/board-card-title-gap/specs/board-card-title-gap/spec.md#requirement-a-board-cards-body-starts-the-boards-gap-below-its-title */
|
|
505
518
|
.cn-look-board .cn-detail-page .cn-widget-wrapper__content {
|
|
506
|
-
padding: 12px 22px 20px;
|
|
519
|
+
padding: calc(12px - var(--cn-board-first-line-leading)) 22px 20px;
|
|
507
520
|
}
|
|
508
521
|
|
|
509
522
|
.cn-look-board .cn-detail-card .cn-detail-card__content {
|
|
510
|
-
padding: 12px 22px 20px;
|
|
523
|
+
padding: calc(12px - var(--cn-board-first-line-leading)) 22px 20px;
|
|
511
524
|
}
|
|
512
525
|
|
|
513
526
|
/* A header-less card keeps the full 20px 22px. */
|
|
@@ -515,13 +528,18 @@
|
|
|
515
528
|
padding: var(--cn-board-card-padding);
|
|
516
529
|
}
|
|
517
530
|
|
|
518
|
-
/* The data card: 200px columns, a 12px 24px gap, label over value, hairline.
|
|
519
|
-
|
|
531
|
+
/* The data card: 200px columns, a 12px 24px gap, label over value, hairline.
|
|
532
|
+
Each selector holds one class more than the component's scoped rule
|
|
533
|
+
(`.cn-object-data-widget__cell[data-v-...]`), which loads after this sheet:
|
|
534
|
+
at equal specificity the cell kept its 8px top padding and the grid its 8px
|
|
535
|
+
gap, so the first label sat 8px further below the card's title.
|
|
536
|
+
@spec openspec/changes/board-card-title-gap/specs/board-card-title-gap/spec.md#requirement-the-data-cards-grid-keeps-the-boards-gap-and-cell-padding */
|
|
537
|
+
.cn-look-board .cn-object-data-widget__grid-wrap .cn-object-data-widget__grid {
|
|
520
538
|
font-size: 15px;
|
|
521
539
|
gap: 12px 24px;
|
|
522
540
|
}
|
|
523
541
|
|
|
524
|
-
.cn-look-board .cn-object-data-widget__cell {
|
|
542
|
+
.cn-look-board .cn-object-data-widget__grid .cn-object-data-widget__cell {
|
|
525
543
|
border-bottom: 1px solid var(--cn-board-hairline);
|
|
526
544
|
gap: 2px;
|
|
527
545
|
padding: 0 0 10px;
|
|
@@ -569,7 +587,7 @@
|
|
|
569
587
|
}
|
|
570
588
|
|
|
571
589
|
.cn-look-board .cn-detail-page__side .cn-widget-wrapper__content {
|
|
572
|
-
padding: 10px 22px 20px;
|
|
590
|
+
padding: calc(10px - var(--cn-board-first-line-leading)) 22px 20px;
|
|
573
591
|
}
|
|
574
592
|
|
|
575
593
|
/* A stat tile in a side card (DqZaak "Termijn") sits on the card's inset as
|
|
@@ -686,21 +704,24 @@
|
|
|
686
704
|
font-size: 13px;
|
|
687
705
|
}
|
|
688
706
|
|
|
689
|
-
/* Done and open steps are muted, the current one in the main text. Each
|
|
690
|
-
its ink to --nldesign-color-on-surface
|
|
691
|
-
|
|
707
|
+
/* Done and open steps are muted, the current one in the main text. Each sets
|
|
708
|
+
its ink as `color`, and also hands it to --nldesign-color-on-surface for a
|
|
709
|
+
theme that still forces the body ink. */
|
|
692
710
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item,
|
|
693
711
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__hint,
|
|
694
712
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__after {
|
|
695
713
|
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
714
|
+
color: var(--color-text-maxcontrast);
|
|
696
715
|
}
|
|
697
716
|
|
|
698
717
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item--current {
|
|
699
718
|
--nldesign-color-on-surface: var(--color-main-text);
|
|
719
|
+
color: var(--color-main-text);
|
|
700
720
|
}
|
|
701
721
|
|
|
702
722
|
.cn-look-board .cn-next-step-card--board .cn-next-step-card__item--current .cn-next-step-card__hint {
|
|
703
723
|
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
724
|
+
color: var(--color-text-maxcontrast);
|
|
704
725
|
}
|
|
705
726
|
|
|
706
727
|
/* ---- History: the activity tab ------------------------------------------ */
|
|
@@ -205,15 +205,11 @@
|
|
|
205
205
|
outline-offset: 2px;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
/* The selected chip is light on dark
|
|
209
|
-
--nldesign-color-on-surface: thematiq forces the body ink onto every span
|
|
210
|
-
with `!important` and reads it from that property, which left the label
|
|
211
|
-
dark on dark. */
|
|
208
|
+
/* The selected chip is light on dark. */
|
|
212
209
|
.cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected,
|
|
213
210
|
.cn-look-board .cn-saved-views__chips .cn-saved-views__chip--selected:hover,
|
|
214
211
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active,
|
|
215
212
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active:hover {
|
|
216
|
-
--nldesign-color-on-surface: var(--color-main-background);
|
|
217
213
|
border-color: transparent;
|
|
218
214
|
background: var(--color-main-text);
|
|
219
215
|
color: var(--color-main-background);
|
|
@@ -226,7 +222,6 @@
|
|
|
226
222
|
padding: 1px 7px;
|
|
227
223
|
border: 0;
|
|
228
224
|
border-radius: 10px;
|
|
229
|
-
--nldesign-color-on-surface: var(--cn-board-text-soft);
|
|
230
225
|
background: var(--color-border);
|
|
231
226
|
color: var(--cn-board-text-soft);
|
|
232
227
|
font-size: 12px;
|
|
@@ -240,14 +235,15 @@
|
|
|
240
235
|
/* On the selected chip the count is the soft ink as a lighter bubble on the
|
|
241
236
|
dark chip (DqZaken: #3d4047 on #1b1c1d). */
|
|
242
237
|
.cn-look-board .cn-quick-filter-bar .cn-quick-filter-bar__tab--active .cn-quick-filter-bar__count {
|
|
243
|
-
--nldesign-color-on-surface: var(--color-primary-element-text);
|
|
244
238
|
background: var(--cn-board-text-soft);
|
|
245
239
|
color: var(--color-primary-element-text);
|
|
246
240
|
}
|
|
247
241
|
|
|
248
242
|
/* Save view: a ghost button, 34px, radius 17, no border, on the light primary
|
|
249
|
-
tint, a 14px icon 6px before the label, on one line.
|
|
243
|
+
tint, a 14px icon 6px before the label, on one line. The label is a span,
|
|
244
|
+
so its ink also goes to --nldesign-color-on-surface. */
|
|
250
245
|
.cn-look-board .cn-saved-views__save .button-vue {
|
|
246
|
+
--nldesign-color-on-surface: var(--color-primary-element-light-text);
|
|
251
247
|
min-height: 34px;
|
|
252
248
|
height: 34px;
|
|
253
249
|
padding: 0 12px;
|
|
@@ -288,6 +284,7 @@
|
|
|
288
284
|
@spec openspec/changes/board-toolbar-buttons-theme/specs/board-toolbar-buttons-theme/spec.md#requirement-board-toolbar-buttons-are-neutral-under-a-theme */
|
|
289
285
|
.cn-look-board .cn-actions-bar:not(.cn-look-nextcloud *) {
|
|
290
286
|
--nldesign-component-button-font-weight: 600;
|
|
287
|
+
--nldesign-component-button-color: var(--color-main-text);
|
|
291
288
|
--nldesign-component-button-secondary-action-color: var(--color-main-text);
|
|
292
289
|
--nldesign-component-button-secondary-action-background-color: var(--color-main-background);
|
|
293
290
|
--nldesign-component-button-secondary-action-border-color: var(--cn-board-control-border);
|
|
@@ -317,8 +314,6 @@
|
|
|
317
314
|
margin-inline-start: 6px;
|
|
318
315
|
padding: 0 6px;
|
|
319
316
|
border-radius: 10px;
|
|
320
|
-
/* A theme that forces the body ink onto every span reads it from here. */
|
|
321
|
-
--nldesign-color-on-surface: var(--color-primary-element-text);
|
|
322
317
|
background: var(--color-primary-element);
|
|
323
318
|
color: var(--color-primary-element-text);
|
|
324
319
|
font-size: 12px;
|
|
@@ -437,7 +432,10 @@
|
|
|
437
432
|
font-size: 14px;
|
|
438
433
|
}
|
|
439
434
|
|
|
435
|
+
/* An active filter: the light primary tint, its label (a span) in the tint's
|
|
436
|
+
ink through --nldesign-color-on-surface too. */
|
|
440
437
|
.cn-look-board .cn-actions-bar--board .cn-actions-bar__filter-chip {
|
|
438
|
+
--nldesign-color-on-surface: var(--color-primary-element-light-text);
|
|
441
439
|
display: inline-flex;
|
|
442
440
|
align-items: center;
|
|
443
441
|
gap: 6px;
|
|
@@ -545,15 +543,13 @@
|
|
|
545
543
|
}
|
|
546
544
|
|
|
547
545
|
/* The header row is near-white on the boards (#fafbfc), not the hover grey,
|
|
548
|
-
its labels 14px muted.
|
|
549
|
-
which a theme that forces the body ink onto every span (thematiq) reads.
|
|
546
|
+
its labels 14px muted.
|
|
550
547
|
The nldesign theme paints every `th` with `!important` through its table
|
|
551
548
|
header tokens, and the sort button in it through its button weight token
|
|
552
549
|
(bold), so the cell hands the board's ground, ink and weight to those
|
|
553
550
|
tokens too.
|
|
554
551
|
@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 */
|
|
555
552
|
.cn-look-board .cn-table-container--board .cn-data-table th {
|
|
556
|
-
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
557
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)));
|
|
558
554
|
--nldesign-component-table-header-color: var(--color-text-maxcontrast);
|
|
559
555
|
--nldesign-component-table-header-font-weight: 600;
|
|
@@ -581,9 +577,13 @@
|
|
|
581
577
|
line-height: normal;
|
|
582
578
|
}
|
|
583
579
|
|
|
580
|
+
/* The sort button is the bare label, square (the boards draw no box round
|
|
581
|
+
it); the funnel after it is a 22px button with a 4px radius. Both outrank
|
|
582
|
+
the 8px element radius the table and Nextcloud's `button` rule give them. */
|
|
584
583
|
.cn-look-board .cn-table-container--board .cn-data-table th .cn-table-header__sort {
|
|
585
584
|
min-height: 0;
|
|
586
585
|
height: auto;
|
|
586
|
+
border-radius: 0;
|
|
587
587
|
line-height: inherit;
|
|
588
588
|
}
|
|
589
589
|
|
|
@@ -639,6 +639,7 @@
|
|
|
639
639
|
min-width: 22px;
|
|
640
640
|
height: 22px;
|
|
641
641
|
min-height: 22px;
|
|
642
|
+
border-radius: 4px;
|
|
642
643
|
margin-inline-start: 4px;
|
|
643
644
|
}
|
|
644
645
|
|
|
@@ -682,7 +683,6 @@
|
|
|
682
683
|
}
|
|
683
684
|
|
|
684
685
|
.cn-look-board .cn-table-container--board .cn-data-table td.cn-table-col--title .cn-table-cell__secondary {
|
|
685
|
-
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
686
686
|
color: var(--color-text-maxcontrast);
|
|
687
687
|
font-size: 14px;
|
|
688
688
|
font-weight: 400;
|
|
@@ -727,7 +727,6 @@
|
|
|
727
727
|
/* The initials sit on the light primary tint in the primary ink, the board's
|
|
728
728
|
person chip (DqZaken's Behandelaar, and most boards' people). */
|
|
729
729
|
.cn-look-board .cn-table-container--board .cn-data-table .cn-cell-renderer__avatar-initials {
|
|
730
|
-
--nldesign-color-on-surface: var(--color-primary-element-light-text);
|
|
731
730
|
background: var(--color-primary-element-light);
|
|
732
731
|
color: var(--color-primary-element-light-text);
|
|
733
732
|
font-size: 12px;
|
|
@@ -847,6 +846,8 @@
|
|
|
847
846
|
margin-inline-start: auto;
|
|
848
847
|
}
|
|
849
848
|
|
|
849
|
+
/* A page link is a <button>: Nextcloud's `button` rule sets it bold, the
|
|
850
|
+
boards set the links at the regular weight and only the current page at 600. */
|
|
850
851
|
.cn-look-board .cn-pagination--board .cn-pagination__board-link {
|
|
851
852
|
box-sizing: border-box;
|
|
852
853
|
min-width: 34px;
|
|
@@ -859,6 +860,7 @@
|
|
|
859
860
|
background: var(--color-main-background);
|
|
860
861
|
color: var(--color-main-text);
|
|
861
862
|
font-size: 14px;
|
|
863
|
+
font-weight: 400;
|
|
862
864
|
cursor: pointer;
|
|
863
865
|
}
|
|
864
866
|
|
|
@@ -1279,3 +1281,53 @@
|
|
|
1279
1281
|
font-size: 20px;
|
|
1280
1282
|
font-weight: 700;
|
|
1281
1283
|
}
|
|
1284
|
+
|
|
1285
|
+
/* ---- Side panel cards --------------------------------------------------- */
|
|
1286
|
+
/* A card beside the list is the board's side card (DqTeamwachtrij "Team
|
|
1287
|
+
vandaag", "Werkvoorraad per zaaktype"): no rule under the header, the
|
|
1288
|
+
title a 15px muted label on the card's 20px 22px inset, 12px above the
|
|
1289
|
+
body, 20px between cards. The wrapper drew the Nextcloud panel: a 14px
|
|
1290
|
+
dark title on a 12px 16px header over a rule, 16px between cards. The
|
|
1291
|
+
tone carries `!important` against a theme that colours every h3.
|
|
1292
|
+
@spec openspec/changes/board-index-side-panel-cards/specs/board-index-side-panel-cards/spec.md#requirement-a-board-index-side-panel-card-is-the-boards-side-card */
|
|
1293
|
+
.cn-look-board .cn-index-page-widgets--side-panel:not(.cn-look-nextcloud *) {
|
|
1294
|
+
gap: var(--cn-board-section-gap, 20px);
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
.cn-look-board .cn-index-page-widgets--side-panel:not(.cn-look-nextcloud *) .cn-widget-wrapper__header {
|
|
1298
|
+
border-bottom: none;
|
|
1299
|
+
padding: 20px 22px 0;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
.cn-look-board .cn-index-page-widgets--side-panel:not(.cn-look-nextcloud *) .cn-widget-wrapper__title {
|
|
1303
|
+
color: var(--color-text-maxcontrast) !important;
|
|
1304
|
+
font-size: var(--cn-board-side-heading-size, 15px);
|
|
1305
|
+
font-weight: 600;
|
|
1306
|
+
line-height: normal;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.cn-look-board .cn-index-page-widgets--side-panel:not(.cn-look-nextcloud *) .cn-widget-wrapper__content {
|
|
1310
|
+
padding: calc(12px - var(--cn-board-first-line-leading, 0.15em)) 22px 20px;
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
.cn-look-board .cn-index-page-widgets--side-panel:not(.cn-look-nextcloud *) .cn-index-page-widgets__note {
|
|
1314
|
+
font-size: 13px;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
/* A record list drawn as a table (DqTeamwachtrij "Werkvoorraad per
|
|
1318
|
+
zaaktype") is the board's compact grid: a 13px muted header at regular
|
|
1319
|
+
weight, rows 8px apart, no rules between them. Line heights differ from
|
|
1320
|
+
the board's normal ones, so the cell padding sets the board's row pitch.
|
|
1321
|
+
One class more than the component's scoped rules, which load later.
|
|
1322
|
+
@spec openspec/changes/board-index-side-panel-cards/specs/board-index-side-panel-cards/spec.md#requirement-a-board-record-list-table-is-the-boards-compact-grid */
|
|
1323
|
+
.cn-look-board .cn-record-list--table .cn-record-list__table th {
|
|
1324
|
+
border-bottom: none;
|
|
1325
|
+
font-size: 13px;
|
|
1326
|
+
font-weight: 400;
|
|
1327
|
+
padding-block: 0 2px;
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
.cn-look-board .cn-record-list--table .cn-record-list__table td {
|
|
1331
|
+
border-bottom: none;
|
|
1332
|
+
padding-block: 2px;
|
|
1333
|
+
}
|
package/src/css/look-board.css
CHANGED
|
@@ -219,6 +219,16 @@
|
|
|
219
219
|
height: 16px;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
+
/* ---- A single select -------------------------------------------------- */
|
|
223
|
+
/* NcSelect draws a single select as its search field with the clear and
|
|
224
|
+
open buttons laid over its end. A legacy vue-select rule that Nextcloud
|
|
225
|
+
still loads caps the field at the width less one clickable area, which
|
|
226
|
+
left those buttons outside the field's border (DqNieuweZaak "Zaaktype",
|
|
227
|
+
"Intakekanaal"). */
|
|
228
|
+
.cn-look-board .nc-select.v-select.select.vs--single .vs__selected-options {
|
|
229
|
+
max-width: none;
|
|
230
|
+
}
|
|
231
|
+
|
|
222
232
|
/* ---- The header button ------------------------------------------------- */
|
|
223
233
|
.cn-look-board .cn-index-page__header-buttons:not(.cn-look-nextcloud *),
|
|
224
234
|
.cn-look-board .cn-detail-page__header-actions:not(.cn-look-nextcloud *),
|
|
@@ -343,11 +353,8 @@
|
|
|
343
353
|
end of a tab strip) is the board's neutral control: the main background, a
|
|
344
354
|
grey border, the main text at 600 (DqZaak), not Nextcloud's primary tint.
|
|
345
355
|
NcActions marks a secondary menu `action-item--secondary` on its root and
|
|
346
|
-
keeps a class given to it off, so the rule reads that marker.
|
|
347
|
-
hands its ink to --nldesign-color-on-surface for a theme that forces the
|
|
348
|
-
body ink onto every span (thematiq). */
|
|
356
|
+
keeps a class given to it off, so the rule reads that marker. */
|
|
349
357
|
.cn-look-board .action-item.action-item--secondary .action-item__menutoggle.button-vue--secondary:not(.cn-look-nextcloud *) {
|
|
350
|
-
--nldesign-color-on-surface: var(--color-main-text);
|
|
351
358
|
border: 1px solid var(--cn-board-control-border);
|
|
352
359
|
border-radius: var(--cn-board-control-radius);
|
|
353
360
|
background: var(--color-main-background);
|
|
@@ -1154,14 +1161,6 @@
|
|
|
1154
1161
|
color: var(--cn-status-badge-ink);
|
|
1155
1162
|
}
|
|
1156
1163
|
|
|
1157
|
-
/* A pill paints its own pairing of ink and fill. A theme that forces the body
|
|
1158
|
-
ink onto every span (thematiq's text rule, `!important` at id level) reads
|
|
1159
|
-
that ink from --nldesign-color-on-surface when the surface sets it, so the
|
|
1160
|
-
pill hands it its own ink: "In behandeling" stays purple on purple. */
|
|
1161
|
-
.cn-look-board .cn-status-badge:not(.cn-look-nextcloud *) {
|
|
1162
|
-
--nldesign-color-on-surface: var(--cn-status-badge-ink);
|
|
1163
|
-
}
|
|
1164
|
-
|
|
1165
1164
|
/* ---- Info notes (NcNoteCard type="info") -------------------------------- */
|
|
1166
1165
|
/* The board's info note is a light-blue rounded box: no edge bar, 12px 14px
|
|
1167
1166
|
of padding, radius 8, an 18px icon 10px before the text, 14px text in the
|
|
@@ -1213,9 +1212,7 @@
|
|
|
1213
1212
|
hairline under each pair (DqZaak "Zaakgegevens"), the horizontal layout as
|
|
1214
1213
|
two columns of 14px text, the label column as wide as its longest label
|
|
1215
1214
|
(the side cards). Both at the board's line height, 1.2, not Nextcloud's 1.5:
|
|
1216
|
-
a pair is 47px tall on the board.
|
|
1217
|
-
--nldesign-color-on-surface, which a theme that forces the body ink onto
|
|
1218
|
-
every div (thematiq) reads. */
|
|
1215
|
+
a pair is 47px tall on the board. */
|
|
1219
1216
|
.cn-look-board .cn-detail-grid.cn-detail-grid--grid:not(.cn-look-nextcloud *) {
|
|
1220
1217
|
gap: 12px 24px;
|
|
1221
1218
|
font-size: 15px;
|
|
@@ -1246,7 +1243,6 @@
|
|
|
1246
1243
|
}
|
|
1247
1244
|
|
|
1248
1245
|
.cn-look-board .cn-detail-grid .cn-detail-grid__label:not(.cn-look-nextcloud *) {
|
|
1249
|
-
--nldesign-color-on-surface: var(--color-text-maxcontrast);
|
|
1250
1246
|
min-width: 0;
|
|
1251
1247
|
color: var(--color-text-maxcontrast);
|
|
1252
1248
|
font-size: 13px;
|
|
@@ -1278,7 +1274,7 @@
|
|
|
1278
1274
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--nc-dashboard) .cn-widget-wrapper__title {
|
|
1279
1275
|
font-size: var(--cn-board-heading-size, 17px);
|
|
1280
1276
|
font-weight: 700;
|
|
1281
|
-
line-height:
|
|
1277
|
+
line-height: normal;
|
|
1282
1278
|
}
|
|
1283
1279
|
|
|
1284
1280
|
/* The board draws no rule under a dashboard card's title (DqMijnWerk,
|
|
@@ -1292,7 +1288,7 @@
|
|
|
1292
1288
|
}
|
|
1293
1289
|
|
|
1294
1290
|
.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 {
|
|
1295
|
-
padding: 20px var(--cn-board-dashboard-card-inset) 12px;
|
|
1291
|
+
padding: 20px var(--cn-board-dashboard-card-inset) calc(12px - var(--cn-board-first-line-leading, 0.15em));
|
|
1296
1292
|
}
|
|
1297
1293
|
|
|
1298
1294
|
/* ---- Record list on a dashboard card (PtDashboard) ---------------------- */
|
|
@@ -1487,3 +1483,21 @@
|
|
|
1487
1483
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-stats-block-widget--tiles-box {
|
|
1488
1484
|
padding: 14px 22px 20px;
|
|
1489
1485
|
}
|
|
1486
|
+
|
|
1487
|
+
/* ---- Matrix chart (DqProcesanalyse "Dagen per fase") -------------------- */
|
|
1488
|
+
/* The board sets the matrix at 14px and the font's normal line height: the
|
|
1489
|
+
column heads and the cell figures at 600, a cell 37px with its 10px
|
|
1490
|
+
padding. Nextcloud's 15px at 1.5 made each row 42.5px.
|
|
1491
|
+
@spec openspec/changes/board-matrix-cells/specs/board-matrix-cells/spec.md#requirement-a-board-matrix-takes-the-boards-type */
|
|
1492
|
+
.cn-look-board .cn-chart-widget__matrix:not(.cn-look-nextcloud *) {
|
|
1493
|
+
font-size: 14px;
|
|
1494
|
+
line-height: normal;
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1497
|
+
.cn-look-board .cn-chart-widget__matrix:not(.cn-look-nextcloud *) .cn-chart-widget__matrix-head {
|
|
1498
|
+
font-weight: 600;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
.cn-look-board .cn-chart-widget__matrix:not(.cn-look-nextcloud *) .cn-chart-widget__matrix-cell:not(.cn-chart-widget__matrix-cell--current) {
|
|
1502
|
+
font-weight: 600;
|
|
1503
|
+
}
|
|
@@ -89,6 +89,7 @@ export function createIntegrationRegistry() {
|
|
|
89
89
|
* @param {?object} [entry.offlineConfig] Opaque per-integration config bag forwarded verbatim to the integration's components (e.g. the field-inspection leaf's offline schema/filter config). A consuming app overrides it by pre-registering the same id.
|
|
90
90
|
* @param {'component'|'mount'} [entry.renderMode] Render strategy (openregister#2127 / ADR-066). `'component'` (default) interprets the SFC `tab`/`widget` under the host's own Vue runtime. `'mount'` hands the leaf a bare host-owned DOM element via `mount`/`unmount`, so a leaf built against a different Vue major than the host renders its own framework instance inside that element.
|
|
91
91
|
* @param {(el: Element, props: object) => void} [entry.mount] Mount hand-off. Required together with `unmount` when `renderMode` is `'mount'`; the host calls it against a bare element with the same context an SFC widget/tab receives (`{ register, schema, objectId, surface, integrationContext, … }`). May also be supplied alongside an SFC pair as a same-major fast path.
|
|
92
|
+
* @param {'card'} [entry.chrome] `'card'` when a mount-mode leaf draws no card of its own: a detail page then hosts it in the library card and hands it `onHeader(header)` to report its count, actions and empty state.
|
|
92
93
|
* @param {(el: Element) => void} [entry.unmount] Teardown hand-off, called by the host before it removes the element and on surface hide / bound-object change. Travels as a pair with `mount`.
|
|
93
94
|
*
|
|
94
95
|
* @return {?object} Normalised entry, or null on collision / malformed mount pair in prod.
|
|
@@ -209,6 +210,9 @@ export function createIntegrationRegistry() {
|
|
|
209
210
|
// registration, with the tabbed panel silently keeping the sidebar
|
|
210
211
|
// component.
|
|
211
212
|
bareWidget: entry.bareWidget === true,
|
|
213
|
+
// `card`: a mount-mode leaf that draws no card of its own, so a
|
|
214
|
+
// detail page hosts it in the library card (CnDetailWidgetHost).
|
|
215
|
+
chrome: entry.chrome === 'card' ? 'card' : null,
|
|
212
216
|
// Marker set by `registerBuiltinIntegrations` /
|
|
213
217
|
// `registerLeafIntegrations` so `useIntegrationRegistry` can
|
|
214
218
|
// distinguish lib-owned registrations (whose components must
|