@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.
- package/README.md +2 -0
- package/dist/{components → cjs/components}/dialog/dialog-manager.d.ts +1 -0
- package/dist/{components → cjs/components}/dialog/dialog-manager.js +4 -0
- package/dist/esm/components/accordion/index.d.ts +0 -0
- package/dist/esm/components/accordion/index.js +1 -0
- package/dist/esm/components/data-grid/index.d.ts +0 -0
- package/dist/esm/components/data-grid/index.js +1 -0
- package/dist/esm/components/data-table/index.d.ts +0 -0
- package/dist/esm/components/data-table/index.js +1 -0
- package/dist/esm/components/dialog/Dialog.d.ts +1 -0
- package/dist/esm/components/dialog/Dialog.js +10 -0
- package/dist/esm/components/dialog/dialog-manager.d.ts +46 -0
- package/dist/esm/components/dialog/dialog-manager.js +167 -0
- package/dist/esm/components/dialog/index.d.ts +1 -0
- package/dist/esm/components/dialog/index.js +2 -0
- package/dist/esm/components/drag-handler/DragHandler.d.ts +40 -0
- package/dist/esm/components/drag-handler/DragHandler.js +104 -0
- package/dist/esm/components/drag-handler/index.d.ts +1 -0
- package/dist/esm/components/drag-handler/index.js +1 -0
- package/dist/esm/components/drawer/index.d.ts +0 -0
- package/dist/esm/components/drawer/index.js +1 -0
- package/dist/esm/components/drop-target/DropTarget.d.ts +24 -0
- package/dist/esm/components/drop-target/DropTarget.js +56 -0
- package/dist/esm/components/drop-target/drop-target.state.d.ts +9 -0
- package/dist/esm/components/drop-target/drop-target.state.js +73 -0
- package/dist/esm/components/drop-target/index.d.ts +1 -0
- package/dist/esm/components/drop-target/index.js +1 -0
- package/dist/esm/components/form/Form.d.ts +2 -0
- package/dist/esm/components/form/Form.js +9 -0
- package/dist/esm/components/form/index.d.ts +1 -0
- package/dist/esm/components/form/index.js +1 -0
- package/dist/esm/components/icon/Icon.d.ts +21 -0
- package/dist/esm/components/icon/Icon.js +22 -0
- package/dist/esm/components/icon/icons.d.ts +3 -0
- package/dist/esm/components/icon/icons.js +1 -0
- package/dist/esm/components/icon/index.d.ts +2 -0
- package/dist/esm/components/icon/index.js +2 -0
- package/dist/esm/components/index.d.ts +12 -0
- package/dist/esm/components/index.js +20 -0
- package/dist/esm/components/markdown/Markdown.d.ts +34 -0
- package/dist/esm/components/markdown/Markdown.js +55 -0
- package/dist/esm/components/markdown/index.d.ts +1 -0
- package/dist/esm/components/markdown/index.js +1 -0
- package/dist/esm/components/markdown-editor/MarkdownEditor.d.ts +21 -0
- package/dist/esm/components/markdown-editor/MarkdownEditor.js +181 -0
- package/dist/esm/components/markdown-editor/index.d.ts +1 -0
- package/dist/esm/components/markdown-editor/index.js +1 -0
- package/dist/esm/components/markdown-editor/markdown-editor.state.d.ts +31 -0
- package/dist/esm/components/markdown-editor/markdown-editor.state.js +255 -0
- package/dist/esm/components/menu/Menu.d.ts +14 -0
- package/dist/esm/components/menu/Menu.js +81 -0
- package/dist/esm/components/menu/MenuButton.d.ts +16 -0
- package/dist/esm/components/menu/MenuButton.js +75 -0
- package/dist/esm/components/menu/MenuSeparator.d.ts +2 -0
- package/dist/esm/components/menu/MenuSeparator.js +11 -0
- package/dist/esm/components/menu/index.d.ts +6 -0
- package/dist/esm/components/menu/index.js +6 -0
- package/dist/esm/components/menu/menu-constants.d.ts +4 -0
- package/dist/esm/components/menu/menu-constants.js +4 -0
- package/dist/esm/components/menu/menu-manager.d.ts +22 -0
- package/dist/esm/components/menu/menu-manager.js +72 -0
- package/dist/esm/components/menu/menu-settings.d.ts +9 -0
- package/dist/esm/components/menu/menu-settings.js +9 -0
- package/dist/esm/components/modal/index.d.ts +0 -0
- package/dist/esm/components/modal/index.js +1 -0
- package/dist/esm/components/pagination/Pagination.d.ts +40 -0
- package/dist/esm/components/pagination/Pagination.js +66 -0
- package/dist/esm/components/pagination/index.d.ts +2 -0
- package/dist/esm/components/pagination/index.js +2 -0
- package/dist/esm/components/pagination/pagination-settings.d.ts +17 -0
- package/dist/esm/components/pagination/pagination-settings.js +16 -0
- package/dist/esm/components/panel-tree/PanelTree.d.ts +26 -0
- package/dist/esm/components/panel-tree/PanelTree.js +174 -0
- package/dist/esm/components/panel-tree/index.d.ts +0 -0
- package/dist/esm/components/panel-tree/index.js +1 -0
- package/dist/esm/components/panel-tree/panel-tree-constants.d.ts +3 -0
- package/dist/esm/components/panel-tree/panel-tree-constants.js +3 -0
- package/dist/esm/components/panel-tree/panel-tree-store.d.ts +23 -0
- package/dist/esm/components/panel-tree/panel-tree-store.js +59 -0
- package/dist/esm/components/panel-tree/panel-tree-utils.d.ts +17 -0
- package/dist/esm/components/panel-tree/panel-tree-utils.js +55 -0
- package/dist/esm/components/popover/index.d.ts +0 -0
- package/dist/esm/components/popover/index.js +1 -0
- package/dist/esm/components/reorderable-list/RedorderableList.d.ts +55 -0
- package/dist/esm/components/reorderable-list/RedorderableList.js +202 -0
- package/dist/esm/components/reorderable-list/index.d.ts +0 -0
- package/dist/esm/components/reorderable-list/index.js +1 -0
- package/dist/esm/components/select/Select.d.ts +44 -0
- package/dist/esm/components/select/Select.js +108 -0
- package/dist/esm/components/select/SelectOptionsPanel.d.ts +21 -0
- package/dist/esm/components/select/SelectOptionsPanel.js +168 -0
- package/dist/esm/components/select/constants.d.ts +2 -0
- package/dist/esm/components/select/constants.js +2 -0
- package/dist/esm/components/select/index.d.ts +2 -0
- package/dist/esm/components/select/index.js +3 -0
- package/dist/esm/components/select/select-options-manager.d.ts +39 -0
- package/dist/esm/components/select/select-options-manager.js +63 -0
- package/dist/esm/components/tab-panel/TabPanel.d.ts +23 -0
- package/dist/esm/components/tab-panel/TabPanel.js +88 -0
- package/dist/esm/components/tab-panel/index.d.ts +3 -0
- package/dist/esm/components/tab-panel/index.js +3 -0
- package/dist/esm/components/tab-panel/tab-panel-default-settings.d.ts +17 -0
- package/dist/esm/components/tab-panel/tab-panel-default-settings.js +17 -0
- package/dist/esm/components/tab-panel/tab-panel-settings.d.ts +28 -0
- package/dist/esm/components/tab-panel/tab-panel-settings.js +11 -0
- package/dist/esm/components/table/Table.d.ts +64 -0
- package/dist/esm/components/table/Table.js +68 -0
- package/dist/esm/components/table/index.d.ts +1 -0
- package/dist/esm/components/table/index.js +1 -0
- package/dist/esm/components/toast/index.d.ts +1 -0
- package/dist/esm/components/toast/index.js +1 -0
- package/dist/esm/components/toast/toast.d.ts +15 -0
- package/dist/esm/components/toast/toast.js +31 -0
- package/dist/esm/components/tooltip/index.d.ts +3 -0
- package/dist/esm/components/tooltip/index.js +3 -0
- package/dist/esm/components/tooltip/tooltip-defaults.d.ts +23 -0
- package/dist/esm/components/tooltip/tooltip-defaults.js +22 -0
- package/dist/esm/components/tooltip/tooltip-function.d.ts +35 -0
- package/dist/esm/components/tooltip/tooltip-function.js +200 -0
- package/dist/esm/components/tooltip/tooltip-interfaces.d.ts +11 -0
- package/dist/esm/components/tooltip/tooltip-interfaces.js +1 -0
- package/dist/esm/components/tree/Tree.d.ts +110 -0
- package/dist/esm/components/tree/Tree.js +222 -0
- package/dist/esm/components/tree/index.d.ts +3 -0
- package/dist/esm/components/tree/index.js +3 -0
- package/dist/esm/components/tree/tree-node.interface.d.ts +9 -0
- package/dist/esm/components/tree/tree-node.interface.js +1 -0
- package/dist/esm/components/tree/tree-utils.d.ts +11 -0
- package/dist/esm/components/tree/tree-utils.js +18 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/utils/date-time.d.ts +3 -0
- package/dist/esm/utils/date-time.js +22 -0
- package/dist/esm/utils/dom.d.ts +16 -0
- package/dist/esm/utils/dom.js +28 -0
- package/dist/esm/utils/events.d.ts +1 -0
- package/dist/esm/utils/events.js +25 -0
- package/dist/esm/utils/index.d.ts +3 -0
- package/dist/esm/utils/index.js +3 -0
- package/package.json +7 -3
- /package/dist/{components → cjs/components}/accordion/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/accordion/index.js +0 -0
- /package/dist/{components → cjs/components}/data-grid/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/data-grid/index.js +0 -0
- /package/dist/{components → cjs/components}/data-table/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/data-table/index.js +0 -0
- /package/dist/{components → cjs/components}/dialog/Dialog.d.ts +0 -0
- /package/dist/{components → cjs/components}/dialog/Dialog.js +0 -0
- /package/dist/{components → cjs/components}/dialog/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/dialog/index.js +0 -0
- /package/dist/{components → cjs/components}/drag-handler/DragHandler.d.ts +0 -0
- /package/dist/{components → cjs/components}/drag-handler/DragHandler.js +0 -0
- /package/dist/{components → cjs/components}/drag-handler/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/drag-handler/index.js +0 -0
- /package/dist/{components → cjs/components}/drawer/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/drawer/index.js +0 -0
- /package/dist/{components → cjs/components}/drop-target/DropTarget.d.ts +0 -0
- /package/dist/{components → cjs/components}/drop-target/DropTarget.js +0 -0
- /package/dist/{components → cjs/components}/drop-target/drop-target.state.d.ts +0 -0
- /package/dist/{components → cjs/components}/drop-target/drop-target.state.js +0 -0
- /package/dist/{components → cjs/components}/drop-target/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/drop-target/index.js +0 -0
- /package/dist/{components → cjs/components}/form/Form.d.ts +0 -0
- /package/dist/{components → cjs/components}/form/Form.js +0 -0
- /package/dist/{components → cjs/components}/form/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/form/index.js +0 -0
- /package/dist/{components → cjs/components}/icon/Icon.d.ts +0 -0
- /package/dist/{components → cjs/components}/icon/Icon.js +0 -0
- /package/dist/{components → cjs/components}/icon/icons.d.ts +0 -0
- /package/dist/{components → cjs/components}/icon/icons.js +0 -0
- /package/dist/{components → cjs/components}/icon/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/icon/index.js +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/index.js +0 -0
- /package/dist/{components → cjs/components}/markdown/Markdown.d.ts +0 -0
- /package/dist/{components → cjs/components}/markdown/Markdown.js +0 -0
- /package/dist/{components → cjs/components}/markdown/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/markdown/index.js +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.d.ts +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.js +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/index.js +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.d.ts +0 -0
- /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.js +0 -0
- /package/dist/{components → cjs/components}/menu/Menu.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/Menu.js +0 -0
- /package/dist/{components → cjs/components}/menu/MenuButton.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/MenuButton.js +0 -0
- /package/dist/{components → cjs/components}/menu/MenuSeparator.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/MenuSeparator.js +0 -0
- /package/dist/{components → cjs/components}/menu/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/index.js +0 -0
- /package/dist/{components → cjs/components}/menu/menu-constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/menu-constants.js +0 -0
- /package/dist/{components → cjs/components}/menu/menu-manager.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/menu-manager.js +0 -0
- /package/dist/{components → cjs/components}/menu/menu-settings.d.ts +0 -0
- /package/dist/{components → cjs/components}/menu/menu-settings.js +0 -0
- /package/dist/{components → cjs/components}/modal/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/modal/index.js +0 -0
- /package/dist/{components → cjs/components}/pagination/Pagination.d.ts +0 -0
- /package/dist/{components → cjs/components}/pagination/Pagination.js +0 -0
- /package/dist/{components → cjs/components}/pagination/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/pagination/index.js +0 -0
- /package/dist/{components → cjs/components}/pagination/pagination-settings.d.ts +0 -0
- /package/dist/{components → cjs/components}/pagination/pagination-settings.js +0 -0
- /package/dist/{components → cjs/components}/panel-tree/PanelTree.d.ts +0 -0
- /package/dist/{components → cjs/components}/panel-tree/PanelTree.js +0 -0
- /package/dist/{components → cjs/components}/panel-tree/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/panel-tree/index.js +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.js +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.d.ts +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.js +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.d.ts +0 -0
- /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.js +0 -0
- /package/dist/{components → cjs/components}/popover/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/popover/index.js +0 -0
- /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.d.ts +0 -0
- /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.js +0 -0
- /package/dist/{components → cjs/components}/reorderable-list/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/reorderable-list/index.js +0 -0
- /package/dist/{components → cjs/components}/select/Select.d.ts +0 -0
- /package/dist/{components → cjs/components}/select/Select.js +0 -0
- /package/dist/{components → cjs/components}/select/SelectOptionsPanel.d.ts +0 -0
- /package/dist/{components → cjs/components}/select/SelectOptionsPanel.js +0 -0
- /package/dist/{components → cjs/components}/select/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/select/constants.js +0 -0
- /package/dist/{components → cjs/components}/select/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/select/index.js +0 -0
- /package/dist/{components → cjs/components}/select/select-options-manager.d.ts +0 -0
- /package/dist/{components → cjs/components}/select/select-options-manager.js +0 -0
- /package/dist/{components → cjs/components}/tab-panel/TabPanel.d.ts +0 -0
- /package/dist/{components → cjs/components}/tab-panel/TabPanel.js +0 -0
- /package/dist/{components → cjs/components}/tab-panel/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/tab-panel/index.js +0 -0
- /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.d.ts +0 -0
- /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.js +0 -0
- /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.d.ts +0 -0
- /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.js +0 -0
- /package/dist/{components → cjs/components}/table/Table.d.ts +0 -0
- /package/dist/{components → cjs/components}/table/Table.js +0 -0
- /package/dist/{components → cjs/components}/table/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/table/index.js +0 -0
- /package/dist/{components → cjs/components}/toast/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/toast/index.js +0 -0
- /package/dist/{components → cjs/components}/toast/toast.d.ts +0 -0
- /package/dist/{components → cjs/components}/toast/toast.js +0 -0
- /package/dist/{components → cjs/components}/tooltip/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/tooltip/index.js +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-defaults.d.ts +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-defaults.js +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-function.d.ts +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-function.js +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-interfaces.d.ts +0 -0
- /package/dist/{components → cjs/components}/tooltip/tooltip-interfaces.js +0 -0
- /package/dist/{components → cjs/components}/tree/Tree.d.ts +0 -0
- /package/dist/{components → cjs/components}/tree/Tree.js +0 -0
- /package/dist/{components → cjs/components}/tree/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/tree/index.js +0 -0
- /package/dist/{components → cjs/components}/tree/tree-node.interface.d.ts +0 -0
- /package/dist/{components → cjs/components}/tree/tree-node.interface.js +0 -0
- /package/dist/{components → cjs/components}/tree/tree-utils.d.ts +0 -0
- /package/dist/{components → cjs/components}/tree/tree-utils.js +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{index.js → cjs/index.js} +0 -0
- /package/dist/{utils → cjs/utils}/date-time.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/date-time.js +0 -0
- /package/dist/{utils → cjs/utils}/dom.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/dom.js +0 -0
- /package/dist/{utils → cjs/utils}/events.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/events.js +0 -0
- /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/index.js +0 -0
package/README.md
CHANGED
|
@@ -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,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,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,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 @@
|
|
|
1
|
+
export * from "./Form";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Form";
|