@conduction/nextcloud-vue 2.132.0 → 2.133.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/CnActionButtons/CnActionButtons.vue.js +1 -1
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js +14 -0
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue2.js.map +1 -1
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js +5 -4
- package/dist/esm/components/CnActionButtons/CnActionButtons.vue3.js.map +1 -1
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue.js +9 -0
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue.js.map +1 -0
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue2.js +237 -0
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue2.js.map +1 -0
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue3.js +103 -0
- package/dist/esm/components/CnConditionListEditor/CnConditionListEditor.vue3.js.map +1 -0
- package/dist/esm/components/CnConditionListEditor/conditionOperators.js +121 -0
- package/dist/esm/components/CnConditionListEditor/conditionOperators.js.map +1 -0
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +12 -0
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +8 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +46 -7
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js +59 -3
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue3.js +197 -127
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +42 -2
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +17 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +17 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +277 -166
- package/dist/esm/store/plugins/liveUpdates.js +13 -4
- package/dist/esm/store/plugins/liveUpdates.js.map +1 -1
- package/dist/esm/store/useObjectStore.js +28 -5
- package/dist/esm/store/useObjectStore.js.map +1 -1
- package/dist/esm/utils/detailActionModel.js +6 -0
- package/dist/esm/utils/detailActionModel.js.map +1 -1
- package/dist/esm/utils/listLenses.js +20 -1
- package/dist/esm/utils/listLenses.js.map +1 -1
- package/dist/esm/utils/objectRows.js +59 -0
- package/dist/esm/utils/objectRows.js.map +1 -0
- package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +5961 -5127
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +277 -166
- package/l10n/en.json +17 -1
- package/l10n/nl.json +17 -1
- package/package.json +1 -1
- package/src/components/CnActionButtons/CnActionButtons.vue +15 -0
- package/src/components/CnConditionListEditor/CnConditionListEditor.vue +346 -0
- package/src/components/CnConditionListEditor/conditionOperators.js +126 -0
- package/src/components/CnConditionListEditor/index.js +17 -0
- package/src/components/CnDetailPage/CnDetailPage.md +1 -0
- package/src/components/CnDetailPage/CnDetailPage.vue +13 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +8 -1
- package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +47 -8
- package/src/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue +139 -2
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +42 -2
- package/src/components/CnTabsWidget/CnTabsWidget.vue +1 -1
- package/src/components/index.js +1 -0
- package/src/css/look-board-index.css +6 -0
- package/src/css/look-board.css +35 -7
- package/src/index.js +2 -0
- package/src/schemas/app-manifest-v2.schema.json +17 -1
- package/src/store/plugins/liveUpdates.js +13 -4
- package/src/store/useObjectStore.js +28 -5
- package/src/utils/detailActionModel.js +6 -0
- package/src/utils/listLenses.js +20 -1
- package/src/utils/objectRows.js +55 -0
- package/src/utils/validateManifestV2.compiled.js +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CnObjectPartiesWidget.vue2.js","sources":["../../../../src/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2026 Conduction B.V.\n - SPDX-License-Identifier: EUPL-1.2\n-->\n\n<template>\n\t<div class=\"cn-object-parties\" data-testid=\"cn-object-parties\">\n\t\t<NcLoadingIcon v-if=\"loading\" :size=\"24\" />\n\n\t\t<NcEmptyContent\n\t\t\tv-else-if=\"failed\"\n\t\t\t:name=\"label('failed')\"\n\t\t\t:description=\"label('failedDetail')\"\n\t\t\tdata-testid=\"cn-object-parties-failed\" />\n\n\t\t<NcEmptyContent\n\t\t\tv-else-if=\"groups.length === 0\"\n\t\t\t:name=\"label('empty')\"\n\t\t\t:description=\"label('emptyDetail')\"\n\t\t\tdata-testid=\"cn-object-parties-empty\" />\n\n\t\t<template v-else>\n\t\t\t<div\n\t\t\t\tv-if=\"kinds\"\n\t\t\t\tclass=\"cn-object-parties__accepted\"\n\t\t\t\t:data-source=\"kinds.source\"\n\t\t\t\tdata-testid=\"cn-object-parties-accepted\">\n\t\t\t\t<span class=\"cn-object-parties__accepted-label\">{{ label('accepted') }}</span>\n\t\t\t\t<span\n\t\t\t\t\tv-for=\"(kind, index) in kinds.kinds\"\n\t\t\t\t\t:key=\"kindCode(kind)\"\n\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--default cn-object-parties__accepted-kind\"\n\t\t\t\t\tdata-testid=\"cn-object-parties-accepted-kind\">{{ index + 1 }}. {{ kind.label || kindCode(kind) }}</span>\n\t\t\t\t<span v-if=\"kindsSourceText\" class=\"cn-object-parties__muted\">{{ kindsSourceText }}</span>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"verdicts.length > 0\"\n\t\t\t\tclass=\"cn-object-parties__verdicts\"\n\t\t\t\tdata-testid=\"cn-object-parties-verdicts\">\n\t\t\t\t<NcNoteCard\n\t\t\t\t\tv-for=\"verdict in verdicts\"\n\t\t\t\t\t:key=\"`${verdict.party}-${verdict.key}`\"\n\t\t\t\t\t:type=\"verdict.severity\"\n\t\t\t\t\t:data-effect=\"verdict.effect\"\n\t\t\t\t\tdata-testid=\"cn-object-parties-verdict\">\n\t\t\t\t\t<strong>{{ verdict.label }}</strong>\n\t\t\t\t\t<span>{{ verdict.sentence }}</span>\n\t\t\t\t</NcNoteCard>\n\t\t\t</div>\n\n\t\t\t<section\n\t\t\t\tv-for=\"group in groups\"\n\t\t\t\t:key=\"group.key\"\n\t\t\t\tclass=\"cn-object-parties__role\"\n\t\t\t\t:data-role=\"group.key\"\n\t\t\t\t:aria-labelledby=\"`${idPrefix}-${group.key}`\"\n\t\t\t\tdata-testid=\"cn-object-parties-role\">\n\t\t\t\t<component :is=\"innerHeadingTag\" :id=\"`${idPrefix}-${group.key}`\" class=\"cn-object-parties__role-label cn-inner-heading\">\n\t\t\t\t\t{{ group.label }}\n\t\t\t\t</component>\n\t\t\t\t<ul class=\"cn-object-parties__list\">\n\t\t\t\t\t<li\n\t\t\t\t\t\tv-for=\"party in group.parties\"\n\t\t\t\t\t\t:key=\"`${group.key}-${party.partyUuid || party.contactUid}`\"\n\t\t\t\t\t\tclass=\"cn-object-parties__party\"\n\t\t\t\t\t\t:data-party=\"party.partyUuid || party.contactUid\"\n\t\t\t\t\t\tdata-testid=\"cn-object-parties-party\">\n\t\t\t\t\t\t<span class=\"cn-object-parties__name\">{{ nameOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"primary && party.partyUuid === primary\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--primary\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-primary\">{{ label('primary') }}</span>\n\t\t\t\t\t\t<span v-if=\"kindOf(party)\" class=\"cn-object-parties__muted\">{{ kindOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"notAccepted(party)\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--warning\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-not-accepted\">{{ label('notAccepted') }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-for=\"(line, index) in extraLinesOf(party)\"\n\t\t\t\t\t\t\t:key=\"`line-${index}`\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-extra-line\">{{ line }}</span>\n\t\t\t\t\t\t<span v-if=\"party.email\" class=\"cn-object-parties__muted\">{{ party.email }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"representedBy(party)\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-represented\">{{ label('representedBy') }}: {{ representedBy(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"correspondenceOf(party)\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\t:data-party-documents=\"party.partyUuid || party.contactUid\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-documents\">{{ correspondenceOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-for=\"indicator in indicatorsFor(party)\"\n\t\t\t\t\t\t\t:key=\"`${party.partyUuid}-${indicator.key}`\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--default\"\n\t\t\t\t\t\t\t:class=\"`cn-object-parties__indicator--${indicator.severity}`\"\n\t\t\t\t\t\t\t:data-effect=\"indicator.effect\"\n\t\t\t\t\t\t\t:title=\"indicator.verdict\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-indicator\">{{ indicator.label }} · {{ indicator.verdict }}</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</section>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { translatePlural as n, translate as t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { NcEmptyContent, NcLoadingIcon, NcNoteCard } from '@nextcloud/vue'\nimport { interpolateUrlTokens } from '../../composables/useEndpointSource.js'\nimport innerHeading from '../../mixins/innerHeading.js'\nimport { conditionalLine } from '../../utils/conditionalLine.js'\nimport {\n\tdocumentsOfParty,\n\tindicatorsOf,\n\tindicatorVerdict,\n\tkindCode,\n\trepresentedByMap,\n\trolesInOrder,\n} from '../../utils/objectParties.js'\nimport { readPath } from '../../utils/readPath.js'\n\nlet uid = 0\n\n/**\n * The default words, keyed as `content.labels` overrides them.\n *\n * @return {object} The labels.\n */\nfunction defaultLabels() {\n\treturn {\n\t\tfailed: t('nextcloud-vue', 'The parties could not be read'),\n\t\tfailedDetail: t('nextcloud-vue', 'OpenRegister did not answer. Nothing has been removed.'),\n\t\tempty: t('nextcloud-vue', 'No parties yet'),\n\t\temptyDetail: t('nextcloud-vue', 'Add a party to record who this is for and who acts on it.'),\n\t\taccepted: t('nextcloud-vue', 'Accepted kinds'),\n\t\tprimary: t('nextcloud-vue', 'Primary party'),\n\t\tnotAccepted: t('nextcloud-vue', 'Kind not accepted here'),\n\t\trepresentedBy: t('nextcloud-vue', 'Represented by'),\n\t}\n}\n\n/**\n * CnObjectPartiesWidget — the `parties` widget: a record's parties as\n * OpenRegister's party model answers them, grouped by role with the primary\n * party first. Each party shows its kind, its representative and the\n * indicators on it, each with its verdict. A blocking verdict is also a note\n * above the list, so nobody publishes or sends past it.\n *\n * ```json\n * {\n * \"type\": \"parties\",\n * \"content\": {\n * \"rolesObjects\": { \"register\": \"myapp\", \"schema\": \"role\", \"field\": \"item\" },\n * \"roleLabels\": { \"applicant\": \"Applicant\" },\n * \"kindsSource\": { \"url\": \"/apps/myapp/api/items/@objectId/party-kinds\", \"enforce\": \"crm\" },\n * \"extraLines\": [{ \"endpoint\": \"/apps/myapp/api/items/@objectId/parties/{party}/language\", \"lines\": [\"Language: {language}\"] }],\n * \"correspondence\": { \"endpoint\": \"/apps/myapp/api/items/@objectId/documents\", \"path\": \"documents\" }\n * }\n * }\n * ```\n *\n * A failed read says so and is never shown as \"no parties\".\n *\n * @spec openspec/changes/dq-abstract-record-widgets/specs/record-widgets/spec.md#requirement-a-record-shows-its-parties-by-role\n */\nexport default {\n\tname: 'CnObjectPartiesWidget',\n\n\tcomponents: { NcEmptyContent, NcLoadingIcon, NcNoteCard },\n\n\tmixins: [innerHeading],\n\n\tinject: {\n\t\tcnTranslate: { default: () => (key) => key },\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The configuration: `rolesSource` (the listing URL, default\n\t\t * OpenRegister's `/parties` of this record), `partySource` (one\n\t\t * party, `{uuid}` filled in), `rolesObjects` (`{ register, schema,\n\t\t * field }`, the role rows that say who represents whom), `roleLabels`,\n\t\t * `kindsSource` (`{ url, enforce?, sourceText? }`), `extraLines`\n\t\t * (`[{ endpoint, path?, valueLabels?, lines }]`, one request per\n\t\t * party, `{party}` filled in), `correspondence` (`{ endpoint, path?,\n\t\t * senderField?, recipientsField? }`) and `labels`.\n\t\t */\n\t\tcontent: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\n\t\t/** The record's id, bound by the detail host. */\n\t\tobjectId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/** The record's register slug. */\n\t\tregister: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/** The record's schema slug. */\n\t\tschema: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\tuid += 1\n\t\treturn {\n\t\t\tidPrefix: `cn-object-parties-${uid}`,\n\t\t\tloading: true,\n\t\t\tfailed: false,\n\t\t\tlisting: null,\n\t\t\tpartyRecords: {},\n\t\t\trepresented: {},\n\t\t\tkinds: null,\n\t\t\textra: {},\n\t\t\tdocuments: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/** @return {Array<object>} The role groups, primary first. */\n\t\tgroups() {\n\t\t\treturn rolesInOrder(this.listing, this.translatedMap(this.content?.roleLabels))\n\t\t},\n\n\t\t/** @return {string|null} The primary party's uuid. */\n\t\tprimary() {\n\t\t\treturn this.listing?.primary || null\n\t\t},\n\n\t\t/** @return {object} The verdict words, translated. */\n\t\tverdictLabels() {\n\t\t\tconst own = this.content?.labels || {}\n\t\t\tconst out = {}\n\t\t\tfor (const key of ['verdictPublication', 'verdictSend', 'verdictWarn']) {\n\t\t\t\tif (typeof own[key] === 'string' && own[key] !== '') {\n\t\t\t\t\tout[key] = this.cnTranslate(own[key])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/** @return {Array<object>} The blocking verdicts, as notes above the list. */\n\t\tverdicts() {\n\t\t\treturn indicatorsOf(Object.values(this.partyRecords))\n\t\t\t\t.map((indicator) => ({\n\t\t\t\t\t...indicatorVerdict(indicator, this.verdictLabels),\n\t\t\t\t\tparty: indicator.party,\n\t\t\t\t\tkey: indicator.key,\n\t\t\t\t\tsentence: this.sentenceFor(indicator),\n\t\t\t\t}))\n\t\t\t\t.filter((verdict) => verdict.severity === 'error')\n\t\t},\n\n\t\t/** @return {string} Where the accepted kinds come from. */\n\t\tkindsSourceText() {\n\t\t\tconst texts = this.content?.kindsSource?.sourceText\n\t\t\tif (!this.kinds || !texts || typeof texts !== 'object') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst text = texts[this.kinds.source] || texts.default || ''\n\t\t\treturn text ? this.cnTranslate(text) : ''\n\t\t},\n\n\t\t/** @return {Record<string, string>} The kind labels the listing declares. */\n\t\tkindLabels() {\n\t\t\tconst labels = {}\n\t\t\tfor (const kind of this.listing?.kinds || []) {\n\t\t\t\tif (kind && kind.key) {\n\t\t\t\t\tlabels[kind.key] = kind.label || kind.key\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn labels\n\t\t},\n\n\t\t/** @return {string} A key that changes when the record does. */\n\t\trecordKey() {\n\t\t\treturn `${this.register}|${this.schema}|${this.objectId}`\n\t\t},\n\t},\n\n\twatch: {\n\t\trecordKey: {\n\t\t\timmediate: true,\n\t\t\thandler() {\n\t\t\t\tthis.load()\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tkindCode,\n\n\t\t/**\n\t\t * A label: the content's own (translated), else the default.\n\t\t *\n\t\t * @param {string} key The label key.\n\t\t * @return {string}\n\t\t */\n\t\tlabel(key) {\n\t\t\tconst own = this.content?.labels && typeof this.content.labels[key] === 'string' ? this.content.labels[key] : ''\n\t\t\treturn own !== '' ? this.cnTranslate(own) : defaultLabels()[key]\n\t\t},\n\n\t\t/**\n\t\t * A map of manifest words, translated.\n\t\t *\n\t\t * @param {object} map The map.\n\t\t * @return {Record<string, string>}\n\t\t */\n\t\ttranslatedMap(map) {\n\t\t\tconst out = {}\n\t\t\tfor (const [key, value] of Object.entries(map && typeof map === 'object' ? map : {})) {\n\t\t\t\tout[key] = typeof value === 'string' ? this.cnTranslate(value) : value\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/**\n\t\t * An app path with the record's tokens and `{party}` filled in.\n\t\t *\n\t\t * @param {string} template The path.\n\t\t * @param {string} [party] A party uuid.\n\t\t * @return {string}\n\t\t */\n\t\turlOf(template, party = '') {\n\t\t\tconst withSlugs = String(template)\n\t\t\t\t.replaceAll('@register', String(this.register || ''))\n\t\t\t\t.replaceAll('@schema', String(this.schema || ''))\n\t\t\treturn interpolateUrlTokens(withSlugs, { objectId: this.objectId }).replaceAll('{party}', encodeURIComponent(party)).replaceAll('{uuid}', encodeURIComponent(party))\n\t\t},\n\n\t\t/**\n\t\t * GET an app path; null when it fails.\n\t\t *\n\t\t * @param {string} path The app path.\n\t\t * @param {object} [params] Query parameters.\n\t\t * @return {Promise<unknown>}\n\t\t */\n\t\tasync read(path, params) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(generateUrl(path), params ? { params } : undefined)\n\t\t\t\treturn data ?? null\n\t\t\t} catch {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Read the listing, then each party, the representation, the kinds,\n\t\t * the extra lines and the correspondence.\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync load() {\n\t\t\tif (!this.objectId) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading = true\n\t\t\tthis.failed = false\n\t\t\tthis.partyRecords = {}\n\t\t\tthis.represented = {}\n\t\t\tthis.extra = {}\n\t\t\tthis.documents = []\n\t\t\tconst listing = await this.read(this.urlOf(this.content?.rolesSource || '/apps/openregister/api/objects/@register/@schema/@objectId/parties'))\n\t\t\tif (!listing || typeof listing !== 'object') {\n\t\t\t\tthis.failed = true\n\t\t\t\tthis.listing = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.listing = listing\n\t\t\tconst uuids = [...new Set((listing.results || []).map((row) => row && row.partyUuid).filter(Boolean))]\n\t\t\tconst partyUrl = this.content?.partySource || '/apps/openregister/api/parties/{uuid}'\n\t\t\tconst records = await Promise.all(uuids.map((uuid) => this.read(this.urlOf(partyUrl, uuid))))\n\t\t\tconst byUuid = {}\n\t\t\tuuids.forEach((uuid, index) => {\n\t\t\t\tif (records[index] && typeof records[index] === 'object') {\n\t\t\t\t\tbyUuid[uuid] = records[index]\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.partyRecords = byUuid\n\t\t\tawait Promise.all([this.loadRepresentation(), this.loadKinds(), this.loadExtraLines(uuids), this.loadCorrespondence()])\n\t\t\tthis.loading = false\n\t\t},\n\n\t\t/** @return {Promise<void>} Who represents whom, from the role rows. */\n\t\tasync loadRepresentation() {\n\t\t\tconst source = this.content?.rolesObjects\n\t\t\tif (!source || !source.register || !source.schema) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(`/apps/openregister/api/objects/${encodeURIComponent(source.register)}/${encodeURIComponent(source.schema)}`, { [source.field || 'object']: String(this.objectId), _limit: 200 })\n\t\t\tconst rows = Array.isArray(data?.results) ? data.results : (Array.isArray(data) ? data : [])\n\t\t\tthis.represented = representedByMap(rows)\n\t\t},\n\n\t\t/** @return {Promise<void>} The kinds this record accepts. */\n\t\tasync loadKinds() {\n\t\t\tconst source = this.content?.kindsSource\n\t\t\tthis.kinds = null\n\t\t\tif (!source || !source.url) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(this.urlOf(source.url))\n\t\t\tthis.kinds = data && Array.isArray(data.kinds) ? data : null\n\t\t},\n\n\t\t/**\n\t\t * One answer per party per extra line.\n\t\t *\n\t\t * @param {Array<string>} uuids The parties.\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync loadExtraLines(uuids) {\n\t\t\tconst lines = Array.isArray(this.content?.extraLines) ? this.content.extraLines : []\n\t\t\tconst extra = {}\n\t\t\tawait Promise.all(lines.map(async (spec, index) => {\n\t\t\t\tif (!spec || !spec.endpoint) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst answers = await Promise.all(uuids.map((uuid) => this.read(this.urlOf(spec.endpoint, uuid))))\n\t\t\t\tuuids.forEach((uuid, i) => {\n\t\t\t\t\tconst answer = spec.path ? readPath(answers[i], spec.path) : answers[i]\n\t\t\t\t\tif (answer && typeof answer === 'object') {\n\t\t\t\t\t\textra[`${index}|${uuid}`] = answer\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}))\n\t\t\tthis.extra = extra\n\t\t},\n\n\t\t/** @return {Promise<void>} The documents the correspondence counts read. */\n\t\tasync loadCorrespondence() {\n\t\t\tconst spec = this.content?.correspondence\n\t\t\tif (!spec || !spec.endpoint) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(this.urlOf(spec.endpoint))\n\t\t\tconst list = spec.path ? readPath(data, spec.path) : data\n\t\t\tthis.documents = Array.isArray(list) ? list : []\n\t\t},\n\n\t\t/**\n\t\t * The extra lines for a party, each the first of its `lines` that applies.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {Array<string>}\n\t\t */\n\t\textraLinesOf(party) {\n\t\t\tconst specs = Array.isArray(this.content?.extraLines) ? this.content.extraLines : []\n\t\t\treturn specs.map((spec, index) => {\n\t\t\t\tconst answer = this.extra[`${index}|${party.partyUuid}`]\n\t\t\t\tif (!answer) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn conditionalLine(spec.lines || [], this.labelled(answer, spec.valueLabels), (text) => this.cnTranslate(text))\n\t\t\t}).filter((line) => line !== '')\n\t\t},\n\n\t\t/**\n\t\t * An answer with its coded values replaced by their labels\n\t\t * (`valueLabels: { language: { nl: \"Dutch\" } }`; `nl-NL` reads as `nl`).\n\t\t *\n\t\t * @param {object} answer The answer.\n\t\t * @param {object} valueLabels The labels by field and value.\n\t\t * @return {object}\n\t\t */\n\t\tlabelled(answer, valueLabels) {\n\t\t\tif (!valueLabels || typeof valueLabels !== 'object') {\n\t\t\t\treturn answer\n\t\t\t}\n\t\t\tconst out = { ...answer }\n\t\t\tfor (const [field, map] of Object.entries(valueLabels)) {\n\t\t\t\tconst raw = answer[field]\n\t\t\t\tif (typeof raw !== 'string' || !map) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst hit = map[raw] ?? map[raw.toLowerCase().split('-')[0]]\n\t\t\t\tif (typeof hit === 'string') {\n\t\t\t\t\tout[field] = this.cnTranslate(hit)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/**\n\t\t * Whether a party's kind is one this record does not accept. Only when\n\t\t * the kinds come from the source named by `kindsSource.enforce`.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {boolean}\n\t\t */\n\t\tnotAccepted(party) {\n\t\t\tconst enforce = this.content?.kindsSource?.enforce\n\t\t\tif (!party?.partyKind || !this.kinds || (enforce && this.kinds.source !== enforce)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !this.kinds.kinds.some((kind) => kindCode(kind) === party.partyKind)\n\t\t},\n\n\t\t/**\n\t\t * A party's kind: the accepted kind's label, else the listing's, else the code.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tkindOf(party) {\n\t\t\tif (!party.partyKind) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst offered = (this.kinds?.kinds || []).find((kind) => kindCode(kind) === party.partyKind)\n\t\t\treturn offered?.label || this.kindLabels[party.partyKind] || party.partyKind\n\t\t},\n\n\t\t/**\n\t\t * Who represents this party, by name.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\trepresentedBy(party) {\n\t\t\tconst uuid = this.represented[party.partyUuid || party.contactUid || ''] || ''\n\t\t\tif (uuid === '') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst row = (this.listing?.results || []).find((candidate) => candidate?.partyUuid === uuid)\n\t\t\treturn row ? this.nameOf(row) : (this.partyRecords[uuid]?.name || uuid)\n\t\t},\n\n\t\t/**\n\t\t * A party's name: the listing's, else the party record's, else its id.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tnameOf(party) {\n\t\t\treturn party.displayName || this.partyRecords[party.partyUuid]?.name || party.contactUid || party.partyUuid || ''\n\t\t},\n\n\t\t/**\n\t\t * How many documents a party sent and received.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tcorrespondenceOf(party) {\n\t\t\tconst spec = this.content?.correspondence || {}\n\t\t\tconst { sent, received } = documentsOfParty(this.documents, party.partyUuid || party.contactUid || '', spec)\n\t\t\tif (sent.length === 0 && received.length === 0) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (received.length === 0) {\n\t\t\t\treturn n('nextcloud-vue', '%n document sent', '%n documents sent', sent.length)\n\t\t\t}\n\t\t\tif (sent.length === 0) {\n\t\t\t\treturn n('nextcloud-vue', '%n document received', '%n documents received', received.length)\n\t\t\t}\n\t\t\treturn t('nextcloud-vue', '{sent} sent, {received} received', { sent: sent.length, received: received.length })\n\t\t},\n\n\t\t/**\n\t\t * The indicators on a party, each with its verdict.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {Array<object>}\n\t\t */\n\t\tindicatorsFor(party) {\n\t\t\tconst record = this.partyRecords[party.partyUuid]\n\t\t\tif (!record) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn (record.indicators || []).filter(Boolean).map((indicator) => ({ ...indicatorVerdict(indicator, this.verdictLabels), key: indicator.key }))\n\t\t},\n\n\t\t/**\n\t\t * The sentence of a blocking verdict, naming the party.\n\t\t *\n\t\t * @param {object} indicator The indicator with `partyName`.\n\t\t * @return {string}\n\t\t */\n\t\tsentenceFor(indicator) {\n\t\t\tconst name = indicator.partyName || indicator.party\n\t\t\tconst own = this.content?.labels || {}\n\t\t\tif (indicatorVerdict(indicator).effect === 'refuse-publication') {\n\t\t\t\treturn own.sentencePublication\n\t\t\t\t\t? this.cnTranslate(own.sentencePublication).replaceAll('{party}', name)\n\t\t\t\t\t: t('nextcloud-vue', 'Publishing a file on this record is refused, because of {party}.', { party: name }, undefined, { escape: false })\n\t\t\t}\n\t\t\treturn own.sentenceSend\n\t\t\t\t? this.cnTranslate(own.sentenceSend).replaceAll('{party}', name)\n\t\t\t\t: t('nextcloud-vue', 'A message to {party} is refused.', { party: name }, undefined, { escape: false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-object-parties {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.cn-object-parties__verdicts {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline, 4px);\n}\n\n.cn-object-parties__role-label {\n\tmargin: 0 0 var(--default-grid-baseline, 4px) 0;\n\tcolor: var(--color-text-maxcontrast);\n\tfont-size: 0.9em;\n}\n\n.cn-object-parties__list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline, 4px);\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.cn-object-parties__party {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n\tpadding: var(--default-grid-baseline, 4px);\n\tborder-radius: var(--border-radius, 4px);\n}\n\n.cn-object-parties__party:hover {\n\tbackground-color: var(--color-background-hover);\n}\n\n.cn-object-parties__name {\n\tfont-weight: bold;\n}\n\n.cn-object-parties__muted {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-object-parties__accepted {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n\tpadding: calc(var(--default-grid-baseline, 4px) * 2) calc(var(--default-grid-baseline, 4px) * 3);\n\tborder-radius: var(--border-radius-large, 10px);\n\tbackground-color: var(--color-background-hover);\n}\n\n.cn-object-parties__accepted-label {\n\tfont-weight: 600;\n}\n\n.cn-object-parties__accepted-kind {\n\tborder: 1px solid var(--color-border-dark);\n}\n</style>\n"],"names":["t","axios","n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CnObjectPartiesWidget.vue2.js","sources":["../../../../src/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2026 Conduction B.V.\n - SPDX-License-Identifier: EUPL-1.2\n-->\n\n<template>\n\t<div class=\"cn-object-parties\" data-testid=\"cn-object-parties\">\n\t\t<NcLoadingIcon v-if=\"loading\" :size=\"24\" />\n\n\t\t<NcEmptyContent\n\t\t\tv-else-if=\"failed\"\n\t\t\t:name=\"label('failed')\"\n\t\t\t:description=\"label('failedDetail')\"\n\t\t\tdata-testid=\"cn-object-parties-failed\" />\n\n\t\t<div\n\t\t\tv-else-if=\"isPrimaryPresentation\"\n\t\t\tclass=\"cn-object-parties__main-card\"\n\t\t\tdata-testid=\"cn-object-parties-main-card\">\n\t\t\t<div\n\t\t\t\tv-if=\"mainParty\"\n\t\t\t\tclass=\"cn-object-parties__main\"\n\t\t\t\t:data-party=\"mainParty.partyUuid\"\n\t\t\t\tdata-testid=\"cn-object-parties-main\">\n\t\t\t\t<span class=\"cn-object-parties__main-initials\" aria-hidden=\"true\" data-testid=\"cn-object-parties-main-initials\">{{ initialsOf(nameOf(mainParty)) }}</span>\n\t\t\t\t<span class=\"cn-object-parties__main-text\">\n\t\t\t\t\t<strong class=\"cn-object-parties__main-name\" data-testid=\"cn-object-parties-main-name\">{{ nameOf(mainParty) }}</strong>\n\t\t\t\t\t<span v-if=\"mainRole\" class=\"cn-object-parties__muted cn-object-parties__main-role\" data-testid=\"cn-object-parties-main-role\">{{ mainRole }}</span>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<span v-else class=\"cn-object-parties__muted\" data-testid=\"cn-object-parties-main-none\">{{ label('noPrimary') }}</span>\n\t\t\t<a\n\t\t\t\tv-if=\"mainParty && mainParty.email\"\n\t\t\t\tclass=\"cn-object-parties__main-email\"\n\t\t\t\t:href=\"`mailto:${mainParty.email}`\"\n\t\t\t\tdata-testid=\"cn-object-parties-main-email\">\n\t\t\t\t<EmailOutline :size=\"16\" aria-hidden=\"true\" />{{ mainParty.email }}</a>\n\t\t\t<a\n\t\t\t\tv-if=\"footLink\"\n\t\t\t\tclass=\"cn-object-parties__main-link\"\n\t\t\t\t:href=\"footLink.href\"\n\t\t\t\tdata-testid=\"cn-object-parties-main-link\">{{ footLink.label }}</a>\n\t\t</div>\n\n\t\t<NcEmptyContent\n\t\t\tv-else-if=\"groups.length === 0\"\n\t\t\t:name=\"label('empty')\"\n\t\t\t:description=\"label('emptyDetail')\"\n\t\t\tdata-testid=\"cn-object-parties-empty\" />\n\n\t\t<template v-else>\n\t\t\t<div\n\t\t\t\tv-if=\"kinds\"\n\t\t\t\tclass=\"cn-object-parties__accepted\"\n\t\t\t\t:data-source=\"kinds.source\"\n\t\t\t\tdata-testid=\"cn-object-parties-accepted\">\n\t\t\t\t<span class=\"cn-object-parties__accepted-label\">{{ label('accepted') }}</span>\n\t\t\t\t<span\n\t\t\t\t\tv-for=\"(kind, index) in kinds.kinds\"\n\t\t\t\t\t:key=\"kindCode(kind)\"\n\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--default cn-object-parties__accepted-kind\"\n\t\t\t\t\tdata-testid=\"cn-object-parties-accepted-kind\">{{ index + 1 }}. {{ kind.label || kindCode(kind) }}</span>\n\t\t\t\t<span v-if=\"kindsSourceText\" class=\"cn-object-parties__muted\">{{ kindsSourceText }}</span>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"verdicts.length > 0\"\n\t\t\t\tclass=\"cn-object-parties__verdicts\"\n\t\t\t\tdata-testid=\"cn-object-parties-verdicts\">\n\t\t\t\t<NcNoteCard\n\t\t\t\t\tv-for=\"verdict in verdicts\"\n\t\t\t\t\t:key=\"`${verdict.party}-${verdict.key}`\"\n\t\t\t\t\t:type=\"verdict.severity\"\n\t\t\t\t\t:data-effect=\"verdict.effect\"\n\t\t\t\t\tdata-testid=\"cn-object-parties-verdict\">\n\t\t\t\t\t<strong>{{ verdict.label }}</strong>\n\t\t\t\t\t<span>{{ verdict.sentence }}</span>\n\t\t\t\t</NcNoteCard>\n\t\t\t</div>\n\n\t\t\t<section\n\t\t\t\tv-for=\"group in groups\"\n\t\t\t\t:key=\"group.key\"\n\t\t\t\tclass=\"cn-object-parties__role\"\n\t\t\t\t:data-role=\"group.key\"\n\t\t\t\t:aria-labelledby=\"`${idPrefix}-${group.key}`\"\n\t\t\t\tdata-testid=\"cn-object-parties-role\">\n\t\t\t\t<component :is=\"innerHeadingTag\" :id=\"`${idPrefix}-${group.key}`\" class=\"cn-object-parties__role-label cn-inner-heading\">\n\t\t\t\t\t{{ group.label }}\n\t\t\t\t</component>\n\t\t\t\t<ul class=\"cn-object-parties__list\">\n\t\t\t\t\t<li\n\t\t\t\t\t\tv-for=\"party in group.parties\"\n\t\t\t\t\t\t:key=\"`${group.key}-${party.partyUuid || party.contactUid}`\"\n\t\t\t\t\t\tclass=\"cn-object-parties__party\"\n\t\t\t\t\t\t:data-party=\"party.partyUuid || party.contactUid\"\n\t\t\t\t\t\tdata-testid=\"cn-object-parties-party\">\n\t\t\t\t\t\t<span class=\"cn-object-parties__name\">{{ nameOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"primary && party.partyUuid === primary\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--primary\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-primary\">{{ label('primary') }}</span>\n\t\t\t\t\t\t<span v-if=\"kindOf(party)\" class=\"cn-object-parties__muted\">{{ kindOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"notAccepted(party)\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--warning\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-not-accepted\">{{ label('notAccepted') }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-for=\"(line, index) in extraLinesOf(party)\"\n\t\t\t\t\t\t\t:key=\"`line-${index}`\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-extra-line\">{{ line }}</span>\n\t\t\t\t\t\t<span v-if=\"party.email\" class=\"cn-object-parties__muted\">{{ party.email }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"representedBy(party)\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-represented\">{{ label('representedBy') }}: {{ representedBy(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"correspondenceOf(party)\"\n\t\t\t\t\t\t\tclass=\"cn-object-parties__muted\"\n\t\t\t\t\t\t\t:data-party-documents=\"party.partyUuid || party.contactUid\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-documents\">{{ correspondenceOf(party) }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-for=\"indicator in indicatorsFor(party)\"\n\t\t\t\t\t\t\t:key=\"`${party.partyUuid}-${indicator.key}`\"\n\t\t\t\t\t\t\tclass=\"cn-status-badge cn-status-badge--default\"\n\t\t\t\t\t\t\t:class=\"`cn-object-parties__indicator--${indicator.severity}`\"\n\t\t\t\t\t\t\t:data-effect=\"indicator.effect\"\n\t\t\t\t\t\t\t:title=\"indicator.verdict\"\n\t\t\t\t\t\t\tdata-testid=\"cn-object-parties-indicator\">{{ indicator.label }} · {{ indicator.verdict }}</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</section>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { translatePlural as n, translate as t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { NcEmptyContent, NcLoadingIcon, NcNoteCard } from '@nextcloud/vue'\nimport EmailOutline from 'vue-material-design-icons/EmailOutline.vue'\nimport { interpolateUrlTokens } from '../../composables/useEndpointSource.js'\nimport innerHeading from '../../mixins/innerHeading.js'\nimport { conditionalLine } from '../../utils/conditionalLine.js'\nimport { initialsOf } from '../../utils/initials.js'\nimport {\n\tdocumentsOfParty,\n\tindicatorsOf,\n\tindicatorVerdict,\n\tkindCode,\n\trepresentedByMap,\n\troleLabel,\n\trolesInOrder,\n} from '../../utils/objectParties.js'\nimport { readPath } from '../../utils/readPath.js'\n\nlet uid = 0\n\n/**\n * The default words, keyed as `content.labels` overrides them.\n *\n * @return {object} The labels.\n */\nfunction defaultLabels() {\n\treturn {\n\t\tfailed: t('nextcloud-vue', 'The parties could not be read'),\n\t\tfailedDetail: t('nextcloud-vue', 'OpenRegister did not answer. Nothing has been removed.'),\n\t\tempty: t('nextcloud-vue', 'No parties yet'),\n\t\temptyDetail: t('nextcloud-vue', 'Add a party to record who this is for and who acts on it.'),\n\t\taccepted: t('nextcloud-vue', 'Accepted kinds'),\n\t\tprimary: t('nextcloud-vue', 'Primary party'),\n\t\tnotAccepted: t('nextcloud-vue', 'Kind not accepted here'),\n\t\trepresentedBy: t('nextcloud-vue', 'Represented by'),\n\t\tnoPrimary: t('nextcloud-vue', 'No main contact yet'),\n\t}\n}\n\n/**\n * CnObjectPartiesWidget — the `parties` widget: a record's parties as\n * OpenRegister's party model answers them, grouped by role with the primary\n * party first. Each party shows its kind, its representative and the\n * indicators on it, each with its verdict. A blocking verdict is also a note\n * above the list, so nobody publishes or sends past it.\n *\n * ```json\n * {\n * \"type\": \"parties\",\n * \"content\": {\n * \"rolesObjects\": { \"register\": \"myapp\", \"schema\": \"role\", \"field\": \"item\" },\n * \"roleLabels\": { \"applicant\": \"Applicant\" },\n * \"kindsSource\": { \"url\": \"/apps/myapp/api/items/@objectId/party-kinds\", \"enforce\": \"crm\" },\n * \"extraLines\": [{ \"endpoint\": \"/apps/myapp/api/items/@objectId/parties/{party}/language\", \"lines\": [\"Language: {language}\"] }],\n * \"correspondence\": { \"endpoint\": \"/apps/myapp/api/items/@objectId/documents\", \"path\": \"documents\" }\n * }\n * }\n * ```\n *\n * `presentation: \"primary\"` draws only the primary party, as a side card\n * does: initials, name and role label, its correspondence e-mail, and\n * `link` (`{ label, href? | tab? }`, `{total}` = the number of parties) at\n * the foot; `tab` opens that tab of the page through the route hash. It\n * reads the listing only.\n *\n * A failed read says so and is never shown as \"no parties\".\n *\n * @spec openspec/changes/dq-abstract-record-widgets/specs/record-widgets/spec.md#requirement-a-record-shows-its-parties-by-role\n */\nexport default {\n\tname: 'CnObjectPartiesWidget',\n\n\tcomponents: { EmailOutline, NcEmptyContent, NcLoadingIcon, NcNoteCard },\n\n\tmixins: [innerHeading],\n\n\tinject: {\n\t\tcnTranslate: { default: () => (key) => key },\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The configuration: `rolesSource` (the listing URL, default\n\t\t * OpenRegister's `/parties` of this record), `partySource` (one\n\t\t * party, `{uuid}` filled in), `rolesObjects` (`{ register, schema,\n\t\t * field }`, the role rows that say who represents whom), `roleLabels`,\n\t\t * `kindsSource` (`{ url, enforce?, sourceText? }`), `extraLines`\n\t\t * (`[{ endpoint, path?, valueLabels?, lines }]`, one request per\n\t\t * party, `{party}` filled in), `correspondence` (`{ endpoint, path?,\n\t\t * senderField?, recipientsField? }`), `labels`, `presentation`\n\t\t * (`\"primary\"`: only the primary party) and `link` (`{ label,\n\t\t * href? | tab? }`, the primary presentation's foot link).\n\t\t */\n\t\tcontent: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\n\t\t/** The record's id, bound by the detail host. */\n\t\tobjectId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/** The record's register slug. */\n\t\tregister: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/** The record's schema slug. */\n\t\tschema: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\tuid += 1\n\t\treturn {\n\t\t\tidPrefix: `cn-object-parties-${uid}`,\n\t\t\tloading: true,\n\t\t\tfailed: false,\n\t\t\tlisting: null,\n\t\t\tpartyRecords: {},\n\t\t\trepresented: {},\n\t\t\tkinds: null,\n\t\t\textra: {},\n\t\t\tdocuments: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/** @return {Array<object>} The role groups, primary first. */\n\t\tgroups() {\n\t\t\treturn rolesInOrder(this.listing, this.translatedMap(this.content?.roleLabels))\n\t\t},\n\n\t\t/** @return {boolean} Whether only the primary party is drawn. */\n\t\tisPrimaryPresentation() {\n\t\t\treturn this.content?.presentation === 'primary'\n\t\t},\n\n\t\t/** @return {object|null} The primary party's listing row. */\n\t\tmainParty() {\n\t\t\tif (!this.primary) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn (this.listing?.results || []).find((row) => row && row.partyUuid === this.primary) || null\n\t\t},\n\n\t\t/** @return {string} The primary party's role, in the app's words. */\n\t\tmainRole() {\n\t\t\tconst key = this.mainParty?.role\n\t\t\tif (!key) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst own = this.translatedMap(this.content?.roleLabels)\n\t\t\tif (typeof own[key] === 'string' && own[key] !== '') {\n\t\t\t\treturn own[key]\n\t\t\t}\n\t\t\treturn this.cnTranslate(roleLabel(key, this.listing?.roles, {}))\n\t\t},\n\n\t\t/** @return {{label: string, href: string}|null} The primary presentation's foot link; none without parties. */\n\t\tfootLink() {\n\t\t\tconst link = this.content?.link\n\t\t\tconst total = Number(this.listing?.total ?? (this.listing?.results || []).length)\n\t\t\tif (!link || typeof link !== 'object' || !link.label || !(total > 0)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst href = link.tab ? `#${encodeURIComponent(link.tab)}` : (link.href || '')\n\t\t\tif (href === '') {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn { label: this.cnTranslate(link.label).replaceAll('{total}', String(total)), href }\n\t\t},\n\n\t\t/** @return {string|null} The primary party's uuid. */\n\t\tprimary() {\n\t\t\treturn this.listing?.primary || null\n\t\t},\n\n\t\t/** @return {object} The verdict words, translated. */\n\t\tverdictLabels() {\n\t\t\tconst own = this.content?.labels || {}\n\t\t\tconst out = {}\n\t\t\tfor (const key of ['verdictPublication', 'verdictSend', 'verdictWarn']) {\n\t\t\t\tif (typeof own[key] === 'string' && own[key] !== '') {\n\t\t\t\t\tout[key] = this.cnTranslate(own[key])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/** @return {Array<object>} The blocking verdicts, as notes above the list. */\n\t\tverdicts() {\n\t\t\treturn indicatorsOf(Object.values(this.partyRecords))\n\t\t\t\t.map((indicator) => ({\n\t\t\t\t\t...indicatorVerdict(indicator, this.verdictLabels),\n\t\t\t\t\tparty: indicator.party,\n\t\t\t\t\tkey: indicator.key,\n\t\t\t\t\tsentence: this.sentenceFor(indicator),\n\t\t\t\t}))\n\t\t\t\t.filter((verdict) => verdict.severity === 'error')\n\t\t},\n\n\t\t/** @return {string} Where the accepted kinds come from. */\n\t\tkindsSourceText() {\n\t\t\tconst texts = this.content?.kindsSource?.sourceText\n\t\t\tif (!this.kinds || !texts || typeof texts !== 'object') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst text = texts[this.kinds.source] || texts.default || ''\n\t\t\treturn text ? this.cnTranslate(text) : ''\n\t\t},\n\n\t\t/** @return {Record<string, string>} The kind labels the listing declares. */\n\t\tkindLabels() {\n\t\t\tconst labels = {}\n\t\t\tfor (const kind of this.listing?.kinds || []) {\n\t\t\t\tif (kind && kind.key) {\n\t\t\t\t\tlabels[kind.key] = kind.label || kind.key\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn labels\n\t\t},\n\n\t\t/** @return {string} A key that changes when the record does. */\n\t\trecordKey() {\n\t\t\treturn `${this.register}|${this.schema}|${this.objectId}`\n\t\t},\n\t},\n\n\twatch: {\n\t\trecordKey: {\n\t\t\timmediate: true,\n\t\t\thandler() {\n\t\t\t\tthis.load()\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tinitialsOf,\n\t\tkindCode,\n\n\t\t/**\n\t\t * A label: the content's own (translated), else the default.\n\t\t *\n\t\t * @param {string} key The label key.\n\t\t * @return {string}\n\t\t */\n\t\tlabel(key) {\n\t\t\tconst own = this.content?.labels && typeof this.content.labels[key] === 'string' ? this.content.labels[key] : ''\n\t\t\treturn own !== '' ? this.cnTranslate(own) : defaultLabels()[key]\n\t\t},\n\n\t\t/**\n\t\t * A map of manifest words, translated.\n\t\t *\n\t\t * @param {object} map The map.\n\t\t * @return {Record<string, string>}\n\t\t */\n\t\ttranslatedMap(map) {\n\t\t\tconst out = {}\n\t\t\tfor (const [key, value] of Object.entries(map && typeof map === 'object' ? map : {})) {\n\t\t\t\tout[key] = typeof value === 'string' ? this.cnTranslate(value) : value\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/**\n\t\t * An app path with the record's tokens and `{party}` filled in.\n\t\t *\n\t\t * @param {string} template The path.\n\t\t * @param {string} [party] A party uuid.\n\t\t * @return {string}\n\t\t */\n\t\turlOf(template, party = '') {\n\t\t\tconst withSlugs = String(template)\n\t\t\t\t.replaceAll('@register', String(this.register || ''))\n\t\t\t\t.replaceAll('@schema', String(this.schema || ''))\n\t\t\treturn interpolateUrlTokens(withSlugs, { objectId: this.objectId }).replaceAll('{party}', encodeURIComponent(party)).replaceAll('{uuid}', encodeURIComponent(party))\n\t\t},\n\n\t\t/**\n\t\t * GET an app path; null when it fails.\n\t\t *\n\t\t * @param {string} path The app path.\n\t\t * @param {object} [params] Query parameters.\n\t\t * @return {Promise<unknown>}\n\t\t */\n\t\tasync read(path, params) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(generateUrl(path), params ? { params } : undefined)\n\t\t\t\treturn data ?? null\n\t\t\t} catch {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Read the listing, then each party, the representation, the kinds,\n\t\t * the extra lines and the correspondence.\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync load() {\n\t\t\tif (!this.objectId) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading = true\n\t\t\tthis.failed = false\n\t\t\tthis.partyRecords = {}\n\t\t\tthis.represented = {}\n\t\t\tthis.extra = {}\n\t\t\tthis.documents = []\n\t\t\tconst listing = await this.read(this.urlOf(this.content?.rolesSource || '/apps/openregister/api/objects/@register/@schema/@objectId/parties'))\n\t\t\tif (!listing || typeof listing !== 'object') {\n\t\t\t\tthis.failed = true\n\t\t\t\tthis.listing = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.listing = listing\n\t\t\tif (this.isPrimaryPresentation) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst uuids = [...new Set((listing.results || []).map((row) => row && row.partyUuid).filter(Boolean))]\n\t\t\tconst partyUrl = this.content?.partySource || '/apps/openregister/api/parties/{uuid}'\n\t\t\tconst records = await Promise.all(uuids.map((uuid) => this.read(this.urlOf(partyUrl, uuid))))\n\t\t\tconst byUuid = {}\n\t\t\tuuids.forEach((uuid, index) => {\n\t\t\t\tif (records[index] && typeof records[index] === 'object') {\n\t\t\t\t\tbyUuid[uuid] = records[index]\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.partyRecords = byUuid\n\t\t\tawait Promise.all([this.loadRepresentation(), this.loadKinds(), this.loadExtraLines(uuids), this.loadCorrespondence()])\n\t\t\tthis.loading = false\n\t\t},\n\n\t\t/** @return {Promise<void>} Who represents whom, from the role rows. */\n\t\tasync loadRepresentation() {\n\t\t\tconst source = this.content?.rolesObjects\n\t\t\tif (!source || !source.register || !source.schema) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(`/apps/openregister/api/objects/${encodeURIComponent(source.register)}/${encodeURIComponent(source.schema)}`, { [source.field || 'object']: String(this.objectId), _limit: 200 })\n\t\t\tconst rows = Array.isArray(data?.results) ? data.results : (Array.isArray(data) ? data : [])\n\t\t\tthis.represented = representedByMap(rows)\n\t\t},\n\n\t\t/** @return {Promise<void>} The kinds this record accepts. */\n\t\tasync loadKinds() {\n\t\t\tconst source = this.content?.kindsSource\n\t\t\tthis.kinds = null\n\t\t\tif (!source || !source.url) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(this.urlOf(source.url))\n\t\t\tthis.kinds = data && Array.isArray(data.kinds) ? data : null\n\t\t},\n\n\t\t/**\n\t\t * One answer per party per extra line.\n\t\t *\n\t\t * @param {Array<string>} uuids The parties.\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync loadExtraLines(uuids) {\n\t\t\tconst lines = Array.isArray(this.content?.extraLines) ? this.content.extraLines : []\n\t\t\tconst extra = {}\n\t\t\tawait Promise.all(lines.map(async (spec, index) => {\n\t\t\t\tif (!spec || !spec.endpoint) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst answers = await Promise.all(uuids.map((uuid) => this.read(this.urlOf(spec.endpoint, uuid))))\n\t\t\t\tuuids.forEach((uuid, i) => {\n\t\t\t\t\tconst answer = spec.path ? readPath(answers[i], spec.path) : answers[i]\n\t\t\t\t\tif (answer && typeof answer === 'object') {\n\t\t\t\t\t\textra[`${index}|${uuid}`] = answer\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}))\n\t\t\tthis.extra = extra\n\t\t},\n\n\t\t/** @return {Promise<void>} The documents the correspondence counts read. */\n\t\tasync loadCorrespondence() {\n\t\t\tconst spec = this.content?.correspondence\n\t\t\tif (!spec || !spec.endpoint) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst data = await this.read(this.urlOf(spec.endpoint))\n\t\t\tconst list = spec.path ? readPath(data, spec.path) : data\n\t\t\tthis.documents = Array.isArray(list) ? list : []\n\t\t},\n\n\t\t/**\n\t\t * The extra lines for a party, each the first of its `lines` that applies.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {Array<string>}\n\t\t */\n\t\textraLinesOf(party) {\n\t\t\tconst specs = Array.isArray(this.content?.extraLines) ? this.content.extraLines : []\n\t\t\treturn specs.map((spec, index) => {\n\t\t\t\tconst answer = this.extra[`${index}|${party.partyUuid}`]\n\t\t\t\tif (!answer) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn conditionalLine(spec.lines || [], this.labelled(answer, spec.valueLabels), (text) => this.cnTranslate(text))\n\t\t\t}).filter((line) => line !== '')\n\t\t},\n\n\t\t/**\n\t\t * An answer with its coded values replaced by their labels\n\t\t * (`valueLabels: { language: { nl: \"Dutch\" } }`; `nl-NL` reads as `nl`).\n\t\t *\n\t\t * @param {object} answer The answer.\n\t\t * @param {object} valueLabels The labels by field and value.\n\t\t * @return {object}\n\t\t */\n\t\tlabelled(answer, valueLabels) {\n\t\t\tif (!valueLabels || typeof valueLabels !== 'object') {\n\t\t\t\treturn answer\n\t\t\t}\n\t\t\tconst out = { ...answer }\n\t\t\tfor (const [field, map] of Object.entries(valueLabels)) {\n\t\t\t\tconst raw = answer[field]\n\t\t\t\tif (typeof raw !== 'string' || !map) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst hit = map[raw] ?? map[raw.toLowerCase().split('-')[0]]\n\t\t\t\tif (typeof hit === 'string') {\n\t\t\t\t\tout[field] = this.cnTranslate(hit)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out\n\t\t},\n\n\t\t/**\n\t\t * Whether a party's kind is one this record does not accept. Only when\n\t\t * the kinds come from the source named by `kindsSource.enforce`.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {boolean}\n\t\t */\n\t\tnotAccepted(party) {\n\t\t\tconst enforce = this.content?.kindsSource?.enforce\n\t\t\tif (!party?.partyKind || !this.kinds || (enforce && this.kinds.source !== enforce)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !this.kinds.kinds.some((kind) => kindCode(kind) === party.partyKind)\n\t\t},\n\n\t\t/**\n\t\t * A party's kind: the accepted kind's label, else the listing's, else the code.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tkindOf(party) {\n\t\t\tif (!party.partyKind) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst offered = (this.kinds?.kinds || []).find((kind) => kindCode(kind) === party.partyKind)\n\t\t\treturn offered?.label || this.kindLabels[party.partyKind] || party.partyKind\n\t\t},\n\n\t\t/**\n\t\t * Who represents this party, by name.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\trepresentedBy(party) {\n\t\t\tconst uuid = this.represented[party.partyUuid || party.contactUid || ''] || ''\n\t\t\tif (uuid === '') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst row = (this.listing?.results || []).find((candidate) => candidate?.partyUuid === uuid)\n\t\t\treturn row ? this.nameOf(row) : (this.partyRecords[uuid]?.name || uuid)\n\t\t},\n\n\t\t/**\n\t\t * A party's name: the listing's, else the party record's, else its id.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tnameOf(party) {\n\t\t\treturn party.displayName || this.partyRecords[party.partyUuid]?.name || party.contactUid || party.partyUuid || ''\n\t\t},\n\n\t\t/**\n\t\t * How many documents a party sent and received.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {string}\n\t\t */\n\t\tcorrespondenceOf(party) {\n\t\t\tconst spec = this.content?.correspondence || {}\n\t\t\tconst { sent, received } = documentsOfParty(this.documents, party.partyUuid || party.contactUid || '', spec)\n\t\t\tif (sent.length === 0 && received.length === 0) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (received.length === 0) {\n\t\t\t\treturn n('nextcloud-vue', '%n document sent', '%n documents sent', sent.length)\n\t\t\t}\n\t\t\tif (sent.length === 0) {\n\t\t\t\treturn n('nextcloud-vue', '%n document received', '%n documents received', received.length)\n\t\t\t}\n\t\t\treturn t('nextcloud-vue', '{sent} sent, {received} received', { sent: sent.length, received: received.length })\n\t\t},\n\n\t\t/**\n\t\t * The indicators on a party, each with its verdict.\n\t\t *\n\t\t * @param {object} party The listing row.\n\t\t * @return {Array<object>}\n\t\t */\n\t\tindicatorsFor(party) {\n\t\t\tconst record = this.partyRecords[party.partyUuid]\n\t\t\tif (!record) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn (record.indicators || []).filter(Boolean).map((indicator) => ({ ...indicatorVerdict(indicator, this.verdictLabels), key: indicator.key }))\n\t\t},\n\n\t\t/**\n\t\t * The sentence of a blocking verdict, naming the party.\n\t\t *\n\t\t * @param {object} indicator The indicator with `partyName`.\n\t\t * @return {string}\n\t\t */\n\t\tsentenceFor(indicator) {\n\t\t\tconst name = indicator.partyName || indicator.party\n\t\t\tconst own = this.content?.labels || {}\n\t\t\tif (indicatorVerdict(indicator).effect === 'refuse-publication') {\n\t\t\t\treturn own.sentencePublication\n\t\t\t\t\t? this.cnTranslate(own.sentencePublication).replaceAll('{party}', name)\n\t\t\t\t\t: t('nextcloud-vue', 'Publishing a file on this record is refused, because of {party}.', { party: name }, undefined, { escape: false })\n\t\t\t}\n\t\t\treturn own.sentenceSend\n\t\t\t\t? this.cnTranslate(own.sentenceSend).replaceAll('{party}', name)\n\t\t\t\t: t('nextcloud-vue', 'A message to {party} is refused.', { party: name }, undefined, { escape: false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-object-parties {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.cn-object-parties__verdicts {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline, 4px);\n}\n\n.cn-object-parties__role-label {\n\tmargin: 0 0 var(--default-grid-baseline, 4px) 0;\n\tcolor: var(--color-text-maxcontrast);\n\tfont-size: 0.9em;\n}\n\n.cn-object-parties__list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline, 4px);\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.cn-object-parties__party {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n\tpadding: var(--default-grid-baseline, 4px);\n\tborder-radius: var(--border-radius, 4px);\n}\n\n.cn-object-parties__party:hover {\n\tbackground-color: var(--color-background-hover);\n}\n\n.cn-object-parties__name {\n\tfont-weight: bold;\n}\n\n.cn-object-parties__muted {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-object-parties__main-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.cn-object-parties__main {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.cn-object-parties__main-initials {\n\tdisplay: flex;\n\tflex: none;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 40px;\n\theight: 40px;\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-dark);\n\tcolor: var(--color-main-text);\n\tfont-weight: 700;\n}\n\n.cn-object-parties__main-text {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.cn-object-parties__main-name {\n\tfont-size: 15px;\n}\n\n.cn-object-parties__main-role {\n\tfont-size: 13px;\n}\n\n.cn-object-parties__main-email {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2.5);\n\tcolor: var(--color-main-text);\n\toverflow-wrap: anywhere;\n}\n\n.cn-object-parties__main-link {\n\tcolor: var(--color-primary-element);\n\tfont-weight: 600;\n}\n\n.cn-object-parties__accepted {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n\tpadding: calc(var(--default-grid-baseline, 4px) * 2) calc(var(--default-grid-baseline, 4px) * 3);\n\tborder-radius: var(--border-radius-large, 10px);\n\tbackground-color: var(--color-background-hover);\n}\n\n.cn-object-parties__accepted-label {\n\tfont-weight: 600;\n}\n\n.cn-object-parties__accepted-kind {\n\tborder: 1px solid var(--color-border-dark);\n}\n</style>\n"],"names":["t","axios","n"],"mappings":";;;;;;;;;;;;;;AA8JA,IAAI,MAAM,EAAA;;AAEV;;AAEC;;;AAGD,SAAS,aAAa,GAAG;AACxB,CAAA,OAAO;EACN,MAAM,EAAEA,SAAC,CAAC,eAAe,EAAE,+BAA+B,CAAC;AAC3D,EAAA,YAAY,EAAEA,SAAC,CAAC,eAAe,EAAE,wDAAwD,CAAC;AAC1F,EAAA,KAAK,EAAEA,SAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC;AAC3C,EAAA,WAAW,EAAEA,SAAC,CAAC,eAAe,EAAE,2DAA2D,CAAC;AAC5F,EAAA,QAAQ,EAAEA,SAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC;AAC9C,EAAA,OAAO,EAAEA,SAAC,CAAC,eAAe,EAAE,eAAe,CAAC;EAC5C,WAAW,EAAEA,SAAC,CAAC,eAAe,EAAE,wBAAwB,CAAC;EACzD,aAAa,EAAEA,SAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC;EACnD,SAAS,EAAEA,SAAC,CAAC,eAAe,EAAE,qBAAqB,CAAC;AACrD,EAAA;AACD,CAAA;;AAEA;;AAEC;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;;;;;AAKA;AACA;;AAEA;;;AAGD,aAAe;CACd,IAAI,EAAE,uBAAuB;;AAE7B,CAAA,UAAU,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY;;AAEvE,CAAA,MAAM,EAAE,CAAC,YAAY,CAAC;;AAEtB,CAAA,MAAM,EAAE;AACP,EAAA,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,KAAK;EAC5C;;AAED,CAAA,KAAK,EAAE;AACN;;;;;;;;;;;;AAYA,EAAA,OAAO,EAAE;GACR,IAAI,EAAE,MAAM;AACZ,GAAA,OAAO,EAAE,OAAO,EAAE,CAAC;GACnB;;AAED;AACA,EAAA,QAAQ,EAAE;AACT,GAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;GACtB,OAAO,EAAE,EAAE;GACX;;;AAGD,EAAA,QAAQ,EAAE;AACT,GAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;GACtB,OAAO,EAAE,EAAE;GACX;;;AAGD,EAAA,MAAM,EAAE;AACP,GAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;GACtB,OAAO,EAAE,EAAE;GACX;EACD;;AAED,CAAA,IAAI,GAAG;EACN,GAAI,IAAG,EAAA;AACP,EAAA,OAAO;AACN,GAAA,QAAQ,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;GACpC,OAAO,EAAE,IAAI;GACb,MAAM,EAAE,KAAK;GACb,OAAO,EAAE,IAAI;AACb,GAAA,YAAY,EAAE,EAAE;AAChB,GAAA,WAAW,EAAE,EAAE;GACf,KAAK,EAAE,IAAI;AACX,GAAA,KAAK,EAAE,EAAE;GACT,SAAS,EAAE,EAAE;AACd,GAAA;EACA;;AAED,CAAA,QAAQ,EAAE;;AAET,EAAA,MAAM,GAAG;AACR,GAAA,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;GAC9E;;;EAGD,qBAAqB,GAAG;AACvB,GAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAW,KAAM,SAAQ;GAC9C;;;EAGD,SAAS,GAAG;AACX,GAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClB,IAAA,OAAO,IAAG;AACX,IAAA;AACA,GAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAM,IAAK,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAI,IAAG,GAAG,CAAC,SAAQ,KAAM,IAAI,CAAC,OAAO,CAAA,IAAK,IAAG;GAChG;;;EAGD,QAAQ,GAAG;GACV,MAAM,GAAE,GAAI,IAAI,CAAC,SAAS,EAAE,KAAG;AAC/B,GAAA,IAAI,CAAC,GAAG,EAAE;AACT,IAAA,OAAO,EAAC;AACT,IAAA;GACA,MAAM,GAAE,GAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAA;AACvD,GAAA,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,YAAY,GAAG,CAAC,GAAG,CAAE,KAAI,EAAE,EAAE;IACpD,OAAO,GAAG,CAAC,GAAG,CAAA;AACf,IAAA;GACA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;GAC/D;;;EAGD,QAAQ,GAAG;GACV,MAAM,IAAG,GAAI,IAAI,CAAC,OAAO,EAAE,KAAG;AAC9B,GAAA,MAAM,KAAI,GAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAM,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAM,IAAK,EAAE,EAAE,MAAM,EAAA;GAChF,IAAI,CAAC,IAAK,IAAG,OAAO,IAAG,KAAM,QAAO,IAAK,CAAC,IAAI,CAAC,SAAS,EAAE,KAAM,GAAE,CAAC,CAAC,EAAE;AACrE,IAAA,OAAO,IAAG;AACX,IAAA;AACA,GAAA,MAAM,IAAG,GAAI,IAAI,CAAC,GAAE,GAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,IAAK,IAAI,CAAC,IAAG,IAAK,EAAE,EAAA;GAC7E,IAAI,IAAK,KAAI,EAAE,EAAE;AAChB,IAAA,OAAO,IAAG;AACX,IAAA;AACA,GAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAK,EAAA;GACxF;;;AAGD,EAAA,OAAO,GAAG;AACT,GAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAQ,IAAG,IAAG;GACnC;;;AAGD,EAAA,aAAa,GAAG;AACf,GAAA,MAAM,GAAI,GAAE,IAAI,CAAC,OAAO,EAAE,MAAO,IAAG,GAAC;GACrC,MAAM,GAAE,GAAI,GAAC;AACb,GAAA,KAAK,MAAM,GAAI,IAAG,CAAC,oBAAoB,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE;AACvE,IAAA,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,YAAY,GAAG,CAAC,GAAG,CAAE,KAAI,EAAE,EAAE;AACpD,KAAA,GAAG,CAAC,GAAG,CAAA,GAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAA;AACrC,KAAA;AACD,IAAA;AACA,GAAA,OAAO,GAAE;GACT;;AAED;EACA,QAAQ,GAAG;GACV,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACnD,KAAC,GAAG,CAAC,CAAC,SAAS,MAAM;KACpB,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;AAClD,KAAA,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,KAAA,GAAG,EAAE,SAAS,CAAC,GAAG;AAClB,KAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAC,CAAC,CAAA;AACF,KAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa,OAAO,CAAA;GAClD;;;AAGD,EAAA,eAAe,GAAG;GACjB,MAAM,KAAM,GAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,WAAS;GAClD,IAAI,CAAC,IAAI,CAAC,KAAI,IAAK,CAAC,KAAM,IAAG,OAAO,KAAI,KAAM,QAAQ,EAAE;AACvD,IAAA,OAAO,EAAC;AACT,IAAA;GACA,MAAM,IAAK,GAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,IAAG,KAAK,CAAC,OAAM,IAAK,GAAC;AAC3D,GAAA,OAAO,IAAG,GAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,GAAI,EAAC;GACxC;;AAED;EACA,UAAU,GAAG;GACZ,MAAM,MAAO,GAAE,GAAC;AAChB,GAAA,KAAK,MAAM,IAAK,IAAG,IAAI,CAAC,OAAO,EAAE,KAAI,IAAK,EAAE,EAAE;AAC7C,IAAA,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE;AACrB,KAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAI,IAAK,IAAI,CAAC,IAAE;AACzC,KAAA;AACD,IAAA;GACA,OAAO,MAAK;GACZ;;;EAGD,SAAS,GAAG;GACX,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;GACxD;EACD;;AAED,CAAA,KAAK,EAAE;EACN,SAAS,EAAE;AACV,GAAA,SAAS,EAAE,IAAI;AACf,GAAA,OAAO,GAAG;IACT,IAAI,CAAC,IAAI,GAAC;IACV;GACD;EACD;;AAED,CAAA,OAAO,EAAE;EACR,UAAU;AACV,EAAA,QAAQ;;AAER;;AAEC;;AAEA;;EAED,KAAK,CAAC,GAAG,EAAE;GACV,MAAM,GAAE,GAAI,IAAI,CAAC,OAAO,EAAE,MAAO,IAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAA,KAAM,QAAO,GAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAE,GAAE,GAAC;GAC/G,OAAO,GAAE,KAAM,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,aAAa,EAAE,CAAC,GAAG,CAAA;GAC/D;;AAED;AACC;AACA;;AAEA;;AAED,EAAA,aAAa,CAAC,GAAG,EAAE;GAClB,MAAM,GAAE,GAAI,GAAC;AACb,GAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAE,IAAG,MAAM,CAAC,OAAO,CAAC,GAAI,IAAG,OAAO,QAAQ,QAAO,GAAI,GAAI,GAAE,EAAE,CAAC,EAAE;IACrF,GAAG,CAAC,GAAG,CAAA,GAAI,OAAO,KAAI,KAAM,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,GAAI,MAAI;AACtE,IAAA;AACA,GAAA,OAAO,GAAE;GACT;;AAED;;AAEC;AACA;AACA;AACA;;EAED,KAAK,CAAC,QAAQ,EAAE,KAAM,GAAE,EAAE,EAAE;AAC3B,GAAA,MAAM,SAAU,GAAE,MAAM,CAAC,QAAQ,CAAA;KAC/B,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;AACpD,KAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAK,IAAK,EAAE,CAAC,EAAA;AACjD,GAAA,OAAO,oBAAoB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAO,EAAG,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;GACnK;;AAED;;AAEC;;AAEA;;;EAGD,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACxB,GAAA,IAAI;AACH,IAAA,MAAM,EAAE,IAAG,EAAI,GAAE,MAAMC,cAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAK,KAAM,SAAS,EAAA;AACnF,IAAA,OAAO,IAAK,IAAG,IAAG;AACnB,IAAA,CAAE,MAAM;AACP,IAAA,OAAO,IAAG;AACX,IAAA;GACA;;AAED;;AAEC;AACA;;;EAGD,MAAM,IAAI,GAAG;AACZ,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnB,IAAA,IAAI,CAAC,OAAQ,GAAE,MAAI;IACnB,MAAK;AACN,IAAA;AACA,GAAA,IAAI,CAAC,OAAM,GAAI,KAAG;AAClB,GAAA,IAAI,CAAC,MAAO,GAAE,MAAI;AAClB,GAAA,IAAI,CAAC,YAAW,GAAI,GAAC;AACrB,GAAA,IAAI,CAAC,WAAU,GAAI,GAAC;GACpB,IAAI,CAAC,KAAM,GAAE,GAAC;AACd,GAAA,IAAI,CAAC,SAAQ,GAAI,GAAC;AAClB,GAAA,MAAM,OAAQ,GAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAU,IAAK,oEAAoE,CAAC,EAAA;AAC7I,GAAA,IAAI,CAAC,OAAM,IAAK,OAAO,OAAM,KAAM,QAAQ,EAAE;AAC5C,IAAA,IAAI,CAAC,MAAK,GAAI,KAAG;AACjB,IAAA,IAAI,CAAC,OAAM,GAAI,KAAG;AAClB,IAAA,IAAI,CAAC,OAAQ,GAAE,MAAI;IACnB,MAAK;AACN,IAAA;AACA,GAAA,IAAI,CAAC,UAAU,QAAM;AACrB,GAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,IAAA,IAAI,CAAC,OAAQ,GAAE,MAAI;IACnB,MAAK;AACN,IAAA;AACA,GAAA,MAAM,KAAI,GAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAQ,IAAG,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAI,IAAG,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAA;AACrG,GAAA,MAAM,QAAS,GAAE,IAAI,CAAC,OAAO,EAAE,WAAU,IAAK,wCAAsC;AACpF,GAAA,MAAM,UAAU,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAA;GAC5F,MAAM,MAAO,GAAE,GAAC;GAChB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;IAC9B,IAAI,OAAO,CAAC,KAAK,CAAE,IAAG,OAAO,OAAO,CAAC,KAAK,MAAM,QAAQ,EAAE;KACzD,MAAM,CAAC,IAAI,CAAE,GAAE,OAAO,CAAC,KAAK,EAAA;AAC7B,KAAA;IACA,EAAA;GACD,IAAI,CAAC,YAAW,GAAI,OAAK;GACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAA;AACtH,GAAA,IAAI,CAAC,OAAQ,GAAE,MAAI;GACnB;;;EAGD,MAAM,kBAAkB,GAAG;AAC1B,GAAA,MAAM,SAAS,IAAI,CAAC,OAAO,EAAE,aAAW;AACxC,GAAA,IAAI,CAAC,MAAK,IAAK,CAAC,MAAM,CAAC,QAAO,IAAK,CAAC,MAAM,CAAC,MAAM,EAAE;IAClD,MAAK;AACN,IAAA;GACA,MAAM,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAI,IAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAE,EAAG,EAAA;AAC7M,GAAA,MAAM,IAAG,GAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,OAAQ,IAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,GAAI,IAAK,GAAE,EAAE,EAAA;AAC3F,GAAA,IAAI,CAAC,WAAU,GAAI,gBAAgB,CAAC,IAAI,EAAA;GACxC;;;AAGD,EAAA,MAAM,SAAS,GAAG;AACjB,GAAA,MAAM,SAAS,IAAI,CAAC,OAAO,EAAE,YAAU;AACvC,GAAA,IAAI,CAAC,KAAM,GAAE,KAAG;GAChB,IAAI,CAAC,MAAK,IAAK,CAAC,MAAM,CAAC,GAAG,EAAE;IAC3B,MAAK;AACN,IAAA;GACA,MAAM,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;GACnD,IAAI,CAAC,KAAI,GAAI,IAAG,IAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAE,GAAE,IAAK,GAAE,KAAG;GAC3D;;AAED;AACC;AACA;AACA;;;EAGD,MAAM,cAAc,CAAC,KAAK,EAAE;AAC3B,GAAA,MAAM,KAAI,GAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAS,GAAI,GAAC;GACnF,MAAM,KAAM,GAAE,GAAC;GACf,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK;IAClD,IAAI,CAAC,IAAG,IAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;KAC5B,MAAK;AACN,KAAA;AACA,IAAA,MAAM,OAAQ,GAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAA;IACjG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC1B,KAAA,MAAM,MAAK,GAAI,IAAI,CAAC,IAAG,GAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAE,GAAE,OAAO,CAAC,CAAC,EAAA;AACtE,KAAA,IAAI,MAAO,IAAG,OAAO,MAAK,KAAM,QAAQ,EAAE;AACzC,MAAA,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA,GAAI,OAAK;AAClC,MAAA;KACA,EAAA;AACF,IAAC,CAAC,EAAA;AACF,GAAA,IAAI,CAAC,KAAM,GAAE,MAAI;GACjB;;AAED;EACA,MAAM,kBAAkB,GAAG;AAC1B,GAAA,MAAM,IAAK,GAAE,IAAI,CAAC,OAAO,EAAE,eAAa;GACxC,IAAI,CAAC,IAAG,IAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;IAC5B,MAAK;AACN,IAAA;GACA,MAAM,IAAK,GAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;GACtD,MAAM,OAAO,IAAI,CAAC,IAAK,GAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAE,GAAE,KAAG;AACxD,GAAA,IAAI,CAAC,SAAQ,GAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAG,GAAI,GAAC;GAC/C;;AAED;;AAEC;AACA;;;AAGD,EAAA,YAAY,CAAC,KAAK,EAAE;AACnB,GAAA,MAAM,KAAI,GAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAS,GAAI,GAAC;AACnF,GAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;IACjC,MAAM,MAAO,GAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAA;IACvD,IAAI,CAAC,MAAM,EAAE;AACZ,KAAA,OAAO,EAAC;AACT,KAAA;IACA,OAAO,eAAe,CAAC,IAAI,CAAC,KAAI,IAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAClH,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAG,KAAM,EAAE,CAAA;GAC/B;;AAED;;;AAGC;AACA;;AAEA;;EAED,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE;GAC7B,IAAI,CAAC,eAAe,OAAO,WAAY,KAAI,QAAQ,EAAE;IACpD,OAAO,MAAK;AACb,IAAA;AACA,GAAA,MAAM,GAAI,GAAE,EAAE,GAAG,MAAO,GAAA;GACxB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAE,IAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACvD,IAAA,MAAM,MAAM,MAAM,CAAC,KAAK,EAAA;AACxB,IAAA,IAAI,OAAO,GAAI,KAAI,QAAO,IAAK,CAAC,GAAG,EAAE;AACpC,KAAA,QAAO;AACR,KAAA;IACA,MAAM,GAAI,GAAE,GAAG,CAAC,GAAG,CAAE,IAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAA;IAC3D,IAAI,OAAO,GAAE,KAAM,QAAQ,EAAE;AAC5B,KAAA,GAAG,CAAC,KAAK,CAAE,GAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAA;AAClC,KAAA;AACD,IAAA;AACA,GAAA,OAAO,GAAE;GACT;;AAED;;;AAGC;AACA;AACA;;AAED,EAAA,WAAW,CAAC,KAAK,EAAE;GAClB,MAAM,UAAU,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAM;AACjD,GAAA,IAAI,CAAC,KAAK,EAAE,SAAQ,IAAK,CAAC,IAAI,CAAC,KAAM,KAAI,OAAM,IAAK,IAAI,CAAC,KAAK,CAAC,MAAK,KAAM,OAAO,CAAC,EAAE;IACnF,OAAO,KAAI;AACZ,IAAA;AACA,GAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAE,KAAI,KAAK,CAAC,SAAS,CAAA;GAC1E;;AAED;AACC;AACA;AACA;AACA;;EAED,MAAM,CAAC,KAAK,EAAE;AACb,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACrB,IAAA,OAAO,EAAC;AACT,IAAA;AACA,GAAA,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAM,IAAG,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAA,KAAM,KAAK,CAAC,SAAS,EAAA;AAC3F,GAAA,OAAO,OAAO,EAAE,KAAM,IAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAE,IAAG,KAAK,CAAC,SAAQ;GAC3E;;AAED;AACC;AACA;AACA;AACA;;AAED,EAAA,aAAa,CAAC,KAAK,EAAE;AACpB,GAAA,MAAM,IAAG,GAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAQ,IAAK,KAAK,CAAC,UAAS,IAAK,EAAE,CAAE,IAAG,GAAC;GAC7E,IAAI,IAAK,KAAI,EAAE,EAAE;AAChB,IAAA,OAAO,EAAC;AACT,IAAA;AACA,GAAA,MAAM,GAAI,GAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAQ,IAAG,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,cAAc,IAAI,EAAA;AAC3F,GAAA,OAAO,GAAE,GAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,IAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAG,IAAK,IAAI,CAAA;GACtE;;AAED;;AAEC;AACA;AACA;;EAED,MAAM,CAAC,KAAK,EAAE;GACb,OAAO,KAAK,CAAC,WAAU,IAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,KAAK,CAAC,UAAS,IAAK,KAAK,CAAC,SAAQ,IAAK,EAAC;GAChH;;AAED;AACC;AACA;AACA;AACA;;EAED,gBAAgB,CAAC,KAAK,EAAE;AACvB,GAAA,MAAM,IAAG,GAAI,IAAI,CAAC,OAAO,EAAE,cAAe,IAAG,GAAC;GAC9C,MAAM,EAAE,IAAI,EAAE,QAAS,EAAA,GAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,SAAQ,IAAK,KAAK,CAAC,UAAS,IAAK,EAAE,EAAE,IAAI,EAAA;AAC3G,GAAA,IAAI,IAAI,CAAC,MAAK,KAAM,KAAK,QAAQ,CAAC,MAAK,KAAM,CAAC,EAAE;AAC/C,IAAA,OAAO,EAAC;AACT,IAAA;GACA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC1B,IAAA,OAAOC,eAAC,CAAC,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAA;AAC/E,IAAA;AACA,GAAA,IAAI,IAAI,CAAC,MAAK,KAAM,CAAC,EAAE;AACtB,IAAA,OAAOA,eAAC,CAAC,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAA;AAC3F,IAAA;GACA,OAAOF,SAAC,CAAC,eAAe,EAAE,kCAAkC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAK,EAAG,CAAA;GAC9G;;AAED;AACC;AACA;AACA;;;AAGD,EAAA,aAAa,CAAC,KAAK,EAAE;AACpB,GAAA,MAAM,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAA;GAChD,IAAI,CAAC,MAAM,EAAE;AACZ,IAAA,OAAO,EAAC;AACT,IAAA;AACA,GAAA,OAAO,CAAC,MAAM,CAAC,UAAS,IAAK,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAE,EAAG,CAAC,CAAA;GAChJ;;AAED;AACC;AACA;;AAEA;;EAED,WAAW,CAAC,SAAS,EAAE;AACtB,GAAA,MAAM,IAAK,GAAE,SAAS,CAAC,aAAa,SAAS,CAAC,MAAI;AAClD,GAAA,MAAM,GAAI,GAAE,IAAI,CAAC,OAAO,EAAE,MAAO,IAAG,GAAC;GACrC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAO,KAAI,oBAAoB,EAAE;IAChE,OAAO,GAAG,CAAC,mBAAkB;AAC5B,OAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAA;OACpEA,SAAC,CAAC,eAAe,EAAE,kEAAkE,EAAE,EAAE,KAAK,EAAE,IAAK,EAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAI,EAAG,CAAA;AACxI,IAAA;AACA,GAAA,OAAO,GAAG,CAAC,YAAW;MACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAA;AAC/D,MAAEA,SAAC,CAAC,eAAe,EAAE,kCAAkC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAA;GACvG;EACD;AACF;;;;"}
|
|
@@ -1,53 +1,82 @@
|
|
|
1
|
-
import { resolveComponent, openBlock, createElementBlock, createBlock,
|
|
1
|
+
import { resolveComponent, openBlock, createElementBlock, createBlock, createElementVNode, toDisplayString, createCommentVNode, createVNode, createTextVNode, Fragment, renderList, withCtx, resolveDynamicComponent, normalizeClass } from 'vue';
|
|
2
2
|
|
|
3
3
|
const _hoisted_1 = {
|
|
4
4
|
class: "cn-object-parties",
|
|
5
5
|
"data-testid": "cn-object-parties"
|
|
6
6
|
};
|
|
7
|
-
const _hoisted_2 =
|
|
8
|
-
|
|
7
|
+
const _hoisted_2 = {
|
|
8
|
+
key: 2,
|
|
9
|
+
class: "cn-object-parties__main-card",
|
|
10
|
+
"data-testid": "cn-object-parties-main-card"
|
|
11
|
+
};
|
|
12
|
+
const _hoisted_3 = ["data-party"];
|
|
9
13
|
const _hoisted_4 = {
|
|
14
|
+
class: "cn-object-parties__main-initials",
|
|
15
|
+
"aria-hidden": "true",
|
|
16
|
+
"data-testid": "cn-object-parties-main-initials"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_5 = { class: "cn-object-parties__main-text" };
|
|
19
|
+
const _hoisted_6 = {
|
|
20
|
+
class: "cn-object-parties__main-name",
|
|
21
|
+
"data-testid": "cn-object-parties-main-name"
|
|
22
|
+
};
|
|
23
|
+
const _hoisted_7 = {
|
|
24
|
+
key: 0,
|
|
25
|
+
class: "cn-object-parties__muted cn-object-parties__main-role",
|
|
26
|
+
"data-testid": "cn-object-parties-main-role"
|
|
27
|
+
};
|
|
28
|
+
const _hoisted_8 = {
|
|
29
|
+
key: 1,
|
|
30
|
+
class: "cn-object-parties__muted",
|
|
31
|
+
"data-testid": "cn-object-parties-main-none"
|
|
32
|
+
};
|
|
33
|
+
const _hoisted_9 = ["href"];
|
|
34
|
+
const _hoisted_10 = ["href"];
|
|
35
|
+
const _hoisted_11 = ["data-source"];
|
|
36
|
+
const _hoisted_12 = { class: "cn-object-parties__accepted-label" };
|
|
37
|
+
const _hoisted_13 = {
|
|
10
38
|
key: 0,
|
|
11
39
|
class: "cn-object-parties__muted"
|
|
12
40
|
};
|
|
13
|
-
const
|
|
41
|
+
const _hoisted_14 = {
|
|
14
42
|
key: 1,
|
|
15
43
|
class: "cn-object-parties__verdicts",
|
|
16
44
|
"data-testid": "cn-object-parties-verdicts"
|
|
17
45
|
};
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
46
|
+
const _hoisted_15 = ["data-role", "aria-labelledby"];
|
|
47
|
+
const _hoisted_16 = { class: "cn-object-parties__list" };
|
|
48
|
+
const _hoisted_17 = ["data-party"];
|
|
49
|
+
const _hoisted_18 = { class: "cn-object-parties__name" };
|
|
50
|
+
const _hoisted_19 = {
|
|
23
51
|
key: 0,
|
|
24
52
|
class: "cn-status-badge cn-status-badge--primary",
|
|
25
53
|
"data-testid": "cn-object-parties-primary"
|
|
26
54
|
};
|
|
27
|
-
const
|
|
55
|
+
const _hoisted_20 = {
|
|
28
56
|
key: 1,
|
|
29
57
|
class: "cn-object-parties__muted"
|
|
30
58
|
};
|
|
31
|
-
const
|
|
59
|
+
const _hoisted_21 = {
|
|
32
60
|
key: 2,
|
|
33
61
|
class: "cn-status-badge cn-status-badge--warning",
|
|
34
62
|
"data-testid": "cn-object-parties-not-accepted"
|
|
35
63
|
};
|
|
36
|
-
const
|
|
64
|
+
const _hoisted_22 = {
|
|
37
65
|
key: 3,
|
|
38
66
|
class: "cn-object-parties__muted"
|
|
39
67
|
};
|
|
40
|
-
const
|
|
68
|
+
const _hoisted_23 = {
|
|
41
69
|
key: 4,
|
|
42
70
|
class: "cn-object-parties__muted",
|
|
43
71
|
"data-testid": "cn-object-parties-represented"
|
|
44
72
|
};
|
|
45
|
-
const
|
|
46
|
-
const
|
|
73
|
+
const _hoisted_24 = ["data-party-documents"];
|
|
74
|
+
const _hoisted_25 = ["data-effect", "title"];
|
|
47
75
|
|
|
48
76
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
49
77
|
const _component_NcLoadingIcon = resolveComponent("NcLoadingIcon");
|
|
50
78
|
const _component_NcEmptyContent = resolveComponent("NcEmptyContent");
|
|
79
|
+
const _component_EmailOutline = resolveComponent("EmailOutline");
|
|
51
80
|
const _component_NcNoteCard = resolveComponent("NcNoteCard");
|
|
52
81
|
|
|
53
82
|
return (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
@@ -63,123 +92,164 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
63
92
|
description: $options.label('failedDetail'),
|
|
64
93
|
"data-testid": "cn-object-parties-failed"
|
|
65
94
|
}, null, 8 /* PROPS */, ["name", "description"]))
|
|
66
|
-
: ($options.
|
|
67
|
-
? (openBlock(),
|
|
68
|
-
|
|
69
|
-
name: $options.label('empty'),
|
|
70
|
-
description: $options.label('emptyDetail'),
|
|
71
|
-
"data-testid": "cn-object-parties-empty"
|
|
72
|
-
}, null, 8 /* PROPS */, ["name", "description"]))
|
|
73
|
-
: (openBlock(), createElementBlock(Fragment, { key: 3 }, [
|
|
74
|
-
($data.kinds)
|
|
95
|
+
: ($options.isPrimaryPresentation)
|
|
96
|
+
? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
97
|
+
($options.mainParty)
|
|
75
98
|
? (openBlock(), createElementBlock("div", {
|
|
76
99
|
key: 0,
|
|
77
|
-
class: "cn-object-
|
|
78
|
-
"data-
|
|
79
|
-
"data-testid": "cn-object-parties-
|
|
100
|
+
class: "cn-object-parties__main",
|
|
101
|
+
"data-party": $options.mainParty.partyUuid,
|
|
102
|
+
"data-testid": "cn-object-parties-main"
|
|
80
103
|
}, [
|
|
81
|
-
createElementVNode("span",
|
|
82
|
-
(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
default: withCtx(() => [
|
|
104
|
-
createElementVNode("strong", null, toDisplayString(verdict.label), 1 /* TEXT */),
|
|
105
|
-
createElementVNode("span", null, toDisplayString(verdict.sentence), 1 /* TEXT */)
|
|
106
|
-
]),
|
|
107
|
-
_: 2 /* DYNAMIC */
|
|
108
|
-
}, 1032 /* PROPS, DYNAMIC_SLOTS */, ["type", "data-effect"]))
|
|
109
|
-
}), 128 /* KEYED_FRAGMENT */))
|
|
110
|
-
]))
|
|
104
|
+
createElementVNode("span", _hoisted_4, toDisplayString($options.initialsOf($options.nameOf($options.mainParty))), 1 /* TEXT */),
|
|
105
|
+
createElementVNode("span", _hoisted_5, [
|
|
106
|
+
createElementVNode("strong", _hoisted_6, toDisplayString($options.nameOf($options.mainParty)), 1 /* TEXT */),
|
|
107
|
+
($options.mainRole)
|
|
108
|
+
? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString($options.mainRole), 1 /* TEXT */))
|
|
109
|
+
: createCommentVNode("v-if", true)
|
|
110
|
+
])
|
|
111
|
+
], 8 /* PROPS */, _hoisted_3))
|
|
112
|
+
: (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString($options.label('noPrimary')), 1 /* TEXT */)),
|
|
113
|
+
($options.mainParty && $options.mainParty.email)
|
|
114
|
+
? (openBlock(), createElementBlock("a", {
|
|
115
|
+
key: 2,
|
|
116
|
+
class: "cn-object-parties__main-email",
|
|
117
|
+
href: `mailto:${$options.mainParty.email}`,
|
|
118
|
+
"data-testid": "cn-object-parties-main-email"
|
|
119
|
+
}, [
|
|
120
|
+
createVNode(_component_EmailOutline, {
|
|
121
|
+
size: 16,
|
|
122
|
+
"aria-hidden": "true"
|
|
123
|
+
}),
|
|
124
|
+
createTextVNode(toDisplayString($options.mainParty.email), 1 /* TEXT */)
|
|
125
|
+
], 8 /* PROPS */, _hoisted_9))
|
|
111
126
|
: createCommentVNode("v-if", true),
|
|
112
|
-
(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
(
|
|
139
|
-
|
|
140
|
-
:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
127
|
+
($options.footLink)
|
|
128
|
+
? (openBlock(), createElementBlock("a", {
|
|
129
|
+
key: 3,
|
|
130
|
+
class: "cn-object-parties__main-link",
|
|
131
|
+
href: $options.footLink.href,
|
|
132
|
+
"data-testid": "cn-object-parties-main-link"
|
|
133
|
+
}, toDisplayString($options.footLink.label), 9 /* TEXT, PROPS */, _hoisted_10))
|
|
134
|
+
: createCommentVNode("v-if", true)
|
|
135
|
+
]))
|
|
136
|
+
: ($options.groups.length === 0)
|
|
137
|
+
? (openBlock(), createBlock(_component_NcEmptyContent, {
|
|
138
|
+
key: 3,
|
|
139
|
+
name: $options.label('empty'),
|
|
140
|
+
description: $options.label('emptyDetail'),
|
|
141
|
+
"data-testid": "cn-object-parties-empty"
|
|
142
|
+
}, null, 8 /* PROPS */, ["name", "description"]))
|
|
143
|
+
: (openBlock(), createElementBlock(Fragment, { key: 4 }, [
|
|
144
|
+
($data.kinds)
|
|
145
|
+
? (openBlock(), createElementBlock("div", {
|
|
146
|
+
key: 0,
|
|
147
|
+
class: "cn-object-parties__accepted",
|
|
148
|
+
"data-source": $data.kinds.source,
|
|
149
|
+
"data-testid": "cn-object-parties-accepted"
|
|
150
|
+
}, [
|
|
151
|
+
createElementVNode("span", _hoisted_12, toDisplayString($options.label('accepted')), 1 /* TEXT */),
|
|
152
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($data.kinds.kinds, (kind, index) => {
|
|
153
|
+
return (openBlock(), createElementBlock("span", {
|
|
154
|
+
key: $options.kindCode(kind),
|
|
155
|
+
class: "cn-status-badge cn-status-badge--default cn-object-parties__accepted-kind",
|
|
156
|
+
"data-testid": "cn-object-parties-accepted-kind"
|
|
157
|
+
}, toDisplayString(index + 1) + ". " + toDisplayString(kind.label || $options.kindCode(kind)), 1 /* TEXT */))
|
|
158
|
+
}), 128 /* KEYED_FRAGMENT */)),
|
|
159
|
+
($options.kindsSourceText)
|
|
160
|
+
? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString($options.kindsSourceText), 1 /* TEXT */))
|
|
161
|
+
: createCommentVNode("v-if", true)
|
|
162
|
+
], 8 /* PROPS */, _hoisted_11))
|
|
163
|
+
: createCommentVNode("v-if", true),
|
|
164
|
+
($options.verdicts.length > 0)
|
|
165
|
+
? (openBlock(), createElementBlock("div", _hoisted_14, [
|
|
166
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.verdicts, (verdict) => {
|
|
167
|
+
return (openBlock(), createBlock(_component_NcNoteCard, {
|
|
168
|
+
key: `${verdict.party}-${verdict.key}`,
|
|
169
|
+
type: verdict.severity,
|
|
170
|
+
"data-effect": verdict.effect,
|
|
171
|
+
"data-testid": "cn-object-parties-verdict"
|
|
172
|
+
}, {
|
|
173
|
+
default: withCtx(() => [
|
|
174
|
+
createElementVNode("strong", null, toDisplayString(verdict.label), 1 /* TEXT */),
|
|
175
|
+
createElementVNode("span", null, toDisplayString(verdict.sentence), 1 /* TEXT */)
|
|
176
|
+
]),
|
|
177
|
+
_: 2 /* DYNAMIC */
|
|
178
|
+
}, 1032 /* PROPS, DYNAMIC_SLOTS */, ["type", "data-effect"]))
|
|
179
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
180
|
+
]))
|
|
181
|
+
: createCommentVNode("v-if", true),
|
|
182
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.groups, (group) => {
|
|
183
|
+
return (openBlock(), createElementBlock("section", {
|
|
184
|
+
key: group.key,
|
|
185
|
+
class: "cn-object-parties__role",
|
|
186
|
+
"data-role": group.key,
|
|
187
|
+
"aria-labelledby": `${$data.idPrefix}-${group.key}`,
|
|
188
|
+
"data-testid": "cn-object-parties-role"
|
|
189
|
+
}, [
|
|
190
|
+
(openBlock(), createBlock(resolveDynamicComponent(_ctx.innerHeadingTag), {
|
|
191
|
+
id: `${$data.idPrefix}-${group.key}`,
|
|
192
|
+
class: "cn-object-parties__role-label cn-inner-heading"
|
|
193
|
+
}, {
|
|
194
|
+
default: withCtx(() => [
|
|
195
|
+
createTextVNode(toDisplayString(group.label), 1 /* TEXT */)
|
|
196
|
+
]),
|
|
197
|
+
_: 2 /* DYNAMIC */
|
|
198
|
+
}, 1032 /* PROPS, DYNAMIC_SLOTS */, ["id"])),
|
|
199
|
+
createElementVNode("ul", _hoisted_16, [
|
|
200
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(group.parties, (party) => {
|
|
201
|
+
return (openBlock(), createElementBlock("li", {
|
|
202
|
+
key: `${group.key}-${party.partyUuid || party.contactUid}`,
|
|
203
|
+
class: "cn-object-parties__party",
|
|
204
|
+
"data-party": party.partyUuid || party.contactUid,
|
|
205
|
+
"data-testid": "cn-object-parties-party"
|
|
206
|
+
}, [
|
|
207
|
+
createElementVNode("span", _hoisted_18, toDisplayString($options.nameOf(party)), 1 /* TEXT */),
|
|
208
|
+
($options.primary && party.partyUuid === $options.primary)
|
|
209
|
+
? (openBlock(), createElementBlock("span", _hoisted_19, toDisplayString($options.label('primary')), 1 /* TEXT */))
|
|
210
|
+
: createCommentVNode("v-if", true),
|
|
211
|
+
($options.kindOf(party))
|
|
212
|
+
? (openBlock(), createElementBlock("span", _hoisted_20, toDisplayString($options.kindOf(party)), 1 /* TEXT */))
|
|
213
|
+
: createCommentVNode("v-if", true),
|
|
214
|
+
($options.notAccepted(party))
|
|
215
|
+
? (openBlock(), createElementBlock("span", _hoisted_21, toDisplayString($options.label('notAccepted')), 1 /* TEXT */))
|
|
216
|
+
: createCommentVNode("v-if", true),
|
|
217
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.extraLinesOf(party), (line, index) => {
|
|
218
|
+
return (openBlock(), createElementBlock("span", {
|
|
219
|
+
key: `line-${index}`,
|
|
163
220
|
class: "cn-object-parties__muted",
|
|
164
|
-
"data-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
"
|
|
173
|
-
|
|
174
|
-
"
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
221
|
+
"data-testid": "cn-object-parties-extra-line"
|
|
222
|
+
}, toDisplayString(line), 1 /* TEXT */))
|
|
223
|
+
}), 128 /* KEYED_FRAGMENT */)),
|
|
224
|
+
(party.email)
|
|
225
|
+
? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(party.email), 1 /* TEXT */))
|
|
226
|
+
: createCommentVNode("v-if", true),
|
|
227
|
+
($options.representedBy(party))
|
|
228
|
+
? (openBlock(), createElementBlock("span", _hoisted_23, toDisplayString($options.label('representedBy')) + ": " + toDisplayString($options.representedBy(party)), 1 /* TEXT */))
|
|
229
|
+
: createCommentVNode("v-if", true),
|
|
230
|
+
($options.correspondenceOf(party))
|
|
231
|
+
? (openBlock(), createElementBlock("span", {
|
|
232
|
+
key: 5,
|
|
233
|
+
class: "cn-object-parties__muted",
|
|
234
|
+
"data-party-documents": party.partyUuid || party.contactUid,
|
|
235
|
+
"data-testid": "cn-object-parties-documents"
|
|
236
|
+
}, toDisplayString($options.correspondenceOf(party)), 9 /* TEXT, PROPS */, _hoisted_24))
|
|
237
|
+
: createCommentVNode("v-if", true),
|
|
238
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.indicatorsFor(party), (indicator) => {
|
|
239
|
+
return (openBlock(), createElementBlock("span", {
|
|
240
|
+
key: `${party.partyUuid}-${indicator.key}`,
|
|
241
|
+
class: normalizeClass(["cn-status-badge cn-status-badge--default", `cn-object-parties__indicator--${indicator.severity}`]),
|
|
242
|
+
"data-effect": indicator.effect,
|
|
243
|
+
title: indicator.verdict,
|
|
244
|
+
"data-testid": "cn-object-parties-indicator"
|
|
245
|
+
}, toDisplayString(indicator.label) + " · " + toDisplayString(indicator.verdict), 11 /* TEXT, CLASS, PROPS */, _hoisted_25))
|
|
246
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
247
|
+
], 8 /* PROPS */, _hoisted_17))
|
|
248
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
249
|
+
])
|
|
250
|
+
], 8 /* PROPS */, _hoisted_15))
|
|
251
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
252
|
+
], 64 /* STABLE_FRAGMENT */))
|
|
183
253
|
]))
|
|
184
254
|
}
|
|
185
255
|
|