@conduction/nextcloud-vue 2.146.0 → 2.147.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/CnFactsWidget/CnFactsWidget.vue.js +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +68 -9
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js +37 -13
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js +2 -2
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue3.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +83 -71
- package/dist/esm/utils/objectParties.js +30 -1
- package/dist/esm/utils/objectParties.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +193 -81
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +83 -71
- package/package.json +1 -1
- package/src/components/CnFactsWidget/CnFactsWidget.vue +96 -9
- package/src/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue +2 -1
- package/src/utils/objectParties.js +29 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/nextcloud-vue.cjs.js.map
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 49987198 bytes
|
|
4
|
+
sha256: 9703199eb7cb4720e5838084eb4a07b1b8227a90d39562c4d23a86145f532c5e
|
package/dist/nextcloud-vue.css
CHANGED
|
@@ -40581,17 +40581,22 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40581
40581
|
}
|
|
40582
40582
|
|
|
40583
40583
|
|
|
40584
|
-
.cn-facts-widget[data-v-
|
|
40584
|
+
.cn-facts-widget[data-v-6351bc64] {
|
|
40585
40585
|
display: flex;
|
|
40586
40586
|
flex-direction: column;
|
|
40587
40587
|
gap: 10px;
|
|
40588
40588
|
min-width: 0;
|
|
40589
40589
|
}
|
|
40590
|
+
.cn-facts-widget__pills[data-v-6351bc64] {
|
|
40591
|
+
display: flex;
|
|
40592
|
+
flex-wrap: wrap;
|
|
40593
|
+
gap: 8px;
|
|
40594
|
+
}
|
|
40590
40595
|
|
|
40591
40596
|
/* `padding: 0`: Nextcloud's core stylesheet pads every `dl` 12px at the top
|
|
40592
40597
|
and bottom, which put a side card's facts 24px under its title, against
|
|
40593
40598
|
the board's 12 (DqZaak "Behandeling", DqZaakDocumenten). */
|
|
40594
|
-
.cn-facts-widget__rows[data-v-
|
|
40599
|
+
.cn-facts-widget__rows[data-v-6351bc64] {
|
|
40595
40600
|
display: grid;
|
|
40596
40601
|
grid-template-columns: max-content 1fr;
|
|
40597
40602
|
gap: 8px 16px;
|
|
@@ -40601,17 +40606,17 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40601
40606
|
}
|
|
40602
40607
|
|
|
40603
40608
|
/* Each row is a grid of its own children: the wrapper takes no box. */
|
|
40604
|
-
.cn-facts-widget__row[data-v-
|
|
40609
|
+
.cn-facts-widget__row[data-v-6351bc64] {
|
|
40605
40610
|
display: contents;
|
|
40606
40611
|
}
|
|
40607
|
-
.cn-facts-widget__row--inline[data-v-
|
|
40612
|
+
.cn-facts-widget__row--inline[data-v-6351bc64] {
|
|
40608
40613
|
display: flex;
|
|
40609
40614
|
grid-column: 1 / -1;
|
|
40610
40615
|
flex-wrap: wrap;
|
|
40611
40616
|
align-items: center;
|
|
40612
40617
|
gap: 10px;
|
|
40613
40618
|
}
|
|
40614
|
-
.cn-facts-widget__row--inline .cn-facts-widget__value[data-v-
|
|
40619
|
+
.cn-facts-widget__row--inline .cn-facts-widget__value[data-v-6351bc64] {
|
|
40615
40620
|
display: flex;
|
|
40616
40621
|
flex-wrap: wrap;
|
|
40617
40622
|
align-items: center;
|
|
@@ -40623,14 +40628,14 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40623
40628
|
12px around both and widened the label column to 130px. The class is
|
|
40624
40629
|
doubled so these resets outrank that rule, and a dossiq-style `:deep()`
|
|
40625
40630
|
override in an app is not needed. */
|
|
40626
|
-
.cn-facts-widget__label.cn-facts-widget__label[data-v-
|
|
40631
|
+
.cn-facts-widget__label.cn-facts-widget__label[data-v-6351bc64] {
|
|
40627
40632
|
width: auto;
|
|
40628
40633
|
margin: 0;
|
|
40629
40634
|
padding: 0;
|
|
40630
40635
|
text-align: start;
|
|
40631
40636
|
color: var(--color-text-maxcontrast);
|
|
40632
40637
|
}
|
|
40633
|
-
.cn-facts-widget__value.cn-facts-widget__value[data-v-
|
|
40638
|
+
.cn-facts-widget__value.cn-facts-widget__value[data-v-6351bc64] {
|
|
40634
40639
|
margin: 0;
|
|
40635
40640
|
padding: 0;
|
|
40636
40641
|
text-align: start;
|
|
@@ -40638,56 +40643,56 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40638
40643
|
min-width: 0;
|
|
40639
40644
|
overflow-wrap: anywhere;
|
|
40640
40645
|
}
|
|
40641
|
-
.cn-facts-widget__title[data-v-
|
|
40646
|
+
.cn-facts-widget__title[data-v-6351bc64] {
|
|
40642
40647
|
font-size: 15px;
|
|
40643
40648
|
font-weight: 600;
|
|
40644
40649
|
color: var(--color-main-text);
|
|
40645
40650
|
}
|
|
40646
|
-
.cn-facts-widget__line[data-v-
|
|
40651
|
+
.cn-facts-widget__line[data-v-6351bc64] {
|
|
40647
40652
|
font-size: 13px;
|
|
40648
40653
|
color: var(--color-text-maxcontrast);
|
|
40649
40654
|
}
|
|
40650
|
-
.cn-facts-widget__meter[data-v-
|
|
40655
|
+
.cn-facts-widget__meter[data-v-6351bc64] {
|
|
40651
40656
|
display: flex;
|
|
40652
40657
|
flex-direction: column;
|
|
40653
40658
|
gap: 4px;
|
|
40654
40659
|
font-size: 14px;
|
|
40655
40660
|
}
|
|
40656
|
-
.cn-facts-widget__meter-head[data-v-
|
|
40661
|
+
.cn-facts-widget__meter-head[data-v-6351bc64] {
|
|
40657
40662
|
display: flex;
|
|
40658
40663
|
justify-content: space-between;
|
|
40659
40664
|
gap: 16px;
|
|
40660
40665
|
}
|
|
40661
|
-
.cn-facts-widget__meter-label[data-v-
|
|
40666
|
+
.cn-facts-widget__meter-label[data-v-6351bc64] {
|
|
40662
40667
|
color: var(--color-text-maxcontrast);
|
|
40663
40668
|
}
|
|
40664
|
-
.cn-facts-widget__meter-value[data-v-
|
|
40669
|
+
.cn-facts-widget__meter-value[data-v-6351bc64] {
|
|
40665
40670
|
font-weight: 500;
|
|
40666
40671
|
text-align: end;
|
|
40667
40672
|
}
|
|
40668
|
-
.cn-facts-widget__meter-track[data-v-
|
|
40673
|
+
.cn-facts-widget__meter-track[data-v-6351bc64] {
|
|
40669
40674
|
height: 6px;
|
|
40670
40675
|
border-radius: 3px;
|
|
40671
40676
|
background: var(--color-background-darker);
|
|
40672
40677
|
overflow: hidden;
|
|
40673
40678
|
}
|
|
40674
|
-
.cn-facts-widget__meter-bar[data-v-
|
|
40679
|
+
.cn-facts-widget__meter-bar[data-v-6351bc64] {
|
|
40675
40680
|
display: block;
|
|
40676
40681
|
height: 100%;
|
|
40677
40682
|
border-radius: inherit;
|
|
40678
40683
|
background: var(--color-primary-element);
|
|
40679
40684
|
}
|
|
40680
|
-
.cn-facts-widget__meter--over .cn-facts-widget__meter-value[data-v-
|
|
40685
|
+
.cn-facts-widget__meter--over .cn-facts-widget__meter-value[data-v-6351bc64] {
|
|
40681
40686
|
color: var(--color-error-text);
|
|
40682
40687
|
}
|
|
40683
|
-
.cn-facts-widget__meter--over .cn-facts-widget__meter-bar[data-v-
|
|
40688
|
+
.cn-facts-widget__meter--over .cn-facts-widget__meter-bar[data-v-6351bc64] {
|
|
40684
40689
|
background: var(--color-error);
|
|
40685
40690
|
}
|
|
40686
|
-
.cn-facts-widget__muted[data-v-
|
|
40691
|
+
.cn-facts-widget__muted[data-v-6351bc64] {
|
|
40687
40692
|
margin: 0;
|
|
40688
40693
|
color: var(--color-text-maxcontrast);
|
|
40689
40694
|
}
|
|
40690
|
-
.cn-facts-widget__label .hidden-visually[data-v-
|
|
40695
|
+
.cn-facts-widget__label .hidden-visually[data-v-6351bc64] {
|
|
40691
40696
|
clip-path: inset(50%);
|
|
40692
40697
|
height: 1px;
|
|
40693
40698
|
overflow: hidden;
|
|
@@ -40695,27 +40700,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40695
40700
|
white-space: nowrap;
|
|
40696
40701
|
width: 1px;
|
|
40697
40702
|
}
|
|
40698
|
-
.cn-facts-widget__label--icon[data-v-
|
|
40703
|
+
.cn-facts-widget__label--icon[data-v-6351bc64] {
|
|
40699
40704
|
align-items: center;
|
|
40700
40705
|
display: flex;
|
|
40701
40706
|
}
|
|
40702
|
-
.cn-facts-widget__value-link[data-v-
|
|
40707
|
+
.cn-facts-widget__value-link[data-v-6351bc64] {
|
|
40703
40708
|
color: var(--color-primary-element);
|
|
40704
40709
|
text-decoration: underline;
|
|
40705
40710
|
}
|
|
40706
|
-
.cn-facts-widget__inline-button[data-v-
|
|
40707
|
-
.cn-facts-widget__icon-button[data-v-
|
|
40708
|
-
.cn-facts-widget__action[data-v-
|
|
40711
|
+
.cn-facts-widget__inline-button[data-v-6351bc64],
|
|
40712
|
+
.cn-facts-widget__icon-button[data-v-6351bc64],
|
|
40713
|
+
.cn-facts-widget__action[data-v-6351bc64] {
|
|
40709
40714
|
align-items: center;
|
|
40710
40715
|
cursor: pointer;
|
|
40711
40716
|
display: inline-flex;
|
|
40712
40717
|
font: inherit;
|
|
40713
40718
|
}
|
|
40714
|
-
.cn-facts-widget__reveal-error[data-v-
|
|
40719
|
+
.cn-facts-widget__reveal-error[data-v-6351bc64] {
|
|
40715
40720
|
font-size: 13px;
|
|
40716
40721
|
color: var(--color-text-error, var(--color-error));
|
|
40717
40722
|
}
|
|
40718
|
-
.cn-facts-widget__inline-button[data-v-
|
|
40723
|
+
.cn-facts-widget__inline-button[data-v-6351bc64] {
|
|
40719
40724
|
background: var(--color-main-background);
|
|
40720
40725
|
border: 1px solid var(--color-border-dark);
|
|
40721
40726
|
border-radius: 16px;
|
|
@@ -40727,7 +40732,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40727
40732
|
min-height: 30px;
|
|
40728
40733
|
padding: 0 10px;
|
|
40729
40734
|
}
|
|
40730
|
-
.cn-facts-widget__icon-button[data-v-
|
|
40735
|
+
.cn-facts-widget__icon-button[data-v-6351bc64] {
|
|
40731
40736
|
background: transparent;
|
|
40732
40737
|
border: 0;
|
|
40733
40738
|
border-radius: 6px;
|
|
@@ -40736,23 +40741,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40736
40741
|
padding: 2px;
|
|
40737
40742
|
vertical-align: middle;
|
|
40738
40743
|
}
|
|
40739
|
-
.cn-facts-widget__icon-button[data-v-
|
|
40740
|
-
.cn-facts-widget__icon-button[data-v-
|
|
40744
|
+
.cn-facts-widget__icon-button[data-v-6351bc64]:hover,
|
|
40745
|
+
.cn-facts-widget__icon-button[data-v-6351bc64]:focus-visible {
|
|
40741
40746
|
background: var(--color-background-hover);
|
|
40742
40747
|
color: var(--color-main-text);
|
|
40743
40748
|
}
|
|
40744
|
-
.cn-facts-widget__text[data-v-
|
|
40749
|
+
.cn-facts-widget__text[data-v-6351bc64] {
|
|
40745
40750
|
color: var(--color-main-text);
|
|
40746
40751
|
font-size: 15px;
|
|
40747
40752
|
}
|
|
40748
40753
|
|
|
40749
40754
|
/* A lead: an icon tile or initials beside a bold title and a muted subtitle. */
|
|
40750
|
-
.cn-facts-widget__lead[data-v-
|
|
40755
|
+
.cn-facts-widget__lead[data-v-6351bc64] {
|
|
40751
40756
|
align-items: center;
|
|
40752
40757
|
display: flex;
|
|
40753
40758
|
gap: 12px;
|
|
40754
40759
|
}
|
|
40755
|
-
.cn-facts-widget__lead-tile[data-v-
|
|
40760
|
+
.cn-facts-widget__lead-tile[data-v-6351bc64] {
|
|
40756
40761
|
align-items: center;
|
|
40757
40762
|
background: var(--color-background-dark);
|
|
40758
40763
|
border-radius: 8px;
|
|
@@ -40767,32 +40772,32 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40767
40772
|
}
|
|
40768
40773
|
|
|
40769
40774
|
/* Initials stand for a person: round, as an avatar. */
|
|
40770
|
-
.cn-facts-widget__lead-tile--initials[data-v-
|
|
40775
|
+
.cn-facts-widget__lead-tile--initials[data-v-6351bc64] {
|
|
40771
40776
|
border-radius: 50%;
|
|
40772
40777
|
}
|
|
40773
|
-
.cn-facts-widget__lead-tile--success[data-v-
|
|
40778
|
+
.cn-facts-widget__lead-tile--success[data-v-6351bc64] {
|
|
40774
40779
|
background: color-mix(in srgb, var(--color-success) 14%, var(--color-main-background));
|
|
40775
40780
|
border-radius: 50%;
|
|
40776
40781
|
color: var(--color-success-text, var(--color-success));
|
|
40777
40782
|
}
|
|
40778
|
-
.cn-facts-widget__lead-tile--info[data-v-
|
|
40783
|
+
.cn-facts-widget__lead-tile--info[data-v-6351bc64] {
|
|
40779
40784
|
background: var(--color-primary-element-light);
|
|
40780
40785
|
border-radius: 50%;
|
|
40781
40786
|
color: var(--color-primary-element-light-text, var(--color-primary-element));
|
|
40782
40787
|
}
|
|
40783
|
-
.cn-facts-widget__lead-text[data-v-
|
|
40788
|
+
.cn-facts-widget__lead-text[data-v-6351bc64] {
|
|
40784
40789
|
display: flex;
|
|
40785
40790
|
flex-direction: column;
|
|
40786
40791
|
min-width: 0;
|
|
40787
40792
|
}
|
|
40788
|
-
.cn-facts-widget__lead-title[data-v-
|
|
40793
|
+
.cn-facts-widget__lead-title[data-v-6351bc64] {
|
|
40789
40794
|
font-size: 15px;
|
|
40790
40795
|
}
|
|
40791
|
-
.cn-facts-widget__lead-subtitle[data-v-
|
|
40796
|
+
.cn-facts-widget__lead-subtitle[data-v-6351bc64] {
|
|
40792
40797
|
color: var(--color-text-maxcontrast);
|
|
40793
40798
|
font-size: 13px;
|
|
40794
40799
|
}
|
|
40795
|
-
.cn-facts-widget__action[data-v-
|
|
40800
|
+
.cn-facts-widget__action[data-v-6351bc64] {
|
|
40796
40801
|
align-self: flex-start;
|
|
40797
40802
|
background: var(--color-primary-element-light);
|
|
40798
40803
|
border: 0;
|
|
@@ -40804,20 +40809,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40804
40809
|
min-height: 32px;
|
|
40805
40810
|
padding: 0 14px;
|
|
40806
40811
|
}
|
|
40807
|
-
.cn-facts-widget__action[data-v-
|
|
40808
|
-
.cn-facts-widget__action[data-v-
|
|
40812
|
+
.cn-facts-widget__action[data-v-6351bc64]:hover,
|
|
40813
|
+
.cn-facts-widget__action[data-v-6351bc64]:focus-visible {
|
|
40809
40814
|
background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
|
|
40810
40815
|
}
|
|
40811
|
-
.cn-facts-widget__notice[data-v-
|
|
40816
|
+
.cn-facts-widget__notice[data-v-6351bc64] {
|
|
40812
40817
|
margin: 4px 0 0;
|
|
40813
40818
|
}
|
|
40814
|
-
|
|
40819
|
+
|
|
40820
|
+
/* A div, not a p: a theme sets every paragraph's size with !important. */
|
|
40821
|
+
.cn-facts-widget__footnote[data-v-6351bc64] {
|
|
40822
|
+
color: var(--color-text-maxcontrast);
|
|
40823
|
+
font-size: 13px;
|
|
40824
|
+
line-height: 1.2;
|
|
40825
|
+
}
|
|
40826
|
+
.cn-facts-widget__link[data-v-6351bc64] {
|
|
40815
40827
|
font-size: 14px;
|
|
40816
40828
|
font-weight: 600;
|
|
40817
40829
|
color: var(--color-primary-element);
|
|
40818
40830
|
text-decoration: underline;
|
|
40819
40831
|
}
|
|
40820
|
-
.cn-facts-widget__link--button[data-v-
|
|
40832
|
+
.cn-facts-widget__link--button[data-v-6351bc64] {
|
|
40821
40833
|
display: inline-flex;
|
|
40822
40834
|
align-items: center;
|
|
40823
40835
|
gap: 6px;
|
|
@@ -40832,12 +40844,12 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40832
40844
|
|
|
40833
40845
|
/* `columns: 2` (board DqContact): two columns, the label above the value, a
|
|
40834
40846
|
hairline under each fact; one column on a phone. */
|
|
40835
|
-
.cn-facts-widget__rows--columns[data-v-
|
|
40847
|
+
.cn-facts-widget__rows--columns[data-v-6351bc64] {
|
|
40836
40848
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
40837
40849
|
gap: 14px 24px;
|
|
40838
40850
|
font-size: 15px;
|
|
40839
40851
|
}
|
|
40840
|
-
.cn-facts-widget__rows--columns .cn-facts-widget__row[data-v-
|
|
40852
|
+
.cn-facts-widget__rows--columns .cn-facts-widget__row[data-v-6351bc64] {
|
|
40841
40853
|
display: flex;
|
|
40842
40854
|
flex-direction: column;
|
|
40843
40855
|
gap: 3px;
|
|
@@ -40845,21 +40857,21 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-76cc4
|
|
|
40845
40857
|
padding-bottom: 10px;
|
|
40846
40858
|
border-bottom: 1px solid var(--color-border);
|
|
40847
40859
|
}
|
|
40848
|
-
.cn-facts-widget__rows--columns .cn-facts-widget__label.cn-facts-widget__label[data-v-
|
|
40860
|
+
.cn-facts-widget__rows--columns .cn-facts-widget__label.cn-facts-widget__label[data-v-6351bc64] {
|
|
40849
40861
|
font-size: 13px;
|
|
40850
40862
|
}
|
|
40851
40863
|
|
|
40852
40864
|
/* One column, label above value: 2px under its label, 10px to the next
|
|
40853
40865
|
label, so a long label never squeezes its value (DqHandhaving). */
|
|
40854
|
-
.cn-facts-widget__rows--stacked[data-v-
|
|
40866
|
+
.cn-facts-widget__rows--stacked[data-v-6351bc64] {
|
|
40855
40867
|
grid-template-columns: minmax(0, 1fr);
|
|
40856
40868
|
gap: 2px 0;
|
|
40857
40869
|
}
|
|
40858
|
-
.cn-facts-widget__rows--stacked .cn-facts-widget__value.cn-facts-widget__value[data-v-
|
|
40870
|
+
.cn-facts-widget__rows--stacked .cn-facts-widget__value.cn-facts-widget__value[data-v-6351bc64] {
|
|
40859
40871
|
margin-bottom: 8px;
|
|
40860
40872
|
}
|
|
40861
40873
|
@media (max-width: 640px) {
|
|
40862
|
-
.cn-facts-widget__rows--columns[data-v-
|
|
40874
|
+
.cn-facts-widget__rows--columns[data-v-6351bc64] {
|
|
40863
40875
|
grid-template-columns: minmax(0, 1fr);
|
|
40864
40876
|
}
|
|
40865
40877
|
}
|
|
@@ -43456,22 +43468,22 @@ a.cn-record-list__inline-title[data-v-59c81065] {
|
|
|
43456
43468
|
}
|
|
43457
43469
|
|
|
43458
43470
|
|
|
43459
|
-
.cn-object-parties[data-v-
|
|
43471
|
+
.cn-object-parties[data-v-24a3d77a] {
|
|
43460
43472
|
display: flex;
|
|
43461
43473
|
flex-direction: column;
|
|
43462
43474
|
gap: calc(var(--default-grid-baseline, 4px) * 3);
|
|
43463
43475
|
}
|
|
43464
|
-
.cn-object-parties__verdicts[data-v-
|
|
43476
|
+
.cn-object-parties__verdicts[data-v-24a3d77a] {
|
|
43465
43477
|
display: flex;
|
|
43466
43478
|
flex-direction: column;
|
|
43467
43479
|
gap: var(--default-grid-baseline, 4px);
|
|
43468
43480
|
}
|
|
43469
|
-
.cn-object-parties__role-label[data-v-
|
|
43481
|
+
.cn-object-parties__role-label[data-v-24a3d77a] {
|
|
43470
43482
|
margin: 0 0 var(--default-grid-baseline, 4px) 0;
|
|
43471
43483
|
color: var(--color-text-maxcontrast);
|
|
43472
43484
|
font-size: 0.9em;
|
|
43473
43485
|
}
|
|
43474
|
-
.cn-object-parties__list[data-v-
|
|
43486
|
+
.cn-object-parties__list[data-v-24a3d77a] {
|
|
43475
43487
|
display: flex;
|
|
43476
43488
|
flex-direction: column;
|
|
43477
43489
|
gap: var(--default-grid-baseline, 4px);
|
|
@@ -43479,7 +43491,7 @@ a.cn-record-list__inline-title[data-v-59c81065] {
|
|
|
43479
43491
|
padding: 0;
|
|
43480
43492
|
list-style: none;
|
|
43481
43493
|
}
|
|
43482
|
-
.cn-object-parties__party[data-v-
|
|
43494
|
+
.cn-object-parties__party[data-v-24a3d77a] {
|
|
43483
43495
|
display: flex;
|
|
43484
43496
|
flex-wrap: wrap;
|
|
43485
43497
|
align-items: center;
|
|
@@ -43487,33 +43499,33 @@ a.cn-record-list__inline-title[data-v-59c81065] {
|
|
|
43487
43499
|
padding: var(--default-grid-baseline, 4px);
|
|
43488
43500
|
border-radius: var(--border-radius, 4px);
|
|
43489
43501
|
}
|
|
43490
|
-
.cn-object-parties__party[data-v-
|
|
43502
|
+
.cn-object-parties__party[data-v-24a3d77a]:hover {
|
|
43491
43503
|
background-color: var(--color-background-hover);
|
|
43492
43504
|
}
|
|
43493
|
-
.cn-object-parties__name[data-v-
|
|
43505
|
+
.cn-object-parties__name[data-v-24a3d77a] {
|
|
43494
43506
|
font-weight: bold;
|
|
43495
43507
|
}
|
|
43496
|
-
.cn-object-parties__muted[data-v-
|
|
43508
|
+
.cn-object-parties__muted[data-v-24a3d77a] {
|
|
43497
43509
|
color: var(--color-text-maxcontrast);
|
|
43498
43510
|
}
|
|
43499
|
-
.cn-object-parties__manage[data-v-
|
|
43511
|
+
.cn-object-parties__manage[data-v-24a3d77a] {
|
|
43500
43512
|
display: flex;
|
|
43501
43513
|
justify-content: flex-end;
|
|
43502
43514
|
}
|
|
43503
|
-
.cn-object-parties__remove[data-v-
|
|
43515
|
+
.cn-object-parties__remove[data-v-24a3d77a] {
|
|
43504
43516
|
margin-inline-start: auto;
|
|
43505
43517
|
}
|
|
43506
|
-
.cn-object-parties__main-card[data-v-
|
|
43518
|
+
.cn-object-parties__main-card[data-v-24a3d77a] {
|
|
43507
43519
|
display: flex;
|
|
43508
43520
|
flex-direction: column;
|
|
43509
43521
|
gap: calc(var(--default-grid-baseline, 4px) * 3);
|
|
43510
43522
|
}
|
|
43511
|
-
.cn-object-parties__main[data-v-
|
|
43523
|
+
.cn-object-parties__main[data-v-24a3d77a] {
|
|
43512
43524
|
display: flex;
|
|
43513
43525
|
align-items: center;
|
|
43514
43526
|
gap: calc(var(--default-grid-baseline, 4px) * 3);
|
|
43515
43527
|
}
|
|
43516
|
-
.cn-object-parties__main-initials[data-v-
|
|
43528
|
+
.cn-object-parties__main-initials[data-v-24a3d77a] {
|
|
43517
43529
|
display: flex;
|
|
43518
43530
|
flex: none;
|
|
43519
43531
|
align-items: center;
|
|
@@ -43525,28 +43537,28 @@ a.cn-record-list__inline-title[data-v-59c81065] {
|
|
|
43525
43537
|
color: var(--color-main-text);
|
|
43526
43538
|
font-weight: 700;
|
|
43527
43539
|
}
|
|
43528
|
-
.cn-object-parties__main-text[data-v-
|
|
43540
|
+
.cn-object-parties__main-text[data-v-24a3d77a] {
|
|
43529
43541
|
display: flex;
|
|
43530
43542
|
flex-direction: column;
|
|
43531
43543
|
}
|
|
43532
|
-
.cn-object-parties__main-name[data-v-
|
|
43544
|
+
.cn-object-parties__main-name[data-v-24a3d77a] {
|
|
43533
43545
|
font-size: 15px;
|
|
43534
43546
|
}
|
|
43535
|
-
.cn-object-parties__main-role[data-v-
|
|
43547
|
+
.cn-object-parties__main-role[data-v-24a3d77a] {
|
|
43536
43548
|
font-size: 13px;
|
|
43537
43549
|
}
|
|
43538
|
-
.cn-object-parties__main-email[data-v-
|
|
43550
|
+
.cn-object-parties__main-email[data-v-24a3d77a] {
|
|
43539
43551
|
display: flex;
|
|
43540
43552
|
align-items: center;
|
|
43541
43553
|
gap: calc(var(--default-grid-baseline, 4px) * 2.5);
|
|
43542
43554
|
color: var(--color-main-text);
|
|
43543
43555
|
overflow-wrap: anywhere;
|
|
43544
43556
|
}
|
|
43545
|
-
.cn-object-parties__main-link[data-v-
|
|
43557
|
+
.cn-object-parties__main-link[data-v-24a3d77a] {
|
|
43546
43558
|
color: var(--color-primary-element);
|
|
43547
43559
|
font-weight: 600;
|
|
43548
43560
|
}
|
|
43549
|
-
.cn-object-parties__accepted[data-v-
|
|
43561
|
+
.cn-object-parties__accepted[data-v-24a3d77a] {
|
|
43550
43562
|
display: flex;
|
|
43551
43563
|
flex-wrap: wrap;
|
|
43552
43564
|
align-items: center;
|
|
@@ -43555,10 +43567,10 @@ a.cn-record-list__inline-title[data-v-59c81065] {
|
|
|
43555
43567
|
border-radius: var(--border-radius-large, 10px);
|
|
43556
43568
|
background-color: var(--color-background-hover);
|
|
43557
43569
|
}
|
|
43558
|
-
.cn-object-parties__accepted-label[data-v-
|
|
43570
|
+
.cn-object-parties__accepted-label[data-v-24a3d77a] {
|
|
43559
43571
|
font-weight: 600;
|
|
43560
43572
|
}
|
|
43561
|
-
.cn-object-parties__accepted-kind[data-v-
|
|
43573
|
+
.cn-object-parties__accepted-kind[data-v-24a3d77a] {
|
|
43562
43574
|
border: 1px solid var(--color-border-dark);
|
|
43563
43575
|
}
|
|
43564
43576
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conduction/nextcloud-vue",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.147.0",
|
|
4
4
|
"description": "Shared Vue component library for Conduction Nextcloud apps — complements @nextcloud/vue with higher-level components, OpenRegister integration, and NL Design System support",
|
|
5
5
|
"homepage": "https://github.com/ConductionNL/nextcloud-vue#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -175,6 +175,15 @@
|
|
|
175
175
|
</span>
|
|
176
176
|
<span class="cn-facts-widget__line">{{ block.value }}</span>
|
|
177
177
|
</div>
|
|
178
|
+
<div v-else-if="block.kind === 'pills'" class="cn-facts-widget__pills">
|
|
179
|
+
<CnStatusBadge
|
|
180
|
+
v-for="pill in block.pills"
|
|
181
|
+
:key="pill.key"
|
|
182
|
+
:label="pill.value"
|
|
183
|
+
:variant="pill.variant"
|
|
184
|
+
size="small"
|
|
185
|
+
:data-testid="`cn-fact-${pill.key}`" />
|
|
186
|
+
</div>
|
|
178
187
|
<div v-else-if="block.kind === 'pill'">
|
|
179
188
|
<CnStatusBadge
|
|
180
189
|
:label="block.value"
|
|
@@ -191,6 +200,12 @@
|
|
|
191
200
|
data-testid="cn-facts-notice">
|
|
192
201
|
{{ notice.text }}
|
|
193
202
|
</NcNoteCard>
|
|
203
|
+
<div
|
|
204
|
+
v-if="footnote && record"
|
|
205
|
+
class="cn-facts-widget__footnote"
|
|
206
|
+
data-testid="cn-facts-footnote">
|
|
207
|
+
{{ footnote }}
|
|
208
|
+
</div>
|
|
194
209
|
<button
|
|
195
210
|
v-if="link && link.sidebarTab && record"
|
|
196
211
|
type="button"
|
|
@@ -296,6 +311,30 @@ function resolveSourceTokens(value, record) {
|
|
|
296
311
|
}
|
|
297
312
|
|
|
298
313
|
/** Kinds of entry a `fields[]` item can be. A labelled item without `as` is a row. */
|
|
314
|
+
/**
|
|
315
|
+
* Two or more pills in a row become one `pills` block, drawn on one line.
|
|
316
|
+
*
|
|
317
|
+
* @param {Array<object>} blocks The blocks in order.
|
|
318
|
+
* @return {Array<object>}
|
|
319
|
+
* @spec openspec/changes/facts-fields-from-context/specs/facts-widget/spec.md#requirement-a-facts-card-can-take-its-entries-from-the-page-context
|
|
320
|
+
*/
|
|
321
|
+
function groupPills(blocks) {
|
|
322
|
+
const out = []
|
|
323
|
+
blocks.forEach((block) => {
|
|
324
|
+
const last = out[out.length - 1]
|
|
325
|
+
if (block.kind !== 'pill') {
|
|
326
|
+
out.push(block)
|
|
327
|
+
} else if (last && last.kind === 'pills') {
|
|
328
|
+
last.pills.push(block)
|
|
329
|
+
} else if (last && last.kind === 'pill') {
|
|
330
|
+
out[out.length - 1] = { kind: 'pills', key: `pills-${last.key}`, pills: [last, block] }
|
|
331
|
+
} else {
|
|
332
|
+
out.push(block)
|
|
333
|
+
}
|
|
334
|
+
})
|
|
335
|
+
return out
|
|
336
|
+
}
|
|
337
|
+
|
|
299
338
|
const KINDS = Object.freeze(['row', 'title', 'line', 'pill', 'lead', 'text', 'meter', 'progress'])
|
|
300
339
|
|
|
301
340
|
/** The schemes a facts link opens, besides a path on this server. */
|
|
@@ -436,15 +475,17 @@ export default {
|
|
|
436
475
|
* `resolve: { register, schema, labelField? }` on an entry or a part turns a value that is a reference (an id, or a list of ids) into the label of the referenced object (`labelField`, else `title`, then `name`): the case type or status of a task shows its name, not its uuid. The ids are fetched once per register and schema through the object store and shared by every facts widget on the page; the entry stays empty until its label is known, and when no label can be read. A resolved value works as a pill too: `map` is applied to the resolved label, and `variantMap` / `colorMap` look the tone up by the value of `resolve.toneField` on the referenced object when that is set (a status named by its `name`, coloured by its `state`), then by the resolved label, then by the stored value.
|
|
437
476
|
* `route` (`{ name, params?, query? }`, `@source.<path>` in a param) on a `title` or a `row` links its value to that route; a param that does not fill leaves it plain.
|
|
438
477
|
* `format: 'user'` shows a Nextcloud user id as the user's display name, read once per id; the entry stays empty until the name is known.
|
|
439
|
-
* `template` ("{available} {unit}") fills its `{path}` placeholders from the record instead of reading `path
|
|
478
|
+
* `template` ("{available} {unit}") fills its `{path}` placeholders from the record instead of reading `path` (`{path:format}` formats one, "{from:year}"); it is empty when every placeholder is. `suffix` (" kg") is added to a value that is not empty, its words translated.
|
|
440
479
|
* `labelPath` ("@context.caseType.handlerLabel") names a value on the record or the page's `@context` records that labels the row when it holds text; `label` is the fallback.
|
|
441
480
|
* `emptyValue` ("No") is shown, translated, when the entry has no value, so the entry stays drawn whatever `hideEmpty` says (an override that was never set reads "No").
|
|
442
481
|
* - `action` — an action drawn as a button under the facts; `headerAction` — one drawn in the card header (reported through the `header` event).
|
|
443
482
|
* - `actions` — action buttons under the facts in the `headerActions` shape (`api-call`, `open-form`, `navigate`, `open-modal`, ...; `confirm`, `variant`). `@source.<field>` names a field of the record shown, and an action whose token names an empty field is not drawn. `visibleWhen` reads the record shown; `adminOnly: true` draws the action for an instance admin only (visibility, never authorisation). An api-call or a saved form refreshes the page, and the facts read their source again.
|
|
483
|
+
* - `fieldsFrom` — `@context.<name>.<path>`, a list of entries on a record the page reads beside this one (a case type's `requestFields`); when it holds entries they are drawn instead of `fields`.
|
|
444
484
|
* - `rowsPath` — a path to a list of `{ label, value }` the record holds, drawn as rows after `fields` (a preview the server builds).
|
|
445
485
|
* - `headerPill` — a status pill in the card header (reported through the `header` event): `{ path?, text?, map?, variant?, variantMap?, colorMap? }`, read from the record like a `pill` entry (DqBezwaar "Advies ontvangen"); nothing shows while the value is empty.
|
|
446
486
|
* - `notice` — `{ text, variant? }`, a note band inside the card under the facts (`info` by default; `success`, `warning` or `error`); the text is translated.
|
|
447
|
-
*
|
|
487
|
+
* - `footnote` — a plain muted line under the facts, without a band (DqZaakBesluiten "Na het ondertekenen ..."); the text is translated.
|
|
488
|
+
* `format` is `text` (default), `date` (board short date), `date-long` (always with the year), `longdate` (the month written out, the year only outside this year: "3 oktober"), `year` ("2026"), `list` (an array joined by ", ", each item read at `itemPath` and written in `itemFormat`), `group` (a Nextcloud group by its display name), `bytes` (a size, "1.5 MB"), `number` (in the reader's language, `decimals` fraction digits when set), `months` (a number of months in words, whole years as years: 240 is "20 jaar") or `currency` (a money amount in the reader's language, "€ 1.234,50": the code in `currency`, else the record's `currencyField`, else the app's reporting currency, else EUR; `decimals` defaults to 2).
|
|
448
489
|
* `map` turns a raw value into a label (translated). `parts` (on a `line`) lists paths, or `{ path, label?, format? }`, joined by `separator` (default " · "); empty parts are dropped.
|
|
449
490
|
* - `source` — `{ register, schema, id }` or `{ url }`; omitted = the current object. `{ register, schema, filter, sort? }` without `id` reads the first object that matches `filter` in `sort` order (`{ field, dir }`): the latest count of a shift. An entry with `from: "object"` reads the current object even then (a client card that also shows the ticket's channel).
|
|
450
491
|
* - `endpointSource` — `{ url, method?, params?, responsePath? }`, the block a stat or chart takes: the facts read an app endpoint, shared and cached like those.
|
|
@@ -503,6 +544,29 @@ export default {
|
|
|
503
544
|
},
|
|
504
545
|
|
|
505
546
|
computed: {
|
|
547
|
+
/**
|
|
548
|
+
* The entries to draw: the list `fieldsFrom` names on the page's
|
|
549
|
+
* `@context` records when it holds entries (a case type's
|
|
550
|
+
* `requestFields`), else `fields`.
|
|
551
|
+
*
|
|
552
|
+
* @return {Array<object>}
|
|
553
|
+
* @spec openspec/changes/facts-fields-from-context/specs/facts-widget/spec.md#requirement-a-facts-card-can-take-its-entries-from-the-page-context
|
|
554
|
+
*/
|
|
555
|
+
entries() {
|
|
556
|
+
const from = this.content?.fieldsFrom
|
|
557
|
+
if (typeof from === 'string' && from.startsWith('@context.')) {
|
|
558
|
+
const rows = this.cnDetailVisibilityRows && typeof this.cnDetailVisibilityRows === 'object' && 'value' in this.cnDetailVisibilityRows
|
|
559
|
+
? this.cnDetailVisibilityRows.value
|
|
560
|
+
: this.cnDetailVisibilityRows
|
|
561
|
+
const named = readPath({ '@context': rows || {} }, from)
|
|
562
|
+
const list = Array.isArray(named) ? named.filter((entry) => entry && typeof entry === 'object' && !Array.isArray(entry)) : []
|
|
563
|
+
if (list.length > 0) {
|
|
564
|
+
return list
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
return Array.isArray(this.content?.fields) ? this.content.fields : []
|
|
568
|
+
},
|
|
569
|
+
|
|
506
570
|
/**
|
|
507
571
|
* Whether the rows sit in two columns, label above value.
|
|
508
572
|
*
|
|
@@ -547,7 +611,7 @@ export default {
|
|
|
547
611
|
* @spec openspec/changes/facts-entry-count/specs/facts-widget/spec.md#requirement-a-facts-entry-can-count-a-related-list
|
|
548
612
|
*/
|
|
549
613
|
countJobsKey() {
|
|
550
|
-
const fields =
|
|
614
|
+
const fields = this.entries
|
|
551
615
|
const keys = fields
|
|
552
616
|
.filter((field) => field && field.countFrom && typeof field.countFrom === 'object' && field.countFrom.register && field.countFrom.schema)
|
|
553
617
|
.map((field) => this.countKey(field.countFrom))
|
|
@@ -708,7 +772,7 @@ export default {
|
|
|
708
772
|
*/
|
|
709
773
|
blocks() {
|
|
710
774
|
const sourceRecord = this.record
|
|
711
|
-
const fields =
|
|
775
|
+
const fields = this.entries
|
|
712
776
|
// A source that finds nothing still leaves the entries that read the
|
|
713
777
|
// page's own object (`from: "object"`).
|
|
714
778
|
const ownEntries = Boolean(this.objectData) && fields.some((field) => field && field.from === 'object')
|
|
@@ -787,7 +851,7 @@ export default {
|
|
|
787
851
|
out.push({ kind: 'rows', key: 'rows-answered', rows: [row] })
|
|
788
852
|
}
|
|
789
853
|
})
|
|
790
|
-
return out
|
|
854
|
+
return groupPills(out)
|
|
791
855
|
},
|
|
792
856
|
|
|
793
857
|
/**
|
|
@@ -879,6 +943,12 @@ export default {
|
|
|
879
943
|
return { text, type: ['success', 'warning', 'error'].includes(notice.variant) ? notice.variant : 'info' }
|
|
880
944
|
},
|
|
881
945
|
|
|
946
|
+
/** @return {string} The translated footnote, or '' when none is set. */
|
|
947
|
+
footnote() {
|
|
948
|
+
const footnote = this.content?.footnote
|
|
949
|
+
return typeof footnote === 'string' && footnote.trim() !== '' ? this.tr(footnote) : ''
|
|
950
|
+
},
|
|
951
|
+
|
|
882
952
|
/** @return {string} The reveal button's text. */
|
|
883
953
|
showLabel() {
|
|
884
954
|
return t('nextcloud-vue', 'Show')
|
|
@@ -1116,7 +1186,7 @@ export default {
|
|
|
1116
1186
|
* @spec openspec/changes/facts-entry-count/specs/facts-widget/spec.md#requirement-a-facts-entry-can-count-a-related-list
|
|
1117
1187
|
*/
|
|
1118
1188
|
async loadCounts() {
|
|
1119
|
-
const fields =
|
|
1189
|
+
const fields = this.entries
|
|
1120
1190
|
const seen = new Set()
|
|
1121
1191
|
for (const field of fields) {
|
|
1122
1192
|
const countFrom = field && field.countFrom
|
|
@@ -1193,8 +1263,8 @@ export default {
|
|
|
1193
1263
|
*/
|
|
1194
1264
|
templateValue(record, template) {
|
|
1195
1265
|
let filled = false
|
|
1196
|
-
const text = this.tr(template).replace(/\{([\w.@]+)\}/g, (match, path) => {
|
|
1197
|
-
const value = this.format(readPath(record, path), {}, record)
|
|
1266
|
+
const text = this.tr(template).replace(/\{([\w.@]+)(?::([\w-]+))?\}/g, (match, path, format) => {
|
|
1267
|
+
const value = this.format(readPath(record, path), format ? { format } : {}, record)
|
|
1198
1268
|
filled = filled || value !== ''
|
|
1199
1269
|
return value
|
|
1200
1270
|
})
|
|
@@ -1586,7 +1656,7 @@ export default {
|
|
|
1586
1656
|
* @return {Array<{spec: object, raw: unknown}>}
|
|
1587
1657
|
*/
|
|
1588
1658
|
refSpecs(record) {
|
|
1589
|
-
const fields =
|
|
1659
|
+
const fields = this.entries
|
|
1590
1660
|
const specs = []
|
|
1591
1661
|
const visit = (spec) => {
|
|
1592
1662
|
if (!spec || typeof spec !== 'object') {
|
|
@@ -1819,6 +1889,10 @@ export default {
|
|
|
1819
1889
|
.filter((item) => item !== '')
|
|
1820
1890
|
return items.join(', ')
|
|
1821
1891
|
}
|
|
1892
|
+
if (format === 'year') {
|
|
1893
|
+
const date = parseDateValue(raw)
|
|
1894
|
+
return date === null ? '' : String(date.getFullYear())
|
|
1895
|
+
}
|
|
1822
1896
|
// The month written out, the year only outside this year: "3 oktober".
|
|
1823
1897
|
if (format === 'longdate') {
|
|
1824
1898
|
return formatLongDate(raw)
|
|
@@ -1960,6 +2034,12 @@ export default {
|
|
|
1960
2034
|
min-width: 0;
|
|
1961
2035
|
}
|
|
1962
2036
|
|
|
2037
|
+
.cn-facts-widget__pills {
|
|
2038
|
+
display: flex;
|
|
2039
|
+
flex-wrap: wrap;
|
|
2040
|
+
gap: 8px;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
1963
2043
|
/* `padding: 0`: Nextcloud's core stylesheet pads every `dl` 12px at the top
|
|
1964
2044
|
and bottom, which put a side card's facts 24px under its title, against
|
|
1965
2045
|
the board's 12 (DqZaak "Behandeling", DqZaakDocumenten). */
|
|
@@ -2216,6 +2296,13 @@ export default {
|
|
|
2216
2296
|
margin: 4px 0 0;
|
|
2217
2297
|
}
|
|
2218
2298
|
|
|
2299
|
+
/* A div, not a p: a theme sets every paragraph's size with !important. */
|
|
2300
|
+
.cn-facts-widget__footnote {
|
|
2301
|
+
color: var(--color-text-maxcontrast);
|
|
2302
|
+
font-size: 13px;
|
|
2303
|
+
line-height: 1.2;
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2219
2306
|
.cn-facts-widget__link {
|
|
2220
2307
|
font-size: 14px;
|
|
2221
2308
|
font-weight: 600;
|