@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.
@@ -30167,12 +30167,12 @@ const _hoisted_25$O = {
30167
30167
  const _hoisted_26$I = ["id", "placeholder", "disabled", "aria-describedby"];
30168
30168
  const _hoisted_27$A = ["id"];
30169
30169
  const _hoisted_28$y = { class: "cn-conversation-thread__reply-foot" };
30170
- const _hoisted_29$w = {
30170
+ const _hoisted_29$x = {
30171
30171
  key: 0,
30172
30172
  class: "cn-conversation-thread__reply-option",
30173
30173
  "data-testid": "cn-conversation-reply-option"
30174
30174
  };
30175
- const _hoisted_30$u = ["disabled"];
30175
+ const _hoisted_30$v = ["disabled"];
30176
30176
  const _hoisted_31$s = { class: "cn-conversation-thread__reply-actions" };
30177
30177
 
30178
30178
  function render$8q(_ctx, _cache, $props, $setup, $data, $options) {
@@ -30326,12 +30326,12 @@ function render$8q(_ctx, _cache, $props, $setup, $data, $options) {
30326
30326
  : vue$1.createCommentVNode("v-if", true),
30327
30327
  vue$1.createElementVNode("div", _hoisted_28$y, [
30328
30328
  ($options.optionShown)
30329
- ? (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_29$w, [
30329
+ ? (vue$1.openBlock(), vue$1.createElementBlock("label", _hoisted_29$x, [
30330
30330
  vue$1.withDirectives(vue$1.createElementVNode("input", {
30331
30331
  "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => (($data.optionOn) = $event)),
30332
30332
  type: "checkbox",
30333
30333
  disabled: $data.sending
30334
- }, null, 8 /* PROPS */, _hoisted_30$u), [
30334
+ }, null, 8 /* PROPS */, _hoisted_30$v), [
30335
30335
  [vue$1.vModelCheckbox, $data.optionOn]
30336
30336
  ]),
30337
30337
  vue$1.createElementVNode("span", null, vue$1.toDisplayString($props.replyOption.label), 1 /* TEXT */)
@@ -46442,8 +46442,8 @@ const _hoisted_28$x = {
46442
46442
  key: 1,
46443
46443
  class: "cn-cell-renderer__dash"
46444
46444
  };
46445
- const _hoisted_29$v = ["datetime", "title"];
46446
- const _hoisted_30$t = {
46445
+ const _hoisted_29$w = ["datetime", "title"];
46446
+ const _hoisted_30$u = {
46447
46447
  key: 1,
46448
46448
  class: "cn-cell-renderer__date cn-cell-renderer__due--empty",
46449
46449
  "data-testid": "cn-cell-renderer-due"
@@ -46785,8 +46785,8 @@ function render$84(_ctx, _cache, $props, $setup, $data, $options) {
46785
46785
  datetime: $options.dateTimestamp.toISOString(),
46786
46786
  title: $options.absoluteDateLabel,
46787
46787
  "data-testid": "cn-cell-renderer-due"
46788
- }, vue$1.toDisplayString($options.dueResult.text), 11 /* TEXT, CLASS, PROPS */, _hoisted_29$v))
46789
- : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$t, vue$1.toDisplayString($options.dueResult.text), 1 /* TEXT */))
46788
+ }, vue$1.toDisplayString($options.dueResult.text), 11 /* TEXT, CLASS, PROPS */, _hoisted_29$w))
46789
+ : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$u, vue$1.toDisplayString($options.dueResult.text), 1 /* TEXT */))
46790
46790
  ], 64 /* STABLE_FRAGMENT */))
46791
46791
  : ($options.dateTimestamp && $options.dateBlock)
