@hypericon/mico 0.3.24 → 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 (274) hide show
  1. package/README.md +2 -0
  2. package/dist/{components → cjs/components}/dialog/dialog-manager.d.ts +1 -0
  3. package/dist/{components → cjs/components}/dialog/dialog-manager.js +4 -0
  4. package/dist/esm/components/accordion/index.d.ts +0 -0
  5. package/dist/esm/components/accordion/index.js +1 -0
  6. package/dist/esm/components/data-grid/index.d.ts +0 -0
  7. package/dist/esm/components/data-grid/index.js +1 -0
  8. package/dist/esm/components/data-table/index.d.ts +0 -0
  9. package/dist/esm/components/data-table/index.js +1 -0
  10. package/dist/esm/components/dialog/Dialog.d.ts +1 -0
  11. package/dist/esm/components/dialog/Dialog.js +10 -0
  12. package/dist/esm/components/dialog/dialog-manager.d.ts +46 -0
  13. package/dist/esm/components/dialog/dialog-manager.js +167 -0
  14. package/dist/esm/components/dialog/index.d.ts +1 -0
  15. package/dist/esm/components/dialog/index.js +2 -0
  16. package/dist/esm/components/drag-handler/DragHandler.d.ts +40 -0
  17. package/dist/esm/components/drag-handler/DragHandler.js +104 -0
  18. package/dist/esm/components/drag-handler/index.d.ts +1 -0
  19. package/dist/esm/components/drag-handler/index.js +1 -0
  20. package/dist/esm/components/drawer/index.d.ts +0 -0
  21. package/dist/esm/components/drawer/index.js +1 -0
  22. package/dist/esm/components/drop-target/DropTarget.d.ts +24 -0
  23. package/dist/esm/components/drop-target/DropTarget.js +56 -0
  24. package/dist/esm/components/drop-target/drop-target.state.d.ts +9 -0
  25. package/dist/esm/components/drop-target/drop-target.state.js +73 -0
  26. package/dist/esm/components/drop-target/index.d.ts +1 -0
  27. package/dist/esm/components/drop-target/index.js +1 -0
  28. package/dist/esm/components/form/Form.d.ts +2 -0
  29. package/dist/esm/components/form/Form.js +9 -0
  30. package/dist/esm/components/form/index.d.ts +1 -0
  31. package/dist/esm/components/form/index.js +1 -0
  32. package/dist/esm/components/icon/Icon.d.ts +21 -0
  33. package/dist/esm/components/icon/Icon.js +22 -0
  34. package/dist/esm/components/icon/icons.d.ts +3 -0
  35. package/dist/esm/components/icon/icons.js +1 -0
  36. package/dist/esm/components/icon/index.d.ts +2 -0
  37. package/dist/esm/components/icon/index.js +2 -0
  38. package/dist/esm/components/index.d.ts +12 -0
  39. package/dist/esm/components/index.js +20 -0
  40. package/dist/esm/components/markdown/Markdown.d.ts +34 -0
  41. package/dist/esm/components/markdown/Markdown.js +55 -0
  42. package/dist/esm/components/markdown/index.d.ts +1 -0
  43. package/dist/esm/components/markdown/index.js +1 -0
  44. package/dist/esm/components/markdown-editor/MarkdownEditor.d.ts +21 -0
  45. package/dist/esm/components/markdown-editor/MarkdownEditor.js +181 -0
  46. package/dist/esm/components/markdown-editor/index.d.ts +1 -0
  47. package/dist/esm/components/markdown-editor/index.js +1 -0
  48. package/dist/esm/components/markdown-editor/markdown-editor.state.d.ts +31 -0
  49. package/dist/esm/components/markdown-editor/markdown-editor.state.js +255 -0
  50. package/dist/esm/components/menu/Menu.d.ts +14 -0
  51. package/dist/esm/components/menu/Menu.js +81 -0
  52. package/dist/esm/components/menu/MenuButton.d.ts +16 -0
  53. package/dist/esm/components/menu/MenuButton.js +75 -0
  54. package/dist/esm/components/menu/MenuSeparator.d.ts +2 -0
  55. package/dist/esm/components/menu/MenuSeparator.js +11 -0
  56. package/dist/esm/components/menu/index.d.ts +6 -0
  57. package/dist/esm/components/menu/index.js +6 -0
  58. package/dist/esm/components/menu/menu-constants.d.ts +4 -0
  59. package/dist/esm/components/menu/menu-constants.js +4 -0
  60. package/dist/esm/components/menu/menu-manager.d.ts +22 -0
  61. package/dist/esm/components/menu/menu-manager.js +72 -0
  62. package/dist/esm/components/menu/menu-settings.d.ts +9 -0
  63. package/dist/esm/components/menu/menu-settings.js +9 -0
  64. package/dist/esm/components/modal/index.d.ts +0 -0
  65. package/dist/esm/components/modal/index.js +1 -0
  66. package/dist/esm/components/pagination/Pagination.d.ts +40 -0
  67. package/dist/esm/components/pagination/Pagination.js +66 -0
  68. package/dist/esm/components/pagination/index.d.ts +2 -0
  69. package/dist/esm/components/pagination/index.js +2 -0
  70. package/dist/esm/components/pagination/pagination-settings.d.ts +17 -0
  71. package/dist/esm/components/pagination/pagination-settings.js +16 -0
  72. package/dist/esm/components/panel-tree/PanelTree.d.ts +26 -0
  73. package/dist/esm/components/panel-tree/PanelTree.js +174 -0
  74. package/dist/esm/components/panel-tree/index.d.ts +0 -0
  75. package/dist/esm/components/panel-tree/index.js +1 -0
  76. package/dist/esm/components/panel-tree/panel-tree-constants.d.ts +3 -0
  77. package/dist/esm/components/panel-tree/panel-tree-constants.js +3 -0
  78. package/dist/esm/components/panel-tree/panel-tree-store.d.ts +23 -0
  79. package/dist/esm/components/panel-tree/panel-tree-store.js +59 -0
  80. package/dist/esm/components/panel-tree/panel-tree-utils.d.ts +17 -0
  81. package/dist/esm/components/panel-tree/panel-tree-utils.js +55 -0
  82. package/dist/esm/components/popover/index.d.ts +0 -0
  83. package/dist/esm/components/popover/index.js +1 -0
  84. package/dist/esm/components/reorderable-list/RedorderableList.d.ts +55 -0
  85. package/dist/esm/components/reorderable-list/RedorderableList.js +202 -0
  86. package/dist/esm/components/reorderable-list/index.d.ts +0 -0
  87. package/dist/esm/components/reorderable-list/index.js +1 -0
  88. package/dist/esm/components/select/Select.d.ts +44 -0
  89. package/dist/esm/components/select/Select.js +108 -0
  90. package/dist/esm/components/select/SelectOptionsPanel.d.ts +21 -0
  91. package/dist/esm/components/select/SelectOptionsPanel.js +168 -0
  92. package/dist/esm/components/select/constants.d.ts +2 -0
  93. package/dist/esm/components/select/constants.js +2 -0
  94. package/dist/esm/components/select/index.d.ts +2 -0
  95. package/dist/esm/components/select/index.js +3 -0
  96. package/dist/esm/components/select/select-options-manager.d.ts +39 -0
  97. package/dist/esm/components/select/select-options-manager.js +63 -0
  98. package/dist/esm/components/tab-panel/TabPanel.d.ts +23 -0
  99. package/dist/esm/components/tab-panel/TabPanel.js +88 -0
  100. package/dist/esm/components/tab-panel/index.d.ts +3 -0
  101. package/dist/esm/components/tab-panel/index.js +3 -0
  102. package/dist/esm/components/tab-panel/tab-panel-default-settings.d.ts +17 -0
  103. package/dist/esm/components/tab-panel/tab-panel-default-settings.js +17 -0
  104. package/dist/esm/components/tab-panel/tab-panel-settings.d.ts +28 -0
  105. package/dist/esm/components/tab-panel/tab-panel-settings.js +11 -0
  106. package/dist/esm/components/table/Table.d.ts +64 -0
  107. package/dist/esm/components/table/Table.js +68 -0
  108. package/dist/esm/components/table/index.d.ts +1 -0
  109. package/dist/esm/components/table/index.js +1 -0
  110. package/dist/esm/components/toast/index.d.ts +1 -0
  111. package/dist/esm/components/toast/index.js +1 -0
  112. package/dist/esm/components/toast/toast.d.ts +15 -0
  113. package/dist/esm/components/toast/toast.js +31 -0
  114. package/dist/esm/components/tooltip/index.d.ts +3 -0
  115. package/dist/esm/components/tooltip/index.js +3 -0
  116. package/dist/esm/components/tooltip/tooltip-defaults.d.ts +23 -0
  117. package/dist/esm/components/tooltip/tooltip-defaults.js +22 -0
  118. package/dist/esm/components/tooltip/tooltip-function.d.ts +35 -0
  119. package/dist/esm/components/tooltip/tooltip-function.js +200 -0
  120. package/dist/esm/components/tooltip/tooltip-interfaces.d.ts +11 -0
  121. package/dist/esm/components/tooltip/tooltip-interfaces.js +1 -0
  122. package/dist/esm/components/tree/Tree.d.ts +110 -0
  123. package/dist/esm/components/tree/Tree.js +222 -0
  124. package/dist/esm/components/tree/index.d.ts +3 -0
  125. package/dist/esm/components/tree/index.js +3 -0
  126. package/dist/esm/components/tree/tree-node.interface.d.ts +9 -0
  127. package/dist/esm/components/tree/tree-node.interface.js +1 -0
  128. package/dist/esm/components/tree/tree-utils.d.ts +11 -0
  129. package/dist/esm/components/tree/tree-utils.js +18 -0
  130. package/dist/esm/index.d.ts +2 -0
  131. package/dist/esm/index.js +2 -0
  132. package/dist/esm/utils/date-time.d.ts +3 -0
  133. package/dist/esm/utils/date-time.js +22 -0
  134. package/dist/esm/utils/dom.d.ts +16 -0
  135. package/dist/esm/utils/dom.js +28 -0
  136. package/dist/esm/utils/events.d.ts +1 -0
  137. package/dist/esm/utils/events.js +25 -0
  138. package/dist/esm/utils/index.d.ts +3 -0
  139. package/dist/esm/utils/index.js +3 -0
  140. package/package.json +7 -3
  141. /package/dist/{components → cjs/components}/accordion/index.d.ts +0 -0
  142. /package/dist/{components → cjs/components}/accordion/index.js +0 -0
  143. /package/dist/{components → cjs/components}/data-grid/index.d.ts +0 -0
  144. /package/dist/{components → cjs/components}/data-grid/index.js +0 -0
  145. /package/dist/{components → cjs/components}/data-table/index.d.ts +0 -0
  146. /package/dist/{components → cjs/components}/data-table/index.js +0 -0
  147. /package/dist/{components → cjs/components}/dialog/Dialog.d.ts +0 -0
  148. /package/dist/{components → cjs/components}/dialog/Dialog.js +0 -0
  149. /package/dist/{components → cjs/components}/dialog/index.d.ts +0 -0
  150. /package/dist/{components → cjs/components}/dialog/index.js +0 -0
  151. /package/dist/{components → cjs/components}/drag-handler/DragHandler.d.ts +0 -0
  152. /package/dist/{components → cjs/components}/drag-handler/DragHandler.js +0 -0
  153. /package/dist/{components → cjs/components}/drag-handler/index.d.ts +0 -0
  154. /package/dist/{components → cjs/components}/drag-handler/index.js +0 -0
  155. /package/dist/{components → cjs/components}/drawer/index.d.ts +0 -0
  156. /package/dist/{components → cjs/components}/drawer/index.js +0 -0
  157. /package/dist/{components → cjs/components}/drop-target/DropTarget.d.ts +0 -0
  158. /package/dist/{components → cjs/components}/drop-target/DropTarget.js +0 -0
  159. /package/dist/{components → cjs/components}/drop-target/drop-target.state.d.ts +0 -0
  160. /package/dist/{components → cjs/components}/drop-target/drop-target.state.js +0 -0
  161. /package/dist/{components → cjs/components}/drop-target/index.d.ts +0 -0
  162. /package/dist/{components → cjs/components}/drop-target/index.js +0 -0
  163. /package/dist/{components → cjs/components}/form/Form.d.ts +0 -0
  164. /package/dist/{components → cjs/components}/form/Form.js +0 -0
  165. /package/dist/{components → cjs/components}/form/index.d.ts +0 -0
  166. /package/dist/{components → cjs/components}/form/index.js +0 -0
  167. /package/dist/{components → cjs/components}/icon/Icon.d.ts +0 -0
  168. /package/dist/{components → cjs/components}/icon/Icon.js +0 -0
  169. /package/dist/{components → cjs/components}/icon/icons.d.ts +0 -0
  170. /package/dist/{components → cjs/components}/icon/icons.js +0 -0
  171. /package/dist/{components → cjs/components}/icon/index.d.ts +0 -0
  172. /package/dist/{components → cjs/components}/icon/index.js +0 -0
  173. /package/dist/{components → cjs/components}/index.d.ts +0 -0
  174. /package/dist/{components → cjs/components}/index.js +0 -0
  175. /package/dist/{components → cjs/components}/markdown/Markdown.d.ts +0 -0
  176. /package/dist/{components → cjs/components}/markdown/Markdown.js +0 -0
  177. /package/dist/{components → cjs/components}/markdown/index.d.ts +0 -0
  178. /package/dist/{components → cjs/components}/markdown/index.js +0 -0
  179. /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.d.ts +0 -0
  180. /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.js +0 -0
  181. /package/dist/{components → cjs/components}/markdown-editor/index.d.ts +0 -0
  182. /package/dist/{components → cjs/components}/markdown-editor/index.js +0 -0
  183. /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.d.ts +0 -0
  184. /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.js +0 -0
  185. /package/dist/{components → cjs/components}/menu/Menu.d.ts +0 -0
  186. /package/dist/{components → cjs/components}/menu/Menu.js +0 -0
  187. /package/dist/{components → cjs/components}/menu/MenuButton.d.ts +0 -0
  188. /package/dist/{components → cjs/components}/menu/MenuButton.js +0 -0
  189. /package/dist/{components → cjs/components}/menu/MenuSeparator.d.ts +0 -0
  190. /package/dist/{components → cjs/components}/menu/MenuSeparator.js +0 -0
  191. /package/dist/{components → cjs/components}/menu/index.d.ts +0 -0
  192. /package/dist/{components → cjs/components}/menu/index.js +0 -0
  193. /package/dist/{components → cjs/components}/menu/menu-constants.d.ts +0 -0
  194. /package/dist/{components → cjs/components}/menu/menu-constants.js +0 -0
  195. /package/dist/{components → cjs/components}/menu/menu-manager.d.ts +0 -0
  196. /package/dist/{components → cjs/components}/menu/menu-manager.js +0 -0
  197. /package/dist/{components → cjs/components}/menu/menu-settings.d.ts +0 -0
  198. /package/dist/{components → cjs/components}/menu/menu-settings.js +0 -0
  199. /package/dist/{components → cjs/components}/modal/index.d.ts +0 -0
  200. /package/dist/{components → cjs/components}/modal/index.js +0 -0
  201. /package/dist/{components → cjs/components}/pagination/Pagination.d.ts +0 -0
  202. /package/dist/{components → cjs/components}/pagination/Pagination.js +0 -0
  203. /package/dist/{components → cjs/components}/pagination/index.d.ts +0 -0
  204. /package/dist/{components → cjs/components}/pagination/index.js +0 -0
  205. /package/dist/{components → cjs/components}/pagination/pagination-settings.d.ts +0 -0
  206. /package/dist/{components → cjs/components}/pagination/pagination-settings.js +0 -0
  207. /package/dist/{components → cjs/components}/panel-tree/PanelTree.d.ts +0 -0
  208. /package/dist/{components → cjs/components}/panel-tree/PanelTree.js +0 -0
  209. /package/dist/{components → cjs/components}/panel-tree/index.d.ts +0 -0
  210. /package/dist/{components → cjs/components}/panel-tree/index.js +0 -0
  211. /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.d.ts +0 -0
  212. /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.js +0 -0
  213. /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.d.ts +0 -0
  214. /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.js +0 -0
  215. /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.d.ts +0 -0
  216. /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.js +0 -0
  217. /package/dist/{components → cjs/components}/popover/index.d.ts +0 -0
  218. /package/dist/{components → cjs/components}/popover/index.js +0 -0
  219. /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.d.ts +0 -0
  220. /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.js +0 -0
  221. /package/dist/{components → cjs/components}/reorderable-list/index.d.ts +0 -0
  222. /package/dist/{components → cjs/components}/reorderable-list/index.js +0 -0
  223. /package/dist/{components → cjs/components}/select/Select.d.ts +0 -0
  224. /package/dist/{components → cjs/components}/select/Select.js +0 -0
  225. /package/dist/{components → cjs/components}/select/SelectOptionsPanel.d.ts +0 -0
  226. /package/dist/{components → cjs/components}/select/SelectOptionsPanel.js +0 -0
  227. /package/dist/{components → cjs/components}/select/constants.d.ts +0 -0
  228. /package/dist/{components → cjs/components}/select/constants.js +0 -0
  229. /package/dist/{components → cjs/components}/select/index.d.ts +0 -0
  230. /package/dist/{components → cjs/components}/select/index.js +0 -0
  231. /package/dist/{components → cjs/components}/select/select-options-manager.d.ts +0 -0
  232. /package/dist/{components → cjs/components}/select/select-options-manager.js +0 -0
  233. /package/dist/{components → cjs/components}/tab-panel/TabPanel.d.ts +0 -0
  234. /package/dist/{components → cjs/components}/tab-panel/TabPanel.js +0 -0
  235. /package/dist/{components → cjs/components}/tab-panel/index.d.ts +0 -0
  236. /package/dist/{components → cjs/components}/tab-panel/index.js +0 -0
  237. /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.d.ts +0 -0
  238. /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.js +0 -0
  239. /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.d.ts +0 -0
  240. /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.js +0 -0
  241. /package/dist/{components → cjs/components}/table/Table.d.ts +0 -0
  242. /package/dist/{components → cjs/components}/table/Table.js +0 -0
  243. /package/dist/{components → cjs/components}/table/index.d.ts +0 -0
  244. /package/dist/{components → cjs/components}/table/index.js +0 -0
  245. /package/dist/{components → cjs/components}/toast/index.d.ts +0 -0
  246. /package/dist/{components → cjs/components}/toast/index.js +0 -0
  247. /package/dist/{components → cjs/components}/toast/toast.d.ts +0 -0
  248. /package/dist/{components → cjs/components}/toast/toast.js +0 -0
  249. /package/dist/{components → cjs/components}/tooltip/index.d.ts +0 -0
  250. /package/dist/{components → cjs/components}/tooltip/index.js +0 -0
  251. /package/dist/{components → cjs/components}/tooltip/tooltip-defaults.d.ts +0 -0
  252. /package/dist/{components → cjs/components}/tooltip/tooltip-defaults.js +0 -0
  253. /package/dist/{components → cjs/components}/tooltip/tooltip-function.d.ts +0 -0
  254. /package/dist/{components → cjs/components}/tooltip/tooltip-function.js +0 -0
  255. /package/dist/{components → cjs/components}/tooltip/tooltip-interfaces.d.ts +0 -0
  256. /package/dist/{components → cjs/components}/tooltip/tooltip-interfaces.js +0 -0
  257. /package/dist/{components → cjs/components}/tree/Tree.d.ts +0 -0
  258. /package/dist/{components → cjs/components}/tree/Tree.js +0 -0
  259. /package/dist/{components → cjs/components}/tree/index.d.ts +0 -0
  260. /package/dist/{components → cjs/components}/tree/index.js +0 -0
  261. /package/dist/{components → cjs/components}/tree/tree-node.interface.d.ts +0 -0
  262. /package/dist/{components → cjs/components}/tree/tree-node.interface.js +0 -0
  263. /package/dist/{components → cjs/components}/tree/tree-utils.d.ts +0 -0
  264. /package/dist/{components → cjs/components}/tree/tree-utils.js +0 -0
  265. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  266. /package/dist/{index.js → cjs/index.js} +0 -0
  267. /package/dist/{utils → cjs/utils}/date-time.d.ts +0 -0
  268. /package/dist/{utils → cjs/utils}/date-time.js +0 -0
  269. /package/dist/{utils → cjs/utils}/dom.d.ts +0 -0
  270. /package/dist/{utils → cjs/utils}/dom.js +0 -0
  271. /package/dist/{utils → cjs/utils}/events.d.ts +0 -0
  272. /package/dist/{utils → cjs/utils}/events.js +0 -0
  273. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  274. /package/dist/{utils → cjs/utils}/index.js +0 -0
