@api-client/ui 0.0.10 → 0.0.12

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 (176) hide show
  1. package/.eslintrc +16 -1
  2. package/demo/elements/index.html +3 -0
  3. package/demo/elements/store/file-picker.html +15 -0
  4. package/demo/elements/store/file-picker.ts +134 -0
  5. package/demo/elements/store/index.html +19 -0
  6. package/demo/index.html +3 -0
  7. package/demo/layout/index.html +91 -0
  8. package/demo/layout/index.ts +182 -0
  9. package/demo/store/StorePlugin.js +1 -0
  10. package/dist/bindings/base/StoreBindings.d.ts +5 -0
  11. package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
  12. package/dist/bindings/base/StoreBindings.js +15 -1
  13. package/dist/bindings/base/StoreBindings.js.map +1 -1
  14. package/dist/define/store/file-picker.d.ts +9 -0
  15. package/dist/define/store/file-picker.d.ts.map +1 -0
  16. package/dist/define/store/file-picker.js +10 -0
  17. package/dist/define/store/file-picker.js.map +1 -0
  18. package/dist/define/{files → store}/share-file.d.ts +1 -1
  19. package/dist/define/store/share-file.d.ts.map +1 -0
  20. package/dist/define/{files → store}/share-file.js +2 -2
  21. package/dist/define/store/share-file.js.map +1 -0
  22. package/dist/elements/layout/SplitItem.d.ts +1 -9
  23. package/dist/elements/layout/SplitItem.d.ts.map +1 -1
  24. package/dist/elements/layout/SplitItem.js +27 -20
  25. package/dist/elements/layout/SplitItem.js.map +1 -1
  26. package/dist/elements/layout/SplitLayout.d.ts +16 -14
  27. package/dist/elements/layout/SplitLayout.d.ts.map +1 -1
  28. package/dist/elements/layout/SplitLayout.js +47 -42
  29. package/dist/elements/layout/SplitLayout.js.map +1 -1
  30. package/dist/elements/layout/SplitPanel.d.ts +7 -2
  31. package/dist/elements/layout/SplitPanel.d.ts.map +1 -1
  32. package/dist/elements/layout/SplitPanel.js +130 -52
  33. package/dist/elements/layout/SplitPanel.js.map +1 -1
  34. package/dist/elements/layout/SplitView.d.ts.map +1 -1
  35. package/dist/elements/layout/SplitView.js +18 -14
  36. package/dist/elements/layout/SplitView.js.map +1 -1
  37. package/dist/elements/layout/type.d.ts +3 -3
  38. package/dist/elements/layout/type.d.ts.map +1 -1
  39. package/dist/elements/layout/type.js.map +1 -1
  40. package/dist/elements/store/FilePicker.element.d.ts +87 -0
  41. package/dist/elements/store/FilePicker.element.d.ts.map +1 -0
  42. package/dist/elements/store/FilePicker.element.js +263 -0
  43. package/dist/elements/store/FilePicker.element.js.map +1 -0
  44. package/dist/elements/store/FilePicker.styles.d.ts +3 -0
  45. package/dist/elements/store/FilePicker.styles.d.ts.map +1 -0
  46. package/dist/elements/store/FilePicker.styles.js +72 -0
  47. package/dist/elements/store/FilePicker.styles.js.map +1 -0
  48. package/dist/elements/store/FilesLib.d.ts +10 -0
  49. package/dist/elements/store/FilesLib.d.ts.map +1 -0
  50. package/dist/elements/store/FilesLib.js +38 -0
  51. package/dist/elements/store/FilesLib.js.map +1 -0
  52. package/dist/elements/{files/ShareFile.d.ts → store/ShareFile.element.d.ts} +1 -1
  53. package/dist/elements/store/ShareFile.element.d.ts.map +1 -0
  54. package/dist/elements/{files/ShareFile.js → store/ShareFile.element.js} +1 -1
  55. package/dist/elements/store/ShareFile.element.js.map +1 -0
  56. package/dist/elements/store/ShareFile.styles.d.ts.map +1 -0
  57. package/dist/elements/{files → store}/ShareFile.styles.js.map +1 -1
  58. package/dist/events/EventTypes.d.ts +1 -0
  59. package/dist/events/EventTypes.d.ts.map +1 -1
  60. package/dist/events/EventTypes.js +1 -0
  61. package/dist/events/EventTypes.js.map +1 -1
  62. package/dist/events/Events.d.ts +1 -0
  63. package/dist/events/Events.d.ts.map +1 -1
  64. package/dist/events/StoreEvents.d.ts +8 -1
  65. package/dist/events/StoreEvents.d.ts.map +1 -1
  66. package/dist/events/StoreEvents.js +19 -0
  67. package/dist/events/StoreEvents.js.map +1 -1
  68. package/dist/pages/ApplicationScreen.d.ts +1 -1
  69. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  70. package/dist/pages/ApplicationScreen.js +4 -2
  71. package/dist/pages/ApplicationScreen.js.map +1 -1
  72. package/dist/pages/api-client/ApiClient.screen.d.ts +0 -6
  73. package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
  74. package/dist/pages/api-client/ApiClient.screen.js +16 -29
  75. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  76. package/dist/pages/api-client/Authenticate.screen.d.ts +1 -1
  77. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  78. package/dist/pages/api-client/Authenticate.screen.js +2 -2
  79. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  80. package/dist/pages/api-client/pages/Files.page.d.ts +6 -35
  81. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  82. package/dist/pages/api-client/pages/Files.page.js +32 -141
  83. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  84. package/dist/pages/api-client/pages/Shared.page.d.ts +1 -5
  85. package/dist/pages/api-client/pages/Shared.page.d.ts.map +1 -1
  86. package/dist/pages/api-client/pages/Shared.page.js +1 -40
  87. package/dist/pages/api-client/pages/Shared.page.js.map +1 -1
  88. package/dist/pages/demo/DemoPage.d.ts +7 -0
  89. package/dist/pages/demo/DemoPage.d.ts.map +1 -1
  90. package/dist/pages/demo/DemoPage.js +14 -0
  91. package/dist/pages/demo/DemoPage.js.map +1 -1
  92. package/dist/pages/http-project/HttpClientCommands.d.ts.map +1 -1
  93. package/dist/pages/http-project/HttpClientCommands.js +28 -12
  94. package/dist/pages/http-project/HttpClientCommands.js.map +1 -1
  95. package/dist/store/FileSystem.d.ts +90 -0
  96. package/dist/store/FileSystem.d.ts.map +1 -0
  97. package/dist/store/FileSystem.js +260 -0
  98. package/dist/store/FileSystem.js.map +1 -0
  99. package/dist/styles/global-styles.d.ts.map +1 -1
  100. package/dist/styles/global-styles.js +7 -0
  101. package/dist/styles/global-styles.js.map +1 -1
  102. package/dist/ui/icons/Icons.d.ts +2 -1
  103. package/dist/ui/icons/Icons.d.ts.map +1 -1
  104. package/dist/ui/icons/Icons.js +1 -0
  105. package/dist/ui/icons/Icons.js.map +1 -1
  106. package/dist/ui/list/UiDropdownList.d.ts +9 -1
  107. package/dist/ui/list/UiDropdownList.d.ts.map +1 -1
  108. package/dist/ui/list/UiDropdownList.js +39 -17
  109. package/dist/ui/list/UiDropdownList.js.map +1 -1
  110. package/dist/ui/list/UiList.d.ts +6 -1
  111. package/dist/ui/list/UiList.d.ts.map +1 -1
  112. package/dist/ui/list/UiList.js +24 -9
  113. package/dist/ui/list/UiList.js.map +1 -1
  114. package/dist/ui/table/DataTable.d.ts +4 -0
  115. package/dist/ui/table/DataTable.d.ts.map +1 -1
  116. package/dist/ui/table/DataTable.js +23 -1
  117. package/dist/ui/table/DataTable.js.map +1 -1
  118. package/package.json +2 -1
  119. package/src/bindings/base/StoreBindings.ts +16 -1
  120. package/src/define/store/file-picker.ts +12 -0
  121. package/src/define/{files → store}/share-file.ts +2 -2
  122. package/src/elements/layout/SplitItem.ts +29 -21
  123. package/src/elements/layout/SplitLayout.ts +53 -43
  124. package/src/elements/layout/SplitPanel.ts +140 -57
  125. package/src/elements/layout/SplitView.ts +18 -15
  126. package/src/elements/layout/type.ts +3 -4
  127. package/src/elements/store/FilePicker.element.ts +297 -0
  128. package/src/elements/store/FilePicker.styles.ts +72 -0
  129. package/src/elements/store/FilesLib.ts +32 -0
  130. package/src/events/EventTypes.ts +1 -0
  131. package/src/events/StoreEvents.ts +21 -1
  132. package/src/pages/ApplicationScreen.ts +5 -3
  133. package/src/pages/api-client/ApiClient.screen.ts +16 -31
  134. package/src/pages/api-client/Authenticate.screen.ts +2 -2
  135. package/src/pages/api-client/pages/Files.page.ts +37 -164
  136. package/src/pages/api-client/pages/Shared.page.ts +2 -40
  137. package/src/pages/demo/DemoPage.ts +17 -0
  138. package/src/pages/http-project/HttpClientCommands.ts +28 -12
  139. package/src/store/FileSystem.ts +325 -0
  140. package/src/styles/global-styles.ts +7 -0
  141. package/src/ui/icons/Icons.ts +2 -1
  142. package/src/ui/list/UiDropdownList.ts +44 -17
  143. package/src/ui/list/UiList.ts +26 -10
  144. package/src/ui/table/DataTable.ts +29 -3
  145. package/test/elements/layout/SplitItem.test.ts +76 -75
  146. package/test/elements/layout/SplitLayoutManager.test.ts +70 -69
  147. package/test/elements/layout/SplitPanel.test.ts +10 -7
  148. package/test/elements/store/FilePicker.test.ts +241 -0
  149. package/test/env.js +3 -0
  150. package/test/helpers/StoreHelper.ts +390 -0
  151. package/tsconfig.eslint.json +10 -0
  152. package/web-test-runner.config.mjs +51 -2
  153. package/dist/define/files/share-file.d.ts.map +0 -1
  154. package/dist/define/files/share-file.js.map +0 -1
  155. package/dist/define/layout/layout-panel.d.ts +0 -7
  156. package/dist/define/layout/layout-panel.d.ts.map +0 -1
  157. package/dist/define/layout/layout-panel.js +0 -3
  158. package/dist/define/layout/layout-panel.js.map +0 -1
  159. package/dist/elements/files/ShareFile.d.ts.map +0 -1
  160. package/dist/elements/files/ShareFile.js.map +0 -1
  161. package/dist/elements/files/ShareFile.styles.d.ts.map +0 -1
  162. package/dist/elements/layout/LayoutManager.d.ts +0 -327
  163. package/dist/elements/layout/LayoutManager.d.ts.map +0 -1
  164. package/dist/elements/layout/LayoutManager.js +0 -747
  165. package/dist/elements/layout/LayoutManager.js.map +0 -1
  166. package/dist/elements/layout/LayoutPanelElement.d.ts +0 -62
  167. package/dist/elements/layout/LayoutPanelElement.d.ts.map +0 -1
  168. package/dist/elements/layout/LayoutPanelElement.js +0 -628
  169. package/dist/elements/layout/LayoutPanelElement.js.map +0 -1
  170. package/src/define/layout/layout-panel.ts +0 -9
  171. package/src/elements/layout/LayoutManager.ts +0 -930
  172. package/src/elements/layout/LayoutPanelElement.ts +0 -651
  173. /package/dist/elements/{files → store}/ShareFile.styles.d.ts +0 -0
  174. /package/dist/elements/{files → store}/ShareFile.styles.js +0 -0
  175. /package/src/elements/{files/ShareFile.ts → store/ShareFile.element.ts} +0 -0
  176. /package/src/elements/{files → store}/ShareFile.styles.ts +0 -0