46792
46792
  ? (vue$1.openBlock(), vue$1.createElementBlock("time", {
@@ -49571,13 +49571,13 @@ const _hoisted_26$G = {
49571
49571
  };
49572
49572
  const _hoisted_27$y = ["draggable", "data-testid-row-id", "onDragstart", "onDragover", "onDragleave", "onDrop", "onClick", "onAuxclick", "onContextmenu"];
49573
49573
  const _hoisted_28$w = ["href", "aria-label", "onClick"];
49574
- const _hoisted_29$u = {
49574
+ const _hoisted_29$v = {
49575
49575
  key: 1,
49576
49576
  class: "cn-table-row__handle",
49577
49577
  "aria-hidden": "true",
49578
49578
  "data-testid": "cn-row-reorder-handle"
49579
49579
  };
49580
- const _hoisted_30$s = {
49580
+ const _hoisted_30$t = {
49581
49581
  key: 4,
49582
49582
  class: "cn-table-row-indicators",
49583
49583
  "data-testid": "cn-row-indicators"
@@ -49921,7 +49921,7 @@ function render$81(_ctx, _cache, $props, $setup, $data, $options) {
49921
49921
  }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_28$w))
49922
49922
  : vue$1.createCommentVNode("v-if", true),
49923
49923
  ($props.reorderable && colIndex === 0)
49924
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$u, [
49924
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$v, [
49925
49925
  vue$1.createVNode(_component_DragVertical, { size: 16 })
49926
49926
  ]))
49927
49927
  : vue$1.createCommentVNode("v-if", true),
@@ -49936,7 +49936,7 @@ function render$81(_ctx, _cache, $props, $setup, $data, $options) {
49936
49936
  }, null, 8 /* PROPS */, ["object"]))
49937
49937
  : vue$1.createCommentVNode("v-if", true),
49938
49938
  (colIndex === $options.titleColumnIndex && $options.indicatorsFor(row).shown.length > 0)
49939
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$s, [
49939
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$t, [
49940
49940
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($options.indicatorsFor(row).shown, (indicator) => {
49941
49941
  return (vue$1.openBlock(), vue$1.createElementBlock("span", {
49942
49942
  key: indicator.id || indicator.field,
@@ -85697,8 +85697,8 @@ const _hoisted_28$v = {
85697
85697
  key: 4,
85698
85698
  class: "cn-icon-browser-panel__hint"
85699
85699
  };
85700
- const _hoisted_29$t = ["id", "aria-labelledby"];
85701
- const _hoisted_30$r = ["value", "placeholder", "aria-label"];
85700
+ const _hoisted_29$u = ["id", "aria-labelledby"];
85701
+ const _hoisted_30$s = ["value", "placeholder", "aria-label"];
85702
85702
  const _hoisted_31$p = {
85703
85703
  key: 1,
85704
85704
  class: "cn-icon-browser-panel__grid"
@@ -85932,7 +85932,7 @@ function render$7S(_ctx, _cache, $props, $setup, $data, $options) {
85932
85932
  placeholder: $options.t('nextcloud-vue', 'Image URL (https://… or /path)'),
85933
85933
  "aria-label": $options.t('nextcloud-vue', 'Image URL'),
85934
85934
  onInput: _cache[3] || (_cache[3] = (...args) => ($options.onUrlInput && $options.onUrlInput(...args)))
85935
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_30$r))
85935
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_30$s))
85936
85936
  : vue$1.createCommentVNode("v-if", true),
85937
85937
  ($options.unnamedIcons.length > 0)
85938
85938
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_31$p, [
@@ -85978,7 +85978,7 @@ function render$7S(_ctx, _cache, $props, $setup, $data, $options) {
85978
85978
  ($data.uploadError)
85979
85979
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_40$d, vue$1.toDisplayString($data.uploadError), 1 /* TEXT */))
85980
85980
  : vue$1.createCommentVNode("v-if", true)
85981
- ], 8 /* PROPS */, _hoisted_29$t)), [
85981
+ ], 8 /* PROPS */, _hoisted_29$u)), [
85982
85982
  [vue$1.vShow, $data.mode === 'custom']
85983
85983
  ])
85984
85984
  : vue$1.createCommentVNode("v-if", true),
@@ -96872,8 +96872,8 @@ const _hoisted_27$w = {
96872
96872
  class: "cn-activity-tab__reads"
96873
96873
  };
96874
96874
  const _hoisted_28$u = ["checked"];
96875
- const _hoisted_29$s = ["aria-label"];
96876
- const _hoisted_30$q = ["onClick"];
96875
+ const _hoisted_29$t = ["aria-label"];
96876
+ const _hoisted_30$r = ["onClick"];
96877
96877
  const _hoisted_31$o = {
96878
96878
  key: 3,
96879
96879
  class: "cn-activity-tab__dates"
@@ -97101,9 +97101,9 @@ function render$7H(_ctx, _cache, $props, $setup, $data, $options) {
97101
97101
  type: "button",
97102
97102
  class: vue$1.normalizeClass(["cn-activity-tab__range-btn", { 'cn-activity-tab__range-btn--active': $data.selectedRange === range.key }]),
97103
97103
  onClick: $event => ($options.selectRange(range.key))
97104
- }, vue$1.toDisplayString(range.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_30$q))
97104
+ }, vue$1.toDisplayString(range.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_30$r))
97105
97105
  }), 128 /* KEYED_FRAGMENT */))
97106
- ], 8 /* PROPS */, _hoisted_29$s),
97106
+ ], 8 /* PROPS */, _hoisted_29$t),
97107
97107
  (!$data.legacy)
97108
97108
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_31$o, [
97109
97109
  vue$1.createElementVNode("label", _hoisted_32$o, [
@@ -103106,8 +103106,8 @@ const _hoisted_25$I = { class: "cn-calendar-tab__date-day" };
103106
103106
  const _hoisted_26$D = { class: "cn-calendar-tab__main" };
103107
103107
  const _hoisted_27$v = { class: "cn-calendar-tab__title-row" };
103108
103108
  const _hoisted_28$t = { class: "cn-calendar-tab__title" };
103109
- const _hoisted_29$r = { class: "cn-calendar-tab__when" };
103110
- const _hoisted_30$p = {
103109
+ const _hoisted_29$s = { class: "cn-calendar-tab__when" };
103110
+ const _hoisted_30$q = {
103111
103111
  key: 0,
103112
103112
  class: "cn-calendar-tab__location"
103113
103113
  };
@@ -103298,7 +103298,7 @@ function render$7t(_ctx, _cache, $props, $setup, $data, $options) {
103298
103298
  }, null, 8 /* PROPS */, ["label", "variant"]))
103299
103299
  : vue$1.createCommentVNode("v-if", true)
103300
103300
  ]),
