@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.
Files changed (138) hide show
  1. package/dist/cjs/{index-BPj2cBXs.js → index-CAzwGt9u.js} +38 -0
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/mosterdcomponents.cjs.js +2 -2
  4. package/dist/cjs/mrd-boolean-field_23.cjs.entry.js +1313 -1088
  5. package/dist/collection/collection-manifest.json +23 -23
  6. package/dist/collection/components/{mrd-document-container/mrd-document-container.scss → documents/mrd-document-container/mrd-document-container.css} +3 -3
  7. package/dist/collection/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.js +7 -7
  8. package/dist/collection/components/documents/mrd-document-list/folder-tree.js +109 -0
  9. package/dist/collection/components/{mrd-document-list/mrd-document-list.scss → documents/mrd-document-list/mrd-document-list.css} +6 -4
  10. package/dist/collection/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.js +83 -240
  11. package/dist/collection/components/documents/mrd-document-list/tree-view.js +75 -0
  12. package/dist/collection/components/{mrd-document-view/mrd-document-view.scss → documents/mrd-document-view/mrd-document-view.css} +1 -1
  13. package/dist/collection/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.js +4 -4
  14. package/dist/collection/components/fields/field-helpers.js +17 -0
  15. package/dist/collection/components/fields/file-upload-common.js +38 -0
  16. package/dist/collection/components/{mrd-boolean-field/mrd-boolean-field.scss → fields/mrd-boolean-field/mrd-boolean-field.css} +3 -3
  17. package/dist/collection/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.js +1 -1
  18. package/dist/collection/components/{mrd-currency-field/mrd-currency-field.scss → fields/mrd-currency-field/mrd-currency-field.css} +11 -9
  19. package/dist/collection/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.js +7 -13
  20. package/dist/collection/components/{mrd-date-field/mrd-date-field.scss → fields/mrd-date-field/mrd-date-field.css} +8 -10
  21. package/dist/collection/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.js +3 -10
  22. package/dist/collection/components/{mrd-datetime-field/mrd-datetime-field.scss → fields/mrd-datetime-field/mrd-datetime-field.css} +8 -10
  23. package/dist/collection/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.js +3 -10
  24. package/dist/collection/components/{mrd-email-field/mrd-email-field.scss → fields/mrd-email-field/mrd-email-field.css} +2 -11
  25. package/dist/collection/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.js +6 -13
  26. package/dist/collection/components/{mrd-file-field/mrd-file-field.scss → fields/mrd-file-field/mrd-file-field.css} +19 -24
  27. package/dist/collection/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.js +13 -24
  28. package/dist/collection/components/{mrd-hyperlink-field/mrd-hyperlink-field.scss → fields/mrd-hyperlink-field/mrd-hyperlink-field.css} +7 -16
  29. package/dist/collection/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.js +9 -15
  30. package/dist/collection/components/{mrd-image-field/mrd-image-field.scss → fields/mrd-image-field/mrd-image-field.css} +15 -24
  31. package/dist/collection/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.js +13 -28
  32. package/dist/collection/components/{mrd-list-field/mrd-list-field.scss → fields/mrd-list-field/mrd-list-field.css} +18 -21
  33. package/dist/collection/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.js +10 -25
  34. package/dist/collection/components/{mrd-longtext-field/mrd-longtext-field.scss → fields/mrd-longtext-field/mrd-longtext-field.css} +21 -18
  35. package/dist/collection/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.js +3 -10
  36. package/dist/collection/components/{mrd-number-field/mrd-number-field.scss → fields/mrd-number-field/mrd-number-field.css} +9 -10
  37. package/dist/collection/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.js +7 -6
  38. package/dist/collection/components/{mrd-relation-field/mrd-relation-field.scss → fields/mrd-relation-field/mrd-relation-field.css} +61 -59
  39. package/dist/collection/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.js +16 -26
  40. package/dist/collection/components/{mrd-secret-field/mrd-secret-field.scss → fields/mrd-secret-field/mrd-secret-field.css} +7 -10
  41. package/dist/collection/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.js +4 -11
  42. package/dist/collection/components/{mrd-text-field/mrd-text-field.scss → fields/mrd-text-field/mrd-text-field.css} +2 -11
  43. package/dist/collection/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.js +3 -10
  44. package/dist/collection/components/{mrd-textarea-field/mrd-textarea-field.scss → fields/mrd-textarea-field/mrd-textarea-field.css} +7 -10
  45. package/dist/collection/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.js +3 -9
  46. package/dist/collection/components/{mrd-time-field/mrd-time-field.scss → fields/mrd-time-field/mrd-time-field.css} +8 -10
  47. package/dist/collection/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.js +3 -10
  48. package/dist/collection/components/{mrd-field/mrd-field.scss → form/mrd-field/mrd-field.css} +1 -1
  49. package/dist/collection/components/{mrd-field → form/mrd-field}/mrd-field.js +3 -3
  50. package/dist/collection/components/{mrd-form/mrd-form.scss → form/mrd-form/mrd-form.css} +1 -1
  51. package/dist/collection/components/{mrd-form → form/mrd-form}/mrd-form.js +5 -5
  52. package/dist/collection/components/layout/mrd-layout-section/field-value.js +111 -0
  53. package/dist/collection/components/layout/mrd-layout-section/layout-helpers.js +29 -0
  54. package/dist/collection/components/{mrd-layout-section/mrd-layout-section.scss → layout/mrd-layout-section/mrd-layout-section.css} +4 -4
  55. package/dist/collection/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.js +52 -142
  56. package/dist/collection/components/{mrd-table/mrd-table.scss → table/mrd-table/mrd-table.css} +30 -12
  57. package/dist/collection/components/{mrd-table → table/mrd-table}/mrd-table.js +234 -443
  58. package/dist/collection/components/table/mrd-table/table-filter-popup.js +85 -0
  59. package/dist/collection/components/table/mrd-table/table-parts.js +110 -0
  60. package/dist/collection/components/table/mrd-table/table-query.js +178 -0
  61. package/dist/collection/components/table/mrd-table/virtual-scroll.js +63 -0
  62. package/dist/collection/dev/app.js +19 -18
  63. package/dist/collection/dev/example-data.js +58 -43
  64. package/dist/collection/utils/i18n.js +16 -0
  65. package/dist/collection/utils/query-params.js +43 -0
  66. package/dist/components/field-helpers.js +1 -0
  67. package/dist/components/file-upload-common.js +1 -0
  68. package/dist/components/i18n.js +1 -1
  69. package/dist/components/mrd-boolean-field2.js +1 -1
  70. package/dist/components/mrd-currency-field2.js +1 -1
  71. package/dist/components/mrd-date-field2.js +1 -1
  72. package/dist/components/mrd-datetime-field2.js +1 -1
  73. package/dist/components/mrd-document-container2.js +1 -1
  74. package/dist/components/mrd-document-list2.js +1 -1
  75. package/dist/components/mrd-document-view2.js +1 -1
  76. package/dist/components/mrd-email-field2.js +1 -1
  77. package/dist/components/mrd-file-field2.js +1 -1
  78. package/dist/components/mrd-form.js +1 -1
  79. package/dist/components/mrd-hyperlink-field2.js +1 -1
  80. package/dist/components/mrd-image-field2.js +1 -1
  81. package/dist/components/mrd-layout-section.js +1 -1
  82. package/dist/components/mrd-list-field2.js +1 -1
  83. package/dist/components/mrd-longtext-field2.js +1 -1
  84. package/dist/components/mrd-number-field2.js +1 -1
  85. package/dist/components/mrd-relation-field2.js +1 -1
  86. package/dist/components/mrd-secret-field2.js +1 -1
  87. package/dist/components/mrd-table2.js +1 -1
  88. package/dist/components/mrd-text-field2.js +1 -1
  89. package/dist/components/mrd-textarea-field2.js +1 -1
  90. package/dist/components/mrd-time-field2.js +1 -1
  91. package/dist/components/query-params.js +1 -0
  92. package/dist/esm/{index-_tsCCkAi.js → index-DiSEJMA8.js} +38 -1
  93. package/dist/esm/loader.js +3 -3
  94. package/dist/esm/mosterdcomponents.js +3 -3
  95. package/dist/esm/mrd-boolean-field_23.entry.js +1313 -1088
  96. package/dist/mosterdcomponents/mosterdcomponents.css +1 -1
  97. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  98. package/dist/mosterdcomponents/p-DiSEJMA8.js +2 -0
  99. package/dist/mosterdcomponents/p-b1a2e108.entry.js +1 -0
  100. package/dist/types/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.d.ts +2 -2
  101. package/dist/types/components/documents/mrd-document-list/folder-tree.d.ts +66 -0
  102. package/dist/types/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.d.ts +4 -37
  103. package/dist/types/components/documents/mrd-document-list/tree-view.d.ts +32 -0
  104. package/dist/types/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.d.ts +2 -2
  105. package/dist/types/components/fields/field-helpers.d.ts +18 -0
  106. package/dist/types/components/fields/file-upload-common.d.ts +18 -0
  107. package/dist/types/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.d.ts +1 -1
  108. package/dist/types/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.d.ts +2 -2
  109. package/dist/types/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.d.ts +1 -1
  110. package/dist/types/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.d.ts +1 -1
  111. package/dist/types/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.d.ts +1 -1
  112. package/dist/types/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.d.ts +2 -4
  113. package/dist/types/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.d.ts +2 -2
  114. package/dist/types/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.d.ts +2 -4
  115. package/dist/types/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.d.ts +2 -2
  116. package/dist/types/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.d.ts +1 -1
  117. package/dist/types/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.d.ts +2 -2
  118. package/dist/types/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.d.ts +2 -2
  119. package/dist/types/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.d.ts +1 -1
  120. package/dist/types/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.d.ts +1 -1
  121. package/dist/types/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.d.ts +1 -1
  122. package/dist/types/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.d.ts +1 -1
  123. package/dist/types/components/{mrd-field → form/mrd-field}/mrd-field.d.ts +2 -2
  124. package/dist/types/components/{mrd-form → form/mrd-form}/mrd-form.d.ts +2 -2
  125. package/dist/types/components/layout/mrd-layout-section/field-value.d.ts +22 -0
  126. package/dist/types/components/layout/mrd-layout-section/layout-helpers.d.ts +8 -0
  127. package/dist/types/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.d.ts +4 -11
  128. package/dist/types/components/{mrd-table → table/mrd-table}/mrd-table.d.ts +29 -13
  129. package/dist/types/components/table/mrd-table/table-filter-popup.d.ts +35 -0
  130. package/dist/types/components/table/mrd-table/table-parts.d.ts +61 -0
  131. package/dist/types/components/table/mrd-table/table-query.d.ts +50 -0
  132. package/dist/types/components/table/mrd-table/virtual-scroll.d.ts +33 -0
  133. package/dist/types/components.d.ts +19 -5
  134. package/dist/types/utils/query-params.d.ts +14 -0
  135. package/package.json +7 -2
  136. package/dist/components/validation.js +0 -1
  137. package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
  138. package/dist/mosterdcomponents/p-a9618055.entry.js +0 -1
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "entries": [
3
- "components/mrd-document-list/mrd-document-list.js",
4
- "components/mrd-boolean-field/mrd-boolean-field.js",
5
- "components/mrd-currency-field/mrd-currency-field.js",
6
- "components/mrd-date-field/mrd-date-field.js",
7
- "components/mrd-datetime-field/mrd-datetime-field.js",
8
- "components/mrd-document-container/mrd-document-container.js",
9
- "components/mrd-document-view/mrd-document-view.js",
10
- "components/mrd-email-field/mrd-email-field.js",
11
- "components/mrd-field/mrd-field.js",
12
- "components/mrd-file-field/mrd-file-field.js",
13
- "components/mrd-form/mrd-form.js",
14
- "components/mrd-hyperlink-field/mrd-hyperlink-field.js",
15
- "components/mrd-image-field/mrd-image-field.js",
16
- "components/mrd-layout-section/mrd-layout-section.js",
17
- "components/mrd-list-field/mrd-list-field.js",
18
- "components/mrd-longtext-field/mrd-longtext-field.js",
19
- "components/mrd-number-field/mrd-number-field.js",
20
- "components/mrd-relation-field/mrd-relation-field.js",
21
- "components/mrd-secret-field/mrd-secret-field.js",
22
- "components/mrd-table/mrd-table.js",
23
- "components/mrd-text-field/mrd-text-field.js",
24
- "components/mrd-textarea-field/mrd-textarea-field.js",
25
- "components/mrd-time-field/mrd-time-field.js"
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: #d9a441;
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='true'] {
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 "../../utils/i18n";
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, _b;
37
- (_b = (_a = this.listEl) === null || _a === void 0 ? void 0 : _a.createFolder) === null || _b === void 0 ? void 0 : _b.call(_a);
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(() => { var _a; return (_a = table.init) === null || _a === void 0 ? void 0 : _a.call(table); });
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: '5d8a9a9bb4f1126a304b796aff9d1cb0100b8fc6' }, this.renderToolbar(), h("div", { key: '80ac7e5dd39ffcc4161059447221045a6e035099', class: "mrd-document-container__body", style: treeMode ? { height: `${this.height}px`, overflowY: 'auto' } : {} }, treeMode ? this.renderTree() : this.renderList())));
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": "../../types/client-layout",
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": "../../types/client-layout",
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: #d9a441;
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 { transform: rotate(360deg); }
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
+ }