@@ -1,17 +1,35 @@
1
1
  /* eslint-disable @typescript-eslint/explicit-function-return-type */
2
- import { getPort, portNumbers } from '@api-client/core';
2
+ import { getPort, portNumbers, DefaultLogger } from "@api-client/core";
3
3
  import { esbuildPlugin } from '@web/dev-server-esbuild';
4
4
  import { OAuth2Server } from "oauth2-mock-server";
5
+ import {
6
+ Server,
7
+ Clients,
8
+ Testing,
9
+ } from "@api-client/net-store";
10
+ import { rmdir } from 'node:fs/promises'
5
11
  import { takeScreenshotPlugin } from "./test/plugins/takeScreenshotPlugin.js";
6
12
 
13
+ /** @typedef {import('@api-client/net-store').IServerConfiguration} IServerConfiguration */
14
+
7
15
  const oauth2server = new OAuth2Server();
8
16
  let oauth2env;
17
+ const logger = new DefaultLogger();
18
+ const singleWsClients = new Clients();
19
+ const singleStore = new Testing.TestStore(logger, singleWsClients, "test/store/single");
20
+ let singlePort;
21
+ let singleBaseUri;
22
+ let singleServer;
9
23
 
10
24
  const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
11
25
 
26
+
12
27
  export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
13
28
  /** Test files to run */
14
- files: ["test/**/**/*.test.ts"],
29
+ files: [
30
+ "test/**/**/*.test.ts",
31
+ // "test/elements/store/*.test.ts",
32
+ ],
15
33
 
16
34
  /** Resolve bare module imports */
