@mmlogic/components 0.3.10 → 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/cjs/{index-BPj2cBXs.js → index-CAzwGt9u.js} +38 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mosterdcomponents.cjs.js +2 -2
- package/dist/cjs/mrd-boolean-field_23.cjs.entry.js +1280 -1073
- package/dist/collection/collection-manifest.json +23 -23
- package/dist/collection/components/{mrd-document-container/mrd-document-container.scss → documents/mrd-document-container/mrd-document-container.css} +3 -3
- package/dist/collection/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.js +54 -8
- package/dist/collection/components/documents/mrd-document-list/folder-tree.js +109 -0
- package/dist/collection/components/{mrd-document-list/mrd-document-list.scss → documents/mrd-document-list/mrd-document-list.css} +17 -4
- package/dist/collection/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.js +166 -237
- package/dist/collection/components/documents/mrd-document-list/tree-view.js +75 -0
- package/dist/collection/components/{mrd-document-view/mrd-document-view.scss → documents/mrd-document-view/mrd-document-view.css} +1 -1
- package/dist/collection/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.js +4 -4
- package/dist/collection/components/fields/field-helpers.js +17 -0
- package/dist/collection/components/fields/file-upload-common.js +38 -0
- package/dist/collection/components/{mrd-boolean-field/mrd-boolean-field.scss → fields/mrd-boolean-field/mrd-boolean-field.css} +3 -3
- package/dist/collection/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.js +1 -1
- package/dist/collection/components/{mrd-currency-field/mrd-currency-field.scss → fields/mrd-currency-field/mrd-currency-field.css} +11 -9
- package/dist/collection/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.js +7 -13
- package/dist/collection/components/{mrd-date-field/mrd-date-field.scss → fields/mrd-date-field/mrd-date-field.css} +8 -10
- package/dist/collection/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.js +3 -10
- package/dist/collection/components/{mrd-datetime-field/mrd-datetime-field.scss → fields/mrd-datetime-field/mrd-datetime-field.css} +8 -10
- package/dist/collection/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.js +3 -10
- package/dist/collection/components/{mrd-email-field/mrd-email-field.scss → fields/mrd-email-field/mrd-email-field.css} +2 -11
- package/dist/collection/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.js +6 -13
- package/dist/collection/components/{mrd-file-field/mrd-file-field.scss → fields/mrd-file-field/mrd-file-field.css} +19 -24
- package/dist/collection/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.js +13 -24
- package/dist/collection/components/{mrd-hyperlink-field/mrd-hyperlink-field.scss → fields/mrd-hyperlink-field/mrd-hyperlink-field.css} +7 -16
- package/dist/collection/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.js +9 -15
- package/dist/collection/components/{mrd-image-field/mrd-image-field.scss → fields/mrd-image-field/mrd-image-field.css} +15 -24
- package/dist/collection/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.js +13 -28
- package/dist/collection/components/{mrd-list-field/mrd-list-field.scss → fields/mrd-list-field/mrd-list-field.css} +18 -21
- package/dist/collection/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.js +10 -25
- package/dist/collection/components/{mrd-longtext-field/mrd-longtext-field.scss → fields/mrd-longtext-field/mrd-longtext-field.css} +21 -18
- package/dist/collection/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.js +3 -10
- package/dist/collection/components/{mrd-number-field/mrd-number-field.scss → fields/mrd-number-field/mrd-number-field.css} +9 -10
- package/dist/collection/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.js +7 -6
- package/dist/collection/components/{mrd-relation-field/mrd-relation-field.scss → fields/mrd-relation-field/mrd-relation-field.css} +61 -59
- package/dist/collection/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.js +16 -26
- package/dist/collection/components/{mrd-secret-field/mrd-secret-field.scss → fields/mrd-secret-field/mrd-secret-field.css} +7 -10
- package/dist/collection/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.js +4 -11
- package/dist/collection/components/{mrd-text-field/mrd-text-field.scss → fields/mrd-text-field/mrd-text-field.css} +2 -11
- package/dist/collection/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.js +3 -10
- package/dist/collection/components/{mrd-textarea-field/mrd-textarea-field.scss → fields/mrd-textarea-field/mrd-textarea-field.css} +7 -10
- package/dist/collection/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.js +3 -9
- package/dist/collection/components/{mrd-time-field/mrd-time-field.scss → fields/mrd-time-field/mrd-time-field.css} +8 -10
- package/dist/collection/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.js +3 -10
- package/dist/collection/components/{mrd-field/mrd-field.scss → form/mrd-field/mrd-field.css} +1 -1
- package/dist/collection/components/{mrd-field → form/mrd-field}/mrd-field.js +3 -3
- package/dist/collection/components/{mrd-form/mrd-form.scss → form/mrd-form/mrd-form.css} +1 -1
- package/dist/collection/components/{mrd-form → form/mrd-form}/mrd-form.js +5 -5
- package/dist/collection/components/layout/mrd-layout-section/field-value.js +111 -0
- package/dist/collection/components/layout/mrd-layout-section/layout-helpers.js +29 -0
- package/dist/collection/components/{mrd-layout-section/mrd-layout-section.scss → layout/mrd-layout-section/mrd-layout-section.css} +4 -4
- package/dist/collection/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.js +58 -133
- package/dist/collection/components/{mrd-table/mrd-table.scss → table/mrd-table/mrd-table.css} +11 -13
- package/dist/collection/components/{mrd-table → table/mrd-table}/mrd-table.js +111 -439
- package/dist/collection/components/table/mrd-table/table-filter-popup.js +85 -0
- package/dist/collection/components/table/mrd-table/table-parts.js +110 -0
- package/dist/collection/components/table/mrd-table/table-query.js +178 -0
- package/dist/collection/components/table/mrd-table/virtual-scroll.js +49 -0
- package/dist/collection/dev/app.js +19 -18
- package/dist/collection/dev/example-data.js +58 -43
- package/dist/collection/utils/i18n.js +10 -0
- package/dist/collection/utils/query-params.js +43 -0
- package/dist/components/field-helpers.js +1 -0
- package/dist/components/file-upload-common.js +1 -0
- package/dist/components/i18n.js +1 -1
- package/dist/components/mrd-boolean-field2.js +1 -1
- package/dist/components/mrd-currency-field2.js +1 -1
- package/dist/components/mrd-date-field2.js +1 -1
- package/dist/components/mrd-datetime-field2.js +1 -1
- package/dist/components/mrd-document-container2.js +1 -1
- package/dist/components/mrd-document-list2.js +1 -1
- package/dist/components/mrd-document-view2.js +1 -1
- package/dist/components/mrd-email-field2.js +1 -1
- package/dist/components/mrd-file-field2.js +1 -1
- package/dist/components/mrd-form.js +1 -1
- package/dist/components/mrd-hyperlink-field2.js +1 -1
- package/dist/components/mrd-image-field2.js +1 -1
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-list-field2.js +1 -1
- package/dist/components/mrd-longtext-field2.js +1 -1
- package/dist/components/mrd-number-field2.js +1 -1
- package/dist/components/mrd-relation-field2.js +1 -1
- package/dist/components/mrd-secret-field2.js +1 -1
- package/dist/components/mrd-table2.js +1 -1
- package/dist/components/mrd-text-field2.js +1 -1
- package/dist/components/mrd-textarea-field2.js +1 -1
- package/dist/components/mrd-time-field2.js +1 -1
- package/dist/components/query-params.js +1 -0
- package/dist/esm/{index-_tsCCkAi.js → index-DiSEJMA8.js} +38 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mosterdcomponents.js +3 -3
- package/dist/esm/mrd-boolean-field_23.entry.js +1280 -1073
- package/dist/mosterdcomponents/mosterdcomponents.css +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-9b3c0917.entry.js +1 -0
- package/dist/mosterdcomponents/p-DiSEJMA8.js +2 -0
- package/dist/types/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.d.ts +7 -2
- package/dist/types/components/documents/mrd-document-list/folder-tree.d.ts +66 -0
- package/dist/types/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.d.ts +28 -38
- package/dist/types/components/documents/mrd-document-list/tree-view.d.ts +32 -0
- package/dist/types/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.d.ts +2 -2
- package/dist/types/components/fields/field-helpers.d.ts +18 -0
- package/dist/types/components/fields/file-upload-common.d.ts +18 -0
- package/dist/types/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.d.ts +1 -1
- package/dist/types/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.d.ts +2 -2
- package/dist/types/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.d.ts +1 -1
- package/dist/types/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.d.ts +1 -1
- package/dist/types/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.d.ts +1 -1
- package/dist/types/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.d.ts +2 -4
- package/dist/types/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.d.ts +2 -2
- package/dist/types/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.d.ts +2 -4
- package/dist/types/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.d.ts +2 -2
- package/dist/types/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.d.ts +1 -1
- package/dist/types/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.d.ts +2 -2
- package/dist/types/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.d.ts +2 -2
- package/dist/types/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.d.ts +1 -1
- package/dist/types/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.d.ts +1 -1
- package/dist/types/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.d.ts +1 -1
- package/dist/types/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.d.ts +1 -1
- package/dist/types/components/{mrd-field → form/mrd-field}/mrd-field.d.ts +2 -2
- package/dist/types/components/{mrd-form → form/mrd-form}/mrd-form.d.ts +2 -2
- package/dist/types/components/layout/mrd-layout-section/field-value.d.ts +22 -0
- package/dist/types/components/layout/mrd-layout-section/layout-helpers.d.ts +8 -0
- package/dist/types/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.d.ts +4 -8
- package/dist/types/components/{mrd-table → table/mrd-table}/mrd-table.d.ts +6 -13
- package/dist/types/components/table/mrd-table/table-filter-popup.d.ts +35 -0
- package/dist/types/components/table/mrd-table/table-parts.d.ts +61 -0
- package/dist/types/components/table/mrd-table/table-query.d.ts +50 -0
- package/dist/types/components/table/mrd-table/virtual-scroll.d.ts +26 -0
- package/dist/types/components.d.ts +36 -5
- package/dist/types/types/client-layout.d.ts +5 -0
- package/dist/types/utils/query-params.d.ts +14 -0
- package/package.json +7 -2
- package/dist/components/validation.js +0 -1
- package/dist/mosterdcomponents/cell-renderer-B-AJDBcj.js.map +0 -1
- package/dist/mosterdcomponents/client-layout-ChqRA3AF.js.map +0 -1
- package/dist/mosterdcomponents/format-BAfsQfy1.js.map +0 -1
- package/dist/mosterdcomponents/i18n-s1XrKcD2.js.map +0 -1
- package/dist/mosterdcomponents/index-DkY-NQj0.js.map +0 -1
- package/dist/mosterdcomponents/index-DwF_Sp__.js.map +0 -1
- package/dist/mosterdcomponents/index.esm.js.map +0 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +0 -1
- package/dist/mosterdcomponents/p-69452249.entry.js +0 -1
- package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
- package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +0 -1
- package/dist/mosterdcomponents/validation-Br9k2Ztw.js.map +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
-
import { ClientLayoutItemType } from "
|
|
3
|
-
import { t } from "
|
|
4
|
-
import {
|
|
2
|
+
import { ClientLayoutItemType } from "../../../types/client-layout";
|
|
3
|
+
import { t } from "../../../utils/i18n";
|
|
4
|
+
import { applyViewFilters, buildListPath } from "../../../utils/query-params";
|
|
5
|
+
import { makeContainerNode, makeFolderNode, computeTotals, segmentsOf, folderStringOf, stripExtension, applyFolderDistinct, applyDocMove, } from "./folder-tree";
|
|
6
|
+
import { renderLoadingRow, renderNodeChildren, renderContainerNode } from "./tree-view";
|
|
5
7
|
/**
|
|
6
8
|
* Archetype-driven document collection view. Renders documents as a lazy,
|
|
7
9
|
* file-explorer-style folder tree, grouped by the `commons.document` archetype's
|
|
@@ -25,6 +27,11 @@ export class MrdDocumentList {
|
|
|
25
27
|
this.item = null;
|
|
26
28
|
/** Parent record id — required for RELATED_VIEW path building. */
|
|
27
29
|
this.parentId = '';
|
|
30
|
+
/** Canonical parent href (`/{base}/{tenant}/{fromClass}/{parentId}`) supplied by
|
|
31
|
+
* the host. When the RELATED_VIEW's `inverseRelation` equals the archetype
|
|
32
|
+
* `container` slot, this seeds a single container so an empty dossier still
|
|
33
|
+
* accepts file drops and folder creation. */
|
|
34
|
+
this.containerHref = '';
|
|
28
35
|
this.locale = navigator.language;
|
|
29
36
|
this.containers = [];
|
|
30
37
|
this.rootLoading = true;
|
|
@@ -36,6 +43,8 @@ export class MrdDocumentList {
|
|
|
36
43
|
this.dropTargetId = null;
|
|
37
44
|
/** Node id showing an "uploading…" indicator while a dropped file is processed. */
|
|
38
45
|
this.uploadingNodeId = null;
|
|
46
|
+
/** Whether a drag is hovering the root drop-zone (single-container area highlight). */
|
|
47
|
+
this.rootDropActive = false;
|
|
39
48
|
this.nodeIndex = new Map();
|
|
40
49
|
// ── New-folder editing state ───────────────────────────────────────────────
|
|
41
50
|
/** The pending node whose inline name input is open (null = not creating). */
|
|
@@ -69,7 +78,7 @@ export class MrdDocumentList {
|
|
|
69
78
|
return;
|
|
70
79
|
const { target, container } = resolved;
|
|
71
80
|
const tempId = `${container.id}/__new__${this.newFolderSeq++}`;
|
|
72
|
-
const node =
|
|
81
|
+
const node = makeFolderNode(tempId, '', container.id);
|
|
73
82
|
node.pending = true;
|
|
74
83
|
node.editing = true;
|
|
75
84
|
target.children = [...target.children, node];
|
|
@@ -160,8 +169,18 @@ export class MrdDocumentList {
|
|
|
160
169
|
e.preventDefault();
|
|
161
170
|
if (e.dataTransfer)
|
|
162
171
|
e.dataTransfer.dropEffect = file ? 'copy' : 'move';
|
|
172
|
+
if (!this.rootDropActive)
|
|
173
|
+
this.rootDropActive = true;
|
|
174
|
+
};
|
|
175
|
+
this.onRootDragLeave = (e) => {
|
|
176
|
+
const related = e.relatedTarget;
|
|
177
|
+
if (related && this.el.contains(related))
|
|
178
|
+
return; // moved onto a child, still inside
|
|
179
|
+
if (this.rootDropActive)
|
|
180
|
+
this.rootDropActive = false;
|
|
163
181
|
};
|
|
164
182
|
this.onRootDrop = (e) => {
|
|
183
|
+
this.rootDropActive = false;
|
|
165
184
|
if (!this.singleContainer)
|
|
166
185
|
return;
|
|
167
186
|
const only = this.containers[0];
|
|
@@ -178,7 +197,33 @@ export class MrdDocumentList {
|
|
|
178
197
|
};
|
|
179
198
|
}
|
|
180
199
|
componentDidLoad() {
|
|
181
|
-
this.
|
|
200
|
+
if (this.isSeededSingleContainer()) {
|
|
201
|
+
this.seedSingleContainer();
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
this.emitContainerDistinct();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** True when the view is a single-container context: a RELATED_VIEW whose
|
|
208
|
+
* `inverseRelation` matches the archetype `container` slot, with a known
|
|
209
|
+
* parent href. The container is then implied by context (not by distinct),
|
|
210
|
+
* so it works even with zero documents. */
|
|
211
|
+
isSeededSingleContainer() {
|
|
212
|
+
var _a, _b;
|
|
213
|
+
return (((_a = this.item) === null || _a === void 0 ? void 0 : _a.type) === ClientLayoutItemType.RELATED_VIEW &&
|
|
214
|
+
!!((_b = this.item) === null || _b === void 0 ? void 0 : _b.inverseRelation) &&
|
|
215
|
+
this.item.inverseRelation === this.containerField &&
|
|
216
|
+
!!this.containerHref);
|
|
217
|
+
}
|
|
218
|
+
/** Seed the single implied container from context and load its folders. */
|
|
219
|
+
seedSingleContainer() {
|
|
220
|
+
const node = makeContainerNode(this.containerHref, this.containerField, 0);
|
|
221
|
+
this.nodeIndex.set(node.id, node);
|
|
222
|
+
this.containers = [node];
|
|
223
|
+
this.rootLoading = false;
|
|
224
|
+
this.singleContainer = true;
|
|
225
|
+
node.open = true;
|
|
226
|
+
this.emitFolderDistinct(node);
|
|
182
227
|
}
|
|
183
228
|
componentDidRender() {
|
|
184
229
|
if (this.pendingNeedsFocus && this.pendingInputEl) {
|
|
@@ -214,50 +259,42 @@ export class MrdDocumentList {
|
|
|
214
259
|
return (_b = (_a = this.archetype) === null || _a === void 0 ? void 0 : _a.slots) === null || _b === void 0 ? void 0 : _b.date;
|
|
215
260
|
}
|
|
216
261
|
// ── Path / query building (mirrors mrd-table conventions) ────────────────
|
|
217
|
-
/** VIEW: `/{dataClass}`; RELATED_VIEW: `/{fromClass}/{parentId}/{dataClass}`.
|
|
262
|
+
/** VIEW: `/{dataClass}`; RELATED_VIEW: `/{fromClass}/{parentId}/{dataClass}`.
|
|
263
|
+
* Used for reads (list/distinct): `dataClass`/`relatedClass` may be an abstract
|
|
264
|
+
* type (e.g. "contents"), filtered down to the concrete `filterClass` via the
|
|
265
|
+
* `type` query param — see baseParams(). */
|
|
218
266
|
buildDataPath() {
|
|
267
|
+
var _a, _b;
|
|
268
|
+
const it = this.item;
|
|
269
|
+
return buildListPath({
|
|
270
|
+
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) === ClientLayoutItemType.RELATED_VIEW,
|
|
271
|
+
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
272
|
+
parentId: this.parentId,
|
|
273
|
+
dataClass: (_b = (_a = it === null || it === void 0 ? void 0 : it.dataClass) !== null && _a !== void 0 ? _a : it === null || it === void 0 ? void 0 : it.relatedClass) !== null && _b !== void 0 ? _b : '',
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
/** Path for creating a new document (file-drop). Unlike buildDataPath(), this
|
|
277
|
+
* must target the concrete type: `dataClass`/`relatedClass` can be an abstract
|
|
278
|
+
* base type (e.g. "contents") that cannot be POSTed to directly, so prefer
|
|
279
|
+
* `filterClass` (e.g. "documents") when present. */
|
|
280
|
+
buildCreatePath() {
|
|
219
281
|
var _a, _b, _c;
|
|
220
282
|
const it = this.item;
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
283
|
+
return buildListPath({
|
|
284
|
+
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) === ClientLayoutItemType.RELATED_VIEW,
|
|
285
|
+
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
286
|
+
parentId: this.parentId,
|
|
287
|
+
dataClass: (_c = (_b = (_a = it === null || it === void 0 ? void 0 : it.filterClass) !== null && _a !== void 0 ? _a : it === null || it === void 0 ? void 0 : it.dataClass) !== null && _b !== void 0 ? _b : it === null || it === void 0 ? void 0 : it.relatedClass) !== null && _c !== void 0 ? _c : '',
|
|
288
|
+
});
|
|
226
289
|
}
|
|
227
290
|
/** View-level static filters + filterClass, shared by every request. */
|
|
228
291
|
baseParams() {
|
|
229
|
-
var _a, _b, _c
|
|
292
|
+
var _a, _b, _c;
|
|
230
293
|
const p = new URLSearchParams();
|
|
231
294
|
const filterClass = (_a = this.item) === null || _a === void 0 ? void 0 : _a.filterClass;
|
|
232
295
|
if (filterClass)
|
|
233
296
|
p.set('type', filterClass);
|
|
234
|
-
|
|
235
|
-
if (!f.name)
|
|
236
|
-
continue;
|
|
237
|
-
if (f.operator === 'EMPTY') {
|
|
238
|
-
p.set(f.name, '');
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
if (f.operator === 'NOT_EMPTY') {
|
|
242
|
-
p.set(f.name + '_notempty', 'true');
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
if (f.operator === 'STARTS_WITH') {
|
|
246
|
-
p.set(f.name + '_startswith', String((_e = f.value) !== null && _e !== void 0 ? _e : ''));
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
if (f.operator === 'FROM') {
|
|
250
|
-
p.set(f.name + '_from', String((_f = f.value) !== null && _f !== void 0 ? _f : ''));
|
|
251
|
-
continue;
|
|
252
|
-
}
|
|
253
|
-
if (f.operator === 'TO') {
|
|
254
|
-
p.set(f.name + '_to', String((_g = f.value) !== null && _g !== void 0 ? _g : ''));
|
|
255
|
-
continue;
|
|
256
|
-
}
|
|
257
|
-
if (f.value != null) {
|
|
258
|
-
p.set(f.name, String(f.value));
|
|
259
|
-
}
|
|
260
|
-
}
|
|
297
|
+
applyViewFilters(p, (_c = (_b = this.item) === null || _b === void 0 ? void 0 : _b.view) === null || _c === void 0 ? void 0 : _c.filter);
|
|
261
298
|
return p;
|
|
262
299
|
}
|
|
263
300
|
emitContainerDistinct() {
|
|
@@ -324,7 +361,7 @@ export class MrdDocumentList {
|
|
|
324
361
|
if (!v.value || typeof v.value !== 'object')
|
|
325
362
|
continue;
|
|
326
363
|
const href = v.value.href;
|
|
327
|
-
const node =
|
|
364
|
+
const node = makeContainerNode(href, v.value.name, v.count);
|
|
328
365
|
nodes.push(node);
|
|
329
366
|
this.nodeIndex.set(node.id, node);
|
|
330
367
|
}
|
|
@@ -342,38 +379,7 @@ export class MrdDocumentList {
|
|
|
342
379
|
const container = this.nodeIndex.get(containerId);
|
|
343
380
|
if (!container)
|
|
344
381
|
return;
|
|
345
|
-
container
|
|
346
|
-
container.hasDocs = false;
|
|
347
|
-
container.docCount = 0;
|
|
348
|
-
for (const v of values) {
|
|
349
|
-
const raw = typeof v.value === 'string' ? v.value : v.value == null ? '' : String(v.value);
|
|
350
|
-
const segs = this.splitFolder(raw);
|
|
351
|
-
if (segs.length === 0) {
|
|
352
|
-
// Root documents — the container's own direct documents.
|
|
353
|
-
container.hasDocs = true;
|
|
354
|
-
container.docCount = v.count;
|
|
355
|
-
container.fullPath = raw;
|
|
356
|
-
continue;
|
|
357
|
-
}
|
|
358
|
-
let node = container;
|
|
359
|
-
const acc = [];
|
|
360
|
-
for (const seg of segs) {
|
|
361
|
-
acc.push(seg);
|
|
362
|
-
let child = node.children.find(c => c.label === seg);
|
|
363
|
-
if (!child) {
|
|
364
|
-
child = this.makeFolderNode(container.id + '/' + acc.join('/'), seg, container.id);
|
|
365
|
-
node.children.push(child);
|
|
366
|
-
this.nodeIndex.set(child.id, child);
|
|
367
|
-
}
|
|
368
|
-
node = child;
|
|
369
|
-
}
|
|
370
|
-
node.hasDocs = true;
|
|
371
|
-
node.docCount = v.count;
|
|
372
|
-
node.fullPath = raw;
|
|
373
|
-
}
|
|
374
|
-
this.computeTotals(container);
|
|
375
|
-
container.foldersLoaded = true;
|
|
376
|
-
container.loading = false;
|
|
382
|
+
applyFolderDistinct(container, values, this.nodeIndex);
|
|
377
383
|
// If the container has root documents, load them now (they show inline on expand).
|
|
378
384
|
if (container.hasDocs && !container.docsLoaded) {
|
|
379
385
|
this.emitDocuments(container, container);
|
|
@@ -381,36 +387,6 @@ export class MrdDocumentList {
|
|
|
381
387
|
this.bump();
|
|
382
388
|
}
|
|
383
389
|
// ── Tree helpers ─────────────────────────────────────────────────────────
|
|
384
|
-
/** Normalise a folder path: null/""/"/" → root ([]); else split on "/" dropping empties. */
|
|
385
|
-
splitFolder(path) {
|
|
386
|
-
if (path == null)
|
|
387
|
-
return [];
|
|
388
|
-
const s = String(path).trim();
|
|
389
|
-
if (s === '' || s === '/')
|
|
390
|
-
return [];
|
|
391
|
-
return s.split('/').map(x => x.trim()).filter(Boolean);
|
|
392
|
-
}
|
|
393
|
-
makeContainerNode(href, label, count) {
|
|
394
|
-
return {
|
|
395
|
-
id: 'c:' + href, kind: 'container', label, href,
|
|
396
|
-
hasDocs: false, docCount: 0, totalCount: count, children: [],
|
|
397
|
-
open: false, loading: false, foldersLoaded: false, docsLoaded: false, docs: [],
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
makeFolderNode(id, label, containerId) {
|
|
401
|
-
return {
|
|
402
|
-
id, kind: 'folder', label, containerId,
|
|
403
|
-
hasDocs: false, docCount: 0, totalCount: 0, children: [],
|
|
404
|
-
open: false, loading: false, foldersLoaded: false, docsLoaded: false, docs: [],
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
computeTotals(node) {
|
|
408
|
-
let total = node.docCount;
|
|
409
|
-
for (const c of node.children)
|
|
410
|
-
total += this.computeTotals(c);
|
|
411
|
-
node.totalCount = total;
|
|
412
|
-
return total;
|
|
413
|
-
}
|
|
414
390
|
/** Force a re-render after mutating nodes in place. */
|
|
415
391
|
bump() {
|
|
416
392
|
this.containers = [...this.containers];
|
|
@@ -460,14 +436,6 @@ export class MrdDocumentList {
|
|
|
460
436
|
async createFolder() {
|
|
461
437
|
this.startCreateFolder();
|
|
462
438
|
}
|
|
463
|
-
/** Folder path segments of a node relative to its container (derived from its id). */
|
|
464
|
-
segmentsOf(node, container) {
|
|
465
|
-
if (node.kind === 'container')
|
|
466
|
-
return [];
|
|
467
|
-
const prefix = container.id + '/';
|
|
468
|
-
const rest = node.id.startsWith(prefix) ? node.id.slice(prefix.length) : '';
|
|
469
|
-
return rest ? rest.split('/') : [];
|
|
470
|
-
}
|
|
471
439
|
commitFolder() {
|
|
472
440
|
const node = this.pendingNode;
|
|
473
441
|
const parent = this.pendingParent;
|
|
@@ -492,7 +460,7 @@ export class MrdDocumentList {
|
|
|
492
460
|
}
|
|
493
461
|
// Finalise: swap the temp id for the real path-derived id so a later distinct
|
|
494
462
|
// value with the same folder string merges onto this node.
|
|
495
|
-
const segs = [...
|
|
463
|
+
const segs = [...segmentsOf(parent, container), name];
|
|
496
464
|
this.nodeIndex.delete(node.id);
|
|
497
465
|
node.id = container.id + '/' + segs.join('/');
|
|
498
466
|
node.fullPath = '/' + segs.join('/');
|
|
@@ -541,10 +509,6 @@ export class MrdDocumentList {
|
|
|
541
509
|
this.bump();
|
|
542
510
|
this.mrdUpload.emit({ file });
|
|
543
511
|
}
|
|
544
|
-
/** Strip a single trailing extension for the document title. */
|
|
545
|
-
stripExtension(name) {
|
|
546
|
-
return name.replace(/\.[^./\\]+$/, '');
|
|
547
|
-
}
|
|
548
512
|
/** Host callback with the uploaded file reference. Builds the create payload
|
|
549
513
|
* from the archetype slots and requests the new document. */
|
|
550
514
|
async setFileReference(uri) {
|
|
@@ -552,16 +516,20 @@ export class MrdDocumentList {
|
|
|
552
516
|
if (!up)
|
|
553
517
|
return;
|
|
554
518
|
const { file, node, container } = up;
|
|
555
|
-
const folder =
|
|
519
|
+
const folder = folderStringOf(node, container);
|
|
556
520
|
const values = {
|
|
557
521
|
[this.fileField]: uri,
|
|
558
|
-
[this.titleField]:
|
|
522
|
+
[this.titleField]: stripExtension(file.name),
|
|
559
523
|
[this.folderField]: folder,
|
|
560
|
-
[this.containerField]: container.href,
|
|
561
524
|
};
|
|
562
|
-
|
|
525
|
+
// The create path already embeds the container (/{fromClass}/{parentId}/...)
|
|
526
|
+
// when this is the seeded single-container context; omit the redundant field.
|
|
527
|
+
if (!this.isSeededSingleContainer()) {
|
|
528
|
+
values[this.containerField] = container.href;
|
|
529
|
+
}
|
|
530
|
+
this.mrdCreateObject.emit({ path: this.buildCreatePath(), values });
|
|
563
531
|
// Optimistically show the new document (no href until a reload).
|
|
564
|
-
const optimistic = { [this.titleField]:
|
|
532
|
+
const optimistic = { [this.titleField]: stripExtension(file.name), _optimistic: true };
|
|
565
533
|
const wasUnloadedEmpty = !node.docsLoaded && node.docCount === 0;
|
|
566
534
|
node.hasDocs = true;
|
|
567
535
|
node.pending = false;
|
|
@@ -590,16 +558,6 @@ export class MrdDocumentList {
|
|
|
590
558
|
this.lastOptimisticDoc = null;
|
|
591
559
|
this.bump();
|
|
592
560
|
}
|
|
593
|
-
/** Folder string a node represents: the raw distinct value when it holds
|
|
594
|
-
* documents, else derived from its path segments; null for a container root. */
|
|
595
|
-
folderStringOf(node, container) {
|
|
596
|
-
if (node.kind === 'container')
|
|
597
|
-
return null;
|
|
598
|
-
if (node.fullPath != null && node.fullPath !== '')
|
|
599
|
-
return node.fullPath;
|
|
600
|
-
const segs = this.segmentsOf(node, container);
|
|
601
|
-
return segs.length ? '/' + segs.join('/') : null;
|
|
602
|
-
}
|
|
603
561
|
moveDocument(toNode, toContainer) {
|
|
604
562
|
var _a, _b;
|
|
605
563
|
const doc = this.dragDoc;
|
|
@@ -611,26 +569,14 @@ export class MrdDocumentList {
|
|
|
611
569
|
: (fromNode.containerId ? this.nodeIndex.get(fromNode.containerId) : undefined);
|
|
612
570
|
if (!fromContainer)
|
|
613
571
|
return;
|
|
614
|
-
const targetFolder =
|
|
615
|
-
const sourceFolder =
|
|
572
|
+
const targetFolder = folderStringOf(toNode, toContainer);
|
|
573
|
+
const sourceFolder = folderStringOf(fromNode, fromContainer);
|
|
616
574
|
const sameContainer = toContainer === fromContainer;
|
|
617
575
|
// No-op: dropped back onto its own folder.
|
|
618
576
|
if (toNode === fromNode || (sameContainer && targetFolder === sourceFolder))
|
|
619
577
|
return;
|
|
620
|
-
//
|
|
621
|
-
|
|
622
|
-
fromNode.docCount = Math.max(0, fromNode.docCount - 1);
|
|
623
|
-
// A now-empty folder should stop showing an expand chevron (it disappears on
|
|
624
|
-
// the next reload anyway, since it is derived from document folder strings).
|
|
625
|
-
if (fromNode.docsLoaded)
|
|
626
|
-
fromNode.hasDocs = fromNode.docs.length > 0;
|
|
627
|
-
toNode.hasDocs = true;
|
|
628
|
-
toNode.pending = false; // a pending folder is now materialised
|
|
629
|
-
toNode.docCount += 1;
|
|
630
|
-
if (toNode.kind === 'folder')
|
|
631
|
-
toNode.fullPath = targetFolder !== null && targetFolder !== void 0 ? targetFolder : '';
|
|
632
|
-
if (toNode.docsLoaded)
|
|
633
|
-
toNode.docs = [...toNode.docs, doc];
|
|
578
|
+
// Optimistic tree update (fire-and-forget; no refetch).
|
|
579
|
+
applyDocMove(doc, fromNode, toNode, targetFolder);
|
|
634
580
|
this.recomputeContainerTotals(fromContainer, -1);
|
|
635
581
|
if (!sameContainer)
|
|
636
582
|
this.recomputeContainerTotals(toContainer, +1);
|
|
@@ -648,7 +594,7 @@ export class MrdDocumentList {
|
|
|
648
594
|
* loaded; otherwise just nudge the aggregate badge by the delta. */
|
|
649
595
|
recomputeContainerTotals(container, delta) {
|
|
650
596
|
if (container.foldersLoaded) {
|
|
651
|
-
|
|
597
|
+
computeTotals(container);
|
|
652
598
|
}
|
|
653
599
|
else {
|
|
654
600
|
container.totalCount = Math.max(0, container.totalCount + delta);
|
|
@@ -661,97 +607,56 @@ export class MrdDocumentList {
|
|
|
661
607
|
this.mrdNavigate.emit({ href, label });
|
|
662
608
|
}
|
|
663
609
|
// ── Render ───────────────────────────────────────────────────────────────
|
|
664
|
-
|
|
665
|
-
return
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
return (h("div", { class: "mrd-document-list__loading", key: "loading" }, this.indent(depth), h("span", { class: "mrd-document-list__spinner" }), t('loading', this.locale)));
|
|
688
|
-
}
|
|
689
|
-
renderChildren(container, node, depth) {
|
|
690
|
-
const out = [];
|
|
691
|
-
// Direct documents of this node (root docs live on the container node).
|
|
692
|
-
if (node.hasDocs) {
|
|
693
|
-
if (node.docsLoaded) {
|
|
694
|
-
for (const doc of node.docs)
|
|
695
|
-
out.push(this.renderDocRow(doc, node, container, depth));
|
|
696
|
-
}
|
|
697
|
-
else if (node.loading) {
|
|
698
|
-
out.push(this.renderLoadingRow(depth));
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
// Child folders.
|
|
702
|
-
for (const child of node.children) {
|
|
703
|
-
out.push(this.renderFolderNode(container, child, depth));
|
|
704
|
-
}
|
|
705
|
-
// An uploading file dropped onto this node.
|
|
706
|
-
if (node.id === this.uploadingNodeId)
|
|
707
|
-
out.push(this.renderUploadingRow(depth));
|
|
708
|
-
return out;
|
|
709
|
-
}
|
|
710
|
-
renderUploadingRow(depth) {
|
|
711
|
-
return (h("div", { class: "mrd-document-list__loading", key: "uploading" }, this.indent(depth), h("span", { class: "mrd-document-list__spinner" }), t('upload_file', this.locale)));
|
|
712
|
-
}
|
|
713
|
-
renderFolderEditRow(node, depth) {
|
|
714
|
-
return (h("div", { class: "mrd-document-list__node", key: node.id }, h("div", { class: "mrd-document-list__row mrd-document-list__row--edit" }, this.indent(depth), this.renderChevron(false, true), this.renderFolderIcon(), h("input", { class: "mrd-document-list__name-input", type: "text", placeholder: t('folder_name_placeholder', this.locale), ref: el => (this.pendingInputEl = el), onInput: this.onPendingInput, onKeyDown: this.onPendingKeyDown, onBlur: () => this.cancelFolder() })), node.error && (h("div", { class: "mrd-document-list__error", style: { paddingLeft: `${depth * 18 + 52}px` } }, node.error))));
|
|
715
|
-
}
|
|
716
|
-
renderFolderNode(container, node, depth) {
|
|
717
|
-
if (node.editing)
|
|
718
|
-
return this.renderFolderEditRow(node, depth);
|
|
719
|
-
const leaf = node.children.length === 0 && !node.hasDocs;
|
|
720
|
-
const selected = node.id === this.selectedId;
|
|
721
|
-
const cls = 'mrd-document-list__row'
|
|
722
|
-
+ (selected ? ' mrd-document-list__row--selected' : '')
|
|
723
|
-
+ (node.pending ? ' mrd-document-list__row--pending' : '')
|
|
724
|
-
+ (node.id === this.dropTargetId ? ' mrd-document-list__row--drop' : '');
|
|
725
|
-
return (h("div", { class: "mrd-document-list__node", key: node.id }, h("div", { class: cls, onClick: () => this.toggleFolder(container, node), onDragOver: (e) => this.onNodeDragOver(e, node), onDragLeave: () => this.onNodeDragLeave(node), onDrop: (e) => this.onNodeDrop(e, node, container) }, this.indent(depth), this.renderChevron(node.open, leaf), this.renderFolderIcon(), h("span", { class: "mrd-document-list__label" }, node.label), h("span", { class: "mrd-document-list__count" }, node.totalCount)), node.open && h("div", { class: "mrd-document-list__kids" }, this.renderChildren(container, node, depth + 1))));
|
|
726
|
-
}
|
|
727
|
-
renderContainerNode(node, depth) {
|
|
728
|
-
const selected = node.id === this.selectedId;
|
|
729
|
-
const cls = 'mrd-document-list__row mrd-document-list__row--dossier'
|
|
730
|
-
+ (selected ? ' mrd-document-list__row--selected' : '')
|
|
731
|
-
+ (node.id === this.dropTargetId ? ' mrd-document-list__row--drop' : '');
|
|
732
|
-
return (h("div", { class: "mrd-document-list__node", key: node.id }, h("div", { class: cls, onClick: () => this.toggleContainer(node), onDragOver: (e) => this.onNodeDragOver(e, node), onDragLeave: () => this.onNodeDragLeave(node), onDrop: (e) => this.onNodeDrop(e, node, node) }, this.indent(depth), this.renderChevron(node.open, false), this.renderDossierIcon(), h("span", { class: "mrd-document-list__label" }, node.label), h("span", { class: "mrd-document-list__count" }, node.totalCount)), node.open && (h("div", { class: "mrd-document-list__kids" }, node.loading && !node.foldersLoaded
|
|
733
|
-
? this.renderLoadingRow(depth + 1)
|
|
734
|
-
: this.renderChildren(node, node, depth + 1)))));
|
|
610
|
+
treeCtx() {
|
|
611
|
+
return {
|
|
612
|
+
locale: this.locale,
|
|
613
|
+
titleField: this.titleField,
|
|
614
|
+
dateField: this.dateField,
|
|
615
|
+
selectedId: this.selectedId,
|
|
616
|
+
dropTargetId: this.dropTargetId,
|
|
617
|
+
uploadingNodeId: this.uploadingNodeId,
|
|
618
|
+
on: {
|
|
619
|
+
toggleContainer: node => this.toggleContainer(node),
|
|
620
|
+
toggleFolder: (container, node) => this.toggleFolder(container, node),
|
|
621
|
+
openDoc: doc => this.openDoc(doc),
|
|
622
|
+
docDragStart: this.onDocDragStart,
|
|
623
|
+
docDragEnd: this.onDocDragEnd,
|
|
624
|
+
nodeDragOver: this.onNodeDragOver,
|
|
625
|
+
nodeDragLeave: this.onNodeDragLeave,
|
|
626
|
+
nodeDrop: this.onNodeDrop,
|
|
627
|
+
pendingInput: this.onPendingInput,
|
|
628
|
+
pendingKeyDown: this.onPendingKeyDown,
|
|
629
|
+
cancelFolder: () => this.cancelFolder(),
|
|
630
|
+
setPendingInputEl: el => (this.pendingInputEl = el),
|
|
631
|
+
},
|
|
632
|
+
};
|
|
735
633
|
}
|
|
736
634
|
render() {
|
|
635
|
+
const ctx = this.treeCtx();
|
|
737
636
|
let body;
|
|
738
637
|
if (this.rootLoading) {
|
|
739
|
-
body =
|
|
638
|
+
body = renderLoadingRow(ctx, 0);
|
|
740
639
|
}
|
|
741
640
|
else if (this.containers.length === 0) {
|
|
742
|
-
body = h("div", { key: '
|
|
641
|
+
body = h("div", { key: 'ce40dab51ab61447838e5059159ae4778209a6f3', class: "mrd-document-list__empty" }, t('no_results', this.locale));
|
|
743
642
|
}
|
|
744
643
|
else if (this.singleContainer) {
|
|
745
644
|
// Dossier context: render the single container's folder tree at the root.
|
|
746
645
|
const only = this.containers[0];
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
646
|
+
if (only.loading && !only.foldersLoaded) {
|
|
647
|
+
body = renderLoadingRow(ctx, 0);
|
|
648
|
+
}
|
|
649
|
+
else {
|
|
650
|
+
const kids = renderNodeChildren(ctx, only, only, 0);
|
|
651
|
+
body = kids.length
|
|
652
|
+
? kids
|
|
653
|
+
: h("div", { class: "mrd-document-list__empty" }, t('doc_empty_drop', this.locale));
|
|
654
|
+
}
|
|
750
655
|
}
|
|
751
656
|
else {
|
|
752
|
-
body = this.containers.map(c =>
|
|
657
|
+
body = this.containers.map(c => renderContainerNode(ctx, c, 0));
|
|
753
658
|
}
|
|
754
|
-
return (h(Host, { key: '
|
|
659
|
+
return (h(Host, { key: '9e1f7805ae18bce506c530a481db902900ad95f3' }, h("div", { key: 'a51334634e94310a71650ad49f17f0a20e2aed4d', class: 'mrd-document-list' + (this.rootDropActive ? ' mrd-document-list--drop-active' : ''), onDragOver: this.onRootDragOver, onDragLeave: this.onRootDragLeave, onDrop: this.onRootDrop }, body)));
|
|
755
660
|
}
|
|
756
661
|
static get is() { return "mrd-document-list"; }
|
|
757
662
|
static get encapsulation() { return "scoped"; }
|
|
@@ -776,7 +681,7 @@ export class MrdDocumentList {
|
|
|
776
681
|
"references": {
|
|
777
682
|
"ClientLayoutItem": {
|
|
778
683
|
"location": "import",
|
|
779
|
-
"path": "
|
|
684
|
+
"path": "../../../types/client-layout",
|
|
780
685
|
"id": "src/types/client-layout.ts::ClientLayoutItem",
|
|
781
686
|
"referenceLocation": "ClientLayoutItem"
|
|
782
687
|
}
|
|
@@ -801,7 +706,7 @@ export class MrdDocumentList {
|
|
|
801
706
|
"references": {
|
|
802
707
|
"ClientArchetype": {
|
|
803
708
|
"location": "import",
|
|
804
|
-
"path": "
|
|
709
|
+
"path": "../../../types/client-layout",
|
|
805
710
|
"id": "src/types/client-layout.ts::ClientArchetype",
|
|
806
711
|
"referenceLocation": "ClientArchetype"
|
|
807
712
|
}
|
|
@@ -836,6 +741,26 @@ export class MrdDocumentList {
|
|
|
836
741
|
"attribute": "parent-id",
|
|
837
742
|
"defaultValue": "''"
|
|
838
743
|
},
|
|
744
|
+
"containerHref": {
|
|
745
|
+
"type": "string",
|
|
746
|
+
"mutable": false,
|
|
747
|
+
"complexType": {
|
|
748
|
+
"original": "string",
|
|
749
|
+
"resolved": "string",
|
|
750
|
+
"references": {}
|
|
751
|
+
},
|
|
752
|
+
"required": false,
|
|
753
|
+
"optional": false,
|
|
754
|
+
"docs": {
|
|
755
|
+
"tags": [],
|
|
756
|
+
"text": "Canonical parent href (`/{base}/{tenant}/{fromClass}/{parentId}`) supplied by\nthe host. When the RELATED_VIEW's `inverseRelation` equals the archetype\n`container` slot, this seeds a single container so an empty dossier still\naccepts file drops and folder creation."
|
|
757
|
+
},
|
|
758
|
+
"getter": false,
|
|
759
|
+
"setter": false,
|
|
760
|
+
"reflect": false,
|
|
761
|
+
"attribute": "container-href",
|
|
762
|
+
"defaultValue": "''"
|
|
763
|
+
},
|
|
839
764
|
"locale": {
|
|
840
765
|
"type": "string",
|
|
841
766
|
"mutable": false,
|
|
@@ -865,7 +790,8 @@ export class MrdDocumentList {
|
|
|
865
790
|
"singleContainer": {},
|
|
866
791
|
"selectedId": {},
|
|
867
792
|
"dropTargetId": {},
|
|
868
|
-
"uploadingNodeId": {}
|
|
793
|
+
"uploadingNodeId": {},
|
|
794
|
+
"rootDropActive": {}
|
|
869
795
|
};
|
|
870
796
|
}
|
|
871
797
|
static get events() {
|
|
@@ -1011,9 +937,10 @@ export class MrdDocumentList {
|
|
|
1011
937
|
"id": "global::Promise"
|
|
1012
938
|
},
|
|
1013
939
|
"DistinctValue": {
|
|
1014
|
-
"location": "
|
|
1015
|
-
"path": "
|
|
1016
|
-
"id": "src/components/mrd-document-list/
|
|
940
|
+
"location": "import",
|
|
941
|
+
"path": "./folder-tree",
|
|
942
|
+
"id": "src/components/documents/mrd-document-list/folder-tree.ts::DistinctValue",
|
|
943
|
+
"referenceLocation": "DistinctValue"
|
|
1017
944
|
}
|
|
1018
945
|
},
|
|
1019
946
|
"return": "Promise<void>"
|
|
@@ -1041,9 +968,10 @@ export class MrdDocumentList {
|
|
|
1041
968
|
"id": "global::Promise"
|
|
1042
969
|
},
|
|
1043
970
|
"DocRow": {
|
|
1044
|
-
"location": "
|
|
1045
|
-
"path": "
|
|
1046
|
-
"id": "src/components/mrd-document-list/
|
|
971
|
+
"location": "import",
|
|
972
|
+
"path": "./folder-tree",
|
|
973
|
+
"id": "src/components/documents/mrd-document-list/folder-tree.ts::DocRow",
|
|
974
|
+
"referenceLocation": "DocRow"
|
|
1047
975
|
}
|
|
1048
976
|
},
|
|
1049
977
|
"return": "Promise<void>"
|
|
@@ -1088,9 +1016,10 @@ export class MrdDocumentList {
|
|
|
1088
1016
|
"id": "global::Record"
|
|
1089
1017
|
},
|
|
1090
1018
|
"DocRow": {
|
|
1091
|
-
"location": "
|
|
1092
|
-
"path": "
|
|
1093
|
-
"id": "src/components/mrd-document-list/
|
|
1019
|
+
"location": "import",
|
|
1020
|
+
"path": "./folder-tree",
|
|
1021
|
+
"id": "src/components/documents/mrd-document-list/folder-tree.ts::DocRow",
|
|
1022
|
+
"referenceLocation": "DocRow"
|
|
1094
1023
|
}
|
|
1095
1024
|
},
|
|
1096
1025
|
"return": "Promise<void>"
|