@wisemen/wise-invoicing-web 0.3.0 → 0.4.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/{ApprovalReminderSettingsViewDataProvider-DwtfyQpx.js → ApprovalReminderSettingsViewDataProvider-IuReavOR.js} +3 -3
- package/dist/{BillingDocumentDetailViewDataProvider-TJUwMhtn.js → BillingDocumentDetailViewDataProvider-B3I6UIKY.js} +2201 -1728
- package/dist/BillingDocumentDetailViewDataProvider.css +1 -1
- package/dist/{BillingDocumentPdf-PU9Ldfhs.js → BillingDocumentPdf-rFqmLUPy.js} +226 -219
- package/dist/{CreditNoteDetailViewDataProvider-DOPmal5D.js → CreditNoteDetailViewDataProvider-CQRnG2Fz.js} +42 -42
- package/dist/{CreditNotePdfViewDataProvider-BH7MaReQ.js → CreditNotePdfViewDataProvider-RytwPWH5.js} +2 -2
- package/dist/{CustomFieldValueText-BjRVovZL.js → CustomFieldValueText-DA0aPKwC.js} +2 -2
- package/dist/{DunningCaseDetailViewDataProvider-CW8ijY3H.js → DunningCaseDetailViewDataProvider-BRYbYgTw.js} +65 -65
- package/dist/{DunningCaseOverviewView-Cfo-4VIw.js → DunningCaseOverviewView-D0vScVF1.js} +125 -125
- package/dist/{DunningCaseReminderPdfViewDataProvider-Dr-CS_VQ.js → DunningCaseReminderPdfViewDataProvider-I_ZQiAuK.js} +2 -2
- package/dist/{DunningCaseSendDialog-BYFXJYMM.js → DunningCaseSendDialog-CV66_tMv.js} +8 -8
- package/dist/{InvoiceApprovalOutOfSyncIndicator-CP2GLaeh.js → InvoiceApprovalOutOfSyncIndicator-AJOQe8j8.js} +2 -2
- package/dist/{InvoiceApprovalOverviewView-Cjdu9iZC.js → InvoiceApprovalOverviewView-CcMqr2jH.js} +213 -213
- package/dist/{InvoiceApprovalStatusBadge-CcX8agTF.js → InvoiceApprovalStatusBadge-BJ3Q18bf.js} +4 -4
- package/dist/{InvoiceApproveDialogDataProvider-4wNAetBn.js → InvoiceApproveDialogDataProvider-DaCEHgs0.js} +7 -7
- package/dist/{InvoiceDetailViewDataProvider-C9O3hXGo.js → InvoiceDetailViewDataProvider-B5uZY8Qy.js} +47 -47
- package/dist/{InvoiceOverviewViewDataProvider-DBdw7FvZ.js → InvoiceOverviewViewDataProvider-BrgmweRE.js} +57 -57
- package/dist/{InvoicePdfView-CvU9bRVd.js → InvoicePdfView-CPEX7E9W.js} +1 -1
- package/dist/{InvoicePdfViewDataProvider-CFjHQ58K.js → InvoicePdfViewDataProvider-T4-8A2OD.js} +3 -3
- package/dist/{InvoicePublicPdfViewDataProvider-DDv-LdBU.js → InvoicePublicPdfViewDataProvider-BkHZoPSZ.js} +3 -3
- package/dist/{InvoicePublicProFormaPdfViewDataProvider-BTjJnELb.js → InvoicePublicProFormaPdfViewDataProvider-CfkArXbC.js} +3 -3
- package/dist/{InvoicingFileUploadProvider-Kcq7kSSt.js → InvoicingFileUploadProvider-BLBjPKqx.js} +1 -1
- package/dist/{IssuerSettingsViewDataProvider-BuSIVnIl.js → IssuerSettingsViewDataProvider-BStn0jFI.js} +2 -2
- package/dist/{ReminderSettingsViewDataProvider-CH7gSXnj.js → ReminderSettingsViewDataProvider-CjX7afDs.js} +3 -3
- package/dist/{api.util-CkIRZS3h.js → api.util-D6m6OY3_.js} +15 -6
- package/dist/{billingDocumentDetail.transformer-Bfd8geNo.js → billingDocumentDetail.transformer-Da-Nt4bI.js} +37 -29
- package/dist/client/index.d.ts +1 -1
- package/dist/client/types.gen.d.ts +16 -2
- package/dist/client/zod.gen.d.ts +28 -0
- package/dist/{creditNoteDetail.query-tLnfqsEB.js → creditNoteDetail.query-Yb8TdZNm.js} +22 -18
- package/dist/{dist-D5agTXFI.js → dist-BpDuRYDT.js} +132 -132
- package/dist/{dist-boJIIxnT.js → dist-Cdbpkd3Y.js} +1 -1
- package/dist/{dist-BD7Allff.js → dist-DCbLgB6Y.js} +182 -102
- package/dist/{i18n.lib--mzprLMR.js → i18n.lib-CKs3ExEl.js} +28 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +33 -32
- package/dist/{invoice.service-B1w16_Md.js → invoice.service-DWDl9XRh.js} +214 -209
- package/dist/{invoiceApproval.service-BHAJmFkU.js → invoiceApproval.service-Fwlxgd9o.js} +2 -2
- package/dist/{invoiceApprovalStatus.util-DohOKR4q.js → invoiceApprovalStatus.util-q-zHLdFV.js} +1 -1
- package/dist/{invoiceCustomer.service-DpVfpQUD.js → invoiceCustomer.service-DOexR54S.js} +2 -2
- package/dist/{invoiceDetail.query-CfyNSXLS.js → invoiceDetail.query-B5w0Vlsy.js} +1 -1
- package/dist/{invoiceIndexCache.util-jHsrFwcA.js → invoiceIndexCache.util-CUlp4R7R.js} +2 -2
- package/dist/{invoicingConfig.composable-COn1rKRf.js → invoicingConfig.composable-DjFexycc.js} +2 -2
- package/dist/{issuerSettings.query-CDFk2GiP.js → issuerSettings.query-BHuLjV9P.js} +1 -1
- package/dist/libs/i18n.lib.d.ts +28 -0
- package/dist/locales/en-US.json.d.ts +14 -0
- package/dist/locales/nl-BE.json.d.ts +14 -0
- package/dist/models/billing-document/billingDocumentDetail.model.d.ts +1 -0
- package/dist/models/billing-document/billingDocumentLineGroup.util.d.ts +15 -0
- package/dist/models/billing-document/billingDocumentLineGroup.util.spec.d.ts +1 -0
- package/dist/models/billing-document/billingDocumentUpdateLines.model.d.ts +1 -0
- package/dist/modules/invoice/models/invoice/pdf/invoicePdfDetail.model.d.ts +1 -0
- package/dist/modules/invoice/use-cases/pdf/components/invoicePdf.types.d.ts +4 -1
- package/dist/modules/invoice/use-cases/pdf/utils/invoicePdf.util.d.ts +5 -0
- package/dist/{reminderConfig.query-DSO0ekC_.js → reminderConfig.query-C4J6m4ER.js} +1 -1
- package/dist/style.css +1 -1
- package/dist/types/apiError.type.d.ts +2 -2
- package/dist/ui/billing-document/table/BillingDocumentLineItemDeleteDialog.vue.d.ts +1 -0
- package/dist/ui/billing-document/table/BillingDocumentLineItemsInsertIndicator.vue.d.ts +3 -0
- package/dist/ui/billing-document/table/BillingDocumentLineItemsTableGroupRow.vue.d.ts +5 -2
- package/dist/ui/billing-document/table/BillingDocumentLineItemsTreeIndent.vue.d.ts +17 -0
- package/dist/ui/billing-document/table/billingDocumentLineItemsTable.context.d.ts +78 -18
- package/dist/ui/billing-document/table/composables/useBillingDocumentLineItemsEditor.composable.d.ts +14 -4
- package/dist/ui/billing-document/table/composables/useBillingDocumentLineItemsKeyboardNav.composable.d.ts +6 -0
- package/dist/ui/billing-document/table/composables/useBillingDocumentLineItemsRowMutations.composable.d.ts +8 -4
- package/dist/ui/billing-document/table/composables/useBillingDocumentLineItemsTableDrag.composable.d.ts +16 -3
- package/dist/ui/billing-document/table/utils/billingDocumentLineItemsEditor.util.d.ts +163 -26
- package/package.json +2 -2
|
@@ -9,6 +9,7 @@ export declare const BILLING_DOCUMENT_VAT_RATE_OPTIONS: VatRate[];
|
|
|
9
9
|
export declare const BILLING_DOCUMENT_UNIT_OPTIONS: UnitOfMeasurement[];
|
|
10
10
|
export interface BillingDocumentLineItemEditorGroupRow {
|
|
11
11
|
id: string;
|
|
12
|
+
parentGroupId: string | null;
|
|
12
13
|
sourceGroupUuid: string | null;
|
|
13
14
|
name: string;
|
|
14
15
|
customFields: CustomFieldValue[];
|
|
@@ -31,76 +32,207 @@ export interface BillingDocumentLineItemEditorLineRow {
|
|
|
31
32
|
vatRate: VatRate;
|
|
32
33
|
}
|
|
33
34
|
export type BillingDocumentLineItemEditorRow = BillingDocumentLineItemEditorGroupRow | BillingDocumentLineItemEditorLineRow;
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
/** Mirrors the API's MAX_INVOICE_LINE_GROUP_DEPTH: a top-level group is level 1. */
|
|
36
|
+
export declare const BILLING_DOCUMENT_LINE_ITEM_MAX_GROUP_LEVEL = 4;
|
|
37
|
+
export interface BillingDocumentLineItemRowStructure {
|
|
38
|
+
/** The groups the row sits in, outermost first. */
|
|
39
|
+
ancestorGroupIds: string[];
|
|
40
|
+
/** How many groups the row sits in: 0 at the top level. */
|
|
41
|
+
depth: number;
|
|
42
|
+
}
|
|
43
|
+
export interface BillingDocumentLineItemGroupStructure {
|
|
44
|
+
/** Every line inside the group, at any depth. */
|
|
45
|
+
descendantLineIds: string[];
|
|
46
|
+
/** Group levels the group spans: 1 without subgroups, 2 with one level of them, … */
|
|
47
|
+
height: number;
|
|
48
|
+
/** 1 for a top-level group. */
|
|
49
|
+
level: number;
|
|
50
|
+
/** Every group inside the group, at any depth. */
|
|
51
|
+
subgroupCount: number;
|
|
52
|
+
}
|
|
53
|
+
/** What the flat rows encode about nesting, derived once per change of the rows. */
|
|
54
|
+
export interface BillingDocumentLineItemsStructure {
|
|
55
|
+
groups: ReadonlyMap<string, BillingDocumentLineItemGroupStructure>;
|
|
56
|
+
/** The deepest row depth in the document. */
|
|
57
|
+
maxDepth: number;
|
|
58
|
+
rows: ReadonlyMap<string, BillingDocumentLineItemRowStructure>;
|
|
59
|
+
}
|
|
42
60
|
export interface BillingDocumentLineItemEditorMeta {
|
|
43
61
|
currency: Monetary['currency'];
|
|
44
62
|
documentType: AnyBillingDocumentDetail['type'];
|
|
45
63
|
precision: number;
|
|
46
64
|
}
|
|
47
65
|
export declare class BillingDocumentLineItemsEditorUtil {
|
|
66
|
+
/**
|
|
67
|
+
* Appends one level of the server tree in position order — lines and
|
|
68
|
+
* subgroups share the positions of their level, so they interleave — with
|
|
69
|
+
* every group directly followed by its own contents.
|
|
70
|
+
*/
|
|
71
|
+
private static appendBillingDocumentEditorRows;
|
|
48
72
|
static buildBillingDocumentLineItemsPayload(meta: BillingDocumentLineItemEditorMeta, rows: BillingDocumentLineItemEditorRow[]): BillingDocumentUpdateLines;
|
|
73
|
+
/**
|
|
74
|
+
* Reads the nesting the flat rows encode. Each row lands in the group its
|
|
75
|
+
* `groupId` / `parentGroupId` points at, in the order it appears; a row whose
|
|
76
|
+
* group is missing — or whose parent chain loops back on itself — is lifted
|
|
77
|
+
* to the top level.
|
|
78
|
+
*/
|
|
79
|
+
private static buildRowTree;
|
|
80
|
+
/**
|
|
81
|
+
* Whether a new group can be created inside `parentGroupId` (the top level
|
|
82
|
+
* when `null`) without nesting deeper than the API allows.
|
|
83
|
+
*/
|
|
84
|
+
static canAddGroupInside(structure: BillingDocumentLineItemsStructure, parentGroupId: string | null): boolean;
|
|
85
|
+
/** Whether {@link groupSelectedRows} can wrap the selection without nesting too deep. */
|
|
86
|
+
static canGroupSelectedRows(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>): boolean;
|
|
87
|
+
private static collectRowTreeLineIds;
|
|
49
88
|
static createBillingDocumentEditorRows(invoice: AnyBillingDocumentDetail): BillingDocumentLineItemEditorRow[];
|
|
50
89
|
static createBillingDocumentLineItemDiscount(discountPercentage: Percentage | null): BillingDocumentDiscount | null;
|
|
51
90
|
static createBillingDocumentLineItemDisplayRows(invoice: AnyBillingDocumentDetail, isEditable: boolean): BillingDocumentLineItemEditorRow[];
|
|
52
|
-
static createBillingDocumentLineItemGroupRow(group: BillingDocumentLineGroup): BillingDocumentLineItemEditorGroupRow;
|
|
91
|
+
static createBillingDocumentLineItemGroupRow(group: BillingDocumentLineGroup, parentGroupId?: string | null): BillingDocumentLineItemEditorGroupRow;
|
|
53
92
|
static createBillingDocumentLineItemRowFromInvoiceLine(documentType: AnyBillingDocumentDetail['type'], line: BillingDocumentLine): BillingDocumentLineItemEditorLineRow;
|
|
54
93
|
static createBillingDocumentLineItemRowsKey(rows: BillingDocumentLineItemEditorRow[]): string;
|
|
55
94
|
static createBillingDocumentLineItemsMeta(invoice: AnyBillingDocumentDetail): BillingDocumentLineItemEditorMeta;
|
|
56
95
|
static createBillingDocumentLineItemsServerSnapshot(invoice: AnyBillingDocumentDetail): string;
|
|
96
|
+
static createBillingDocumentLineItemsStructure(rows: BillingDocumentLineItemEditorRow[]): BillingDocumentLineItemsStructure;
|
|
57
97
|
static createBillingDocumentLineItemTotals(row: BillingDocumentLineItemEditorLineRow): {
|
|
58
98
|
discount: number;
|
|
59
99
|
gross: number;
|
|
60
100
|
net: number;
|
|
61
101
|
vat: number;
|
|
62
102
|
};
|
|
103
|
+
private static createBillingDocumentUpdateLevel;
|
|
63
104
|
private static createBillingDocumentUpdateLine;
|
|
64
|
-
static createNewBillingDocumentLineItemGroupRow(): BillingDocumentLineItemEditorGroupRow;
|
|
105
|
+
static createNewBillingDocumentLineItemGroupRow(parentGroupId?: string | null): BillingDocumentLineItemEditorGroupRow;
|
|
65
106
|
static createNewBillingDocumentLineItemRow(meta: BillingDocumentLineItemEditorMeta, groupId?: string | null): BillingDocumentLineItemEditorLineRow;
|
|
107
|
+
/**
|
|
108
|
+
* Removes a group header. With `deleteContents` everything inside it goes
|
|
109
|
+
* too; without, its lines and subgroups move up into its parent, in place.
|
|
110
|
+
*/
|
|
111
|
+
static deleteGroupRow(rows: BillingDocumentLineItemEditorRow[], groupId: string, deleteContents: boolean): BillingDocumentLineItemEditorRow[];
|
|
112
|
+
/**
|
|
113
|
+
* Removes the selected lines. A group goes with them once every line inside
|
|
114
|
+
* it — at any depth — is selected; a group without lines is left alone.
|
|
115
|
+
*/
|
|
66
116
|
static deleteSelectedRows(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>): BillingDocumentLineItemEditorRow[];
|
|
67
117
|
static duplicateBillingDocumentLineItemRow(row: BillingDocumentLineItemEditorLineRow): BillingDocumentLineItemEditorLineRow;
|
|
68
118
|
static duplicateSelectedRows(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>): BillingDocumentLineItemEditorRow[];
|
|
119
|
+
/**
|
|
120
|
+
* Index of the last row inside the group's block — its lines and subgroups
|
|
121
|
+
* at any depth — or of the header itself when the group is empty. Assumes
|
|
122
|
+
* the rows are normalized, so the block is contiguous.
|
|
123
|
+
*/
|
|
69
124
|
static findGroupBlockEndIndex(rows: BillingDocumentLineItemEditorRow[], groupId: string): number;
|
|
70
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Where a row sits in the tree: its siblings array and index, and the same
|
|
127
|
+
* for the group it sits in (`null` at the top level).
|
|
128
|
+
*/
|
|
129
|
+
private static findRowTreeLocation;
|
|
130
|
+
/**
|
|
131
|
+
* Index of the row heading the block that holds `targetIndex` on the level
|
|
132
|
+
* of `containerId`: the target itself, or its ancestor group directly inside
|
|
133
|
+
* that container. `-1` when the target sits outside the container.
|
|
134
|
+
*/
|
|
135
|
+
private static findSiblingBlockStartIndex;
|
|
136
|
+
/**
|
|
137
|
+
* Flattens the tree back into rows, depth first, pointing every row at the
|
|
138
|
+
* group it now sits in. Rows whose placement did not change are kept as is.
|
|
139
|
+
*/
|
|
140
|
+
private static flattenRowTree;
|
|
141
|
+
/** The level of a group, or 0 for the top level. */
|
|
142
|
+
private static getContainerLevel;
|
|
143
|
+
/**
|
|
144
|
+
* The groups a row dropped at `index` could join, deepest first: from the
|
|
145
|
+
* group the row above sits in (or heads) out to the group of the row below,
|
|
146
|
+
* which bounds the slot. `null` stands for the top level. Groups that are
|
|
147
|
+
* collapsed — or sit inside a collapsed group — are skipped, so a drop never
|
|
148
|
+
* vanishes into a group the user cannot see.
|
|
149
|
+
*/
|
|
150
|
+
static getDropContainerIds(rows: BillingDocumentLineItemEditorRow[], index: number, collapsedGroupIds?: ReadonlySet<string>): Array<string | null>;
|
|
71
151
|
private static getGroupBlockInsertionIndexAfterTarget;
|
|
72
152
|
private static getGroupBlockInsertionIndexBeforeTarget;
|
|
153
|
+
/** The group a row sits in: a line's group, a group's parent group. */
|
|
154
|
+
private static getRowContainerId;
|
|
73
155
|
private static getSignedQuantity;
|
|
74
156
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
157
|
+
* Wraps the selection in the supplied (new) group. A group whose lines are
|
|
158
|
+
* all selected moves along as a whole; other selected lines move on their
|
|
159
|
+
* own. The new group is created in the innermost group that holds the whole
|
|
160
|
+
* selection, where the first selected row was. Rows stay unchanged when the
|
|
161
|
+
* wrap would nest deeper than the API allows.
|
|
78
162
|
*/
|
|
79
163
|
static groupSelectedRows(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>, groupRow: BillingDocumentLineItemEditorGroupRow): BillingDocumentLineItemEditorRow[];
|
|
164
|
+
/**
|
|
165
|
+
* Moves a row one level in: into the group directly above it on its own
|
|
166
|
+
* level, as that group's last row. Unchanged when there is no such group or
|
|
167
|
+
* the move would nest deeper than the API allows.
|
|
168
|
+
*/
|
|
169
|
+
static indentRow(rows: BillingDocumentLineItemEditorRow[], rowId: string): BillingDocumentLineItemEditorRow[];
|
|
80
170
|
static isBillingDocumentLineItemRowValid(row: BillingDocumentLineItemEditorRow): boolean;
|
|
81
171
|
static isGroupRow(row: BillingDocumentLineItemEditorRow): row is BillingDocumentLineItemEditorGroupRow;
|
|
82
172
|
static isLineRow(row: BillingDocumentLineItemEditorRow): row is BillingDocumentLineItemEditorLineRow;
|
|
83
173
|
static isTransientEmptyLineRow(row: BillingDocumentLineItemEditorRow): boolean;
|
|
84
174
|
static moveGroupBlockByIndex(rows: BillingDocumentLineItemEditorRow[], currentIndex: number, targetIndex: number): BillingDocumentLineItemEditorRow[];
|
|
85
|
-
static moveSelectedRowsToGroup(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>, groupId: string): BillingDocumentLineItemEditorRow[];
|
|
86
175
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
176
|
+
* Moves a row by drag and drop. `currentIndex` and `targetIndex` follow the
|
|
177
|
+
* drag layer: the target is the index the row takes once it has left its own
|
|
178
|
+
* slot. `levelOffset` is how many levels the pointer travelled sideways
|
|
179
|
+
* (positive is deeper).
|
|
180
|
+
*
|
|
181
|
+
* A line lands in the group at the level closest to where it started plus
|
|
182
|
+
* that offset, among the groups the slot allows. A group keeps its parent
|
|
183
|
+
* and lands beside the sibling block it was dropped on, then moves in or out
|
|
184
|
+
* a level per step of offset.
|
|
185
|
+
*/
|
|
186
|
+
static moveRowByIndex(rows: BillingDocumentLineItemEditorRow[], currentIndex: number, targetIndex: number, levelOffset?: number, collapsedGroupIds?: ReadonlySet<string>): BillingDocumentLineItemEditorRow[];
|
|
187
|
+
/**
|
|
188
|
+
* Moves the selected lines to the end of a group, or of the document when
|
|
189
|
+
* `groupId` is `null`.
|
|
190
|
+
*/
|
|
191
|
+
static moveSelectedRowsToGroup(rows: BillingDocumentLineItemEditorRow[], selectedIds: ReadonlySet<string>, groupId: string | null): BillingDocumentLineItemEditorRow[];
|
|
192
|
+
/**
|
|
193
|
+
* Re-orders rows so every group header is directly followed by its own
|
|
194
|
+
* lines and subgroups, keeping each group block contiguous. Rows whose group
|
|
195
|
+
* no longer exists move to the top level. Order within each level follows
|
|
196
|
+
* the first appearance of each row.
|
|
91
197
|
*/
|
|
92
198
|
static normalizeRows(rows: BillingDocumentLineItemEditorRow[]): BillingDocumentLineItemEditorRow[];
|
|
93
199
|
/**
|
|
94
|
-
*
|
|
200
|
+
* Moves a row one level out: out of its group, to directly after that
|
|
201
|
+
* group's block. Unchanged for a row at the top level.
|
|
202
|
+
*/
|
|
203
|
+
static outdentRow(rows: BillingDocumentLineItemEditorRow[], rowId: string): BillingDocumentLineItemEditorRow[];
|
|
204
|
+
/**
|
|
205
|
+
* Works out what {@link groupSelectedRows} would wrap: the selected rows as
|
|
206
|
+
* whole nodes (a fully selected group counts once), the path of groups that
|
|
207
|
+
* holds all of them, the child of that innermost group holding the first of
|
|
208
|
+
* them, and whether wrapping them stays within the maximum level.
|
|
209
|
+
*/
|
|
210
|
+
private static planGroupSelection;
|
|
211
|
+
private static pruneSelectedFromRowTree;
|
|
212
|
+
private static removeGroupFromRowTree;
|
|
213
|
+
/**
|
|
214
|
+
* The group a dropped line joins at `index`: of the groups the slot allows
|
|
215
|
+
* (see {@link getDropContainerIds}), the one whose level is closest to
|
|
216
|
+
* `preferredLevel`.
|
|
217
|
+
*/
|
|
218
|
+
static resolveDropContainerId(rows: BillingDocumentLineItemEditorRow[], index: number, preferredLevel: number, collapsedGroupIds?: ReadonlySet<string>): string | null;
|
|
219
|
+
/**
|
|
220
|
+
* The group a new group inserted between two visible rows belongs to: the
|
|
221
|
+
* innermost group both rows sit in, where the row above counts as inside its
|
|
222
|
+
* own group when it is an expanded group header. So a group added between
|
|
223
|
+
* two lines of a group nests in it, and one added between two groups — or at
|
|
224
|
+
* the very end — stays beside them.
|
|
225
|
+
*/
|
|
226
|
+
static resolveGroupInsertParentId(visibleRows: BillingDocumentLineItemEditorRow[], index: number, structure: BillingDocumentLineItemsStructure, collapsedGroupIds: ReadonlySet<string>): string | null;
|
|
227
|
+
/**
|
|
228
|
+
* Resolves the group a new line belongs to once it is inserted at `index`.
|
|
95
229
|
*
|
|
96
|
-
* The slot right after a group's last
|
|
97
|
-
* new last line inside the group" and "the first line after the group" are
|
|
98
|
-
* same position in the row list
|
|
99
|
-
* cannot disambiguate it, so a drop coming from the drag layer carries an
|
|
100
|
-
* explicit `dropIntent`. Without one, the row is appended to the group it
|
|
230
|
+
* The slot right after a group's last row is ambiguous by construction: "the
|
|
231
|
+
* new last line inside the group" and "the first line after the group" are
|
|
232
|
+
* the same position in the row list. The line is appended to the group it
|
|
101
233
|
* borders, which is what the insert indicators and keyboard inserts expect.
|
|
102
234
|
*/
|
|
103
|
-
static resolveInsertGroupId(rows: BillingDocumentLineItemEditorRow[], index: number
|
|
235
|
+
static resolveInsertGroupId(rows: BillingDocumentLineItemEditorRow[], index: number): string | null;
|
|
104
236
|
/**
|
|
105
237
|
* Puts the rows that were never sent back between the synced rows, at the
|
|
106
238
|
* offset they held among the rows that were.
|
|
@@ -121,4 +253,9 @@ export declare class BillingDocumentLineItemsEditorUtil {
|
|
|
121
253
|
*/
|
|
122
254
|
static syncBillingDocumentLineItemRowsWithServer(serverRows: BillingDocumentLineItemEditorRow[], currentRows: BillingDocumentLineItemEditorRow[]): BillingDocumentLineItemEditorRow[];
|
|
123
255
|
private static trimOrNull;
|
|
256
|
+
/**
|
|
257
|
+
* Rebuilds the tree without the selected nodes, inserting the wrapping
|
|
258
|
+
* group among `containerChildren` after the remaining `precedingNodes`.
|
|
259
|
+
*/
|
|
260
|
+
private static wrapSelectionInRowTree;
|
|
124
261
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wisemen/wise-invoicing-web",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Invoicing frontend package with Vue 3 components, composables and types",
|
|
7
7
|
"author": "Wisemen",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"vite": "^8.2.0",
|
|
93
93
|
"vite-plugin-dts": "5.0.3",
|
|
94
94
|
"vitest": "^4.1.11",
|
|
95
|
-
"vue": "3.5.
|
|
95
|
+
"vue": "3.5.42",
|
|
96
96
|
"vue-i18n": "11.4.8",
|
|
97
97
|
"vue-router": "5.2.0",
|
|
98
98
|
"vue-sonner": "2.0.9",
|