17
35
  nodeResolve: {
@@ -47,6 +65,9 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
47
65
  if (context.path === "/test/env.js") {
48
66
  const data = {
49
67
  oauth2: oauth2env,
68
+ store: {
69
+ single: singleBaseUri,
70
+ },
50
71
  };
51
72
  return `export default ${JSON.stringify(data)}`;
52
73
  }
@@ -57,6 +78,7 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
57
78
  {
58
79
  name: "servers",
59
80
  async serverStart() {
81
+ // OAuth2
60
82
  const port = await getPort({ port: portNumbers(8000, 8100) });
61
83
  const jwtKey = await oauth2server.issuer.keys.generate("RS256");
62
84
  await oauth2server.start(port, "localhost");
@@ -65,10 +87,37 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
65
87
  jwtKey,
66
88
  issuer: oauth2server.issuer.url,
67
89
  };
90
+ // API store
91
+ singlePort = await getPort({ port: portNumbers(8000, 8100) });
92
+ singleBaseUri = `http://localhost:${singlePort}/`;
93
+ const singleUser = /** @type IServerConfiguration */ ({
94
+ logger,
95
+ portOrSocket: singlePort,
96
+ host: "http://localhost",
97
+ session: {
98
+ secret: "abc-tests",
99
+ expiresIn: "5d",
100
+ },
101
+ mode: "single-user",
102
+ cors: {
103
+ enabled: true,
104
+ cors: {
105
+ exposeHeaders: ["location"],
106
+ allowHeaders: ["authorization", "content-type"],
107
+ },
108
+ },
109
+ });
110
+ singleServer = new Server(singleStore, singleWsClients, singleUser);
111
+ await singleStore.initialize();
112
+ await singleServer.initialize(Testing.TestsHttpRoute);
113
+ await singleServer.start();
68
114
  },
69
115
 
70
116
  async serverStop() {
71
117
  await oauth2server.stop();
118
+ await singleServer.stop();
119
+ await singleStore.cleanup();
120
+ await rmdir("test/store", { recursive: true });
72
121
  },
73
122
  },
74
123
  ],