package/README.md CHANGED
@@ -7,6 +7,8 @@ UI components and utilities built with Mithril.
7
7
 
8
8
  <a href="https://www.npmjs.com/package/@hypericon/mico">![NPM badge](https://img.shields.io/npm/v/@hypericon/mico)</a>
9
9
 
10
+ Since version 0.4.0, includes ESM and CJS versions.
11
+
10
12
  ## Installation
11
13
 
12
14
  ```sh
@@ -11,6 +11,7 @@ export declare class DialogManager {
11
11
  private currentDialog;
12
12
  get isOpen(): boolean;
13
13
  private debug;
14
+ backdropDismissTimeout: number;
14
15
  constructor(options?: DialogManagerOptions);
15
16
  /**
16
17
  * Open a new dialog with the given contents.
@@ -19,6 +19,7 @@ class DialogManager {
19
19
  get isOpen() { return this.currentDialog !== undefined; }
20
20
  constructor(options) {
21
21
  this.debug = false;
22
+ this.backdropDismissTimeout = 10;
22
23
  if (options === null || options === void 0 ? void 0 : options.debug)
23
24
  this.debug = options.debug;
24
25
  if (options === null || options === void 0 ? void 0 : options.containerEl) {
@@ -51,6 +52,7 @@ class DialogManager {
51
52
  const manager = this;
52
53
  const dialogId = `${Math.random().toString().replace("0.", "")}`;
53
54
  return new Promise((resolve, reject) => {
55
+ const backdropDismissAvailableAt = Date.now() + this.backdropDismissTimeout;
54
56
  mithril_1.default.mount(element, {
55
57
  oninit() {
56
58
  //
@@ -63,6 +65,8 @@ class DialogManager {
63
65
  // Optionally wire up the backdrop to dismiss the dialog
64
66
  if ((opts === null || opts === void 0 ? void 0 : opts.backdropDismiss) === true) {
65
67
  dialog.addEventListener("click", (ev) => {
68
+ if (Date.now() < backdropDismissAvailableAt)
69
+ return;
66
70
  // console.log(ev);
67
71
  if (ev.target !== dom)
68
72
  return;
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ export {};
2
+ // export const Dialog: m.Component<{
3
+ // created?: (args: {}) => any,
4
+ // }> = {
5
+ // view({ attrs, children }) {
6
+ // return m("dialog", {}, [
7
+ // children,
8
+ // ]);
9
+ // }
10
+ // };
@@ -0,0 +1,46 @@
1
+ import m from "mithril";
2
+ export interface DialogManagerOptions {
3
+ containerEl?: HTMLElement;
4
+ debug?: boolean;
5
+ }
6
+ export interface OpenDialogResult {
7
+ close: () => Promise<void>;
8
+ }
9
+ export declare class DialogManager {
10
+ private containerEl;
11
+ private currentDialog;
12
+ get isOpen(): boolean;
13
+ private debug;
14
+ backdropDismissTimeout: number;
15
+ constructor(options?: DialogManagerOptions);
16
+ /**
17
+ * Open a new dialog with the given contents.
18
+ *
19
+ * Note: to make use of Mithril's auto-redraw system, the dialog must be defined as a component,
20
+ * not a Vnode.
21
+ *
22
+ * Example:
23
+ * ```ts
24
+ * open(MyDialog, { ... }); // WILL redraw
25
+ * open(m("h1", "...")); // will NOT redraw
26
+ * ```
27
+ * @param dialog
28
+ * @param attrs
29
+ * @returns once the dialog has been created and is being displayed to the user
30
+ */
31
+ open<A = {}>(dialog: m.Component<A, any> | m.Vnode<any, any>, attrs?: A, opts?: {
32
+ backdropDismiss?: boolean;
33
+ noEscape?: boolean;
34
+ }): Promise<void>;
35
+ private _open;
36
+ private openWithComponent;
37
+ private openWithVnode;
38
+ /**
39
+ * Close the open dialog.
40
+ *
41
+ * Silently does nothing if no dialog is open.
42
+ */
43
+ close(): void;
44
+ private closeThis;
45
+ }
46
+ export declare const dialogMgr: DialogManager;
@@ -0,0 +1,167 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import m from "mithril";
11
+ import { mouseWithinElement } from "../../utils";
12
+ export class DialogManager {
13
+ get isOpen() { return this.currentDialog !== undefined; }
14
+ constructor(options) {
15
+ this.debug = false;
16
+ this.backdropDismissTimeout = 10;
17
+ if (options === null || options === void 0 ? void 0 : options.debug)
18
+ this.debug = options.debug;
19
+ if (options === null || options === void 0 ? void 0 : options.containerEl) {
20
+ this.containerEl = options.containerEl;
21
+ }
22
+ else {
23
+ this.containerEl = document.createElement("div");
24
+ this.containerEl.classList.add("mico-dialog-container");
25
+ document.body.append(this.containerEl);
26
+ }
27
+ }
28
+ /**
29
+ * Open a new dialog with the given contents.
30
+ *
31
+ * Note: to make use of Mithril's auto-redraw system, the dialog must be defined as a component,
32
+ * not a Vnode.
33
+ *
34
+ * Example:
35
+ * ```ts
36
+ * open(MyDialog, { ... }); // WILL redraw
37
+ * open(m("h1", "...")); // will NOT redraw
38
+ * ```
39
+ * @param dialog
40
+ * @param attrs
41
+ * @returns once the dialog has been created and is being displayed to the user
42
+ */
43
+ open(dialog, attrs, opts) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const element = this.containerEl;
46
+ const manager = this;
47
+ const dialogId = `${Math.random().toString().replace("0.", "")}`;
48
+ return new Promise((resolve, reject) => {
49
+ const backdropDismissAvailableAt = Date.now() + this.backdropDismissTimeout;
50
+ m.mount(element, {
51
+ oninit() {
52
+ //
53
+ },
54
+ oncreate({ dom }) {
55
+ var _a;
56
+ const dialog = dom;
57
+ (_a = dialog.showModal) === null || _a === void 0 ? void 0 : _a.call(dialog);
58
+ manager.currentDialog = dialog;
59
+ // Optionally wire up the backdrop to dismiss the dialog
60
+ if ((opts === null || opts === void 0 ? void 0 : opts.backdropDismiss) === true) {
61
+ dialog.addEventListener("click", (ev) => {
62
+ if (Date.now() < backdropDismissAvailableAt)
63
+ return;
64
+ // console.log(ev);
65
+ if (ev.target !== dom)
66
+ return;
67
+ const isInDialog = mouseWithinElement(ev, dom);
68
+ if (!isInDialog)
69
+ manager.close();
70
+ });
71
+ }
72
+ resolve();
73
+ },
74
+ onremove() {
75
+ manager.debug && console.log("mounted component onremove()");
76
+ resolve(undefined);
77
+ },
78
+ view() {
79
+ return m("dialog", {
80
+ id: dialogId,
81
+ key: dialogId,
82
+ class: "mico-dialog",
83
+ onclose: () => {
84
+ manager.debug && console.log("dialog onclose()");
85
+ m.mount(manager.containerEl, null);
86
+ },
87
+ oncancel: (ev) => {
88
+ if ((opts === null || opts === void 0 ? void 0 : opts.noEscape) === true) {
89
+ ev.preventDefault();
90
+ }
91
+ },
92
+ }, [
93
+ ("view" in dialog)
94
+ ? m(dialog, Object.assign({}, attrs))
95
+ : dialog,
96
+ ]);
97
+ },
98
+ });
99
+ });
100
+ });
101
+ }
102
+ // This was attempting to intercept a certain function and then return a result from open()
103
+ // asynchronously, but it was all getting needlessly complicated
104
+ _open(dialog, attrs, options) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ const element = this.containerEl;
107
+ const manager = this;
108
+ const dialogId = `${Math.random().toString()}`;
109
+ // const resultFnKey = options?.resultFn;
110
+ // if (resultFnKey) {
111
+ // if (attrs) {
112
+ // attrs[resultFnKey] =
113
+ // }
114
+ // }
115
+ return new Promise((resolve, reject) => {
116
+ m.mount(element, {
117
+ oninit() {
118
+ //
119
+ },
120
+ oncreate({ dom }) {
121
+ var _a;
122
+ const dialog = dom;
123
+ (_a = dialog.showModal) === null || _a === void 0 ? void 0 : _a.call(dialog);
124
+ manager.currentDialog = dialog;
125
+ },
126
+ onremove() {
127
+ console.log("mounted component onremove()");
128
+ resolve(undefined);
129
+ },
130
+ view() {
131
+ return m("dialog", {
132
+ id: dialogId,
133
+ key: dialogId,
134
+ onclose: () => {
135
+ console.log("dialog onclose()");
136
+ m.mount(manager.containerEl, null);
137
+ },
138
+ }, [
139
+ ("view" in dialog)
140
+ ? m(dialog, Object.assign({}, attrs))
141
+ : dialog,
142
+ ]);
143
+ },
144
+ });
145
+ });
146
+ });
147
+ }
148
+ openWithComponent(dialog) { }
149
+ openWithVnode(dialog) { }
150
+ /**
151
+ * Close the open dialog.
152
+ *
153
+ * Silently does nothing if no dialog is open.
154
+ */
155
+ close() {
156
+ var _a;
157
+ // m.mount(this.containerEl, null);
158
+ (_a = this.currentDialog) === null || _a === void 0 ? void 0 : _a.close();
159
+ }
160
+ // an attempt to close a specific dialog, but only one can be open at once anyway
161
+ closeThis(dialog) {
162
+ console.log("close:");
163
+ console.log(dialog);
164
+ console.log(dialog.prototype);
165
+ }
166
+ }
167
+ export const dialogMgr = new DialogManager();
@@ -0,0 +1 @@
1
+ export * from "./dialog-manager";
@@ -0,0 +1,2 @@
1
+ // export * from "./Dialog";
2
+ export * from "./dialog-manager";
@@ -0,0 +1,40 @@
1
+ import m from "mithril";
2
+ export interface DragHandlerAttrs {
3
+ /** Enable dragging this element */
4
+ enableDrag?: boolean;
5
+ /** Enable dropping dragged elements on this element */
6
+ enableDrop?: boolean;
7
+ /** Optionally specify what sort of effect should be allowed using this drag */
8
+ dragEffect?: "link" | "copy" | "none" | "copyLink" | "copyMove" | "linkMove" | "move" | "all" | "uninitialized";
9
+ dragData?: string | (() => string);
10
+ onDragStart?: (args: {
11
+ ev: DragEvent;
12
+ dragData?: string;
13
+ }) => any;
14
+ onDragOver?: (args: {
15
+ ev: DragEvent;
16
+ dragData?: string;
17
+ }) => any;
18
+ onDrop?: (args: {
19
+ ev: DragEvent;
20
+ dragData?: string;
21
+ }) => any;
22
+ /** Enable debug logging for events */
23
+ enableLogging?: boolean;
24
+ /** CSS classes to apply to the wrapper div */
25
+ class?: string;
26
+ /** CSS styles to apply to the wrapper div */
27
+ style?: string;
28
+ /** CSS classes to apply to the div while it is being dragged (if dragging is enabled) */
29
+ classDragging?: string;
30
+ /** CSS styles to apply to the div while it is being dragged (if dragging is enabled) */
31
+ styleDragging?: string;
32
+ /** CSS classes to apply to the div while it is being dragged over (if dropping is enabled) */
33
+ classDraggingOver?: string;
34
+ /** CSS styles to apply to the div while it is being dragged over (if dropping is enabled) */
35
+ styleDraggingOver?: string;
36
+ }
37
+ export declare const DragHandler: m.Component<DragHandlerAttrs, {
38
+ isDragging: boolean;
39
+ isDraggingOver: boolean;
40
+ }>;
@@ -0,0 +1,104 @@
1
+ import m from "mithril";
2
+ const DEFAULT_DATA_FORMAT = "application/mico-drag-handler";
3
+ export const DragHandler = {
4
+ oninit() {
5
+ this.isDragging = false;
6
+ this.isDraggingOver = false;
7
+ },
8
+ view({ attrs, children }) {
9
+ var _a, _b, _c, _d, _e, _f;
10
+ return m("", {
11
+ class: `${(_a = attrs.class) !== null && _a !== void 0 ? _a : ""} ${this.isDragging ? (_b = attrs.classDragging) !== null && _b !== void 0 ? _b : "" : ""} ${this.isDraggingOver ? (_c = attrs.classDraggingOver) !== null && _c !== void 0 ? _c : "" : ""}`,
12
+ style: `${(_d = attrs.style) !== null && _d !== void 0 ? _d : ""} ${this.isDragging ? (_e = attrs.classDragging) !== null && _e !== void 0 ? _e : "" : ""} ${this.isDraggingOver ? (_f = attrs.classDraggingOver) !== null && _f !== void 0 ? _f : "" : ""}`,
13
+ draggable: attrs.enableDrag,
14
+ ondragstart: (ev) => {
15
+ var _a, _b;
16
+ if (!attrs.enableDrag)
17
+ return;
18
+ if (!ev.dataTransfer)
19
+ return;
20
+ let dragData;
21
+ if (attrs.dragData !== undefined) {
22
+ if (typeof attrs.dragData === "function") {
23
+ dragData = (_a = attrs.dragData) === null || _a === void 0 ? void 0 : _a.call(attrs);
24
+ }
25
+ else {
26
+ dragData = attrs.dragData;
27
+ }
28
+ }
29
+ if (dragData !== undefined) {
30
+ ev.dataTransfer.setData(DEFAULT_DATA_FORMAT, dragData);
31
+ }
32
+ if (attrs.dragEffect) {
33
+ ev.dataTransfer.effectAllowed = attrs.dragEffect;
34
+ }
35
+ this.isDragging = true;
36
+ attrs.enableLogging && console.log(`start dragging, effect: ${ev.dataTransfer.effectAllowed}, data:`, dragData);
37
+ (_b = attrs.onDragStart) === null || _b === void 0 ? void 0 : _b.call(attrs, { ev, dragData });
38
+ },
39
+ ondrag: (ev) => {
40
+ // attrs.enableLogging && console.log(`on drag`, item.data);
41
+ },
42
+ // ondragenter: (ev: DragEvent) => {
43
+ // ev.preventDefault();
44
+ // if (!attrs.enableDrop) return false;
45
+ // if (attrs.enableLogging) {
46
+ // const dragData = ev.dataTransfer?.getData(DEFAULT_DATA_FORMAT);
47
+ // console.log(`drag enter, effect: ${attrs.dragEffect}, data:`, dragData);
48
+ // }
49
+ // this.isDraggingOver = true;
50
+ // },
51
+ ondragover: (ev) => {
52
+ var _a, _b, _c;
53
+ ev.preventDefault();
54
+ if (!attrs.enableDrop)
55
+ return false;
56
+ // const overDiv = ev.currentTarget as HTMLElement;
57
+ // const targetRect = overDiv.getBoundingClientRect();
58
+ // const topToMouse = ev.clientY - targetRect.top;
59
+ // const isAbove = topToMouse < (targetRect.height - topToMouse);
60
+ // this.isTargettingAbove = isAbove;
61
+ this.isDraggingOver = true;
62
+ const dragData = (_a = ev.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData(DEFAULT_DATA_FORMAT);
63
+ attrs.enableLogging && console.log(`drag over, effect: ${(_b = ev.dataTransfer) === null || _b === void 0 ? void 0 : _b.effectAllowed}, data:`, dragData);
64
+ (_c = attrs.onDragOver) === null || _c === void 0 ? void 0 : _c.call(attrs, { ev, dragData });
65
+ return false;
66
+ },
67
+ ondragleave: (ev) => {
68
+ this.isDraggingOver = false;
69
+ },
70
+ ondrop: (ev) => {
71
+ var _a, _b, _c;
72
+ ev.stopPropagation();
73
+ ev.preventDefault();
74
+ if (!attrs.enableDrop)
75
+ return;
76
+ // if (ev.dataTransfer) {
77
+ // ev.dataTransfer.dropEffect = "move";
78
+ // const movedNodeData = JSON.parse(ev.dataTransfer.getData(DEFAULT_DATA_FORMAT)) as TNodeData;
79
+ // attrs.enableLogging && console.log(`on drop`, movedNodeData, "on", node.data);
80
+ // // attrs.reorderfinish?.();
81
+ // const droppedOnSelf = compareObjects(movedNodeData, node.data);
82
+ // if (!droppedOnSelf) {
83
+ // attrs.onreorder?.({ moved: movedNodeData, target: node.data, above: this.isTargettingAbove });
84
+ // }
85
+ // }
86
+ this.isDragging = false;
87
+ this.isDraggingOver = false;
88
+ const dragData = (_a = ev.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData(DEFAULT_DATA_FORMAT);
89
+ attrs.enableLogging && console.log(`on drop, effect:`, (_b = ev.dataTransfer) === null || _b === void 0 ? void 0 : _b.dropEffect, "dragData:", dragData);
90
+ (_c = attrs.onDrop) === null || _c === void 0 ? void 0 : _c.call(attrs, { ev, dragData });
91
+ },
92
+ ondragend: (ev) => {
93
+ var _a;
94
+ attrs.enableLogging && console.log(`drag end, dropEffect:`, (_a = ev.dataTransfer) === null || _a === void 0 ? void 0 : _a.dropEffect);
95
+ // "move" on success, "none" on failure/cancellation
96
+ // attrs.reorderfinish?.();
97
+ this.isDragging = false;
98
+ this.isDraggingOver = false;
99
+ },
100
+ }, [
101
+ children,
102
+ ]);
103
+ }
104
+ };
@@ -0,0 +1 @@
1
+ export * from "./DragHandler";
@@ -0,0 +1 @@
1
+ export * from "./DragHandler";
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,24 @@
1
+ import m from "mithril";
2
+ import { DropTargetState } from "./drop-target.state";
3
+ export declare const DropTarget: m.Component<{
4
+ /**
5
+ * Function called when the user drops one or more files onto the drop target
6
+ * @param result
7
+ * @returns
8
+ */
9
+ onDropFiles: (result: {
10
+ files: File[];
11
+ ev: DragEvent;
12
+ }) => any;
13
+ /** The message to display in the drop target */
14
+ dropMessage?: string | m.Children;
15
+ /**
16
+ * Whether to automatically set the height of the drop target baed on the height of the wrapped elements
17
+ * @default true
18
+ */
19
+ autoHeight?: boolean;
20
+ class?: string;
21
+ style?: string;
22
+ }, {
23
+ state: DropTargetState;
24
+ }>;
@@ -0,0 +1,56 @@
1
+ import m from "mithril";
2
+ import { DropTargetState } from "./drop-target.state";
3
+ import { dragEventFiles } from "../../utils";
4
+ export const DropTarget = {
5
+ oninit() {
6
+ this.state = new DropTargetState();
7
+ },
8
+ oncreate({ dom }) {
9
+ this.state.lastHeight = dom.clientHeight;
10
+ },
11
+ onupdate({ dom }) {
12
+ if (!this.state.isDragging) {
13
+ this.state.lastHeight = dom.clientHeight;
14
+ }
15
+ },
16
+ view({ attrs, children }) {
17
+ const autoHeightStr = (attrs.autoHeight !== false) ? `height: ${this.state.lastHeight}px;` : "";
18
+ return m(".mico-drop-container", {
19
+ class: attrs.class,
20
+ style: attrs.style,
21
+ }, [
22
+ this.state.isDragging ? [
23
+ m("", {
24
+ class: `mico-drop-target ${this.state.isOver ? "highlighted" : ""}`,
25
+ style: `${autoHeightStr} display: flex; flex-direction: column; align-items: center; justify-content: center;`,
26
+ ondragover: (ev) => {
27
+ this.state.isOver = true;
28
+ },
29
+ ondragleave: (ev) => {
30
+ const containsNewTarget = ev.currentTarget.contains(ev.relatedTarget);
31
+ if (!containsNewTarget) {
32
+ this.state.isOver = false;
33
+ }
34
+ ev.preventDefault();
35
+ return false;
36
+ },
37
+ ondrop: (ev) => {
38
+ // console.log("ondrop", ev);
39
+ this.state.isOver = false;
40
+ ev.preventDefault();
41
+ const files = dragEventFiles(ev);
42
+ if (files.length > 0) {
43
+ attrs.onDropFiles({ ev, files });
44
+ }
45
+ },
46
+ }, [
47
+ (attrs.dropMessage && typeof attrs.dropMessage === "object")
48
+ ? attrs.dropMessage
49
+ : m("span.mico-drop-target-message", attrs.dropMessage || "Drop files here"),
50
+ ]),
51
+ ] : [
52
+ children,
53
+ ],
54
+ ]);
55
+ }
56
+ };
@@ -0,0 +1,9 @@
1
+ export declare class DropTargetState {
2
+ private subs;
3
+ isDragging: boolean;
4
+ isOver: boolean;
5
+ lastHeight: number;
6
+ constructor();
7
+ initialise(): void;
8
+ destroy(): void;
9
+ }
@@ -0,0 +1,73 @@
1
+ import { redraw } from "mithril";
2
+ import { Subscription } from "rxjs";
3
+ export class DropTargetState {
4
+ constructor() {
5
+ this.subs = new Subscription();
6
+ this.isDragging = false;
7
+ this.isOver = false;
8
+ this.lastHeight = 100;
9
+ this.initialise();
10
+ }
11
+ initialise() {
12
+ this.destroy();
13
+ this.subs = new Subscription();
14
+ this.isDragging = false;
15
+ this.isOver = false;
16
+ const onclick = () => {
17
+ this.isDragging = false;
18
+ redraw();
19
+ };
20
+ const ondragstart = (ev) => {
21
+ ev.preventDefault();
22
+ };
23
+ const ondragend = (ev) => {
24
+ this.isDragging = false;
25
+ redraw();
26
+ ev.preventDefault();
27
+ };
28
+ const ondragenter = (ev) => {
29
+ this.isDragging = true;
30
+ redraw();
31
+ ev.preventDefault();
32
+ };
33
+ const ondragover = (ev) => {
34
+ ev.preventDefault();
35
+ };
36
+ const ondragleave = (ev) => {
37
+ // if the drag moved from the element to outside the element
38
+ const containsTarget = ev.currentTarget.contains(ev.relatedTarget);
39
+ if (!containsTarget) {
40
+ // console.log("page ondragleave, isDragging=false")
41
+ this.isDragging = false;
42
+ redraw();
43
+ }
44
+ };
45
+ const ondrag = (ev) => {
46
+ ev.preventDefault();
47
+ };
48
+ const ondrop = (ev) => {
49
+ this.isDragging = false;
50
+ redraw();
51
+ ev.preventDefault();
52
+ };
53
+ document.addEventListener("click", onclick);
54
+ this.subs.add(() => document.removeEventListener("click", onclick));
55
+ document.addEventListener("dragstart", ondragstart);
56
+ this.subs.add(() => document.removeEventListener("dragstart", ondragstart));
57
+ document.addEventListener("dragend", ondragend);
58
+ this.subs.add(() => document.removeEventListener("dragend", ondragend));
59
+ document.addEventListener("dragenter", ondragenter);
60
+ this.subs.add(() => document.removeEventListener("dragenter", ondragenter));
61
+ document.addEventListener("dragover", ondragover);
62
+ this.subs.add(() => document.removeEventListener("dragover", ondragover));
63
+ document.addEventListener("dragleave", ondragleave);
64
+ this.subs.add(() => document.removeEventListener("dragleave", ondragleave));
65
+ document.addEventListener("drag", ondrag);
66
+ this.subs.add(() => document.removeEventListener("drag", ondrag));
67
+ document.addEventListener("drop", ondrop);
68
+ this.subs.add(() => document.removeEventListener("drop", ondrop));
69
+ }
70
+ destroy() {
71
+ this.subs.unsubscribe();
72
+ }
73
+ }
@@ -0,0 +1 @@
1
+ export * from "./DropTarget";
@@ -0,0 +1 @@
1
+ export * from "./DropTarget";
@@ -0,0 +1,2 @@
1
+ import m from "mithril";
2
+ export declare const Form: m.Component<{}>;
@@ -0,0 +1,9 @@
1
+ // type FormItem =
2
+ // | InputText
3
+ // | InputNumber
4
+ // | InputDate
5
+ // | InputCheckbox
6
+ // | InputTextarea
7
+ export const Form = {
8
+ view() { }
9
+ };
@@ -0,0 +1 @@
1
+ export * from "./Form";
@@ -0,0 +1 @@
1
+ export * from "./Form";