@conduction/nextcloud-vue 2.150.0 → 2.151.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/CnActionDialog/CnActionDialog.vue.js +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js +7 -2
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js +40 -41
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +6 -3
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +13 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js +5 -1
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +46 -0
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +64 -64
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +15 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnPlanWidget/CnPlanWidgetRow.vue.js +1 -1
- package/dist/esm/components/CnPlanWidget/CnPlanWidgetRow.vue2.js.map +1 -1
- package/dist/esm/components/CnPlanWidget/CnPlanWidgetRow.vue3.js +16 -5
- package/dist/esm/components/CnPlanWidget/CnPlanWidgetRow.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +25 -2
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +82 -68
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue.js +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue.js +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue2.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/eventStatus.js +43 -2
- package/dist/esm/integrations/builtin/calendar/eventStatus.js.map +1 -1
- package/dist/esm/l10n/en.json.js +4 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +5 -2
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +623 -362
- package/dist/nextcloud-vue.cjs.js +894 -720
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +623 -362
- package/l10n/en.json +4 -1
- package/l10n/nl.json +5 -2
- package/package.json +1 -1
- package/src/components/CnActionDialog/CnActionDialog.vue +17 -4
- package/src/components/CnConversationThread/CnConversationThread.vue +16 -2
- package/src/components/CnConversationThread/CnConversationWidget.vue +5 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +47 -2
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.md +1 -1
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +15 -1
- package/src/components/CnPlanWidget/CnPlanWidgetRow.vue +17 -2
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +45 -2
- package/src/components/CnRetentionWidget/CnRetentionWidget.vue +8 -1
- package/src/components/CnTimelineWidget/CnTimelineManage.vue +1 -1
- package/src/css/dialog.css +6 -0
- package/src/css/look-board-detail.css +137 -0
- package/src/css/look-board.css +78 -2
- package/src/integrations/builtin/calendar/eventStatus.js +42 -1
package/src/css/look-board.css
CHANGED
|
@@ -317,6 +317,17 @@
|
|
|
317
317
|
font-size: 14px;
|
|
318
318
|
}
|
|
319
319
|
|
|
320
|
+
/* A link action is drawn as a button action: the board's 40px, no outer
|
|
321
|
+
margin (DqMijnWerk "Vandaag eerst": live links grew to the theme's 44px
|
|
322
|
+
link target and the button kept Nextcloud's 3px margin, 46px tall and
|
|
323
|
+
13px apart where the board draws 40 to 42 and 10).
|
|
324
|
+
@spec openspec/changes/board-banner-actions-as-drawn/specs/board-banner-actions-as-drawn/spec.md#requirement-a-board-banners-actions-are-drawn-alike */
|
|
325
|
+
.cn-look-board .cn-banner-widget__action.cn-banner-widget__action:not(.cn-look-nextcloud *) {
|
|
326
|
+
height: var(--cn-board-control-height);
|
|
327
|
+
min-height: 0;
|
|
328
|
+
margin: 0;
|
|
329
|
+
}
|
|
330
|
+
|
|
320
331
|
.cn-look-board .cn-banner-widget__action--primary:not(.cn-look-nextcloud *) {
|
|
321
332
|
border: 0;
|
|
322
333
|
}
|
|
@@ -346,7 +357,10 @@
|
|
|
346
357
|
min-height: var(--cn-board-control-height);
|
|
347
358
|
}
|
|
348
359
|
|
|
349
|
-
|
|
360
|
+
/* `.button-vue.button-vue`: NcButton sets its own padding on a button
|
|
361
|
+
without an icon (`.button-vue:has(.button-vue__icon:empty)`), as strong as
|
|
362
|
+
a single class here, and loads later. */
|
|
363
|
+
.cn-look-board .cn-workspace-filter-widget__form:not(.cn-look-nextcloud *) .button-vue.button-vue {
|
|
350
364
|
--button-size: var(--cn-board-control-height);
|
|
351
365
|
--button-padding: 16px;
|
|
352
366
|
}
|
|
@@ -760,7 +774,7 @@
|
|
|
760
774
|
/* "CSV exporteren" beside "Rapport laden" is the neutral secondary at the
|
|
761
775
|
40px control height, 14px in (DqTermijnen).
|
|
762
776
|
@spec openspec/changes/workspace-filter-export-table/specs/workspace-filter-export-table/spec.md#requirement-a-workspace-filter-input-can-export-the-table-it-loads */
|
|
763
|
-
.cn-look-board .cn-workspace-filter-widget__form:not(.cn-look-nextcloud *) .button-vue.cn-workspace-filter-widget__export {
|
|
777
|
+
.cn-look-board .cn-workspace-filter-widget__form:not(.cn-look-nextcloud *) .button-vue.button-vue.cn-workspace-filter-widget__export {
|
|
764
778
|
--button-size: var(--cn-board-control-height);
|
|
765
779
|
--button-padding: 14px;
|
|
766
780
|
}
|
|
@@ -813,6 +827,29 @@
|
|
|
813
827
|
background: var(--color-background-hover);
|
|
814
828
|
}
|
|
815
829
|
|
|
830
|
+
/* ---- A card table's head controls -------------------------------------- */
|
|
831
|
+
/* The head of a card's table (CnTasksWidget, CnRecordListWidget) draws its
|
|
832
|
+
sort control as the bare label, square, and the funnel after it 4px on as a
|
|
833
|
+
22px button with a 4px radius, as CnDataTable's board head does
|
|
834
|
+
(DqZaakTaken). Nextcloud's `button` rule gave the label an 8px radius and a
|
|
835
|
+
3px end margin (7px to the funnel) and NcActions its 8px trigger radius;
|
|
836
|
+
the extra class outranks both. */
|
|
837
|
+
.cn-look-board .cn-tasks-widget__head .cn-tasks-widget__head-sort:not(.cn-look-nextcloud *),
|
|
838
|
+
.cn-look-board .cn-record-list__head .cn-record-list__sort:not(.cn-look-nextcloud *) {
|
|
839
|
+
margin: 0;
|
|
840
|
+
border-radius: 0;
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
.cn-look-board .cn-tasks-widget__head .cn-tasks-widget__head-filter .button-vue:not(.cn-look-nextcloud *),
|
|
844
|
+
.cn-look-board .cn-record-list__head .cn-record-list__head-filter .button-vue:not(.cn-look-nextcloud *) {
|
|
845
|
+
--button-size: 22px;
|
|
846
|
+
width: 22px;
|
|
847
|
+
min-width: 22px;
|
|
848
|
+
height: 22px;
|
|
849
|
+
min-height: 22px;
|
|
850
|
+
border-radius: 4px;
|
|
851
|
+
}
|
|
852
|
+
|
|
816
853
|
/* ---- The buildiq square ------------------------------------------------ */
|
|
817
854
|
/* The board square's size. Its orange is set in patches.css, beside the
|
|
818
855
|
brand orange it replaces, since this sheet names no colour literal. */
|
|
@@ -2593,6 +2630,7 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
2593
2630
|
color: var(--color-main-text);
|
|
2594
2631
|
font-size: 15px;
|
|
2595
2632
|
font-weight: 600;
|
|
2633
|
+
line-height: normal;
|
|
2596
2634
|
}
|
|
2597
2635
|
|
|
2598
2636
|
/* A row whose one action is outlined (`rowAction.variant: "outlined"`,
|
|
@@ -2621,9 +2659,13 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
2621
2659
|
background: var(--color-background-hover);
|
|
2622
2660
|
}
|
|
2623
2661
|
|
|
2662
|
+
/* Title and meta lines at the font's normal line height: a two-line row is
|
|
2663
|
+
60px, as every Dq dashboard board draws it (r31: 69 at Nextcloud's 1.5).
|
|
2664
|
+
@spec openspec/changes/board-dashboard-rows-normal-leading/specs/board-dashboard-rows-normal-leading/spec.md#requirement-a-board-dashboard-row-is-set-at-the-normal-line-height */
|
|
2624
2665
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__meta {
|
|
2625
2666
|
color: var(--color-text-maxcontrast);
|
|
2626
2667
|
font-size: 13px;
|
|
2668
|
+
line-height: normal;
|
|
2627
2669
|
}
|
|
2628
2670
|
|
|
2629
2671
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__trailing {
|
|
@@ -2680,6 +2722,25 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
2680
2722
|
border-top: 1px solid var(--color-border);
|
|
2681
2723
|
}
|
|
2682
2724
|
|
|
2725
|
+
/* Note rows (DqDagAfsluiten "Nog open van vandaag"): the kind pill 12px
|
|
2726
|
+
from the title, the record button and the closing buttons at the board's
|
|
2727
|
+
40px, and the closing pair at the two ends of their line (Annuleren left,
|
|
2728
|
+
Dag afsluiten right).
|
|
2729
|
+
@spec openspec/changes/board-record-notes-controls/specs/board-record-notes-controls/spec.md#requirement-board-note-rows-draw-the-boards-controls */
|
|
2730
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-notes__head {
|
|
2731
|
+
gap: 8px 12px;
|
|
2732
|
+
}
|
|
2733
|
+
|
|
2734
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-notes__fields .button-vue,
|
|
2735
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-notes__all-actions .button-vue {
|
|
2736
|
+
--button-size: var(--cn-board-control-height);
|
|
2737
|
+
}
|
|
2738
|
+
|
|
2739
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-notes__all-actions {
|
|
2740
|
+
flex: 1 1 100%;
|
|
2741
|
+
justify-content: space-between;
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2683
2744
|
/* Hover: the whole row takes the hover ground, 8px beyond the text so the
|
|
2684
2745
|
text does not move. */
|
|
2685
2746
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__row--link {
|
|
@@ -2766,6 +2827,21 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
2766
2827
|
padding: 0 var(--cn-board-dashboard-card-inset) 10px;
|
|
2767
2828
|
}
|
|
2768
2829
|
|
|
2830
|
+
/* The stacked bar's legend in the board's type: the label 14px and the
|
|
2831
|
+
count 22px, both at the font's normal line height, 2px apart: a 46px item
|
|
2832
|
+
(DqMijnWerk "Mijn 14 zaken per stap"; live drew 14.25/22.5px at 1.5 and
|
|
2833
|
+
1.2, a 50.4px item).
|
|
2834
|
+
@spec openspec/changes/board-stacked-bar-legend-type/specs/board-stacked-bar-legend-type/spec.md#requirement-a-board-stacked-bar-legend-is-set-in-the-boards-type */
|
|
2835
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-stacked-bar:not(.cn-stacked-bar--compact) .cn-stacked-bar__label {
|
|
2836
|
+
font-size: 14px;
|
|
2837
|
+
line-height: normal;
|
|
2838
|
+
}
|
|
2839
|
+
|
|
2840
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-stacked-bar:not(.cn-stacked-bar--compact) .cn-stacked-bar__count {
|
|
2841
|
+
font-size: 22px;
|
|
2842
|
+
line-height: normal;
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2769
2845
|
/* DqMijnWerk "Mijn archiefbeoordelingen": its rows and its empty line. */
|
|
2770
2846
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-decision-list {
|
|
2771
2847
|
padding: 0 var(--cn-board-dashboard-card-inset) 20px;
|
|
@@ -25,9 +25,43 @@ export function eventStatusLabel(ev) {
|
|
|
25
25
|
if (status === 'cancelled') {
|
|
26
26
|
return t('nextcloud-vue', 'Cancelled')
|
|
27
27
|
}
|
|
28
|
+
const answer = inviteeAnswer(ev)
|
|
29
|
+
if (answer === 'needs-action') {
|
|
30
|
+
return t('nextcloud-vue', 'Invited')
|
|
31
|
+
}
|
|
32
|
+
if (answer === 'accepted') {
|
|
33
|
+
return t('nextcloud-vue', 'Accepted')
|
|
34
|
+
}
|
|
35
|
+
if (answer === 'declined') {
|
|
36
|
+
return t('nextcloud-vue', 'Declined')
|
|
37
|
+
}
|
|
38
|
+
if (answer === 'tentative') {
|
|
39
|
+
return t('nextcloud-vue', 'Tentative')
|
|
40
|
+
}
|
|
28
41
|
return ''
|
|
29
42
|
}
|
|
30
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Where the invitees stand when the event itself has no status: a decline
|
|
46
|
+
* first, then anyone still to answer, then a tentative answer, else accepted
|
|
47
|
+
* when all accepted; '' without invitees that answered or were asked.
|
|
48
|
+
*
|
|
49
|
+
* @param {object} ev The event.
|
|
50
|
+
* @return {string} `declined`, `needs-action`, `tentative`, `accepted` or ''.
|
|
51
|
+
* @spec openspec/changes/calendar-invitee-answer/specs/calendar-integration/spec.md#requirement-an-appointment-without-a-status-shows-where-its-invitees-stand
|
|
52
|
+
*/
|
|
53
|
+
export function inviteeAnswer(ev) {
|
|
54
|
+
const answers = (Array.isArray(ev?.attendees) ? ev.attendees : [])
|
|
55
|
+
.map((att) => (att && typeof att === 'object' ? String(att.partstat || '').toLowerCase() : ''))
|
|
56
|
+
.filter(Boolean)
|
|
57
|
+
for (const answer of ['declined', 'needs-action', 'tentative']) {
|
|
58
|
+
if (answers.includes(answer)) {
|
|
59
|
+
return answer
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return answers.length > 0 && answers.every((answer) => answer === 'accepted') ? 'accepted' : ''
|
|
63
|
+
}
|
|
64
|
+
|
|
31
65
|
/**
|
|
32
66
|
* The badge tone of the event's status.
|
|
33
67
|
*
|
|
@@ -45,7 +79,14 @@ export function eventStatusVariant(ev) {
|
|
|
45
79
|
if (status === 'cancelled') {
|
|
46
80
|
return 'error'
|
|
47
81
|
}
|
|
48
|
-
|
|
82
|
+
const answer = inviteeAnswer(ev)
|
|
83
|
+
if (answer === 'accepted') {
|
|
84
|
+
return 'success'
|
|
85
|
+
}
|
|
86
|
+
if (answer === 'declined') {
|
|
87
|
+
return 'error'
|
|
88
|
+
}
|
|
89
|
+
return answer === '' ? 'default' : 'info'
|
|
49
90
|
}
|
|
50
91
|
|
|
51
92
|
/**
|