@@ -1 +0,0 @@
1
- {"version":3,"file":"share-file.d.ts","sourceRoot":"","sources":["../../../src/define/files/share-file.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,mCAAmC,CAAC;AAIxD,qBACa,gBAAiB,SAAQ,OAAO;IAC3C,OAAgB,MAAM,4BAA0B;CACjD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,OAAO,CAAC;KACvB;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"share-file.js","sourceRoot":"","sources":["../../../src/define/files/share-file.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAGvD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,OAAO;aAC3B,WAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;AADrC,gBAAgB;IAD5B,aAAa,CAAC,YAAY,CAAC;GACf,gBAAgB,CAE5B;SAFY,gBAAgB","sourcesContent":["import { customElement } from 'lit/decorators.js';\nimport Element from \"../../elements/files/ShareFile.js\";\nimport styles from \"../../elements/files/ShareFile.styles.js\";\nimport dialogStyles from '../../ui/dialog/UiDialog.styles.js';\n\n@customElement('share-file')\nexport class ShareFileElement extends Element {\n static override styles = [dialogStyles, styles];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'share-file': Element;\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- import Element from "../../elements/layout/LayoutPanelElement.js";
2
- declare global {
3
- interface HTMLElementTagNameMap {
4
- 'layout-panel': Element;
5
- }
6
- }
7
- //# sourceMappingURL=layout-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-panel.d.ts","sourceRoot":"","sources":["../../../src/define/layout/layout-panel.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAIlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,OAAO,CAAC;KACzB;CACF"}
@@ -1,3 +0,0 @@
1
- import Element from "../../elements/layout/LayoutPanelElement.js";
2
- window.customElements.define('layout-panel', Element);
3
- //# sourceMappingURL=layout-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-panel.js","sourceRoot":"","sources":["../../../src/define/layout/layout-panel.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAElE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import Element from \"../../elements/layout/LayoutPanelElement.js\";\n\nwindow.customElements.define('layout-panel', Element);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'layout-panel': Element;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShareFile.d.ts","sourceRoot":"","sources":["../../../src/elements/files/ShareFile.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShareFile.js","sourceRoot":"","sources":["../../../src/elements/files/ShareFile.ts"],"names":[],"mappings":"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","sourcesContent":["import { TemplateResult, html, nothing, } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { \n IFile, Events as CoreEvents, IUser, AccessOperation, IAccessAddOperation, PermissionRole, IPermission,\n IApplication, IPatchRevision, BroadcastEvent, FilePatchBroadcastEvent,\n} from '@api-client/core/build/browser.js';\nimport { Patch, Core as JsonCore } from '@api-client/json';\nimport { Events } from '../../events/Events.js';\nimport { randomString } from '../../lib/Random.js';\nimport { StoreBroadcast } from '../../http-client/store/StoreBroadcast.js';\nimport UiDialog from '../../ui/dialog/UiDialog.js';\nimport { ElementPositioning } from '../../ui/lib/ElementPositioning.js';\nimport UiListbox from '../../ui/list/UiListbox.js';\nimport UiListItem from '../../ui/list/UiListItem.js';\nimport UiChip from '../../ui/chip/UiChip.js';\nimport { SnackNotifications } from '../../ui/notification/SnackNotifications.js';\nimport '../../define/ui/ui-listbox.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-chip.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/user/user-avatar.js';\n\nconst NAVIGATION_KEYS = {\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n Home: 'Home',\n End: 'End',\n Escape: 'Escape',\n Enter: 'Enter',\n Space: ' ',\n Backspace: 'Backspace',\n};\n\ninterface RoleInfo {\n label: string;\n title: string;\n}\n\nconst roles: Record<PermissionRole, RoleInfo> = {\n reader: { label: 'Reader', title: 'Shares the file as read only' },\n commenter: { label: 'Commenter', title: 'Allows users to collaborate by leaving comments (when applicable)' },\n writer: { label: 'Writer', title: \"Allows users to edit contents of the file. It also allows to share or delete file.\" },\n owner: { label: 'Owner', title: 'The same permissions as the owner of the file' },\n};\n\n/**\n * A dialog that shows users that the file is shared with and allows to share a file.\n * \n * Listen to the `closed` on the dialog. The CustomEvent has the `detail`\n * object with the `closingReason` retails:\n * - canceled: whether the dialog was cancelled (ESC, outside click, dismiss button)\n * - confirmed: whether the dialog was confirmed by the user\n * \n * ```javascript\n * const dialog = document.createElement('share-file');\n * dialog.key = 'file key';\n * // or\n * dialog.file = file;\n * dialog.appInfo=\"${AppInfo}\"\n * dialog.user=\"${currentUser}\"\n * dialog.opened = true;\n * document.body.appendChild(dialog);\n * dialog.addEventListener('closed', (ev: Event) => {\n * document.body.removeChild(dialog);\n * });\n * ```\n */\nexport default class ShareFile extends UiDialog {\n private keyInternal?: string;\n\n /**\n * The key of the file to share.\n */\n @property({ type: String }) get key(): string | undefined {\n return this.keyInternal;\n }\n\n set key(value: string | undefined) {\n const old = this.keyInternal;\n if (old === value) {\n return;\n }\n this.keyInternal = value;\n this.processFileKey(value);\n }\n\n protected fileInternal?: IFile;\n\n /**\n * When known, set this instead of the `key` to skip requesting the file info.\n * Also, when file is set and then the `key` is set the HTTP request won't be made.\n */\n @property({ type: Object }) get file(): IFile | undefined {\n return this.fileInternal;\n }\n\n set file(value: IFile | undefined) {\n const old = this.fileInternal;\n if (old === value) {\n return;\n }\n if (old && value && old.key === value.key) {\n return;\n }\n this.fileInternal = value ? JsonCore.clone(value) : undefined;\n if (value) {\n this.requestFileUsers(value.key);\n }\n }\n\n /**\n * The current user to filter out the user from the suggestions and the shared list.\n */\n @property({ type: Object }) user?: IUser;\n\n /**\n * This property is required for the API access to work.\n * Set it to the current application information.\n * \n * It will throw an error when trying to patch access without setting this property.\n */\n @property({ type: Object }) appInfo?: IApplication;\n\n /**\n * A flag set when requesting the the file meta\n */\n @state() protected loadingFile = false;\n\n /**\n * A flag set when requesting the current list of users for the file.\n */\n @state() protected loadingFileUsers = false;\n\n /**\n * Computed value of whether currently loading file or file users.\n */\n get loading(): boolean {\n return this.loadingFile || this.loadingFileUsers;\n }\n\n @query('#userInput')\n protected readonly input!: HTMLInputElement;\n\n @query('.suggestions')\n protected readonly suggestionsContainer!: HTMLDivElement;\n\n @query('ui-listbox.user-autocomplete')\n protected readonly suggestionsList!: UiListbox;\n\n /**\n * The list of users to render in the suggestion box.\n */\n @state() protected userSuggestions?: IUser[];\n\n /**\n * Whether the suggestion box is opened.\n */\n @state() protected suggestionsOpened = false;\n\n /**\n * The list of users that were selected by the users to share the file with.\n */\n @state() protected selectedUsers?: IUser[];\n\n /**\n * The list of users that have permission to the file read from the store\n * when the component was initializing.\n */\n @state() protected permissionUsers: IUser[] = [];\n\n /**\n * A list of permissions to set on the users after the user confirms the change.\n * These are pending changes and only populated when the user changes any of the roles of \n * an existing user.\n */\n @state() protected pendingPermissions?: AccessOperation[];\n\n /**\n * The last user query sent to the server. Used by the suggestions logic.\n */\n protected lastUserQuery?: string;\n\n /**\n * Computed value telling whether the main input should be disabled for the current state.\n */\n protected get inputDisabled(): boolean {\n const { file } = this;\n if (!file) {\n return true;\n }\n const { capabilities } = file;\n if (!capabilities) {\n return true;\n }\n return !capabilities.canShare;\n }\n\n /**\n * Computed value whether there are selected users\n */\n get hasSelectedUsers(): boolean {\n const { selectedUsers } = this;\n if (!Array.isArray(selectedUsers) || !selectedUsers.length) {\n return false;\n }\n return true;\n }\n\n /**\n * Whether there are pending permissions to be set.\n */\n get hasPending(): boolean {\n const { pendingPermissions } = this;\n return !!pendingPermissions && !!pendingPermissions.length;\n }\n\n protected get fileId(): string {\n const { key, file } = this;\n if (key) {\n return key;\n }\n if (file) {\n return file.key;\n }\n throw new Error(`Invalid state, file is not set.`);\n }\n\n filesChannel = new BroadcastChannel(StoreBroadcast.files);\n\n /**\n * Computed positioning styles for the suggestion box.\n */\n protected suggestionStyles?: StyleInfo;\n\n @state() protected selectedRole: PermissionRole = 'reader';\n\n constructor() {\n super();\n this.fileMetaMessageHandler = this.fileMetaMessageHandler.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.filesChannel.addEventListener('message', this.fileMetaMessageHandler);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.filesChannel.removeEventListener('message', this.fileMetaMessageHandler);\n }\n\n protected fileMetaMessageHandler(e: MessageEvent): void {\n const event = e.data as BroadcastEvent;\n if (event.operation === 'patch') {\n this.handleFilePatch(event as FilePatchBroadcastEvent);\n }\n }\n\n protected handleFilePatch(event: FilePatchBroadcastEvent): void {\n const { key, alt } = event;\n if (this.fileId !== key || alt !== 'meta') {\n return;\n }\n const file = this.file as IFile;\n const rev = event.data as IPatchRevision;\n const { patch } = rev;\n const result = Patch.apply(file, patch);\n this.file = result.doc as IFile;\n const hasPermission = patch.some(i => i.path.startsWith('/permissions'));\n if (hasPermission) {\n this.requestFileUsers(file.key);\n }\n this.requestUpdate();\n }\n\n protected processFileKey(value?: string): void {\n if (!value) {\n this.file = undefined;\n this.selectedUsers = undefined;\n this.lastUserQuery = undefined;\n this.pendingPermissions = undefined;\n this.selectedUsers = undefined;\n this.userSuggestions = undefined;\n this.loadingFile = false;\n this.loadingFileUsers = false;\n this.permissionUsers = [];\n return;\n }\n this.requestFileInfo(value);\n this.requestFileUsers(value);\n }\n\n protected async requestFileInfo(key: string): Promise<void> {\n if (this.file && this.file.key === key) {\n return;\n }\n this.loadingFile = true;\n try {\n this.file = await Events.Store.File.read(key, false, this);\n } catch (e) {\n CoreEvents.Telemetry.exception((e as Error).message, true, this);\n } finally {\n this.loadingFile = false;\n }\n }\n\n protected async requestFileUsers(key: string): Promise<void> {\n this.loadingFileUsers = true;\n try {\n const list = await Events.Store.File.listUsers(key);\n this.permissionUsers = list.items;\n } catch (e) {\n CoreEvents.Telemetry.exception((e as Error).message, true, this);\n } finally {\n this.loadingFileUsers = false;\n }\n }\n\n protected handleInput(e: Event): void {\n const input = e.target as HTMLInputElement;\n const { value } = input;\n this.queryUsers(value);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n const { suggestionsOpened, suggestionsList } = this;\n if (!suggestionsList || event.defaultPrevented) {\n return;\n }\n if (Object.values(NAVIGATION_KEYS).indexOf(event.key) === -1) return;\n\n if (event.key === NAVIGATION_KEYS.Escape) {\n if (suggestionsOpened) {\n event.preventDefault();\n event.stopPropagation();\n this.toggleSuggestions(false);\n }\n } else if (event.key === NAVIGATION_KEYS.ArrowDown) {\n event.preventDefault();\n if (suggestionsOpened) {\n this.suggestionsList.highlightNext();\n } else {\n this.queryUsers('');\n }\n } else if (event.key === NAVIGATION_KEYS.ArrowUp) {\n event.preventDefault();\n if (suggestionsOpened) {\n this.suggestionsList.highlightPrevious();\n }\n } else if (event.key === NAVIGATION_KEYS.Home) {\n if (suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightFirst();\n }\n } else if (event.key === NAVIGATION_KEYS.End) {\n if (suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightLast();\n }\n } else if (event.key === NAVIGATION_KEYS.Enter) {\n event.preventDefault();\n if (suggestionsOpened) {\n const item = suggestionsList.highlightListItem;\n if (item) {\n suggestionsList.notifySelect(item);\n }\n }\n } else if (event.key === NAVIGATION_KEYS.Backspace) {\n const input = event.target as HTMLInputElement;\n if (!input.value) {\n event.preventDefault();\n this.removeLastSelectedUser();\n }\n }\n }\n\n protected handleSuggestionSelect(e: CustomEvent): void {\n const item = e.detail.item as UiListItem;\n const { key } = item.dataset;\n if (!key) {\n return;\n }\n this.selectUserSuggestion(key);\n }\n\n protected selectUserSuggestion(key: string): void {\n this.toggleSuggestions(false);\n const { input, userSuggestions } = this;\n if (!input || !userSuggestions) {\n return;\n }\n input.value = '';\n const user = userSuggestions.find(i => i.key === key);\n if (!user) {\n return;\n }\n if (!this.selectedUsers) {\n this.selectedUsers = [user];\n } else {\n this.selectedUsers.push(user);\n this.requestUpdate();\n }\n }\n\n protected deselectUserSuggestion(key: string): void {\n const { selectedUsers: users = [] } = this;\n const index = users.findIndex(u => u.key === key);\n if (index >= 0) {\n users.splice(index, 1);\n if (!users.length) {\n this.selectedUsers = undefined;\n }\n this.requestUpdate();\n }\n }\n\n protected handleUserChipRemove(e: Event): void {\n const chip = e.target as UiChip;\n const { key } = chip.dataset;\n if (!key) {\n return;\n }\n this.deselectUserSuggestion(key);\n }\n\n protected removeLastSelectedUser(): void {\n const { selectedUsers } = this;\n if (!selectedUsers || !selectedUsers.length) {\n return;\n }\n const index = selectedUsers.length - 1;\n selectedUsers.splice(index, 1);\n if (!selectedUsers.length) {\n this.selectedUsers = undefined;\n }\n this.requestUpdate();\n }\n\n protected async queryUsers(q: string): Promise<void> {\n const { lastUserQuery, selectedUsers, userSuggestions, user } = this;\n let users: IUser[] = [];\n this.lastUserQuery = q;\n if (lastUserQuery && userSuggestions && q.includes(lastUserQuery)) {\n const lower = q.toLowerCase();\n // filter the current list for the continues query.\n // Not necessary to query the server as we have all results.\n users = userSuggestions.filter((i) => {\n const { name, email } = i;\n if (name && name.toLowerCase().includes(lower)) {\n return true;\n }\n if (email) {\n for (const item of email) {\n if (item.email && item.email.toLowerCase().includes(lower)) {\n return true;\n }\n }\n }\n return false;\n });\n } else {\n const result = await Events.Store.User.list({\n query: q,\n });\n users = result.items;\n }\n if (selectedUsers) {\n users = users.filter(candidate => !selectedUsers.some(i => i.key === candidate.key));\n }\n if (user) {\n users = users.filter(candidate => candidate.key !== user.key);\n }\n if (users.length) {\n this.userSuggestions = users;\n this.toggleSuggestions(true);\n } else {\n this.userSuggestions = undefined;\n this.toggleSuggestions(false);\n }\n }\n\n protected toggleSuggestions(opened: boolean): void {\n if (!opened) {\n this.suggestionsOpened = false;\n this.input.focus();\n } else {\n this.suggestionStyles = ElementPositioning.positionOverlay(this.suggestionsContainer, this.input, {\n vertical: 'top',\n noOverlap: true,\n constrain: true,\n matchAnchorWidth: true,\n });\n this.suggestionsOpened = true;\n }\n }\n\n protected getUserEmail(user: IUser): string | undefined {\n const { email } = user;\n if (!Array.isArray(email) || !email.length) {\n return undefined;\n }\n const emails: string[] = [];\n // we first find a verified email and then we pick any email\n for (const item of email) {\n if (item.verified && item.email) {\n return item.email;\n }\n if (item.email) {\n emails.push(item.email);\n }\n }\n return emails[0];\n }\n\n protected handleRoleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement;\n const { role } = element.dataset;\n if (!role) {\n return;\n }\n this.selectedRole = role as PermissionRole;\n }\n\n protected cancelShareUser(): void {\n this.selectedUsers = undefined;\n this.lastUserQuery = undefined;\n this.userSuggestions = undefined;\n this.suggestionsOpened = false;\n }\n\n protected handleShare(): void {\n const { selectedRole } = this;\n if (!selectedRole) {\n SnackNotifications.notify('Select a role before sharing', { timeout: 2000 });\n return;\n }\n this.share(selectedRole);\n }\n\n protected async share(role: PermissionRole): Promise<void> {\n if (!role) {\n throw new Error(`Invalid state. Role is not selected.`);\n }\n const { selectedUsers } = this;\n if (!selectedUsers || !selectedUsers.length) {\n this.cancelShareUser();\n return;\n }\n const { appInfo } = this;\n if (!appInfo) {\n throw new Error(`The appInfo is not set on the <${this.localName}> element.`);\n }\n const id = this.fileId;\n if (!id) {\n throw new Error(`The fileId is not set on the <${this.localName}> element.`);\n }\n const ops: AccessOperation[] = selectedUsers.map(user => {\n const op: AccessOperation = {\n op: 'add',\n type: 'user',\n value: role,\n id: user.key,\n };\n return op;\n });\n try {\n await Events.Store.File.patchUsers(id, randomString(), ops, appInfo);\n this.cancelShareUser();\n } catch (e) {\n const cause = e as Error;\n CoreEvents.Telemetry.exception(cause.message, false, this);\n throw cause;\n }\n }\n\n protected handleRoleChangeOption(e: CustomEvent): void {\n const list = e.target as HTMLElement;\n const { user, current } = list.dataset;\n const element = e.detail.item as HTMLElement;\n const role = element.dataset.role as PermissionRole;\n if (!role || !user || !current) {\n return;\n }\n if (!this.pendingPermissions) {\n this.pendingPermissions = [];\n }\n const { pendingPermissions = [] } = this;\n const index = pendingPermissions.findIndex(i => i.id === user);\n if (index >= 0) {\n // removes prior selection\n pendingPermissions.splice(index, 1);\n }\n\n if (role === current) {\n // the user selected the role that was originally assigned to the user.\n // we don't change anything.\n if (!pendingPermissions.length) {\n this.pendingPermissions = undefined;\n }\n this.requestUpdate();\n return;\n }\n\n let op: AccessOperation;\n if ((role as string) === 'remove') {\n op = {\n op: 'remove',\n type: 'user',\n id: user,\n };\n } else {\n op = {\n op: 'add',\n type: 'user',\n value: role,\n id: user,\n };\n }\n pendingPermissions.push(op);\n this.requestUpdate();\n }\n\n protected async handleCommitChanges(): Promise<void> {\n const { key, file, pendingPermissions } = this;\n if (!pendingPermissions) {\n return;\n }\n const { appInfo } = this;\n if (!appInfo) {\n throw new Error(`The appInfo is not set on the <${this.localName}> element.`);\n }\n const id = key || file && file.key;\n if (!id) {\n throw new Error(`Either \"key\" or \"file\" must be set on the <${this.localName}> element.`);\n }\n try {\n await Events.Store.File.patchUsers(id, randomString(), pendingPermissions, appInfo);\n this.pendingPermissions = undefined;\n } catch (e) {\n const cause = e as Error;\n CoreEvents.Telemetry.exception(cause.message, false, this);\n throw cause;\n }\n }\n\n override renderIcon(): TemplateResult {\n const classes: ClassInfo = {\n icon: true,\n 'with-icon': true,\n };\n return html`\n <div class=\"${classMap(classes)}\" part=\"icon\"><ui-icon icon=\"personAdd\"></ui-icon></div>\n `;\n }\n\n override renderTitle(): TemplateResult {\n const classes: ClassInfo = {\n title: true,\n 'with-title': true,\n };\n return html`\n <div class=\"${classMap(classes)}\" part=\"title\"><span>Share with others</span></div>\n `;\n }\n\n override renderBody(): TemplateResult {\n return html`\n <div class=\"content\">\n ${this.userInputTemplate()}\n ${this.renderCurrentUsers()}\n </div>\n `;\n }\n\n override renderButtons(): TemplateResult {\n const classes: ClassInfo = {\n buttons: true,\n 'with-buttons': true,\n };\n\n let content: TemplateResult;\n if (this.hasPending) {\n content = this.pendingActionsTemplate();\n } else if (this.hasSelectedUsers) {\n content = this.selectedUsersActionsTemplate();\n } else {\n content = this.overviewActionsTemplate();\n }\n return html`\n <div class=\"${classMap(classes)}\" part=\"button\">${content}</div>\n `;\n }\n\n protected overviewActionsTemplate(): TemplateResult {\n return html`\n <ui-button value=\"confirm\" type=\"text\" class=\"internal-button\" @click=\"${this.handleConfirm}\">Done</ui-button>\n `;\n }\n\n protected selectedUsersActionsTemplate(): TemplateResult {\n return html`\n <ui-button type=\"text\" class=\"internal-button\" @click=\"${this.cancelShareUser}\">Cancel</ui-button>\n <ui-button type=\"text\" class=\"internal-button\" @click=\"${this.handleShare}\">Share</ui-button>\n `;\n }\n\n protected pendingActionsTemplate(): TemplateResult {\n return html`\n <span class=\"pending-info\">Pending changes</span>\n <ui-button type=\"text\" class=\"internal-button\" @click=\"${this.handleCommitChanges}\">Save</ui-button>\n `;\n }\n\n protected userInputTemplate(): TemplateResult {\n const classes = {\n 'name-input': true,\n autocomplete: this.suggestionsOpened,\n };\n return html`\n <div class=\"input-line\">\n <div class=\"${classMap(classes)}\">\n ${this.renderInput()}\n ${this.renderAutocomplete()}\n </div>\n ${this.roleSelectorTemplate()}\n </div>\n `\n }\n\n protected renderInput(): TemplateResult {\n return html`\n <div class=\"input-wrapper\">\n ${this.renderSelectedUserChips()}\n <input \n type=\"text\"\n id=\"userInput\"\n name=\"name\"\n ?disabled=\"${this.inputDisabled}\"\n @input=\"${this.handleInput}\"\n @keydown=\"${this.handleKeydown}\"\n placeholder=\"Name or email\"\n aria-label=\"Name or email\"\n autocomplete=\"off\"\n />\n </div>\n `;\n }\n\n protected renderAutocomplete(): TemplateResult {\n const { userSuggestions } = this;\n let opened = this.suggestionsOpened;\n if (opened && (!userSuggestions || !userSuggestions.length)) {\n opened = false;\n }\n\n const classes = {\n suggestions: true,\n opened,\n };\n\n return html`\n <div class=\"${classMap(classes)}\" style=\"${styleMap(this.suggestionStyles || {})}\">\n <ui-listbox \n class=\"user-autocomplete\" \n role=\"listbox\" \n aria-label=\"Suggested users from your organization.\"\n tabindex=\"-1\"\n @select=\"${this.handleSuggestionSelect}\"\n >\n ${this.renderSuggestionList()}\n </ui-listbox>\n </div>\n `;\n }\n\n /**\n * @returns The template for the suggestions list.\n */\n protected renderSuggestionList(): TemplateResult[] | string {\n const items = this.userSuggestions;\n if (!Array.isArray(items) || !items.length) {\n return '';\n }\n return items.map(i => this.renderSuggestionItem(i));\n }\n\n /**\n * @returns The template for an URL suggestion item.\n */\n protected renderSuggestionItem(user: IUser): TemplateResult {\n const { name, key } = user;\n const email = this.getUserEmail(user);\n return html`\n <ui-list-item \n class=\"suggestion-item\" \n data-key=\"${key}\"\n role=\"option\"\n aria-selected=\"false\"\n lines=\"two\"\n image=\"avatar\"\n >\n <user-avatar slot=\"start\" .user=\"${user}\"></user-avatar>\n <div>${name || key}</div>\n <p slot=\"supporting-text\">${email}</p>\n </ui-list-item>`;\n }\n\n protected renderSelectedUserChips(): TemplateResult | string {\n if (!this.hasSelectedUsers) {\n return '';\n }\n return html`\n ${(this.selectedUsers as IUser[]).map((user) => this.renderUserChip(user))}\n `;\n }\n\n protected renderUserChip(user: IUser): TemplateResult {\n const email = this.getUserEmail(user);\n return html`\n <ui-chip type=\"input\" closable @close=\"${this.handleUserChipRemove}\" data-key=\"${user.key}\" title=\"${ifDefined(email)}\">\n <user-avatar slot=\"avatar\" .user=\"${user}\"></user-avatar>\n ${user.name || email || user.key}\n </ui-chip>\n `;\n }\n\n protected roleSelectorTemplate(): TemplateResult | string {\n if (!this.hasSelectedUsers) {\n return '';\n }\n const { selectedRole } = this;\n \n let label: string;\n const info = roles[selectedRole as PermissionRole];\n if (info) {\n label = info.label;\n } else {\n label = 'Role';\n }\n return html`\n <ui-dropdown-list @select=\"${this.handleRoleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-button aria-label=\"Select user role\" type=\"tonal\">${label} <ui-icon icon=\"arrowDropDown\" role=\"presentation\"></ui-icon></ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${Object.keys(roles).map((key) => html`\n <ui-list-item role=\"menuitem\" data-role=\"${key}\" title=\"${roles[key as PermissionRole].title}\">\n ${roles[key as PermissionRole].label}\n </ui-list-item>`)}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderCurrentUsers(): TemplateResult | string {\n if (this.hasSelectedUsers) {\n return '';\n }\n const { file, loading, permissionUsers } = this;\n if (!file || !permissionUsers || loading) {\n return '';\n }\n const { permissions=[] } = file;\n return html`\n <div class=\"current-users\">\n ${permissions.map(p => this.renderUserPermission(p))}\n </div>\n `;\n }\n\n protected renderUserPermission(permission: IPermission): TemplateResult | typeof nothing {\n const { type, role } = permission;\n if (type === 'group') {\n return nothing;\n }\n if (type === 'anyone') {\n return html`<p>Shared within the organization.</p>`;\n }\n const { permissionUsers=[] } = this;\n const userId = permission.owner as string;\n const user = permissionUsers.find(u => u.key === userId);\n if (!user) {\n // @TODO: should render something...\n return nothing;\n }\n return html`\n <div class=\"permission-item\">\n <user-avatar class=\"user-icon\" .user=\"${user}\"></user-avatar>\n <div class=\"permission-user\">\n <span class=\"user-name\">${user.name || user.key}</span>\n <span class=\"user-email\">${this.getUserEmail(user)}</span>\n </div>\n <div class=\"user-role\">\n ${this.permissionRoleTemplate(role, userId)}\n </div>\n </div>\n `;\n }\n\n protected permissionRoleTemplate(role: PermissionRole, userId: string): TemplateResult {\n const { pendingPermissions } = this;\n const pending = pendingPermissions && pendingPermissions.find(i => i.type === 'user' && i.id === userId) as IAccessAddOperation | undefined;\n const pendingRole = pending && pending.value;\n const selectionRole = pendingRole || role;\n\n let label: string;\n const info = roles[selectionRole];\n if (info) {\n label = info.label;\n } else {\n label = 'Role';\n }\n return html`\n <ui-dropdown-list \n @select=\"${this.handleRoleChangeOption}\" \n closeOnOutsideClick class=\"dropdown\" \n data-user=\"${userId}\"\n data-current=\"${role}\"\n >\n <ui-button aria-label=\"Select user role\" type=\"text\">${label} <ui-icon icon=\"arrowDropDown\" role=\"presentation\"></ui-icon></ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.roleItemTemplate('reader', selectionRole)}\n ${this.roleItemTemplate('commenter', selectionRole)}\n ${this.roleItemTemplate('writer', selectionRole)}\n ${this.roleItemTemplate('owner', selectionRole)}\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item role=\"menuitem\" data-role=\"remove\" title=\"Removes the user\">\n Remove\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected roleItemTemplate(role: PermissionRole, userRole: PermissionRole): TemplateResult {\n return html`\n <ui-list-item role=\"menuitem\" data-role=\"${role}\" title=\"${roles[role].title}\" image=\"icon\">\n ${role === userRole ? html`<ui-icon icon=\"check\" slot=\"end\"></ui-icon>` : ''}\n ${roles[role].label}\n </ui-list-item>\n `;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShareFile.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/files/ShareFile.styles.ts"],"names":[],"mappings":";AAEA,wBAkIE"}
@@ -1,327 +0,0 @@
1
- import { TemplateResult } from 'lit';
2
- import LayoutPanelElement from './LayoutPanelElement.js';
3
- import '../../define/layout/layout-panel.js';
4
- import { IconType } from '../../ui/icons/Icons.js';
5
- export type Direction = 'horizontal' | 'vertical';
6
- export type DropRegion = 'center' | 'east' | 'west' | 'north' | 'south';
7
- declare enum PanelState {
8
- Idle = 0,
9
- Busy = 1
10
- }
11
- export interface ILayoutItem {
12
- /**
13
- * The kind of opened item
14
- */
15
- kind: string;
16
- /**
17
- * The key of the opened item
18
- */
19
- key: string;
20
- /**
21
- * Optional parent information that helps locating this object.
22
- */
23
- parent?: string;
24
- /**
25
- * The label to render in the tab.
26
- */
27
- label: string;
28
- /**
29
- * Whether the tab is pinned (cannot be closed or moved).
30
- */
31
- pinned?: boolean;
32
- /**
33
- * The tab index.
34
- */
35
- index?: number;
36
- /**
37
- * The icon defined in the internal library to render with the tab.
38
- */
39
- icon?: IconType;
40
- /**
41
- * A tab that is always present in the layout. The user can't close this tab.
42
- */
43
- persistent?: boolean;
44
- /**
45
- * A property to be used by the screen to indicate the property is being loaded
46
- * (from a data store, file, etc).
47
- */
48
- loading?: boolean;
49
- /**
50
- * Indicates the item has been changed and is out of sync with the data store.
51
- */
52
- isDirty?: boolean;
53
- }
54
- export interface ILayoutOptions {
55
- /**
56
- * The list of DataTransfer types to test against when handling drag and drop.
57
- * When set it checks whether all types are set on the dragged item.
58
- * If not set all items are allowed.
59
- */
60
- dragTypes?: string[];
61
- /**
62
- * The local store key to use with `autoStore`,
63
- */
64
- storeKey?: string;
65
- /**
66
- * Uses application's internal events system to store the layout data
67
- * in the local store, when anything change.
68
- * This must be set with the `storeKey` property.
69
- *
70
- * When this is set it also restores the state during initialization.
71
- */
72
- autoStore?: boolean;
73
- /**
74
- * When set it adds the `overflow` hidden on the container that holds the tab contents.
75
- */
76
- constrain?: boolean;
77
- }
78
- export interface IPanelSplitOptions {
79
- layout?: Direction;
80
- itemsTarget?: 0 | 1;
81
- }
82
- export type ItemRenderCallback = (item: ILayoutItem, visible: boolean) => TemplateResult;
83
- export interface ILayoutPanelState {
84
- id: number;
85
- layout: Direction;
86
- panels?: ILayoutPanelState[];
87
- items?: ILayoutItem[];
88
- selected?: string;
89
- }
90
- export interface ILayoutState {
91
- panels: ILayoutPanelState[];
92
- }
93
- export interface ILayoutItemAddOptions {
94
- /**
95
- * The region to add the item.
96
- * When other than `center` it splits the panel.
97
- */
98
- region?: DropRegion;
99
- /**
100
- * The index at which to put the item.
101
- * By default it is added as a last item.
102
- */
103
- index?: number;
104
- }
105
- export declare class LayoutPanel {
106
- id: number;
107
- parent?: LayoutPanel;
108
- manager: LayoutManager;
109
- layout: Direction;
110
- panels: LayoutPanel[];
111
- items: ILayoutItem[];
112
- /**
113
- * The current state of the panel.
114
- */
115
- state: PanelState;
116
- /**
117
- * The item being rendered in the panel.
118
- */
119
- selected?: string;
120
- /**
121
- * The computed size value for each item.
122
- * The value of `undefined` means "auto".
123
- */
124
- sizes: string[];
125
- get hasPanels(): boolean;
126
- get hasItems(): boolean;
127
- static fromSchema(state: ILayoutPanelState, manager: LayoutManager, parent?: LayoutPanel): LayoutPanel;
128
- constructor(manager: LayoutManager, parent?: LayoutPanel);
129
- /**
130
- * @returns Returns a **copy** of the items array sorted by index.
131
- */
132
- sortedItems(): ILayoutItem[];
133
- /**
134
- * @returns True when the panel accepts drop events.
135
- */
136
- canDrop(): boolean;
137
- nextIndex(): number;
138
- /**
139
- * Adds an item to the layout.
140
- *
141
- * @param item The item to add
142
- * @param opts Layout adding item options
143
- * @returns Whether a new item was added to the layout. false when the item is already in the layout panel.
144
- */
145
- addItem(item: ILayoutItem, opts?: ILayoutItemAddOptions): boolean;
146
- /**
147
- * Splits this panel into 2 panels.
148
- * This to be used when the panel has no other panels. Only items are allowed.
149
- * It produces 2 new panels and moves the items to the first one leaving the other one available.
150
- */
151
- split(opts?: IPanelSplitOptions): LayoutPanel[];
152
- unsplit(): void;
153
- /**
154
- * Decreases items index by 1 to all items with index at least equal to `fromIndex`.
155
- * @param fromIndex The minimal index to affect.
156
- */
157
- decreaseIndex(fromIndex: number): void;
158
- /**
159
- * Increases items index by 1 to all items with index at least equal to `fromIndex`.
160
- * @param fromIndex The minimal index to affect.
161
- */
162
- increaseIndex(fromIndex: number): void;
163
- /**
164
- * Removes an item from the layout
165
- * @param key The key of the item.
166
- * @returns The removed item, if any.
167
- */
168
- removeItem(key: string): ILayoutItem | undefined;
169
- /**
170
- * @param key The key of the item to perform a relative operation from.
171
- * @param dir The direction to which close other items. Default to both directions leaving only the `key` item
172
- */
173
- relativeClose(key: string, dir?: 'left' | 'right' | 'both'): void;
174
- removePanel(id: number): void;
175
- /**
176
- * Moves an item to a new index.
177
- *
178
- * @param key The item key
179
- * @param toIndex The new index. When not set it moves the item to the end.
180
- */
181
- moveItem(key: string, toIndex?: number): void;
182
- rename(key: string, label: string): void;
183
- toJSON(): ILayoutPanelState;
184
- panelTemplate(panel: LayoutPanel, itemCallback: ItemRenderCallback): TemplateResult | undefined;
185
- itemTemplate(item: ILayoutItem, visible: boolean, itemCallback: ItemRenderCallback): TemplateResult;
186
- render(itemCallback: ItemRenderCallback): TemplateResult | undefined;
187
- }
188
- /**
189
- * Layout manager for API Client apps.
190
- *
191
- * Supports:
192
- * - layout splitting depending on the selected region (east, west, north, south)
193
- * - drag and drop of items into the layout
194
- * - auto storing and restoring layout state from the application local storage.
195
- * - adding items to the last focused panel
196
- *
197
- * Limitations
198
- * - the rendered content has to be focusable (tabindex must be set) in order to detect active panel
199
- */
200
- export declare class LayoutManager extends EventTarget {
201
- opts: ILayoutOptions;
202
- panels: LayoutPanel[];
203
- protected isDirty: boolean;
204
- protected storing: boolean;
205
- private _activePanel?;
206
- /**
207
- * An active panel
208
- */
209
- get activePanel(): LayoutPanel | undefined;
210
- constructor(opts?: ILayoutOptions);
211
- /**
212
- * @param itemCallback The callback called when rendering an item in layout view.
213
- * @returns The template for the page layout.
214
- */
215
- render(itemCallback: ItemRenderCallback): TemplateResult[];
216
- /**
217
- * Initializes the manager.
218
- *
219
- * @param restore Previously stored layout state, if any.
220
- */
221
- initialize(restore?: ILayoutState): Promise<void>;
222
- protected restore(restore: ILayoutState): void;
223
- /**
224
- * Informs the screen that something has changed
225
- */
226
- changed(): void;
227
- /**
228
- * Dispatches the `nameitem` event.
229
- * The detail object has the item to be added to the items.
230
- * The event handler can manipulate properties of the item, except for the index which will be set by the manager.
231
- *
232
- * @param item The item to notify.
233
- */
234
- nameItem(item: ILayoutItem): void;
235
- /**
236
- * Serializes the layout state to a JSON safe object.
237
- * This is automatically called when passing this object to `JSON.stringify()`.
238
- */
239
- toJSON(): ILayoutState;
240
- protected autoStore(): void;
241
- protected storeLayout(key: string): Promise<void>;
242
- protected restoreLayout(key: string): Promise<void>;
243
- protected _focusInHandler(e: Event): void;
244
- protected findLayout(e: Event, last?: boolean): LayoutPanelElement | undefined;
245
- /**
246
- * Finds a panel by id.
247
- *
248
- * @param id The id of the panel.
249
- * @param parent THe parent panel to start searching from
250
- * @returns The panel if found
251
- */
252
- findPanel(id: number, parent?: LayoutPanel): LayoutPanel | undefined;
253
- /**
254
- * Finds a first panel that can accept items.
255
- * This will be a panel that has no other panels.
256
- */
257
- findFirstItemsPanel(parent?: LayoutPanel): LayoutPanel | undefined;
258
- /**
259
- * Finds a panel for the item.
260
- * @param key the key of the item to find.
261
- */
262
- findItemPanel(key: string, parent?: LayoutPanel): LayoutPanel | undefined;
263
- /**
264
- * Finds a layout item.
265
- * @param key the key of the item to find.
266
- */
267
- findItem(key: string, parent?: LayoutPanel): ILayoutItem | undefined;
268
- parentItemIterator(key: string, parent?: LayoutPanel): Generator<ILayoutItem>;
269
- /**
270
- * Adds an item to the active panel.
271
- *
272
- * @param item The item to add.
273
- */
274
- addItem(item: ILayoutItem): void;
275
- /**
276
- * Removes an item from layout.
277
- * @param key The key of the item to remove.
278
- */
279
- removeItem(key: string): void;
280
- /**
281
- * @param key The key of the item to perform a relative operation from.
282
- * @param dir The direction to which close other items. Default to both directions leaving only the `key` item
283
- */
284
- relativeClose(key: string, dir?: 'left' | 'right' | 'both'): void;
285
- /**
286
- * Requests an update on a layout.
287
- *
288
- * @param id The id of the panel. When not set it uses the active panel
289
- */
290
- forceUpdateLayout(id?: number): void;
291
- /**
292
- * Moves a tab between panels or inside a panel
293
- *
294
- * @param fromPanel The id of the source panel of the item
295
- * @param toPanel The id of the target panel of the item
296
- * @param key The key of the item
297
- * @param toIndex The index to which add the item. Default as the last.
298
- */
299
- moveTab(fromPanel: number, toPanel: number, key: string, toIndex?: number): void;
300
- /**
301
- * Finds the item's panel and renames the item.
302
- *
303
- * @param key The item's key
304
- * @param label The new label
305
- */
306
- rename(key: string, label: string): void;
307
- /**
308
- * Requests to dispatch the `nameitem` event so the application can update the name of the tab.
309
- *
310
- * @param key The key of the item.
311
- */
312
- requestNameUpdate(key: string): void;
313
- /**
314
- * Requests to dispatch the `nameitem` event so the application can update the name of a tab
315
- * that has a parent.
316
- *
317
- * @param parent The key of the parent.
318
- */
319
- parentNameUpdate(parent: string): void;
320
- /**
321
- * Finds all items in all panels that have specified parent.
322
- * @param key The key of the parent to search for.
323
- */
324
- removeByParent(key: string): void;
325
- }
326
- export {};
327
- //# sourceMappingURL=LayoutManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutManager.d.ts","sourceRoot":"","sources":["../../../src/elements/layout/LayoutManager.ts"],"names":[],"mappings":"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"}