@sneat/extension-debtus-ui 0.2.2 → 0.2.3
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/fesm2022/{sneat-extension-debtus-ui-new-transfer-page.component-YaGgYqKB.mjs → sneat-extension-debtus-ui-new-transfer-page.component-DUkdGP92.mjs} +10 -4
- package/fesm2022/sneat-extension-debtus-ui-new-transfer-page.component-DUkdGP92.mjs.map +1 -0
- package/fesm2022/sneat-extension-debtus-ui-source-obligations-page.component-BJ6Oe79f.mjs +992 -0
- package/fesm2022/sneat-extension-debtus-ui-source-obligations-page.component-BJ6Oe79f.mjs.map +1 -0
- package/fesm2022/sneat-extension-debtus-ui-source-repayment-form-CZ7EtdUp.mjs +30 -0
- package/fesm2022/sneat-extension-debtus-ui-source-repayment-form-CZ7EtdUp.mjs.map +1 -0
- package/fesm2022/sneat-extension-debtus-ui-transfer-details-page.component-BSDIDPAb.mjs +254 -0
- package/fesm2022/sneat-extension-debtus-ui-transfer-details-page.component-BSDIDPAb.mjs.map +1 -0
- package/fesm2022/sneat-extension-debtus-ui.mjs +153 -6
- package/fesm2022/sneat-extension-debtus-ui.mjs.map +1 -1
- package/package.json +7 -4
- package/types/sneat-extension-debtus-ui.d.ts +31 -2
- package/fesm2022/sneat-extension-debtus-ui-new-transfer-page.component-YaGgYqKB.mjs.map +0 -1
- package/fesm2022/sneat-extension-debtus-ui-source-obligations-page.component-6E9_pHCq.mjs +0 -423
- package/fesm2022/sneat-extension-debtus-ui-source-obligations-page.component-6E9_pHCq.mjs.map +0 -1
- package/fesm2022/sneat-extension-debtus-ui-transfer-details-page.component-B6iQS1YJ.mjs +0 -105
- package/fesm2022/sneat-extension-debtus-ui-transfer-details-page.component-B6iQS1YJ.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sneat-extension-debtus-ui-transfer-details-page.component-BSDIDPAb.mjs","sources":["../../../../../../libs/extensions/debtus/ui/src/lib/pages/transfer-details/transfer-details-page.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/pages/transfer-details/transfer-details-page.component.html"],"sourcesContent":["import { DatePipe } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Component, DestroyRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport {\n IonBackButton,\n IonBadge,\n IonButton,\n IonButtons,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardTitle,\n IonContent,\n IonHeader,\n IonIcon,\n IonItem,\n IonLabel,\n IonList,\n IonNote,\n IonSpinner,\n IonInput,\n IonSelect,\n IonSelectOption,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular';\nimport {\n DEBTUS_SERVICE,\n DEBTUS_TRANSFER_DUE_DATE_CONTRACT_VERSION,\n DEBTUS_TRANSFER_DUE_DATE_SERVICE,\n type IDebtusTransferDueDateV1,\n IDebtusTransfer,\n formatAmount,\n} from '@sneat/extension-debtus-contract';\nimport {\n LISTUS_SERVICE,\n type IListBrief,\n} from '@sneat/extension-listus-contract';\nimport {\n SpaceComponentBaseParams,\n SpacePageBaseComponent,\n} from '@sneat/space-components';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport {\n catchError,\n combineLatest,\n first,\n forkJoin,\n map,\n of,\n switchMap,\n throwError,\n} from 'rxjs';\nimport {\n formatMinorAmountForInput,\n parseRepaymentMajorAmount,\n} from '../source-obligations/source-repayment-form';\n\n// Transfer detail / receipt — amount, parties, date, note, and its effect on\n// the balance. Mirrors the bot's receipt. Offers a settle-up entry.\n@Component({\n selector: 'sneat-debtus-transfer-details-page',\n templateUrl: './transfer-details-page.component.html',\n imports: [\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonTitle,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardContent,\n IonList,\n IonItem,\n IonLabel,\n IonNote,\n IonBadge,\n IonButton,\n IonIcon,\n IonSpinner,\n IonInput,\n IonSelect,\n IonSelectOption,\n DatePipe,\n SpaceServiceModule,\n ],\n providers: [\n { provide: ClassName, useValue: 'TransferDetailsPageComponent' },\n SpaceComponentBaseParams,\n ],\n})\nexport class TransferDetailsPageComponent extends SpacePageBaseComponent {\n private readonly debtusService = inject(DEBTUS_SERVICE);\n private readonly router = inject(Router);\n private readonly dueService = inject(DEBTUS_TRANSFER_DUE_DATE_SERVICE);\n private readonly listusService = inject(LISTUS_SERVICE);\n private readonly componentDestroyRef = inject(DestroyRef);\n\n protected readonly $loading = signal(true);\n protected readonly $error = signal<string | undefined>(undefined);\n protected readonly $transfer = signal<IDebtusTransfer | undefined>(undefined);\n protected readonly $dueTask = signal<IDebtusTransferDueDateV1 | undefined>(\n undefined,\n );\n protected readonly $needsDebtusAdoption = signal(false);\n protected readonly $todoLists = signal<\n readonly { id: string; brief: IListBrief }[]\n >([]);\n protected readonly $dueDate = signal('');\n protected readonly $dueTitle = signal('Pay debt');\n protected readonly $todoListID = signal('');\n protected readonly $repaymentAmount = signal('');\n protected readonly $savingDue = signal(false);\n protected readonly $repaying = signal(false);\n protected readonly $actionError = signal<string | undefined>(undefined);\n protected readonly $actionSuccess = signal<string | undefined>(undefined);\n private readonly $repaymentOperationKey = signal<string | undefined>(\n undefined,\n );\n\n protected readonly formatAmount = formatAmount;\n protected readonly formatMinorAmountForDisplay = formatMinorAmountForInput;\n\n constructor() {\n super();\n this.$defaultBackUrlSpacePath.set('debts');\n // A transfer just created by the new-transfer/settle-up pages is handed\n // over via router `state` (it survives reloads through history.state).\n // Prefer it to avoid an extra read immediately after creation. A cold load\n // retrieves the same persisted transfer through the Debtus API.\n const stateTransfer = (this.router.getCurrentNavigation()?.extras?.state ??\n history.state)?.['transfer'] as IDebtusTransfer | undefined;\n combineLatest([this.spaceIDChanged$, this.route.paramMap])\n .pipe(\n switchMap(([spaceID, params]) => {\n const transferID = params.get('transferID') ?? '';\n this.$loading.set(true);\n this.$error.set(undefined);\n if (stateTransfer?.id === transferID) {\n return of({ spaceID: spaceID ?? '', transfer: stateTransfer });\n }\n return this.debtusService\n .getTransfer(spaceID ?? '', transferID)\n .pipe(map((transfer) => ({ spaceID: spaceID ?? '', transfer })));\n }),\n switchMap(({ spaceID, transfer }) =>\n forkJoin({\n transfer: of(transfer),\n dueTask: this.dueService\n .getTransferDueDate(spaceID, transfer.id)\n .pipe(\n catchError((error: unknown) => {\n if (\n error instanceof HttpErrorResponse &&\n error.status === 403\n ) {\n this.$needsDebtusAdoption.set(true);\n return of(undefined);\n }\n return error instanceof HttpErrorResponse &&\n error.status === 404\n ? of(undefined)\n : throwError(() => error);\n }),\n ),\n lists: this.listusService.observeSpaceLists(spaceID).pipe(first()),\n }),\n ),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: ({ transfer, dueTask, lists }) => {\n this.$transfer.set(transfer);\n this.$dueTask.set(dueTask);\n this.$dueDate.set(\n dueTask?.dueDate ?? transfer.dueOn?.slice(0, 10) ?? '',\n );\n this.$dueTitle.set(`Pay ${transfer.counterpartyTitle}`);\n this.$todoListID.set(dueTask?.todoListID ?? '');\n this.$repaymentAmount.set(\n dueTask ? formatMinorAmountForInput(dueTask.outstandingMinor) : '',\n );\n this.$todoLists.set(\n Object.entries(lists)\n .filter(\n ([, brief]) =>\n brief.type === 'do' && brief.status !== 'archived',\n )\n .map(([id, brief]) => ({ id, brief }))\n .sort((a, b) => a.brief.title.localeCompare(b.brief.title)),\n );\n this.$loading.set(false);\n },\n error: (err) => {\n this.$error.set('Failed to load transfer');\n this.$loading.set(false);\n this.errorLogger.logError(err, 'Failed to load debtus transfer');\n },\n });\n }\n\n protected saveDueDate(clear = false): void {\n const transfer = this.$transfer();\n if (!transfer || this.$savingDue() || (!clear && !this.$dueDate())) return;\n this.$savingDue.set(true);\n this.$actionError.set(undefined);\n this.$actionSuccess.set(undefined);\n this.dueService\n .setTransferDueDate({\n contractVersion: DEBTUS_TRANSFER_DUE_DATE_CONTRACT_VERSION,\n spaceID: this.space.id,\n transferID: transfer.id,\n title: this.$dueTitle().trim(),\n dueDate: clear ? undefined : this.$dueDate(),\n expectedRevision: this.$dueTask()?.revision ?? 0,\n operationKey: `web_${crypto.randomUUID()}`,\n todoListID: this.$todoListID() || undefined,\n })\n .pipe(takeUntilDestroyed(this.componentDestroyRef))\n .subscribe({\n next: (task) => {\n this.$dueTask.set(task);\n this.$needsDebtusAdoption.set(false);\n this.$savingDue.set(false);\n this.$dueDate.set(task.dueDate ?? '');\n this.$actionSuccess.set('Due date saved.');\n },\n error: (error) => {\n this.$savingDue.set(false);\n this.$actionError.set('We could not save this due date.');\n this.errorLogger.logError(\n error,\n 'Debtus transfer due date could not be saved',\n );\n },\n });\n }\n\n protected recordRepayment(): void {\n const transfer = this.$transfer();\n const due = this.$dueTask();\n if (!transfer || !due || this.$repaying()) return;\n let amountMinor: string;\n try {\n amountMinor = parseRepaymentMajorAmount(\n this.$repaymentAmount(),\n due.currency,\n );\n } catch {\n this.$actionError.set('Enter a valid positive repayment amount.');\n return;\n }\n this.$repaying.set(true);\n this.$actionError.set(undefined);\n this.$actionSuccess.set(undefined);\n const operationKey =\n this.$repaymentOperationKey() ?? `web_${crypto.randomUUID()}`;\n this.$repaymentOperationKey.set(operationKey);\n this.dueService\n .recordTransferRepayment({\n contractVersion: DEBTUS_TRANSFER_DUE_DATE_CONTRACT_VERSION,\n spaceID: this.space.id,\n transferID: transfer.id,\n currency: due.currency,\n amountMinor,\n repaidAt: new Date().toISOString(),\n operationKey,\n })\n .pipe(takeUntilDestroyed(this.componentDestroyRef))\n .subscribe({\n next: (result) => {\n this.$dueTask.set(result.dueDateTask);\n this.$repaymentAmount.set(\n formatMinorAmountForInput(result.outstandingMinor),\n );\n this.$transfer.set({\n ...transfer,\n isOutstanding: !result.fullyRepaid,\n });\n this.$repaying.set(false);\n this.$repaymentOperationKey.set(undefined);\n this.$actionSuccess.set('Repayment recorded.');\n },\n error: (error) => {\n this.$repaying.set(false);\n this.$actionError.set('We could not record this repayment.');\n this.errorLogger.logError(\n error,\n 'Debtus transfer repayment could not be recorded',\n );\n },\n });\n }\n\n protected repaymentAmountChanged(value: string | null | undefined): void {\n this.$repaymentAmount.set(value ?? '');\n this.$repaymentOperationKey.set(undefined);\n this.$actionError.set(undefined);\n }\n\n protected settleUp(): void {\n const t = this.$transfer();\n if (!t) {\n return;\n }\n this.spaceNav.navigateForwardToSpacePage(\n this.space,\n `settle-up?contactID=${t.counterpartyContactID}`,\n );\n }\n\n protected openContact(): void {\n const t = this.$transfer();\n if (!t?.counterpartyContactID) {\n return;\n }\n this.spaceNav.navigateForwardToSpacePage(\n this.space,\n `debtus-contact/${t.counterpartyContactID}`,\n );\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"$defaultBackUrl()\" />\n </ion-buttons>\n <ion-title>Transfer</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n @if ($loading()) {\n <div class=\"ion-padding ion-text-center\">\n <ion-spinner name=\"dots\" />\n </div>\n } @else if ($error()) {\n <div class=\"ion-padding\">\n <ion-note color=\"danger\">{{ $error() }}</ion-note>\n </div>\n } @else if ($transfer(); as t) {\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n {{ t.direction === 'lend' ? 'You lent' : 'You borrowed' }}\n @if (t.isReturn) {\n · return\n }\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-badge\n [color]=\"t.direction === 'lend' ? 'success' : 'warning'\"\n style=\"font-size: 1.2rem\"\n >\n {{ formatAmount(t.amount) }}\n </ion-badge>\n </ion-card-content>\n </ion-card>\n\n <ion-card>\n <ion-list lines=\"full\">\n <ion-item button (click)=\"openContact()\">\n <ion-label>\n <p>Counterparty</p>\n <h2>{{ t.counterpartyTitle }}</h2>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-label>\n <p>Date</p>\n <h2>{{ t.created | date: 'medium' }}</h2>\n </ion-label>\n </ion-item>\n @if (t.dueOn) {\n <ion-item>\n <ion-label>\n <p>Due</p>\n <h2>{{ t.dueOn | date: 'mediumDate' }}</h2>\n </ion-label>\n </ion-item>\n }\n @if (t.note) {\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <p>Note</p>\n <h2>{{ t.note }}</h2>\n </ion-label>\n </ion-item>\n }\n <ion-item>\n <ion-label>\n <p>Status</p>\n <h2>{{ t.isOutstanding ? 'Outstanding' : 'Settled' }}</h2>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <p>Effect on balance</p>\n <h2>\n @if (t.direction === 'lend') {\n {{ t.counterpartyTitle }} owes you {{ formatAmount(t.amount) }}\n } @else {\n You owe {{ t.counterpartyTitle }} {{ formatAmount(t.amount) }}\n }\n </h2>\n </ion-label>\n </ion-item>\n @if (t.counterpartySpaceID) {\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <p>Cross-space</p>\n <h2>Counterparty side is in space {{ t.counterpartySpaceID }}</h2>\n <ion-note color=\"medium\">\n Your side: {{ t.creatorSpaceID }}\n </ion-note>\n </ion-label>\n </ion-item>\n }\n </ion-list>\n </ion-card>\n\n <ion-card>\n <ion-card-header\n ><ion-card-title>Due date</ion-card-title></ion-card-header\n >\n <ion-card-content>\n @if ($needsDebtusAdoption()) {\n <ion-note color=\"medium\">\n Saving this due date will enable Debtus for this space and attach\n this historical transfer to it.\n </ion-note>\n }\n <ion-input\n label=\"Reminder title\"\n labelPlacement=\"stacked\"\n [value]=\"$dueTitle()\"\n (ionInput)=\"$dueTitle.set($any($event.detail.value) ?? '')\"\n data-testid=\"debtus-transfer-due-title\"\n />\n <ion-input\n type=\"date\"\n label=\"Due date\"\n labelPlacement=\"stacked\"\n [value]=\"$dueDate()\"\n (ionInput)=\"$dueDate.set($any($event.detail.value) ?? '')\"\n data-testid=\"debtus-transfer-due-date\"\n />\n <ion-select\n label=\"Also add to a to-do list\"\n labelPlacement=\"stacked\"\n [value]=\"$todoListID()\"\n (ionChange)=\"$todoListID.set($event.detail.value ?? '')\"\n data-testid=\"debtus-transfer-todo-list\"\n >\n <ion-select-option value=\"\">Calendar only</ion-select-option>\n @for (list of $todoLists(); track list.id) {\n <ion-select-option [value]=\"list.id\">{{\n list.brief.title\n }}</ion-select-option>\n }\n </ion-select>\n <ion-button\n expand=\"block\"\n [disabled]=\"$savingDue() || !$dueDate() || !$dueTitle().trim()\"\n (click)=\"saveDueDate()\"\n data-testid=\"debtus-transfer-save-due\"\n >\n @if ($savingDue()) {\n <ion-spinner name=\"dots\" />\n } @else {\n Save due date\n }\n </ion-button>\n @if ($dueTask()) {\n <ion-button\n fill=\"clear\"\n color=\"medium\"\n [disabled]=\"$savingDue()\"\n (click)=\"saveDueDate(true)\"\n data-testid=\"debtus-transfer-clear-due\"\n >Clear due date</ion-button\n >\n }\n </ion-card-content>\n </ion-card>\n\n @if ($dueTask(); as due) {\n <ion-card>\n <ion-card-header\n ><ion-card-title>Repayment</ion-card-title></ion-card-header\n >\n <ion-card-content>\n <ion-note\n >Outstanding: {{ due.currency }}\n {{ formatMinorAmountForDisplay(due.outstandingMinor) }}</ion-note\n >\n @if (due.state !== 'completed') {\n <ion-input\n type=\"text\"\n inputmode=\"decimal\"\n label=\"Amount\"\n labelPlacement=\"stacked\"\n [value]=\"$repaymentAmount()\"\n (ionInput)=\"repaymentAmountChanged($any($event.detail.value))\"\n data-testid=\"debtus-transfer-repayment-amount\"\n />\n <ion-button\n expand=\"block\"\n color=\"success\"\n [disabled]=\"$repaying()\"\n (click)=\"recordRepayment()\"\n data-testid=\"debtus-transfer-record-repayment\"\n >\n @if ($repaying()) {\n <ion-spinner name=\"dots\" />\n } @else {\n Record repayment\n }\n </ion-button>\n }\n </ion-card-content>\n </ion-card>\n }\n\n @if ($actionError()) {\n <ion-note class=\"ion-padding\" color=\"danger\">{{\n $actionError()\n }}</ion-note>\n }\n @if ($actionSuccess()) {\n <ion-note class=\"ion-padding\" color=\"success\">{{\n $actionSuccess()\n }}</ion-note>\n }\n\n @if (t.isOutstanding && !$dueTask()) {\n <div class=\"ion-padding\">\n <ion-button expand=\"block\" color=\"success\" (click)=\"settleUp()\">\n <ion-icon name=\"checkmark-done-outline\" slot=\"start\" />\n Settle up\n </ion-button>\n </div>\n }\n }\n</ion-content>\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, inject, input } from '@angular/core';
|
|
2
|
+
import { Component, inject, input, InjectionToken, Injectable, Injector } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { FormControl, Validators, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { IonCard, IonCardHeader, IonCardTitle, IonItem, IonLabel, IonSelect, IonSelectOption, IonInput, IonButton } from '@ionic/angular';
|
|
6
6
|
import { ErrorLogger } from '@sneat/core';
|
|
7
|
-
import { DEBTUS_SERVICE } from '@sneat/extension-debtus-contract';
|
|
7
|
+
import { DEBTUS_SERVICE, DEBTUS_TRANSFER_DUE_DATE_SERVICE } from '@sneat/extension-debtus-contract';
|
|
8
8
|
import { sneatAuthGuard } from '@sneat/auth-core';
|
|
9
|
+
import { SneatApiService } from '@sneat/api';
|
|
10
|
+
import { SPACE_NAV_SERVICE, ModuleSpaceItemService } from '@sneat/space-services';
|
|
11
|
+
import { firstValueFrom } from 'rxjs';
|
|
9
12
|
|
|
10
13
|
class MemberDebtsSummaryComponent {
|
|
11
14
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MemberDebtsSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -89,7 +92,7 @@ const spacePagesRoutes = [
|
|
|
89
92
|
path: 'source-obligations',
|
|
90
93
|
data: { title: 'Bill settlement' },
|
|
91
94
|
canActivate: [sneatAuthGuard],
|
|
92
|
-
loadComponent: () => import('./sneat-extension-debtus-ui-source-obligations-page.component-
|
|
95
|
+
loadComponent: () => import('./sneat-extension-debtus-ui-source-obligations-page.component-BJ6Oe79f.mjs').then((m) => m.SourceObligationsPageComponent),
|
|
93
96
|
},
|
|
94
97
|
{
|
|
95
98
|
path: 'debts',
|
|
@@ -109,7 +112,7 @@ const spacePagesRoutes = [
|
|
|
109
112
|
{
|
|
110
113
|
path: 'new-transfer',
|
|
111
114
|
data: { title: 'New transfer' },
|
|
112
|
-
loadComponent: () => import('./sneat-extension-debtus-ui-new-transfer-page.component-
|
|
115
|
+
loadComponent: () => import('./sneat-extension-debtus-ui-new-transfer-page.component-DUkdGP92.mjs').then((m) => m.NewTransferPageComponent),
|
|
113
116
|
},
|
|
114
117
|
{
|
|
115
118
|
path: 'settle-up',
|
|
@@ -119,13 +122,157 @@ const spacePagesRoutes = [
|
|
|
119
122
|
{
|
|
120
123
|
path: 'transfer/:transferID',
|
|
121
124
|
data: { title: 'Transfer' },
|
|
122
|
-
loadComponent: () => import('./sneat-extension-debtus-ui-transfer-details-page.component-
|
|
125
|
+
loadComponent: () => import('./sneat-extension-debtus-ui-transfer-details-page.component-BSDIDPAb.mjs').then((m) => m.TransferDetailsPageComponent),
|
|
123
126
|
},
|
|
124
127
|
];
|
|
125
128
|
|
|
129
|
+
const DEBTUS_SOURCE_RETURN_URL_BUILDER = new InjectionToken('DebtusSourceReturnUrlBuilder');
|
|
130
|
+
class DebtusSourceLinkedDateTaskNavigator {
|
|
131
|
+
spaceNav = inject(SPACE_NAV_SERVICE);
|
|
132
|
+
transferDueDates = inject(DEBTUS_TRANSFER_DUE_DATE_SERVICE, {
|
|
133
|
+
optional: true,
|
|
134
|
+
});
|
|
135
|
+
async navigateToSourceLinkedDateTask(space, task, related) {
|
|
136
|
+
const source = task.source;
|
|
137
|
+
if (this.transferDueDates &&
|
|
138
|
+
source.ownerSpaceID === space.id &&
|
|
139
|
+
source.namespace === 'debtus' &&
|
|
140
|
+
source.lineID === 'due-date' &&
|
|
141
|
+
task.actionID === 'open-transfer' &&
|
|
142
|
+
task.actionDisposition === 'navigate' &&
|
|
143
|
+
hasExactTransferDueRef(related, space.id, source.recordID)) {
|
|
144
|
+
await firstValueFrom(this.transferDueDates.getTransferDueDate(space.id, source.recordID));
|
|
145
|
+
return this.spaceNav.navigateForwardToSpacePage(space, `transfer/${source.recordID}`);
|
|
146
|
+
}
|
|
147
|
+
if (source.ownerSpaceID !== space.id ||
|
|
148
|
+
source.namespace !== 'splitus' ||
|
|
149
|
+
task.actionID !== 'open-source-obligation' ||
|
|
150
|
+
task.actionDisposition !== 'navigate') {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
const sourceID = await sourceObligationsID(source.namespace, space.id, source.recordID);
|
|
154
|
+
if (!hasExactDebtusLineRef(related, space.id, sourceID, source.lineID)) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
return this.spaceNav.navigateForwardToSpacePage(space, 'source-obligations', {
|
|
158
|
+
queryParams: {
|
|
159
|
+
sourceNamespace: source.namespace,
|
|
160
|
+
sourceRecordID: source.recordID,
|
|
161
|
+
lineID: source.lineID,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceLinkedDateTaskNavigator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
166
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceLinkedDateTaskNavigator });
|
|
167
|
+
}
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceLinkedDateTaskNavigator, decorators: [{
|
|
169
|
+
type: Injectable
|
|
170
|
+
}] });
|
|
171
|
+
class DebtusListItemSourceActionNavigator {
|
|
172
|
+
spaceNav = inject(SPACE_NAV_SERVICE);
|
|
173
|
+
injector = inject(Injector);
|
|
174
|
+
sneatApi = inject(SneatApiService);
|
|
175
|
+
transferDueDates = inject(DEBTUS_TRANSFER_DUE_DATE_SERVICE, {
|
|
176
|
+
optional: true,
|
|
177
|
+
});
|
|
178
|
+
async navigateToListItemSource(space, item) {
|
|
179
|
+
const ref = item.sourceManagement?.source;
|
|
180
|
+
if (this.transferDueDates &&
|
|
181
|
+
ref?.module === 'debtus' &&
|
|
182
|
+
ref.collection === 'transferDueTasks') {
|
|
183
|
+
const transferID = sameSpaceItemID(ref.itemID, space.id);
|
|
184
|
+
if (!transferID || ref.subPath)
|
|
185
|
+
return false;
|
|
186
|
+
const due = await firstValueFrom(this.transferDueDates.getTransferDueDate(space.id, transferID));
|
|
187
|
+
if (due.todoItemID !== item.id)
|
|
188
|
+
return false;
|
|
189
|
+
return this.spaceNav.navigateForwardToSpacePage(space, `transfer/${transferID}`);
|
|
190
|
+
}
|
|
191
|
+
if (!ref ||
|
|
192
|
+
ref.module !== 'debtus' ||
|
|
193
|
+
ref.collection !== 'sourceObligations')
|
|
194
|
+
return false;
|
|
195
|
+
const sourceID = sameSpaceItemID(ref.itemID, space.id);
|
|
196
|
+
const lineID = lineIDFromSubPath(ref.subPath);
|
|
197
|
+
if (!sourceID || !lineID)
|
|
198
|
+
return false;
|
|
199
|
+
const sourceItems = new ModuleSpaceItemService(this.injector, 'debtus', 'sourceObligations', this.sneatApi);
|
|
200
|
+
const loaded = await firstValueFrom(sourceItems.watchModuleSpaceItem(space, sourceID));
|
|
201
|
+
const receipt = loaded.dbo?.latestReceipt;
|
|
202
|
+
const source = receipt?.source;
|
|
203
|
+
if (!source ||
|
|
204
|
+
source.spaceID !== space.id ||
|
|
205
|
+
source.namespace !== 'splitus' ||
|
|
206
|
+
!receipt?.obligations?.some((line) => line.lineID === lineID) ||
|
|
207
|
+
(await sourceObligationsID(source.namespace, space.id, source.recordID)) !== sourceID)
|
|
208
|
+
return false;
|
|
209
|
+
return this.spaceNav.navigateForwardToSpacePage(space, 'source-obligations', {
|
|
210
|
+
queryParams: {
|
|
211
|
+
sourceNamespace: source.namespace,
|
|
212
|
+
sourceRecordID: source.recordID,
|
|
213
|
+
lineID,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusListItemSourceActionNavigator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
218
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusListItemSourceActionNavigator });
|
|
219
|
+
}
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusListItemSourceActionNavigator, decorators: [{
|
|
221
|
+
type: Injectable
|
|
222
|
+
}] });
|
|
223
|
+
/**
|
|
224
|
+
* Persisted Linkage keys a same-Space item either as the bare document id or
|
|
225
|
+
* as `id@spaceID` (sneat-go-core coretypes.ItemRef: a bare id is the common
|
|
226
|
+
* same-Space form). Both name the same record; an id suffixed with another
|
|
227
|
+
* Space never matches.
|
|
228
|
+
*/
|
|
229
|
+
function sameSpaceRelatedItem(items, spaceID, itemID) {
|
|
230
|
+
if (!items)
|
|
231
|
+
return undefined;
|
|
232
|
+
return items[`${itemID}@${spaceID}`] ?? items[itemID];
|
|
233
|
+
}
|
|
234
|
+
function hasExactTransferDueRef(related, spaceID, transferID) {
|
|
235
|
+
return (sameSpaceRelatedItem(related['debtus']?.['transferDueTasks'], spaceID, transferID) !== undefined);
|
|
236
|
+
}
|
|
237
|
+
function sameSpaceItemID(itemID, spaceID) {
|
|
238
|
+
const separator = itemID.lastIndexOf('@');
|
|
239
|
+
if (separator < 0)
|
|
240
|
+
return itemID;
|
|
241
|
+
return itemID.slice(separator + 1) === spaceID
|
|
242
|
+
? itemID.slice(0, separator)
|
|
243
|
+
: undefined;
|
|
244
|
+
}
|
|
245
|
+
function lineIDFromSubPath(subPath) {
|
|
246
|
+
const prefix = '/latestReceipt/obligations/@lineID=';
|
|
247
|
+
if (!subPath?.startsWith(prefix))
|
|
248
|
+
return undefined;
|
|
249
|
+
const encoded = subPath.slice(prefix.length);
|
|
250
|
+
if (!encoded || /~(?![01])/.test(encoded))
|
|
251
|
+
return undefined;
|
|
252
|
+
const lineID = encoded.replace(/~1/g, '/').replace(/~0/g, '~');
|
|
253
|
+
return `${prefix}${lineID.replace(/~/g, '~0').replace(/\//g, '~1')}` ===
|
|
254
|
+
subPath
|
|
255
|
+
? lineID
|
|
256
|
+
: undefined;
|
|
257
|
+
}
|
|
258
|
+
function hasExactDebtusLineRef(related, spaceID, sourceID, lineID) {
|
|
259
|
+
const subPath = `/latestReceipt/obligations/@lineID=${lineID.replace(/~/g, '~0').replace(/\//g, '~1')}`;
|
|
260
|
+
const item = sameSpaceRelatedItem(related['debtus']?.['sourceObligations'], spaceID, sourceID);
|
|
261
|
+
return item?.subPaths?.[subPath] !== undefined;
|
|
262
|
+
}
|
|
263
|
+
async function sourceObligationsID(namespace, spaceID, recordID) {
|
|
264
|
+
const bytes = [];
|
|
265
|
+
for (const value of ['source', namespace, spaceID, recordID]) {
|
|
266
|
+
const encoded = new TextEncoder().encode(value);
|
|
267
|
+
bytes.push((encoded.length >>> 24) & 255, (encoded.length >>> 16) & 255, (encoded.length >>> 8) & 255, encoded.length & 255, ...encoded);
|
|
268
|
+
}
|
|
269
|
+
const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', new Uint8Array(bytes)));
|
|
270
|
+
return `src_${Array.from(digest, (byte) => byte.toString(16).padStart(2, '0')).join('')}`;
|
|
271
|
+
}
|
|
272
|
+
|
|
126
273
|
/**
|
|
127
274
|
* Generated bundle index. Do not edit.
|
|
128
275
|
*/
|
|
129
276
|
|
|
130
|
-
export { MemberDebtsSummaryComponent, NewDebtFormComponent, spacePagesRoutes };
|
|
277
|
+
export { DEBTUS_SOURCE_RETURN_URL_BUILDER, DebtusListItemSourceActionNavigator, DebtusSourceLinkedDateTaskNavigator, MemberDebtsSummaryComponent, NewDebtFormComponent, spacePagesRoutes };
|
|
131
278
|
//# sourceMappingURL=sneat-extension-debtus-ui.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sneat-extension-debtus-ui.mjs","sources":["../../../../../../libs/extensions/debtus/ui/src/lib/components/member-debts-summary/member-debts-summary.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/components/member-debts-summary/member-debts-summary.component.html","../../../../../../libs/extensions/debtus/ui/src/lib/components/new-debt-form/new-debt-form.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/components/new-debt-form/new-debt-form.component.html","../../../../../../libs/extensions/debtus/ui/src/lib/pages/space-pages-routing.ts","../../../../../../libs/extensions/debtus/ui/src/sneat-extension-debtus-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'sneat-debtus-member-debts-summary',\n templateUrl: './member-debts-summary.component.html',\n})\nexport class MemberDebtsSummaryComponent {}\n","<h2>Debts</h2>\n","import { Component, inject, input } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n IonButton,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonInput,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n} from '@ionic/angular';\nimport { IContactContext } from '@sneat/extension-contactus-contract';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport {\n CurrencyCode,\n DEBTUS_SERVICE,\n ICreateDebtRecordRequest,\n} from '@sneat/extension-debtus-contract';\nimport { ISpaceContext } from '@sneat/space-models';\n\n@Component({\n selector: 'sneat-debtus-new-debt-form',\n templateUrl: './new-debt-form.component.html',\n imports: [\n ReactiveFormsModule,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n IonInput,\n IonButton,\n // ContactInputComponent,\n // forwardRef(() => ContactInputComponent),\n ],\n})\nexport class NewDebtFormComponent {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly debtusService = inject(DEBTUS_SERVICE);\n\n public readonly space = input.required<ISpaceContext | undefined>();\n public readonly contact = input.required<IContactContext | undefined>();\n\n protected currency = new FormControl<CurrencyCode>('EUR');\n protected amount = new FormControl<number | undefined>(\n undefined,\n Validators.required,\n );\n\n protected newDebtForm = new FormGroup({\n currency: this.currency,\n amount: this.amount,\n });\n\n protected readonly currencies = ['EUR', 'USD'];\n\n protected submit() {\n const spaceID = this.space()?.id;\n if (!spaceID) {\n throw new Error('spaceID is not set');\n }\n const contactID = this.contact()?.id;\n if (!contactID) {\n throw new Error('contactID is not set');\n }\n if (!this.amount.value) {\n throw new Error('amount is not set');\n }\n if (!this.currency.value) {\n throw new Error('currency is not set');\n }\n const request: ICreateDebtRecordRequest = {\n spaceID,\n contactID,\n amount: this.amount.value,\n currency: this.currency.value,\n };\n this.debtusService.createDebtRecord(request).subscribe({\n next: () => {\n // Debt record created successfully\n },\n error: (err) => {\n console.error('Failed to create debt record:', err);\n },\n });\n }\n}\n","<ion-card>\n <ion-card-header>\n <ion-card-title>New debt</ion-card-title>\n </ion-card-header>\n <ion-item>\n <ion-label>Currency</ion-label>\n <ion-select [formControl]=\"currency\" placeholder=\"Select Currency\">\n @for (currency of currencies; track currency) {\n <ion-select-option [value]=\"currency\">{{ currency }}</ion-select-option>\n }\n </ion-select>\n </ion-item>\n <ion-item>\n <ion-label>Amount</ion-label>\n <ion-input type=\"number\" [formControl]=\"amount\" />\n </ion-item>\n\n <!--\t<sneat-contact-input [team]=\"team\" />-->\n\n <ion-button (click)=\"submit()\">Add debt</ion-button>\n</ion-card>\n","import { Route } from '@angular/router';\nimport { sneatAuthGuard } from '@sneat/auth-core';\n\n// Debtus space-scoped routes, mounted under space/:spaceType/:spaceID.\n// Full flow: debts (home/balances) -> debtus-contacts -> debtus-contact/:id\n// -> new-transfer / settle-up -> transfer/:id (receipt).\nexport const spacePagesRoutes: Route[] = [\n {\n path: 'source-obligations',\n data: { title: 'Bill settlement' },\n canActivate: [sneatAuthGuard],\n loadComponent: () =>\n import('./source-obligations/source-obligations-page.component').then(\n (m) => m.SourceObligationsPageComponent,\n ),\n },\n {\n path: 'debts',\n data: { title: 'Debts' },\n loadComponent: () =>\n import('./debtus-home/debtus-home-page.component').then(\n (m) => m.DebtusHomePageComponent,\n ),\n },\n {\n path: 'debtus-contacts',\n data: { title: 'Contacts' },\n loadComponent: () =>\n import('./debtus-contacts/debtus-contacts-page.component').then(\n (m) => m.DebtusContactsPageComponent,\n ),\n },\n {\n path: 'debtus-contact/:contactID',\n data: { title: 'Contact' },\n loadComponent: () =>\n import(\n './debtus-contact-details/debtus-contact-details-page.component'\n ).then((m) => m.DebtusContactDetailsPageComponent),\n },\n {\n path: 'new-transfer',\n data: { title: 'New transfer' },\n loadComponent: () =>\n import('./new-transfer/new-transfer-page.component').then(\n (m) => m.NewTransferPageComponent,\n ),\n },\n {\n path: 'settle-up',\n data: { title: 'Settle up' },\n loadComponent: () =>\n import('./settle-up/settle-up-page.component').then(\n (m) => m.SettleUpPageComponent,\n ),\n },\n {\n path: 'transfer/:transferID',\n data: { title: 'Transfer' },\n loadComponent: () =>\n import('./transfer-details/transfer-details-page.component').then(\n (m) => m.TransferDetailsPageComponent,\n ),\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sneat-extension-debtus-ui.mjs","sources":["../../../../../../libs/extensions/debtus/ui/src/lib/components/member-debts-summary/member-debts-summary.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/components/member-debts-summary/member-debts-summary.component.html","../../../../../../libs/extensions/debtus/ui/src/lib/components/new-debt-form/new-debt-form.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/components/new-debt-form/new-debt-form.component.html","../../../../../../libs/extensions/debtus/ui/src/lib/pages/space-pages-routing.ts","../../../../../../libs/extensions/debtus/ui/src/lib/source-obligations-navigation.ts","../../../../../../libs/extensions/debtus/ui/src/sneat-extension-debtus-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'sneat-debtus-member-debts-summary',\n templateUrl: './member-debts-summary.component.html',\n})\nexport class MemberDebtsSummaryComponent {}\n","<h2>Debts</h2>\n","import { Component, inject, input } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n IonButton,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonInput,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n} from '@ionic/angular';\nimport { IContactContext } from '@sneat/extension-contactus-contract';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport {\n CurrencyCode,\n DEBTUS_SERVICE,\n ICreateDebtRecordRequest,\n} from '@sneat/extension-debtus-contract';\nimport { ISpaceContext } from '@sneat/space-models';\n\n@Component({\n selector: 'sneat-debtus-new-debt-form',\n templateUrl: './new-debt-form.component.html',\n imports: [\n ReactiveFormsModule,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n IonInput,\n IonButton,\n // ContactInputComponent,\n // forwardRef(() => ContactInputComponent),\n ],\n})\nexport class NewDebtFormComponent {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly debtusService = inject(DEBTUS_SERVICE);\n\n public readonly space = input.required<ISpaceContext | undefined>();\n public readonly contact = input.required<IContactContext | undefined>();\n\n protected currency = new FormControl<CurrencyCode>('EUR');\n protected amount = new FormControl<number | undefined>(\n undefined,\n Validators.required,\n );\n\n protected newDebtForm = new FormGroup({\n currency: this.currency,\n amount: this.amount,\n });\n\n protected readonly currencies = ['EUR', 'USD'];\n\n protected submit() {\n const spaceID = this.space()?.id;\n if (!spaceID) {\n throw new Error('spaceID is not set');\n }\n const contactID = this.contact()?.id;\n if (!contactID) {\n throw new Error('contactID is not set');\n }\n if (!this.amount.value) {\n throw new Error('amount is not set');\n }\n if (!this.currency.value) {\n throw new Error('currency is not set');\n }\n const request: ICreateDebtRecordRequest = {\n spaceID,\n contactID,\n amount: this.amount.value,\n currency: this.currency.value,\n };\n this.debtusService.createDebtRecord(request).subscribe({\n next: () => {\n // Debt record created successfully\n },\n error: (err) => {\n console.error('Failed to create debt record:', err);\n },\n });\n }\n}\n","<ion-card>\n <ion-card-header>\n <ion-card-title>New debt</ion-card-title>\n </ion-card-header>\n <ion-item>\n <ion-label>Currency</ion-label>\n <ion-select [formControl]=\"currency\" placeholder=\"Select Currency\">\n @for (currency of currencies; track currency) {\n <ion-select-option [value]=\"currency\">{{ currency }}</ion-select-option>\n }\n </ion-select>\n </ion-item>\n <ion-item>\n <ion-label>Amount</ion-label>\n <ion-input type=\"number\" [formControl]=\"amount\" />\n </ion-item>\n\n <!--\t<sneat-contact-input [team]=\"team\" />-->\n\n <ion-button (click)=\"submit()\">Add debt</ion-button>\n</ion-card>\n","import { Route } from '@angular/router';\nimport { sneatAuthGuard } from '@sneat/auth-core';\n\n// Debtus space-scoped routes, mounted under space/:spaceType/:spaceID.\n// Full flow: debts (home/balances) -> debtus-contacts -> debtus-contact/:id\n// -> new-transfer / settle-up -> transfer/:id (receipt).\nexport const spacePagesRoutes: Route[] = [\n {\n path: 'source-obligations',\n data: { title: 'Bill settlement' },\n canActivate: [sneatAuthGuard],\n loadComponent: () =>\n import('./source-obligations/source-obligations-page.component').then(\n (m) => m.SourceObligationsPageComponent,\n ),\n },\n {\n path: 'debts',\n data: { title: 'Debts' },\n loadComponent: () =>\n import('./debtus-home/debtus-home-page.component').then(\n (m) => m.DebtusHomePageComponent,\n ),\n },\n {\n path: 'debtus-contacts',\n data: { title: 'Contacts' },\n loadComponent: () =>\n import('./debtus-contacts/debtus-contacts-page.component').then(\n (m) => m.DebtusContactsPageComponent,\n ),\n },\n {\n path: 'debtus-contact/:contactID',\n data: { title: 'Contact' },\n loadComponent: () =>\n import(\n './debtus-contact-details/debtus-contact-details-page.component'\n ).then((m) => m.DebtusContactDetailsPageComponent),\n },\n {\n path: 'new-transfer',\n data: { title: 'New transfer' },\n loadComponent: () =>\n import('./new-transfer/new-transfer-page.component').then(\n (m) => m.NewTransferPageComponent,\n ),\n },\n {\n path: 'settle-up',\n data: { title: 'Settle up' },\n loadComponent: () =>\n import('./settle-up/settle-up-page.component').then(\n (m) => m.SettleUpPageComponent,\n ),\n },\n {\n path: 'transfer/:transferID',\n data: { title: 'Transfer' },\n loadComponent: () =>\n import('./transfer-details/transfer-details-page.component').then(\n (m) => m.TransferDetailsPageComponent,\n ),\n },\n];\n","import { Injectable, InjectionToken, Injector, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport type {\n ISourceLinkedDateTaskMetadata,\n ISourceLinkedDateTaskNavigator,\n} from '@sneat/extension-calendarius-contract';\nimport {\n DEBTUS_TRANSFER_DUE_DATE_SERVICE,\n type IDebtusSourceRefV1,\n} from '@sneat/extension-debtus-contract';\nimport type {\n IListItemBrief,\n IListItemSourceActionNavigator,\n} from '@sneat/extension-listus-contract';\nimport type { IRelatedModules } from '@sneat/dto';\nimport type { ISpaceContext } from '@sneat/space-models';\nimport {\n ModuleSpaceItemService,\n SPACE_NAV_SERVICE,\n} from '@sneat/space-services';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface IDebtusSourceReturnIdentity {\n readonly spaceType: string;\n readonly source: IDebtusSourceRefV1;\n readonly lineID?: string;\n}\n\nexport type DebtusSourceReturnUrlBuilder = (\n identity: IDebtusSourceReturnIdentity,\n) => string | undefined;\n\nexport const DEBTUS_SOURCE_RETURN_URL_BUILDER =\n new InjectionToken<DebtusSourceReturnUrlBuilder>(\n 'DebtusSourceReturnUrlBuilder',\n );\n\n@Injectable()\nexport class DebtusSourceLinkedDateTaskNavigator implements ISourceLinkedDateTaskNavigator {\n private readonly spaceNav = inject(SPACE_NAV_SERVICE);\n private readonly transferDueDates = inject(DEBTUS_TRANSFER_DUE_DATE_SERVICE, {\n optional: true,\n });\n\n public async navigateToSourceLinkedDateTask(\n space: ISpaceContext,\n task: ISourceLinkedDateTaskMetadata,\n related: IRelatedModules,\n ): Promise<boolean> {\n const source = task.source;\n if (\n this.transferDueDates &&\n source.ownerSpaceID === space.id &&\n source.namespace === 'debtus' &&\n source.lineID === 'due-date' &&\n task.actionID === 'open-transfer' &&\n task.actionDisposition === 'navigate' &&\n hasExactTransferDueRef(related, space.id, source.recordID)\n ) {\n await firstValueFrom(\n this.transferDueDates.getTransferDueDate(space.id, source.recordID),\n );\n return this.spaceNav.navigateForwardToSpacePage(\n space,\n `transfer/${source.recordID}`,\n );\n }\n if (\n source.ownerSpaceID !== space.id ||\n source.namespace !== 'splitus' ||\n task.actionID !== 'open-source-obligation' ||\n task.actionDisposition !== 'navigate'\n ) {\n return false;\n }\n const sourceID = await sourceObligationsID(\n source.namespace,\n space.id,\n source.recordID,\n );\n if (!hasExactDebtusLineRef(related, space.id, sourceID, source.lineID)) {\n return false;\n }\n return this.spaceNav.navigateForwardToSpacePage(\n space,\n 'source-obligations',\n {\n queryParams: {\n sourceNamespace: source.namespace,\n sourceRecordID: source.recordID,\n lineID: source.lineID,\n },\n },\n );\n }\n}\n\ninterface ISourceObligationsNavigationDbo {\n readonly latestReceipt?: {\n readonly source?: IDebtusSourceRefV1;\n readonly obligations?: readonly { readonly lineID?: string }[];\n };\n}\n\n@Injectable()\nexport class DebtusListItemSourceActionNavigator implements IListItemSourceActionNavigator {\n private readonly spaceNav = inject(SPACE_NAV_SERVICE);\n private readonly injector = inject(Injector);\n private readonly sneatApi = inject(SneatApiService);\n private readonly transferDueDates = inject(DEBTUS_TRANSFER_DUE_DATE_SERVICE, {\n optional: true,\n });\n\n public async navigateToListItemSource(\n space: ISpaceContext,\n item: IListItemBrief,\n ): Promise<boolean> {\n const ref = item.sourceManagement?.source;\n if (\n this.transferDueDates &&\n ref?.module === 'debtus' &&\n ref.collection === 'transferDueTasks'\n ) {\n const transferID = sameSpaceItemID(ref.itemID, space.id);\n if (!transferID || ref.subPath) return false;\n const due = await firstValueFrom(\n this.transferDueDates.getTransferDueDate(space.id, transferID),\n );\n if (due.todoItemID !== item.id) return false;\n return this.spaceNav.navigateForwardToSpacePage(\n space,\n `transfer/${transferID}`,\n );\n }\n if (\n !ref ||\n ref.module !== 'debtus' ||\n ref.collection !== 'sourceObligations'\n )\n return false;\n const sourceID = sameSpaceItemID(ref.itemID, space.id);\n const lineID = lineIDFromSubPath(ref.subPath);\n if (!sourceID || !lineID) return false;\n const sourceItems = new ModuleSpaceItemService<\n object,\n ISourceObligationsNavigationDbo\n >(this.injector, 'debtus', 'sourceObligations', this.sneatApi);\n const loaded = await firstValueFrom(\n sourceItems.watchModuleSpaceItem(space, sourceID),\n );\n const receipt = loaded.dbo?.latestReceipt;\n const source = receipt?.source;\n if (\n !source ||\n source.spaceID !== space.id ||\n source.namespace !== 'splitus' ||\n !receipt?.obligations?.some((line) => line.lineID === lineID) ||\n (await sourceObligationsID(\n source.namespace,\n space.id,\n source.recordID,\n )) !== sourceID\n )\n return false;\n return this.spaceNav.navigateForwardToSpacePage(\n space,\n 'source-obligations',\n {\n queryParams: {\n sourceNamespace: source.namespace,\n sourceRecordID: source.recordID,\n lineID,\n },\n },\n );\n }\n}\n\n/**\n * Persisted Linkage keys a same-Space item either as the bare document id or\n * as `id@spaceID` (sneat-go-core coretypes.ItemRef: a bare id is the common\n * same-Space form). Both name the same record; an id suffixed with another\n * Space never matches.\n */\nfunction sameSpaceRelatedItem<T>(\n items: Record<string, T> | undefined,\n spaceID: string,\n itemID: string,\n): T | undefined {\n if (!items) return undefined;\n return items[`${itemID}@${spaceID}`] ?? items[itemID];\n}\n\nfunction hasExactTransferDueRef(\n related: IRelatedModules,\n spaceID: string,\n transferID: string,\n): boolean {\n return (\n sameSpaceRelatedItem(\n related['debtus']?.['transferDueTasks'],\n spaceID,\n transferID,\n ) !== undefined\n );\n}\n\nfunction sameSpaceItemID(itemID: string, spaceID: string): string | undefined {\n const separator = itemID.lastIndexOf('@');\n if (separator < 0) return itemID;\n return itemID.slice(separator + 1) === spaceID\n ? itemID.slice(0, separator)\n : undefined;\n}\n\nfunction lineIDFromSubPath(subPath: string | undefined): string | undefined {\n const prefix = '/latestReceipt/obligations/@lineID=';\n if (!subPath?.startsWith(prefix)) return undefined;\n const encoded = subPath.slice(prefix.length);\n if (!encoded || /~(?![01])/.test(encoded)) return undefined;\n const lineID = encoded.replace(/~1/g, '/').replace(/~0/g, '~');\n return `${prefix}${lineID.replace(/~/g, '~0').replace(/\\//g, '~1')}` ===\n subPath\n ? lineID\n : undefined;\n}\n\nfunction hasExactDebtusLineRef(\n related: IRelatedModules,\n spaceID: string,\n sourceID: string,\n lineID: string,\n): boolean {\n const subPath = `/latestReceipt/obligations/@lineID=${lineID.replace(/~/g, '~0').replace(/\\//g, '~1')}`;\n const item = sameSpaceRelatedItem(\n related['debtus']?.['sourceObligations'],\n spaceID,\n sourceID,\n );\n return item?.subPaths?.[subPath] !== undefined;\n}\n\nasync function sourceObligationsID(\n namespace: string,\n spaceID: string,\n recordID: string,\n): Promise<string> {\n const bytes: number[] = [];\n for (const value of ['source', namespace, spaceID, recordID]) {\n const encoded = new TextEncoder().encode(value);\n bytes.push(\n (encoded.length >>> 24) & 255,\n (encoded.length >>> 16) & 255,\n (encoded.length >>> 8) & 255,\n encoded.length & 255,\n ...encoded,\n );\n }\n const digest = new Uint8Array(\n await globalThis.crypto.subtle.digest('SHA-256', new Uint8Array(bytes)),\n );\n return `src_${Array.from(digest, (byte) => byte.toString(16).padStart(2, '0')).join('')}`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sneat/extension-debtus-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=22.0.0 <23.0.0",
|
|
6
6
|
"@angular/core": ">=22.0.0 <23.0.0",
|
|
@@ -8,14 +8,17 @@
|
|
|
8
8
|
"@angular/router": ">=22.0.0 <23.0.0",
|
|
9
9
|
"@ionic/angular": ">=9.0.0 <10.0.0",
|
|
10
10
|
"rxjs": "^7.0.0",
|
|
11
|
-
"@sneat/extension-contactus-contract": "^0.12.
|
|
11
|
+
"@sneat/extension-contactus-contract": "^0.12.9",
|
|
12
12
|
"@sneat/core": "^0.27.0",
|
|
13
13
|
"@sneat/space-components": "^0.27.0",
|
|
14
14
|
"@sneat/space-models": "^0.27.0",
|
|
15
15
|
"@sneat/space-services": "^0.27.0",
|
|
16
16
|
"@sneat/ui": "^0.27.0",
|
|
17
|
-
"@sneat/extension-debtus-contract": "^0.2.
|
|
18
|
-
"@sneat/extension-
|
|
17
|
+
"@sneat/extension-debtus-contract": "^0.2.4",
|
|
18
|
+
"@sneat/extension-listus-contract": "^0.0.10",
|
|
19
|
+
"@sneat/extension-contactus-ui": "^0.14.17",
|
|
20
|
+
"@sneat/extension-calendarius-contract": "^0.27.0",
|
|
21
|
+
"@sneat/dto": "^0.27.0",
|
|
19
22
|
"@sneat/api": "^0.27.0",
|
|
20
23
|
"@sneat/auth-core": "^0.27.0"
|
|
21
24
|
},
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
2
3
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
4
|
import { IContactContext } from '@sneat/extension-contactus-contract';
|
|
4
|
-
import { CurrencyCode } from '@sneat/extension-debtus-contract';
|
|
5
|
+
import { CurrencyCode, IDebtusSourceRefV1 } from '@sneat/extension-debtus-contract';
|
|
5
6
|
import { ISpaceContext } from '@sneat/space-models';
|
|
6
7
|
import { Route } from '@angular/router';
|
|
8
|
+
import { ISourceLinkedDateTaskNavigator, ISourceLinkedDateTaskMetadata } from '@sneat/extension-calendarius-contract';
|
|
9
|
+
import { IListItemSourceActionNavigator, IListItemBrief } from '@sneat/extension-listus-contract';
|
|
10
|
+
import { IRelatedModules } from '@sneat/dto';
|
|
7
11
|
|
|
8
12
|
declare class MemberDebtsSummaryComponent {
|
|
9
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<MemberDebtsSummaryComponent, never>;
|
|
@@ -29,4 +33,29 @@ declare class NewDebtFormComponent {
|
|
|
29
33
|
|
|
30
34
|
declare const spacePagesRoutes: Route[];
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
interface IDebtusSourceReturnIdentity {
|
|
37
|
+
readonly spaceType: string;
|
|
38
|
+
readonly source: IDebtusSourceRefV1;
|
|
39
|
+
readonly lineID?: string;
|
|
40
|
+
}
|
|
41
|
+
type DebtusSourceReturnUrlBuilder = (identity: IDebtusSourceReturnIdentity) => string | undefined;
|
|
42
|
+
declare const DEBTUS_SOURCE_RETURN_URL_BUILDER: InjectionToken<DebtusSourceReturnUrlBuilder>;
|
|
43
|
+
declare class DebtusSourceLinkedDateTaskNavigator implements ISourceLinkedDateTaskNavigator {
|
|
44
|
+
private readonly spaceNav;
|
|
45
|
+
private readonly transferDueDates;
|
|
46
|
+
navigateToSourceLinkedDateTask(space: ISpaceContext, task: ISourceLinkedDateTaskMetadata, related: IRelatedModules): Promise<boolean>;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DebtusSourceLinkedDateTaskNavigator, never>;
|
|
48
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DebtusSourceLinkedDateTaskNavigator>;
|
|
49
|
+
}
|
|
50
|
+
declare class DebtusListItemSourceActionNavigator implements IListItemSourceActionNavigator {
|
|
51
|
+
private readonly spaceNav;
|
|
52
|
+
private readonly injector;
|
|
53
|
+
private readonly sneatApi;
|
|
54
|
+
private readonly transferDueDates;
|
|
55
|
+
navigateToListItemSource(space: ISpaceContext, item: IListItemBrief): Promise<boolean>;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DebtusListItemSourceActionNavigator, never>;
|
|
57
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DebtusListItemSourceActionNavigator>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { DEBTUS_SOURCE_RETURN_URL_BUILDER, DebtusListItemSourceActionNavigator, DebtusSourceLinkedDateTaskNavigator, MemberDebtsSummaryComponent, NewDebtFormComponent, spacePagesRoutes };
|
|
61
|
+
export type { DebtusSourceReturnUrlBuilder, IDebtusSourceReturnIdentity };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sneat-extension-debtus-ui-new-transfer-page.component-YaGgYqKB.mjs","sources":["../../../../../../libs/extensions/debtus/ui/src/lib/pages/new-transfer/new-transfer-page.component.ts","../../../../../../libs/extensions/debtus/ui/src/lib/pages/new-transfer/new-transfer-page.component.html"],"sourcesContent":["import { ChangeDetectorRef, Component, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n IonBackButton,\n IonButton,\n IonButtons,\n IonCard,\n IonCardContent,\n IonContent,\n IonHeader,\n IonInput,\n IonItem,\n IonLabel,\n IonNote,\n IonSegment,\n IonSegmentButton,\n IonSelect,\n IonSelectOption,\n IonSpinner,\n IonTextarea,\n IonTitle,\n IonToolbar,\n ToastController,\n} from '@ionic/angular';\nimport { IContactContext } from '@sneat/extension-contactus-contract';\nimport { ContactInputComponent } from '@sneat/extension-contactus-ui';\nimport {\n CurrencyCode,\n DEBTUS_SERVICE,\n DebtDirection,\n ICreateTransferRequest,\n} from '@sneat/extension-debtus-contract';\nimport {\n SpaceComponentBaseParams,\n SpacePageBaseComponent,\n} from '@sneat/space-components';\nimport { SpaceServiceModule } from '@sneat/space-services';\nimport { ClassName } from '@sneat/ui';\nimport { filter, first, startWith } from 'rxjs';\n\n// Create transfer — the primary write flow. Mirrors the bot's lend/borrow\n// wizard: direction, counterparty (a contactus space contact), amount +\n// currency, optional note. Reuses the contactus `sneat-contact-input` picker\n// so the counterparty is a real space contact, not a debtus-private person.\n@Component({\n selector: 'sneat-debtus-new-transfer-page',\n templateUrl: './new-transfer-page.component.html',\n imports: [\n ReactiveFormsModule,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonTitle,\n IonContent,\n IonCard,\n IonCardContent,\n IonItem,\n IonLabel,\n IonInput,\n IonTextarea,\n IonSelect,\n IonSelectOption,\n IonSegment,\n IonSegmentButton,\n IonButton,\n IonNote,\n IonSpinner,\n ContactInputComponent,\n SpaceServiceModule,\n ],\n providers: [\n { provide: ClassName, useValue: 'NewTransferPageComponent' },\n SpaceComponentBaseParams,\n ],\n})\nexport class NewTransferPageComponent extends SpacePageBaseComponent {\n private readonly debtusService = inject(DEBTUS_SERVICE);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly toastController = inject(ToastController);\n\n protected readonly $submitting = signal(false);\n protected readonly $pickedContact = signal<IContactContext | undefined>(\n undefined,\n );\n /** Set when arriving from a contact detail page (?contactID=…). */\n protected prefilledContactID?: string;\n\n protected readonly direction = new FormControl<DebtDirection>('lend', {\n nonNullable: true,\n });\n protected readonly currency = new FormControl<CurrencyCode>('EUR', {\n nonNullable: true,\n });\n protected readonly amount = new FormControl<number | null>(null, [\n Validators.required,\n Validators.min(0.01),\n ]);\n protected readonly counterpartyName = new FormControl<string>('', {\n nonNullable: true,\n });\n protected readonly note = new FormControl<string>('', { nonNullable: true });\n\n protected readonly form = new FormGroup({\n direction: this.direction,\n currency: this.currency,\n amount: this.amount,\n counterpartyName: this.counterpartyName,\n note: this.note,\n });\n\n protected readonly currencies: CurrencyCode[] = ['EUR', 'USD'];\n\n constructor() {\n super();\n this.$defaultBackUrlSpacePath.set('debts');\n this.route.queryParamMap.pipe(first(), takeUntilDestroyed()).subscribe({\n next: (params) => {\n const dir = params.get('direction');\n if (dir === 'lend' || dir === 'borrow') {\n this.direction.setValue(dir);\n }\n const contactID = params.get('contactID');\n if (contactID) {\n this.prefilledContactID = contactID;\n // Prefill the name field from the known balance so the user sees who\n // they're recording against even before the contactus picker loads.\n this.spaceIDChanged$.pipe(\n startWith(this.$spaceID()),\n filter((spaceID): spaceID is string => !!spaceID),\n first(),\n ).subscribe((spaceID) => {\n this.debtusService\n .getContactBalance(spaceID, contactID)\n .pipe(first())\n .subscribe((c) => {\n this.counterpartyName.setValue(c.title);\n this.changeDetector.markForCheck();\n });\n });\n }\n },\n });\n }\n\n protected onContactChanged(contact: IContactContext | undefined): void {\n this.$pickedContact.set(contact);\n if (contact) {\n // A picked contact supersedes a typed name / prefilled id.\n this.prefilledContactID = undefined;\n this.counterpartyName.setValue(contact.brief?.title ?? '');\n }\n }\n\n private resolveCounterparty(): { contactID: string; title: string } | null {\n const picked = this.$pickedContact();\n if (picked) {\n return { contactID: picked.id, title: picked.brief?.title ?? picked.id };\n }\n if (this.prefilledContactID) {\n return {\n contactID: this.prefilledContactID,\n title: this.counterpartyName.value,\n };\n }\n // Fable refactoring: the \"new counterparty by name\" path is disabled —\n // the assumption that \"the backend create flow resolves/creates it\" was\n // wrong: POST create-transfer validation requires toContactID/fromContactID\n // (facade4debtus CreateTransferRequest.Validate), so an empty contactID\n // always 400s. Until a create-contact-then-transfer flow is wired, users\n // must pick an existing space contact (the picker above supports adding\n // one). Original branch kept per the no-delete policy:\n // const name = this.counterpartyName.value.trim();\n // if (name) {\n // // New counterparty by name (mirrors the bot's \"new counterparty\"\n // // step). No contactID yet — the backend create flow\n // // resolves/creates it.\n // return { contactID: '', title: name };\n // }\n return null;\n }\n\n protected submit(): void {\n this.form.markAllAsTouched();\n const amount = this.amount.value;\n if (!amount || amount <= 0) {\n return;\n }\n const counterparty = this.resolveCounterparty();\n if (!counterparty) {\n this.showToast(\n 'Pick a counterparty contact. To record against someone new, add them as a space contact first.',\n 'danger',\n );\n return;\n }\n const spaceID = this.$spaceID();\n if (!spaceID) {\n return;\n }\n const request: ICreateTransferRequest = {\n spaceID,\n direction: this.direction.value,\n amount: { currency: this.currency.value, value: amount },\n contactID: counterparty.contactID,\n contactTitle: counterparty.title,\n note: this.note.value.trim() || undefined,\n counterpartySpaceID: this.$pickedContact()?.space?.id,\n };\n\n this.$submitting.set(true);\n this.debtusService.createTransfer(request).subscribe({\n next: (resp) => {\n this.$submitting.set(false);\n // Go to the persisted transfer's detail and replace the filled form in\n // history. Router state avoids an immediate duplicate read; a reload\n // retrieves the same transfer through the Debtus API.\n this.spaceNav.navigateForwardToSpacePage(\n this.space,\n `transfer/${resp.transfer.id}`,\n { replaceUrl: true, state: { transfer: resp.transfer } },\n );\n },\n error: (err) => {\n this.$submitting.set(false);\n this.errorLogger.logError(err, 'Failed to create transfer', {\n show: false,\n });\n this.showToast('Failed to record transfer. Please try again.', 'danger');\n },\n });\n }\n\n private async showToast(message: string, color: string): Promise<void> {\n const toast = await this.toastController.create({\n message,\n duration: 3000,\n color,\n });\n await toast.present();\n }\n}\n","<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-back-button [defaultHref]=\"$defaultBackUrl()\" />\n </ion-buttons>\n <ion-title>New transfer</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"cardy\">\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <ion-card>\n <ion-card-content>\n <ion-segment [formControl]=\"direction\">\n <ion-segment-button value=\"lend\">\n <ion-label>I lent</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"borrow\">\n <ion-label>I borrowed</ion-label>\n </ion-segment-button>\n </ion-segment>\n <ion-note class=\"ion-padding-start\" color=\"medium\">\n {{\n direction.value === 'lend'\n ? 'You gave money — they owe you.'\n : 'You got money — you owe them.'\n }}\n </ion-note>\n </ion-card-content>\n </ion-card>\n\n <ion-card>\n <ion-card-content>\n <!-- Reuse the contactus space-contact picker. The counterparty is a\n real contactus contact, not a debtus-private person. -->\n <sneat-contact-input\n [space]=\"space\"\n label=\"Counterparty\"\n [canChangeContact]=\"true\"\n (contactChange)=\"onContactChanged($event)\"\n />\n @if (prefilledContactID) {\n <ion-note class=\"ion-padding-start\" color=\"medium\">\n Recording against\n {{ counterpartyName.value || prefilledContactID }}\n </ion-note>\n }\n <!-- Fable refactoring: the \"Or new counterparty name\" free-text input\n is disabled — a name-only counterparty always 400s server-side\n (POST create-transfer requires a real contact id; see\n resolveCounterparty() in the component). Re-enable once a\n create-contact-then-transfer flow exists. Kept per the no-delete\n policy:\n <ion-item>\n <ion-label position=\"stacked\">\n Or new counterparty name\n </ion-label>\n <ion-input\n [formControl]=\"counterpartyName\"\n placeholder=\"e.g. Alex\"\n autocapitalize=\"words\"\n />\n </ion-item>\n -->\n </ion-card-content>\n </ion-card>\n\n <ion-card>\n <ion-card-content>\n <ion-item>\n <ion-label>Currency</ion-label>\n <ion-select [formControl]=\"currency\" interface=\"popover\">\n @for (c of currencies; track c) {\n <ion-select-option [value]=\"c\">{{ c }}</ion-select-option>\n }\n </ion-select>\n </ion-item>\n <ion-item>\n <ion-label position=\"stacked\">Amount</ion-label>\n <ion-input\n type=\"number\"\n inputmode=\"decimal\"\n [formControl]=\"amount\"\n placeholder=\"0.00\"\n />\n </ion-item>\n @if (amount.touched && amount.invalid) {\n <ion-note color=\"danger\" class=\"ion-padding-start\">\n Enter an amount greater than zero.\n </ion-note>\n }\n <ion-item>\n <ion-label position=\"stacked\">Note (optional)</ion-label>\n <ion-textarea\n [formControl]=\"note\"\n placeholder=\"What is it for?\"\n [autoGrow]=\"true\"\n />\n </ion-item>\n </ion-card-content>\n </ion-card>\n\n <div class=\"ion-padding\">\n <ion-button\n expand=\"block\"\n type=\"submit\"\n [disabled]=\"$submitting() || form.invalid\"\n >\n @if ($submitting()) {\n <ion-spinner name=\"dots\" slot=\"start\" />\n Saving…\n } @else {\n Record transfer\n }\n </ion-button>\n </div>\n </form>\n</ion-content>\n"],"names":[],"mappings":"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"}
|