@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.
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/dist/nextcloud-vue.cjs.js.map
3
- size: 49975814 bytes
4
- sha256: 2d024f561e56d8df5234337a7f60a7e99d053d7ac0e04a827072544abd46446b
3
+ size: 49987198 bytes
4
+ sha256: 9703199eb7cb4720e5838084eb4a07b1b8227a90d39562c4d23a86145f532c5e
@@ -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-2903e476] {
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-2903e476] {
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-2903e476] {
40609
+ .cn-facts-widget__row[data-v-6351bc64] {
40605
40610
  display: contents;
40606
40611
  }
40607
- .cn-facts-widget__row--inline[data-v-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476],
40707
- .cn-facts-widget__icon-button[data-v-2903e476],
40708
- .cn-facts-widget__action[data-v-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476]:hover,
40740
- .cn-facts-widget__icon-button[data-v-2903e476]:focus-visible {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
40793
+ .cn-facts-widget__lead-title[data-v-6351bc64] {
40789
40794
  font-size: 15px;
40790
40795
  }
40791
- .cn-facts-widget__lead-subtitle[data-v-2903e476] {
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-2903e476] {
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-2903e476]:hover,
40808
- .cn-facts-widget__action[data-v-2903e476]:focus-visible {
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-2903e476] {
40816
+ .cn-facts-widget__notice[data-v-6351bc64] {
40812
40817
  margin: 4px 0 0;
40813
40818
  }
40814
- .cn-facts-widget__link[data-v-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-2903e476] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4]:hover {
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-44731ec4] {
43505
+ .cn-object-parties__name[data-v-24a3d77a] {
43494
43506
  font-weight: bold;
43495
43507
  }
43496
- .cn-object-parties__muted[data-v-44731ec4] {
43508
+ .cn-object-parties__muted[data-v-24a3d77a] {
43497
43509
  color: var(--color-text-maxcontrast);
43498
43510
  }
43499
- .cn-object-parties__manage[data-v-44731ec4] {
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-44731ec4] {
43515
+ .cn-object-parties__remove[data-v-24a3d77a] {
43504
43516
  margin-inline-start: auto;
43505
43517
  }
43506
- .cn-object-parties__main-card[data-v-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
43544
+ .cn-object-parties__main-name[data-v-24a3d77a] {
43533
43545
  font-size: 15px;
43534
43546
  }
43535
- .cn-object-parties__main-role[data-v-44731ec4] {
43547
+ .cn-object-parties__main-role[data-v-24a3d77a] {
43536
43548
  font-size: 13px;
43537
43549
  }
43538
- .cn-object-parties__main-email[data-v-44731ec4] {
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-44731ec4] {
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-44731ec4] {
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-44731ec4] {
43570
+ .cn-object-parties__accepted-label[data-v-24a3d77a] {
43559
43571
  font-weight: 600;
43560
43572
  }
43561
- .cn-object-parties__accepted-kind[data-v-44731ec4] {
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.146.0",
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`; it is empty when every placeholder is. `suffix` (" kg") is added to a value that is not empty, its words translated.
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
- * `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"), `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).
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 = Array.isArray(this.content?.fields) ? this.content.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 = Array.isArray(this.content?.fields) ? this.content.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 = Array.isArray(this.content?.fields) ? this.content.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 = Array.isArray(this.content?.fields) ? this.content.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;