@mmlogic/components 0.3.11 → 0.4.1
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 +1313 -1088
- 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 +7 -7
- 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} +6 -4
- package/dist/collection/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.js +83 -240
- 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 +52 -142
- package/dist/collection/components/{mrd-table/mrd-table.scss → table/mrd-table/mrd-table.css} +30 -12
- package/dist/collection/components/{mrd-table → table/mrd-table}/mrd-table.js +234 -443
- 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 +63 -0
- package/dist/collection/dev/app.js +19 -18
- package/dist/collection/dev/example-data.js +58 -43
- package/dist/collection/utils/i18n.js +16 -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 +1313 -1088
- package/dist/mosterdcomponents/mosterdcomponents.css +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-DiSEJMA8.js +2 -0
- package/dist/mosterdcomponents/p-b1a2e108.entry.js +1 -0
- package/dist/types/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.d.ts +2 -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 +4 -37
- 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 -11
- package/dist/types/components/{mrd-table → table/mrd-table}/mrd-table.d.ts +29 -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 +33 -0
- package/dist/types/components.d.ts +19 -5
- 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/p-_tsCCkAi.js +0 -2
- package/dist/mosterdcomponents/p-a9618055.entry.js +0 -1
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"entries": [
|
|
3
|
-
"components/mrd-document-
|
|
4
|
-
"components/mrd-
|
|
5
|
-
"components/mrd-
|
|
6
|
-
"components/mrd-
|
|
7
|
-
"components/mrd-
|
|
8
|
-
"components/mrd-
|
|
9
|
-
"components/mrd-
|
|
10
|
-
"components/mrd-email-field/mrd-email-field.js",
|
|
11
|
-
"components/mrd-field/mrd-field.js",
|
|
12
|
-
"components/mrd-
|
|
13
|
-
"components/mrd-
|
|
14
|
-
"components/mrd-
|
|
15
|
-
"components/mrd-
|
|
16
|
-
"components/mrd-
|
|
17
|
-
"components/mrd-
|
|
18
|
-
"components/mrd-
|
|
19
|
-
"components/mrd-
|
|
20
|
-
"components/mrd-
|
|
21
|
-
"components/mrd-
|
|
22
|
-
"components/mrd-
|
|
23
|
-
"components/mrd-
|
|
24
|
-
"components/mrd-
|
|
25
|
-
"components/mrd-
|
|
3
|
+
"components/documents/mrd-document-container/mrd-document-container.js",
|
|
4
|
+
"components/documents/mrd-document-list/mrd-document-list.js",
|
|
5
|
+
"components/documents/mrd-document-view/mrd-document-view.js",
|
|
6
|
+
"components/fields/mrd-boolean-field/mrd-boolean-field.js",
|
|
7
|
+
"components/fields/mrd-currency-field/mrd-currency-field.js",
|
|
8
|
+
"components/fields/mrd-date-field/mrd-date-field.js",
|
|
9
|
+
"components/fields/mrd-datetime-field/mrd-datetime-field.js",
|
|
10
|
+
"components/fields/mrd-email-field/mrd-email-field.js",
|
|
11
|
+
"components/fields/mrd-file-field/mrd-file-field.js",
|
|
12
|
+
"components/fields/mrd-hyperlink-field/mrd-hyperlink-field.js",
|
|
13
|
+
"components/fields/mrd-image-field/mrd-image-field.js",
|
|
14
|
+
"components/fields/mrd-list-field/mrd-list-field.js",
|
|
15
|
+
"components/fields/mrd-longtext-field/mrd-longtext-field.js",
|
|
16
|
+
"components/fields/mrd-number-field/mrd-number-field.js",
|
|
17
|
+
"components/fields/mrd-relation-field/mrd-relation-field.js",
|
|
18
|
+
"components/fields/mrd-secret-field/mrd-secret-field.js",
|
|
19
|
+
"components/fields/mrd-text-field/mrd-text-field.js",
|
|
20
|
+
"components/fields/mrd-textarea-field/mrd-textarea-field.js",
|
|
21
|
+
"components/fields/mrd-time-field/mrd-time-field.js",
|
|
22
|
+
"components/form/mrd-field/mrd-field.js",
|
|
23
|
+
"components/form/mrd-form/mrd-form.js",
|
|
24
|
+
"components/layout/mrd-layout-section/mrd-layout-section.js",
|
|
25
|
+
"components/table/mrd-table/mrd-table.js"
|
|
26
26
|
],
|
|
27
27
|
"mixins": [],
|
|
28
28
|
"compiler": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
.mrd-document-container__action svg {
|
|
30
30
|
width: 1rem;
|
|
31
31
|
height: 1rem;
|
|
32
|
-
color:
|
|
32
|
+
color: var(--mrd-color-folder);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.mrd-document-container__action:hover:not(:disabled) {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
color: var(--mrd-color-neutral-800);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
.mrd-document-container__seg-btn[aria-pressed=
|
|
70
|
+
.mrd-document-container__seg-btn[aria-pressed=true] {
|
|
71
71
|
background: var(--mrd-color-white);
|
|
72
72
|
color: var(--mrd-color-primary-dark);
|
|
73
73
|
box-shadow: var(--mrd-shadow-sm);
|
|
@@ -76,4 +76,4 @@
|
|
|
76
76
|
.mrd-document-container__seg-btn svg {
|
|
77
77
|
width: 1rem;
|
|
78
78
|
height: 1rem;
|
|
79
|
-
}
|
|
79
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
-
import { t } from "
|
|
2
|
+
import { t } from "../../../utils/i18n";
|
|
3
3
|
/**
|
|
4
4
|
* Owns a document collection view: a single toolbar (view switch + collection
|
|
5
5
|
* actions like "New folder", and — later — upload / drag-drop) plus the two
|
|
@@ -33,8 +33,8 @@ export class MrdDocumentContainer {
|
|
|
33
33
|
/** Whether the currently mounted table has been init()'d. Reset on every mode switch. */
|
|
34
34
|
this.tableInited = false;
|
|
35
35
|
this.createFolder = () => {
|
|
36
|
-
var _a
|
|
37
|
-
(
|
|
36
|
+
var _a;
|
|
37
|
+
(_a = this.listEl) === null || _a === void 0 ? void 0 : _a.createFolder();
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
/** The embedded table does not self-load: like every mrd-table it waits for the
|
|
@@ -46,7 +46,7 @@ export class MrdDocumentContainer {
|
|
|
46
46
|
if (this.mode === 'list' && this.tableEl && !this.tableInited) {
|
|
47
47
|
this.tableInited = true;
|
|
48
48
|
const table = this.tableEl;
|
|
49
|
-
Promise.resolve((_a = table.componentOnReady) === null || _a === void 0 ? void 0 : _a.call(table)).then(() =>
|
|
49
|
+
Promise.resolve((_a = table.componentOnReady) === null || _a === void 0 ? void 0 : _a.call(table)).then(() => table.init());
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
setMode(mode) {
|
|
@@ -106,7 +106,7 @@ export class MrdDocumentContainer {
|
|
|
106
106
|
}
|
|
107
107
|
render() {
|
|
108
108
|
const treeMode = this.mode === 'tree';
|
|
109
|
-
return (h(Host, { key: '
|
|
109
|
+
return (h(Host, { key: '018c9eacd169fdf7d352a51472651348af2b45df' }, this.renderToolbar(), h("div", { key: '5ff2ac77d4d12369905696ff075f99785dc1c809', class: "mrd-document-container__body", style: treeMode ? { height: `${this.height}px`, overflowY: 'auto' } : {} }, treeMode ? this.renderTree() : this.renderList())));
|
|
110
110
|
}
|
|
111
111
|
static get is() { return "mrd-document-container"; }
|
|
112
112
|
static get encapsulation() { return "scoped"; }
|
|
@@ -131,7 +131,7 @@ export class MrdDocumentContainer {
|
|
|
131
131
|
"references": {
|
|
132
132
|
"ClientLayoutItem": {
|
|
133
133
|
"location": "import",
|
|
134
|
-
"path": "
|
|
134
|
+
"path": "../../../types/client-layout",
|
|
135
135
|
"id": "src/types/client-layout.ts::ClientLayoutItem",
|
|
136
136
|
"referenceLocation": "ClientLayoutItem"
|
|
137
137
|
}
|
|
@@ -156,7 +156,7 @@ export class MrdDocumentContainer {
|
|
|
156
156
|
"references": {
|
|
157
157
|
"ClientArchetype": {
|
|
158
158
|
"location": "import",
|
|
159
|
-
"path": "
|
|
159
|
+
"path": "../../../types/client-layout",
|
|
160
160
|
"id": "src/types/client-layout.ts::ClientArchetype",
|
|
161
161
|
"referenceLocation": "ClientArchetype"
|
|
162
162
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tree model and pure tree logic for mrd-document-list.
|
|
3
|
+
* Nodes are mutated in place; the component triggers re-renders via bump().
|
|
4
|
+
*/
|
|
5
|
+
/** Normalise a folder path: null/""/"/" → root ([]); else split on "/" dropping empties. */
|
|
6
|
+
export function splitFolder(path) {
|
|
7
|
+
if (path == null)
|
|
8
|
+
return [];
|
|
9
|
+
const s = String(path).trim();
|
|
10
|
+
if (s === '' || s === '/')
|
|
11
|
+
return [];
|
|
12
|
+
return s.split('/').map(x => x.trim()).filter(Boolean);
|
|
13
|
+
}
|
|
14
|
+
export function makeContainerNode(href, label, count) {
|
|
15
|
+
return {
|
|
16
|
+
id: 'c:' + href, kind: 'container', label, href,
|
|
17
|
+
hasDocs: false, docCount: 0, totalCount: count, children: [],
|
|
18
|
+
open: false, loading: false, foldersLoaded: false, docsLoaded: false, docs: [],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function makeFolderNode(id, label, containerId) {
|
|
22
|
+
return {
|
|
23
|
+
id, kind: 'folder', label, containerId,
|
|
24
|
+
hasDocs: false, docCount: 0, totalCount: 0, children: [],
|
|
25
|
+
open: false, loading: false, foldersLoaded: false, docsLoaded: false, docs: [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Recompute totalCount over the subtree; returns the node's aggregate. */
|
|
29
|
+
export function computeTotals(node) {
|
|
30
|
+
let total = node.docCount;
|
|
31
|
+
for (const c of node.children)
|
|
32
|
+
total += computeTotals(c);
|
|
33
|
+
node.totalCount = total;
|
|
34
|
+
return total;
|
|
35
|
+
}
|
|
36
|
+
/** Folder path segments of a node relative to its container (derived from its id). */
|
|
37
|
+
export function segmentsOf(node, container) {
|
|
38
|
+
if (node.kind === 'container')
|
|
39
|
+
return [];
|
|
40
|
+
const prefix = container.id + '/';
|
|
41
|
+
const rest = node.id.startsWith(prefix) ? node.id.slice(prefix.length) : '';
|
|
42
|
+
return rest ? rest.split('/') : [];
|
|
43
|
+
}
|
|
44
|
+
/** Folder string a node represents: the raw distinct value when it holds
|
|
45
|
+
* documents, else derived from its path segments; null for a container root. */
|
|
46
|
+
export function folderStringOf(node, container) {
|
|
47
|
+
if (node.kind === 'container')
|
|
48
|
+
return null;
|
|
49
|
+
if (node.fullPath != null && node.fullPath !== '')
|
|
50
|
+
return node.fullPath;
|
|
51
|
+
const segs = segmentsOf(node, container);
|
|
52
|
+
return segs.length ? '/' + segs.join('/') : null;
|
|
53
|
+
}
|
|
54
|
+
/** Strip a single trailing extension for the document title. */
|
|
55
|
+
export function stripExtension(name) {
|
|
56
|
+
return name.replace(/\.[^./\\]+$/, '');
|
|
57
|
+
}
|
|
58
|
+
/** Rebuild a container's folder subtree from the /distinct folder strings.
|
|
59
|
+
* New nodes are registered in `nodeIndex`; the container is mutated in place. */
|
|
60
|
+
export function applyFolderDistinct(container, values, nodeIndex) {
|
|
61
|
+
container.children = [];
|
|
62
|
+
container.hasDocs = false;
|
|
63
|
+
container.docCount = 0;
|
|
64
|
+
for (const v of values) {
|
|
65
|
+
const raw = typeof v.value === 'string' ? v.value : v.value == null ? '' : String(v.value);
|
|
66
|
+
const segs = splitFolder(raw);
|
|
67
|
+
if (segs.length === 0) {
|
|
68
|
+
// Root documents — the container's own direct documents.
|
|
69
|
+
container.hasDocs = true;
|
|
70
|
+
container.docCount = v.count;
|
|
71
|
+
container.fullPath = raw;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
let node = container;
|
|
75
|
+
const acc = [];
|
|
76
|
+
for (const seg of segs) {
|
|
77
|
+
acc.push(seg);
|
|
78
|
+
let child = node.children.find(c => c.label === seg);
|
|
79
|
+
if (!child) {
|
|
80
|
+
child = makeFolderNode(container.id + '/' + acc.join('/'), seg, container.id);
|
|
81
|
+
node.children.push(child);
|
|
82
|
+
nodeIndex.set(child.id, child);
|
|
83
|
+
}
|
|
84
|
+
node = child;
|
|
85
|
+
}
|
|
86
|
+
node.hasDocs = true;
|
|
87
|
+
node.docCount = v.count;
|
|
88
|
+
node.fullPath = raw;
|
|
89
|
+
}
|
|
90
|
+
computeTotals(container);
|
|
91
|
+
container.foldersLoaded = true;
|
|
92
|
+
container.loading = false;
|
|
93
|
+
}
|
|
94
|
+
/** Optimistic in-place tree update for a document moved between folders. */
|
|
95
|
+
export function applyDocMove(doc, fromNode, toNode, targetFolder) {
|
|
96
|
+
fromNode.docs = fromNode.docs.filter(d => d !== doc);
|
|
97
|
+
fromNode.docCount = Math.max(0, fromNode.docCount - 1);
|
|
98
|
+
// A now-empty folder should stop showing an expand chevron (it disappears on
|
|
99
|
+
// the next reload anyway, since it is derived from document folder strings).
|
|
100
|
+
if (fromNode.docsLoaded)
|
|
101
|
+
fromNode.hasDocs = fromNode.docs.length > 0;
|
|
102
|
+
toNode.hasDocs = true;
|
|
103
|
+
toNode.pending = false; // a pending folder is now materialised
|
|
104
|
+
toNode.docCount += 1;
|
|
105
|
+
if (toNode.kind === 'folder')
|
|
106
|
+
toNode.fullPath = targetFolder !== null && targetFolder !== void 0 ? targetFolder : '';
|
|
107
|
+
if (toNode.docsLoaded)
|
|
108
|
+
toNode.docs = [...toNode.docs, doc];
|
|
109
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
1
2
|
:host {
|
|
2
3
|
display: block;
|
|
3
4
|
height: 100%;
|
|
@@ -130,7 +131,7 @@
|
|
|
130
131
|
}
|
|
131
132
|
|
|
132
133
|
.mrd-document-list__icon--folder {
|
|
133
|
-
color:
|
|
134
|
+
color: var(--mrd-color-folder);
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
.mrd-document-list__icon--doc {
|
|
@@ -181,12 +182,13 @@
|
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
@keyframes mrd-document-list-spin {
|
|
184
|
-
to {
|
|
185
|
+
to {
|
|
186
|
+
transform: rotate(360deg);
|
|
187
|
+
}
|
|
185
188
|
}
|
|
186
|
-
|
|
187
189
|
.mrd-document-list__empty {
|
|
188
190
|
padding: var(--mrd-space-8) var(--mrd-space-4);
|
|
189
191
|
text-align: center;
|
|
190
192
|
color: var(--mrd-color-neutral-400);
|
|
191
193
|
font-size: var(--mrd-font-size-sm);
|
|
192
|
-
}
|
|
194
|
+
}
|