103301
- vue$1.createElementVNode("div", _hoisted_29$r, [
103301
+ vue$1.createElementVNode("div", _hoisted_29$s, [
103302
103302
  vue$1.createVNode(_component_ClockOutline, {
103303
103303
  size: 14,
103304
103304
  class: "cn-calendar-tab__meta-icon"
@@ -103306,7 +103306,7 @@ function render$7t(_ctx, _cache, $props, $setup, $data, $options) {
103306
103306
  vue$1.createElementVNode("span", null, vue$1.toDisplayString($options.formatTimeRange(ev)), 1 /* TEXT */)
103307
103307
  ]),
103308
103308
  (ev.location)
103309
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_30$p, [
103309
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_30$q, [
103310
103310
  vue$1.createVNode(_component_MapMarkerOutline, {
103311
103311
  size: 14,
103312
103312
  class: "cn-calendar-tab__meta-icon"
@@ -109967,7 +109967,7 @@ const _hoisted_25$G = { class: "cn-deck-card__column-title" };
109967
109967
  const _hoisted_26$C = { class: "cn-deck-card__column-count" };
109968
109968
  const _hoisted_27$u = { class: "cn-deck-card__column-list" };
109969
109969
  const _hoisted_28$s = ["href"];
109970
- const _hoisted_29$q = {
109970
+ const _hoisted_29$r = {
109971
109971
  key: 4,
109972
109972
  class: "cn-deck-card__action-error",
109973
109973
  role: "alert"
@@ -110113,7 +110113,7 @@ function render$7c(_ctx, _cache, $props, $setup, $data, $options) {
110113
110113
  ]))
110114
110114
  ], 64 /* STABLE_FRAGMENT */)),
110115
110115
  ($data.actionError)
110116
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_29$q, vue$1.toDisplayString($data.actionError), 1 /* TEXT */))
110116
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_29$r, vue$1.toDisplayString($data.actionError), 1 /* TEXT */))
110117
110117
  : vue$1.createCommentVNode("v-if", true),
110118
110118
  ($data.pickerOpen)
110119
110119
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnDeckCardPicker, {
@@ -119790,8 +119790,8 @@ const _hoisted_26$B = {
119790
119790
  };
119791
119791
  const _hoisted_27$t = { class: "hidden-visually" };
119792
119792
  const _hoisted_28$r = ["aria-sort", "data-testid"];
119793
- const _hoisted_29$p = ["onClick"];
119794
- const _hoisted_30$o = {
119793
+ const _hoisted_29$q = ["onClick"];
119794
+ const _hoisted_30$p = {
119795
119795
  class: "cn-files-browser__col-actions",
119796
119796
  scope: "col"
119797
119797
  };
@@ -120334,13 +120334,13 @@ function render$70(_ctx, _cache, $props, $setup, $data, $options) {
120334
120334
  size: 16
120335
120335
  }))
120336
120336
  : vue$1.createCommentVNode("v-if", true)
120337
- ], 8 /* PROPS */, _hoisted_29$p))
120337
+ ], 8 /* PROPS */, _hoisted_29$q))
120338
120338
  : (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 1 }, [
120339
120339
  vue$1.createTextVNode(vue$1.toDisplayString($options.columnLabel(column)), 1 /* TEXT */)
120340
120340
  ], 64 /* STABLE_FRAGMENT */))
120341
120341
  ], 10 /* CLASS, PROPS */, _hoisted_28$r))
120342
120342
  }), 128 /* KEYED_FRAGMENT */)),
120343
- vue$1.createElementVNode("th", _hoisted_30$o, [
120343
+ vue$1.createElementVNode("th", _hoisted_30$p, [
120344
120344
  vue$1.createElementVNode("span", _hoisted_31$m, vue$1.toDisplayString($options.t('nextcloud-vue', 'Actions')), 1 /* TEXT */)
120345
120345
  ])
120346
120346
  ])
@@ -155414,8 +155414,8 @@ const _hoisted_28$q = {
155414
155414
  key: 11,
155415
155415
  class: "cn-form-dialog__select-wrapper"
155416
155416
  };
155417
- const _hoisted_29$o = { class: "cn-form-dialog__option" };
155418
- const _hoisted_30$n = { class: "cn-form-dialog__option" };
155417
+ const _hoisted_29$p = { class: "cn-form-dialog__option" };
155418
+ const _hoisted_30$o = { class: "cn-form-dialog__option" };
155419
155419
  const _hoisted_31$l = {
155420
155420
  key: 12,
155421
155421
  class: "cn-form-dialog__switch-wrapper"
@@ -156241,7 +156241,7 @@ function render$6c(_ctx, _cache, $props, $setup, $data, $options) {
156241
156241
  : {
156242
156242
  name: "option",
156243
156243
  fn: vue$1.withCtx((optionProps) => [
156244
- vue$1.createElementVNode("span", _hoisted_29$o, vue$1.toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
156244
+ vue$1.createElementVNode("span", _hoisted_29$p, vue$1.toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
156245
156245
  ]),
156246
156246
  key: "1"
156247
156247
  },
@@ -156256,7 +156256,7 @@ function render$6c(_ctx, _cache, $props, $setup, $data, $options) {
156256
156256
  : {
156257
156257
  name: "selected-option",
156258
156258
  fn: vue$1.withCtx((optionProps) => [
156259
- vue$1.createElementVNode("span", _hoisted_30$n, vue$1.toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
156259
+ vue$1.createElementVNode("span", _hoisted_30$o, vue$1.toDisplayString($options.optionText(optionProps)), 1 /* TEXT */)
156260
156260
  ]),
156261
156261
  key: "3"
156262
156262
  }
@@ -166306,8 +166306,8 @@ const _hoisted_27$r = {
166306
166306
  class: "cn-related-objects-widget__meta"
166307
166307
  };
166308
166308
  const _hoisted_28$p = ["onClick", "onKeydown"];
166309
- const _hoisted_29$n = { class: "cn-related-objects-widget__label" };
166310
- const _hoisted_30$m = {
166309
+ const _hoisted_29$o = { class: "cn-related-objects-widget__label" };
166310
+ const _hoisted_30$n = {
166311
166311
  key: 0,
166312
166312
  class: "cn-related-objects-widget__meta"
166313
166313
  };
@@ -166589,9 +166589,9 @@ function render$64(_ctx, _cache, $props, $setup, $data, $options) {
166589
166589
  size: 20,
166590
166590
  class: "cn-related-objects-widget__icon"
166591
166591
  }, null, 8 /* PROPS */, ["name"]),
166592
- vue$1.createElementVNode("span", _hoisted_29$n, vue$1.toDisplayString(item.label), 1 /* TEXT */),
166592
+ vue$1.createElementVNode("span", _hoisted_29$o, vue$1.toDisplayString(item.label), 1 /* TEXT */),
166593
166593
  (item.meta)
166594
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$m, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
166594
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_30$n, vue$1.toDisplayString(item.meta), 1 /* TEXT */))
166595
166595
  : vue$1.createCommentVNode("v-if", true),
166596
166596
  (item.detail && $options.isExpanded($options.activeGroup.key, item))
166597
166597
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_31$k, vue$1.toDisplayString(item.detail), 1 /* TEXT */))
@@ -192377,8 +192377,8 @@ const _hoisted_25$z = { class: "cn-timeline-manage__title" };
192377
192377
  const _hoisted_26$w = { class: "cn-timeline-manage__subtitle" };
192378
192378
  const _hoisted_27$p = { class: "cn-timeline-manage__composer-title" };
192379
192379
  const _hoisted_28$o = { class: "cn-timeline-manage__composer-hint" };
192380
- const _hoisted_29$m = ["for"];
192381
- const _hoisted_30$l = ["for"];
192380
+ const _hoisted_29$n = ["for"];
192381
+ const _hoisted_30$m = ["for"];
192382
192382
  const _hoisted_31$j = ["id", "placeholder"];
192383
192383
  const _hoisted_32$j = { class: "cn-timeline-manage__composer-foot" };
192384
192384
 
@@ -192641,7 +192641,7 @@ function render$5r(_ctx, _cache, $props, $setup, $data, $options) {
192641
192641
  key: 1,
192642
192642
  class: "cn-timeline-manage__draft-label",
192643
192643
  for: $options.blockId
192644
- }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Template')), 9 /* TEXT, PROPS */, _hoisted_29$m))
192644
+ }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Template')), 9 /* TEXT, PROPS */, _hoisted_29$n))
192645
192645
  : vue$1.createCommentVNode("v-if", true),
192646
192646
  ($data.textBlocks.length)
192647
192647
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcSelect, {
@@ -192665,7 +192665,7 @@ function render$5r(_ctx, _cache, $props, $setup, $data, $options) {
192665
192665
  vue$1.createElementVNode("label", {
192666
192666
  class: "cn-timeline-manage__draft-label",
192667
192667
  for: $options.draftId
192668
- }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Note')), 9 /* TEXT, PROPS */, _hoisted_30$l),
192668
+ }, vue$1.toDisplayString($options.t('nextcloud-vue', 'Note')), 9 /* TEXT, PROPS */, _hoisted_30$m),
192669
192669
  vue$1.withDirectives(vue$1.createElementVNode("textarea", {
192670
192670
  id: $options.draftId,
192671
192671
  "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => (($data.draft) = $event)),
@@ -217883,8 +217883,8 @@ const _hoisted_25$w = { class: "cn-links-form__option" };
217883
217883
  const _hoisted_26$u = ["value"];
217884
217884
  const _hoisted_27$o = { value: "small" };
217885
217885
  const _hoisted_28$n = { value: "medium" };
217886
- const _hoisted_29$l = { value: "large" };
217887
- const _hoisted_30$k = { class: "cn-links-form__option cn-links-form__option--checkbox" };
217886
+ const _hoisted_29$m = { value: "large" };
217887
+ const _hoisted_30$l = { class: "cn-links-form__option cn-links-form__option--checkbox" };
217888
217888
  const _hoisted_31$i = ["checked"];
217889
217889
  const _hoisted_32$i = { class: "cn-links-form__option cn-links-form__option--checkbox" };
217890
217890
  const _hoisted_33$g = ["checked"];
@@ -218041,10 +218041,10 @@ function render$4I(_ctx, _cache, $props, $setup, $data, $options) {
218041
218041
  }, [
218042
218042
  vue$1.createElementVNode("option", _hoisted_27$o, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Small (24 px)')), 1 /* TEXT */),
218043
218043
  vue$1.createElementVNode("option", _hoisted_28$n, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Medium (40 px)')), 1 /* TEXT */),
218044
- vue$1.createElementVNode("option", _hoisted_29$l, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Large (64 px)')), 1 /* TEXT */)
218044
+ vue$1.createElementVNode("option", _hoisted_29$m, vue$1.toDisplayString(_ctx.t('nextcloud-vue', 'Large (64 px)')), 1 /* TEXT */)
218045
218045
  ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_26$u)
218046
218046
  ]),
218047
- vue$1.createElementVNode("label", _hoisted_30$k, [
218047
+ vue$1.createElementVNode("label", _hoisted_30$l, [
218048
218048
  vue$1.createElementVNode("input", {
218049
218049
  type: "checkbox",
218050
218050
  checked: $data.openInNewTab,
@@ -223915,7 +223915,7 @@ const _hoisted_25$v = {
223915
223915
  const _hoisted_26$t = { class: "cn-calendar-widget__agenda-header" };
223916
223916
  const _hoisted_27$n = { class: "cn-calendar-widget__agenda-time" };
223917
223917
  const _hoisted_28$m = { class: "cn-calendar-widget__agenda-title" };
223918
- const _hoisted_29$k = {
223918
+ const _hoisted_29$l = {
223919
223919
  key: 0,
223920
223920
  class: "cn-calendar-widget__agenda-cal"
223921
223921
  };
@@ -224034,7 +224034,7 @@ function render$4u(_ctx, _cache, $props, $setup, $data, $options) {
224034
224034
  vue$1.createElementVNode("span", _hoisted_27$n, vue$1.toDisplayString($options.formatTime(event)), 1 /* TEXT */),
224035
224035
  vue$1.createElementVNode("span", _hoisted_28$m, vue$1.toDisplayString(event.title), 1 /* TEXT */),
224036
224036
  (event.calendarName)
224037
- ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$k, vue$1.toDisplayString(event.calendarName), 1 /* TEXT */))
224037
+ ? (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_29$l, vue$1.toDisplayString(event.calendarName), 1 /* TEXT */))
224038
224038
  : vue$1.createCommentVNode("v-if", true)
224039
224039
  ], 4 /* STYLE */))
224040
224040
  }), 128 /* KEYED_FRAGMENT */))
@@ -225123,11 +225123,11 @@ const _hoisted_28$l = {
225123
225123
  key: 0,
225124
225124
  class: "cn-spend-analytics-widget__inline-empty"
225125
225125
  };
225126
- const _hoisted_29$j = {
225126
+ const _hoisted_29$k = {
225127
225127
  key: 1,
225128
225128
  class: "cn-spend-analytics-widget__inline-empty"
225129
225129
  };
225130
- const _hoisted_30$j = {
225130
+ const _hoisted_30$k = {
225131
225131
  key: 2,
225132
225132
  class: "cn-spend-analytics-widget__rows"
225133
225133
  };
@@ -225237,8 +225237,8 @@ function render$4s(_ctx, _cache, $props, $setup, $data, $options) {
225237
225237
  ($options.vendorMissing)
225238
225238
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_28$l, vue$1.toDisplayString($options.t('nextcloud-vue', 'No vendor data — procest is not installed')), 1 /* TEXT */))
225239
225239
  : ($options.vendorEmpty)
225240
- ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_29$j, vue$1.toDisplayString($options.t('nextcloud-vue', 'No vendor commitments for the selected period')), 1 /* TEXT */))
225241
- : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_30$j, [
225240
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_29$k, vue$1.toDisplayString($options.t('nextcloud-vue', 'No vendor commitments for the selected period')), 1 /* TEXT */))
225241
+ : (vue$1.openBlock(), vue$1.createElementBlock("ul", _hoisted_30$k, [
225242
225242
  (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList($data.vendor.topVendors, (row, i) => {
225243
225243
  return (vue$1.openBlock(), vue$1.createElementBlock("li", {
225244
225244
  key: row.vendor
@@ -231596,8 +231596,8 @@ const _hoisted_27$l = {
231596
231596
  class: "cn-tasks-widget__name"
231597
231597
  };
231598
231598
  const _hoisted_28$k = { class: "cn-tasks-widget__meta" };
231599
- const _hoisted_29$i = { class: "cn-tasks-widget__others-actions" };
231600
- const _hoisted_30$i = {
231599
+ const _hoisted_29$j = { class: "cn-tasks-widget__others-actions" };
231600
+ const _hoisted_30$j = {
231601
231601
  key: 4,
231602
231602
  class: "cn-tasks-widget__empty"
231603
231603
  };
@@ -231982,7 +231982,7 @@ function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
231982
231982
  : (vue$1.openBlock(), vue$1.createElementBlock("span", _hoisted_27$l, vue$1.toDisplayString($options.titleOf(task)), 1 /* TEXT */)),
231983
231983
  vue$1.createElementVNode("span", _hoisted_28$k, vue$1.toDisplayString($options.dueLabel(task) || $options.tr('No due date')), 1 /* TEXT */)
231984
231984
  ]),
231985
- vue$1.createElementVNode("span", _hoisted_29$i, [
231985
+ vue$1.createElementVNode("span", _hoisted_29$j, [
231986
231986
  ($options.canClaim(task))
231987
231987
  ? (vue$1.openBlock(), vue$1.createBlock(_component_NcButton, {
231988
231988
  key: 0,
@@ -232043,7 +232043,7 @@ function render$4g(_ctx, _cache, $props, $setup, $data, $options) {
232043
232043
  : vue$1.createCommentVNode("v-if", true)
232044
232044
  ], 64 /* STABLE_FRAGMENT */))
232045
232045
  : ($options.rows.length === 0)
232046
- ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_30$i, vue$1.toDisplayString($options.emptyLabel), 1 /* TEXT */))
232046
+ ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_30$j, vue$1.toDisplayString($options.emptyLabel), 1 /* TEXT */))
232047
232047
  : (vue$1.openBlock(), vue$1.createElementBlock(vue$1.Fragment, { key: 5 }, [
232048
232048
  (!$options.isList)
232049
232049
  ? (vue$1.openBlock(), vue$1.createElementBlock("p", _hoisted_31$g, vue$1.toDisplayString($options.countLabel), 1 /* TEXT */))
@@ -238027,6 +238027,30 @@ function resolveSourceTokens(value, record) {
238027
238027
  }
238028
238028
 
238029
238029
  /** Kinds of entry a `fields[]` item can be. A labelled item without `as` is a row. */
238030
+ /**
238031
+ * Two or more pills in a row become one `pills` block, drawn on one line.
238032
+ *
238033
+ * @param {Array<object>} blocks The blocks in order.
238034
+ * @return {Array<object>}
238035
+ * @spec openspec/changes/facts-fields-from-context/specs/facts-widget/spec.md#requirement-a-facts-card-can-take-its-entries-from-the-page-context
238036
+ */
238037
+ function groupPills(blocks) {
238038
+ const out = [];
238039
+ blocks.forEach((block) => {
238040
+ const last = out[out.length - 1];
238041
+ if (block.kind !== 'pill') {
238042
+ out.push(block);
238043
+ } else if (last && last.kind === 'pills') {
238044
+ last.pills.push(block);
238045
+ } else if (last && last.kind === 'pill') {
238046
+ out[out.length - 1] = { kind: 'pills', key: `pills-${last.key}`, pills: [last, block] };
238047
+ } else {
238048
+ out.push(block);
238049
+ }
238050
+ });
238051
+ return out
238052
+ }
238053
+
238030
238054
  const KINDS$1 = Object.freeze(['row', 'title', 'line', 'pill', 'lead', 'text', 'meter', 'progress']);
238031
238055
 
238032
238056
  /** The schemes a facts link opens, besides a path on this server. */
@@ -238167,15 +238191,17 @@ var script$48 = {
238167
238191
  * `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.
238168
238192
  * `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.
238169
238193
  * `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.
238170
- * `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.
238194
+ * `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.
238171
238195
  * `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.
238172
238196
  * `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").
238173
238197
  * - `action` — an action drawn as a button under the facts; `headerAction` — one drawn in the card header (reported through the `header` event).
238174
238198
  * - `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.
238199
+ * - `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`.
238175
238200
  * - `rowsPath` — a path to a list of `{ label, value }` the record holds, drawn as rows after `fields` (a preview the server builds).
238176
238201
  * - `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.
238177
238202
  * - `notice` — `{ text, variant? }`, a note band inside the card under the facts (`info` by default; `success`, `warning` or `error`); the text is translated.
238178
- * `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).
238203
+ * - `footnote` — a plain muted line under the facts, without a band (DqZaakBesluiten "Na het ondertekenen ..."); the text is translated.
238204
+ * `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).
238179
238205
  * `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.
238180
238206
  * - `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).
238181
238207
  * - `endpointSource` — `{ url, method?, params?, responsePath? }`, the block a stat or chart takes: the facts read an app endpoint, shared and cached like those.
@@ -238234,6 +238260,29 @@ var script$48 = {
238234
238260
  },
238235
238261
 
238236
238262
  computed: {
238263
+ /**
238264
+ * The entries to draw: the list `fieldsFrom` names on the page's
238265
+ * `@context` records when it holds entries (a case type's
238266
+ * `requestFields`), else `fields`.
238267
+ *
238268
+ * @return {Array<object>}
238269
+ * @spec openspec/changes/facts-fields-from-context/specs/facts-widget/spec.md#requirement-a-facts-card-can-take-its-entries-from-the-page-context
238270
+ */
238271
+ entries() {
238272
+ const from = this.content?.fieldsFrom;
238273
+ if (typeof from === 'string' && from.startsWith('@context.')) {
238274
+ const rows = this.cnDetailVisibilityRows && typeof this.cnDetailVisibilityRows === 'object' && 'value' in this.cnDetailVisibilityRows
238275
+ ? this.cnDetailVisibilityRows.value
238276
+ : this.cnDetailVisibilityRows;
238277
+ const named = readPath$8({ '@context': rows || {} }, from);
238278
+ const list = Array.isArray(named) ? named.filter((entry) => entry && typeof entry === 'object' && !Array.isArray(entry)) : [];
238279
+ if (list.length > 0) {
238280
+ return list
238281
+ }
238282
+ }
238283
+ return Array.isArray(this.content?.fields) ? this.content.fields : []
238284
+ },
238285
+
238237
238286
  /**
238238
238287
  * Whether the rows sit in two columns, label above value.
238239
238288
  *
@@ -238278,7 +238327,7 @@ var script$48 = {
238278
238327
  * @spec openspec/changes/facts-entry-count/specs/facts-widget/spec.md#requirement-a-facts-entry-can-count-a-related-list
238279
238328
  */
238280
238329
  countJobsKey() {
238281
- const fields = Array.isArray(this.content?.fields) ? this.content.fields : [];
238330
+ const fields = this.entries;
238282
238331
  const keys = fields
238283
238332
  .filter((field) => field && field.countFrom && typeof field.countFrom === 'object' && field.countFrom.register && field.countFrom.schema)
238284
238333
  .map((field) => this.countKey(field.countFrom));
@@ -238439,7 +238488,7 @@ var script$48 = {
238439
238488
  */
238440
238489
  blocks() {
238441
238490
  const sourceRecord = this.record;
238442
- const fields = Array.isArray(this.content?.fields) ? this.content.fields : [];
238491
+ const fields = this.entries;
238443
238492
  // A source that finds nothing still leaves the entries that read the
238444
238493
  // page's own object (`from: "object"`).
238445
238494
  const ownEntries = Boolean(this.objectData) && fields.some((field) => field && field.from === 'object');
@@ -238518,7 +238567,7 @@ var script$48 = {
238518
238567
  out.push({ kind: 'rows', key: 'rows-answered', rows: [row] });
238519
238568
  }
238520
238569
  });
238521
- return out
238570
+ return groupPills(out)
238522
238571
  },
238523
238572
 
238524
238573
  /**
@@ -238610,6 +238659,12 @@ var script$48 = {
238610
238659
  return { text, type: ['success', 'warning', 'error'].includes(notice.variant) ? notice.variant : 'info' }
238611
238660
  },
238612
238661
 
238662
+ /** @return {string} The translated footnote, or '' when none is set. */
238663
+ footnote() {
238664
+ const footnote = this.content?.footnote;
238665
+ return typeof footnote === 'string' && footnote.trim() !== '' ? this.tr(footnote) : ''
238666
+ },
238667
+
238613
238668
  /** @return {string} The reveal button's text. */
238614
238669
  showLabel() {
238615
238670
  return l10n.translate('nextcloud-vue', 'Show')
@@ -238847,7 +238902,7 @@ var script$48 = {
238847
238902
  * @spec openspec/changes/facts-entry-count/specs/facts-widget/spec.md#requirement-a-facts-entry-can-count-a-related-list
238848
238903
  */
238849
238904
  async loadCounts() {
238850
- const fields = Array.isArray(this.content?.fields) ? this.content.fields : [];
238905
+ const fields = this.entries;
238851
238906
  const seen = new Set();
238852
238907
  for (const field of fields) {
238853
238908
  const countFrom = field && field.countFrom;
@@ -238924,8 +238979,8 @@ var script$48 = {
238924
238979
  */
238925
238980
  templateValue(record, template) {
238926
238981
  let filled = false;
238927
- const text = this.tr(template).replace(/\{([\w.@]+)\}/g, (match, path) => {
238928
- const value = this.format(readPath$8(record, path), {}, record);
238982
+ const text = this.tr(template).replace(/\{([\w.@]+)(?::([\w-]+))?\}/g, (match, path, format) => {
238983
+ const value = this.format(readPath$8(record, path), format ? { format } : {}, record);
238929
238984
  filled = filled || value !== '';
238930
238985
  return value
238931
238986
  });
@@ -239317,7 +239372,7 @@ var script$48 = {
239317
239372
  * @return {Array<{spec: object, raw: unknown}>}
239318
239373
  */
239319
239374
  refSpecs(record) {
239320
- const fields = Array.isArray(this.content?.fields) ? this.content.fields : [];
239375
+ const fields = this.entries;
239321
239376
  const specs = [];
239322
239377
  const visit = (spec) => {
239323
239378
  if (!spec || typeof spec !== 'object') {
@@ -239550,6 +239605,10 @@ var script$48 = {
239550
239605
  .filter((item) => item !== '');
239551
239606
  return items.join(', ')
239552
239607
  }
239608
+ if (format === 'year') {
239609
+ const date = parseDateValue(raw);
239610
+ return date === null ? '' : String(date.getFullYear())
239611
+ }
239553
239612
  // The month written out, the year only outside this year: "3 oktober".
239554
239613
  if (format === 'longdate') {
239555
239614
  return formatLongDate(raw)
@@ -239729,7 +239788,16 @@ const _hoisted_24$w = ["aria-label", "aria-valuenow", "aria-valuemax", "aria-val
239729
239788
  const _hoisted_25$s = ["data-testid"];
239730
239789
  const _hoisted_26$q = ["aria-label", "aria-valuenow", "data-testid"];
239731
239790
  const _hoisted_27$k = { class: "cn-facts-widget__line" };
239732
- const _hoisted_28$j = { key: 7 };
239791
+ const _hoisted_28$j = {
239792
+ key: 7,
239793
+ class: "cn-facts-widget__pills"
239794
+ };
239795
+ const _hoisted_29$i = { key: 8 };
239796
+ const _hoisted_30$i = {
239797
+ key: 5,
239798
+ class: "cn-facts-widget__footnote",
239799
+ "data-testid": "cn-facts-footnote"
239800
+ };
239733
239801
 
239734
239802
  function render$47(_ctx, _cache, $props, $setup, $data, $options) {
239735
239803
  const _component_NcLoadingIcon = vue$1.resolveComponent("NcLoadingIcon");
@@ -239987,16 +240055,28 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
239987
240055
  : vue$1.createCommentVNode("v-if", true),
239988
240056
  vue$1.createElementVNode("span", _hoisted_27$k, vue$1.toDisplayString(block.value), 1 /* TEXT */)
239989
240057
  ], 8 /* PROPS */, _hoisted_25$s))
239990
- : (block.kind === 'pill')
240058
+ : (block.kind === 'pills')
239991
240059
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_28$j, [
239992
- vue$1.createVNode(_component_CnStatusBadge, {
239993
- label: block.value,
239994
- variant: block.variant,
239995
- size: "small",
239996
- "data-testid": `cn-fact-${block.key}`
239997
- }, null, 8 /* PROPS */, ["label", "variant", "data-testid"])
240060
+ (vue$1.openBlock(true), vue$1.createElementBlock(vue$1.Fragment, null, vue$1.renderList(block.pills, (pill) => {
240061
+ return (vue$1.openBlock(), vue$1.createBlock(_component_CnStatusBadge, {
240062
+ key: pill.key,
240063
+ label: pill.value,
240064
+ variant: pill.variant,
240065
+ size: "small",
240066
+ "data-testid": `cn-fact-${pill.key}`
240067
+ }, null, 8 /* PROPS */, ["label", "variant", "data-testid"]))
240068
+ }), 128 /* KEYED_FRAGMENT */))
239998
240069
  ]))
239999
- : vue$1.createCommentVNode("v-if", true)
240070
+ : (block.kind === 'pill')
240071
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_29$i, [
240072
+ vue$1.createVNode(_component_CnStatusBadge, {
240073
+ label: block.value,
240074
+ variant: block.variant,
240075
+ size: "small",
240076
+ "data-testid": `cn-fact-${block.key}`
240077
+ }, null, 8 /* PROPS */, ["label", "variant", "data-testid"])
240078
+ ]))
240079
+ : vue$1.createCommentVNode("v-if", true)
240000
240080
  ], 64 /* STABLE_FRAGMENT */))
240001
240081
  }), 128 /* KEYED_FRAGMENT */)),
240002
240082
  ($options.notice && $options.record)
@@ -240012,9 +240092,12 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
240012
240092
  _: 1 /* STABLE */
240013
240093
  }, 8 /* PROPS */, ["type"]))
240014
240094
  : vue$1.createCommentVNode("v-if", true),
240095
+ ($options.footnote && $options.record)
240096
+ ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_30$i, vue$1.toDisplayString($options.footnote), 1 /* TEXT */))
240097
+ : vue$1.createCommentVNode("v-if", true),
240015
240098
  ($options.link && $options.link.sidebarTab && $options.record)
240016
240099
  ? (vue$1.openBlock(), vue$1.createElementBlock("button", {
240017
- key: 5,
240100
+ key: 6,
240018
240101
  type: "button",
240019
240102
  class: "cn-facts-widget__link cn-facts-widget__link--button",
240020
240103
  "data-testid": "cn-facts-link",
@@ -240031,7 +240114,7 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
240031
240114
  ]))
240032
240115
  : ($options.link && $options.record)
240033
240116
  ? (vue$1.openBlock(), vue$1.createBlock(vue$1.resolveDynamicComponent($options.link.to ? 'router-link' : 'a'), {
240034
- key: 6,
240117
+ key: 7,
240035
240118
  to: $options.link.to || undefined,
240036
240119
  href: $options.link.href || undefined,
240037
240120
  target: $options.link.target || undefined,
@@ -240054,7 +240137,7 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
240054
240137
  : vue$1.createCommentVNode("v-if", true),
240055
240138
  ($options.action && $options.record)
240056
240139
  ? (vue$1.openBlock(), vue$1.createElementBlock("button", {
240057
- key: 7,
240140
+ key: 8,
240058
240141
  type: "button",
240059
240142
  class: "cn-facts-widget__action",
240060
240143
  "data-testid": "cn-facts-action",
@@ -240072,7 +240155,7 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
240072
240155
  : vue$1.createCommentVNode("v-if", true),
240073
240156
  ($options.drawnActions.length > 0)
240074
240157
  ? (vue$1.openBlock(), vue$1.createBlock(_component_CnActionButtons, {
240075
- key: 8,
240158
+ key: 9,
240076
240159
  class: "cn-facts-widget__actions",
240077
240160
  actions: $options.drawnActions,
240078
240161
  "data-testid": "cn-facts-actions"
@@ -240082,7 +240165,7 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
240082
240165
  }
240083
240166
 
240084
240167
  script$48.render = render$47;
240085
- script$48.__scopeId = "data-v-2903e476";
240168
+ script$48.__scopeId = "data-v-6351bc64";
240086
240169
  const __sfc_main$48 = script$48;
240087
240170
 
240088
240171
  /**
@@ -261099,6 +261182,35 @@ function kindCode(kind) {
261099
261182
  return String(kind?.code || kind?.key || '')
261100
261183
  }
261101
261184
 
261185
+ /**
261186
+ * Whether a party's kind is among the kinds a record accepts. Two
261187
+ * vocabularies meet here: the party's kind is its schema's (`person`,
261188
+ * `organisation`, `colleague`), while the accepted kinds may be role kinds
261189
+ * that name the identity shapes they take (pipelinq's `aanvrager` with
261190
+ * `identityShapes: ["naturalPerson", "organization"]`). When the accepted
261191
+ * kinds name shapes, the party's own kind is matched by the shapes the
261192
+ * listing gives it; a kind that names none cannot be judged and passes.
261193
+ * Otherwise the codes are compared.
261194
+ *
261195
+ * @param {string} partyKind The party's kind key.
261196
+ * @param {Array<object>} accepted The accepted kinds.
261197
+ * @param {Array<object>} own The listing's own kinds (`{ key, identityShapes? }`).
261198
+ * @return {boolean} False only when the party is known not to fit.
261199
+ * @spec openspec/changes/parties-accepted-kinds-by-shape/specs/object-parties/spec.md#requirement-a-party-is-checked-against-the-accepted-kinds-in-one-vocabulary
261200
+ */
261201
+ function partyKindAccepted(partyKind, accepted, own) {
261202
+ const kinds = Array.isArray(accepted) ? accepted : [];
261203
+ const shapes = new Set(kinds.flatMap((kind) => (Array.isArray(kind?.identityShapes) ? kind.identityShapes : [])));
261204
+ if (shapes.size === 0) {
261205
+ return kinds.some((kind) => kindCode(kind) === partyKind)
261206
+ }
261207
+ const mine = (Array.isArray(own) ? own : []).find((kind) => kindCode(kind) === partyKind)?.identityShapes;
261208
+ if (!Array.isArray(mine) || mine.length === 0) {
261209
+ return true
261210
+ }
261211
+ return mine.some((shape) => shapes.has(shape))
261212
+ }
261213
+
261102
261214
  /**
261103
261215
  * Write a value at a dotted path, creating the objects on the way.
261104
261216
  *
@@ -262358,7 +262470,7 @@ var script$3B = {
262358
262470
  if (!party?.partyKind || !this.kinds || (enforce && this.kinds.source !== enforce)) {
262359
262471
  return false
262360
262472
  }
262361
- return !this.kinds.kinds.some((kind) => kindCode(kind) === party.partyKind)
262473
+ return !partyKindAccepted(party.partyKind, this.kinds.kinds, this.listing?.kinds)
262362
262474
  },
262363
262475
 
262364
262476
  /**
@@ -262871,7 +262983,7 @@ function render$3A(_ctx, _cache, $props, $setup, $data, $options) {
262871
262983
  }
262872
262984
 
262873
262985
  script$3B.render = render$3A;
262874
- script$3B.__scopeId = "data-v-44731ec4";
262986
+ script$3B.__scopeId = "data-v-24a3d77a";
262875
262987
  const __sfc_main$3B = script$3B;
262876
262988
 
262877
262989
  /**