@hypericon/mico 0.3.24 → 0.4.0
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/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 +45 -0
- package/dist/esm/components/dialog/dialog-manager.js +163 -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/dialog-manager.d.ts +0 -0
- /package/dist/{components → cjs/components}/dialog/dialog-manager.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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import m from "mithril";
|
|
2
|
+
import { PAGINATION_DEFAULT_SETTINGS as SETTINGS } from "./pagination-settings";
|
|
3
|
+
import { Icon } from "../icon";
|
|
4
|
+
export const Pagination = {
|
|
5
|
+
view({ attrs }) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const layout = (attrs.layout || SETTINGS.layout);
|
|
8
|
+
return m(".mico-pagination", {
|
|
9
|
+
class: `${(_a = attrs.class) !== null && _a !== void 0 ? _a : ""}`,
|
|
10
|
+
style: `${(_b = attrs.style) !== null && _b !== void 0 ? _b : ""} display: flex; align-items: center;`,
|
|
11
|
+
}, [
|
|
12
|
+
(layout === "middle" || layout === "right") ? m("", { style: "flex: 1;" }) : [],
|
|
13
|
+
(attrs.size) ? [
|
|
14
|
+
m("span", `Page size:`),
|
|
15
|
+
m("select.mico-pagination-select", {
|
|
16
|
+
value: attrs.size.size,
|
|
17
|
+
oninput: (e) => attrs.size.onselect(Number(e.target.value)),
|
|
18
|
+
}, (attrs.size.sizes || SETTINGS.pageSizes).map(s => m("option", s))),
|
|
19
|
+
] : [],
|
|
20
|
+
(attrs.xToYOfZ !== undefined) ? [
|
|
21
|
+
(attrs.xToYOfZ === false) ? [] :
|
|
22
|
+
(typeof attrs.xToYOfZ === "string") ? m("span.mico-pagination-xtoyofz", attrs.xToYOfZ) :
|
|
23
|
+
attrs.xToYOfZ,
|
|
24
|
+
] : [
|
|
25
|
+
m("span.mico-pagination-xtoyofz", `${attrs.from}-${attrs.to} of ${attrs.of}`),
|
|
26
|
+
],
|
|
27
|
+
(attrs.first !== undefined) ? m("button.mico-pagination-button", {
|
|
28
|
+
disabled: attrs.isAtStart,
|
|
29
|
+
title: "First page",
|
|
30
|
+
onclick: (ev) => { var _a; return (_a = attrs.first) === null || _a === void 0 ? void 0 : _a.call(attrs, ev); },
|
|
31
|
+
}, [
|
|
32
|
+
SETTINGS.iconComponents.first
|
|
33
|
+
? m(SETTINGS.iconComponents.first)
|
|
34
|
+
: m(Icon, { fas: "angles-left" }),
|
|
35
|
+
]) : [],
|
|
36
|
+
(attrs.prev !== undefined) ? m("button.mico-pagination-button", {
|
|
37
|
+
disabled: attrs.isAtStart,
|
|
38
|
+
title: "Previous page",
|
|
39
|
+
onclick: (ev) => { var _a; return (_a = attrs.prev) === null || _a === void 0 ? void 0 : _a.call(attrs, ev); },
|
|
40
|
+
}, [
|
|
41
|
+
SETTINGS.iconComponents.prev
|
|
42
|
+
? m(SETTINGS.iconComponents.prev)
|
|
43
|
+
: m(Icon, { fas: "angle-left" }),
|
|
44
|
+
]) : [],
|
|
45
|
+
(attrs.next !== undefined) ? m("button.mico-pagination-button", {
|
|
46
|
+
disabled: attrs.isAtEnd,
|
|
47
|
+
title: "Next page",
|
|
48
|
+
onclick: (ev) => { var _a; return (_a = attrs.next) === null || _a === void 0 ? void 0 : _a.call(attrs, ev); },
|
|
49
|
+
}, [
|
|
50
|
+
SETTINGS.iconComponents.next
|
|
51
|
+
? m(SETTINGS.iconComponents.next)
|
|
52
|
+
: m(Icon, { fas: "angle-right" }),
|
|
53
|
+
]) : [],
|
|
54
|
+
(attrs.last !== undefined) ? m("button.mico-pagination-button", {
|
|
55
|
+
disabled: attrs.isAtEnd,
|
|
56
|
+
title: "Last page",
|
|
57
|
+
onclick: (ev) => { var _a; return (_a = attrs.last) === null || _a === void 0 ? void 0 : _a.call(attrs, ev); },
|
|
58
|
+
}, [
|
|
59
|
+
SETTINGS.iconComponents.last
|
|
60
|
+
? m(SETTINGS.iconComponents.last)
|
|
61
|
+
: m(Icon, { fas: "angles-right" }),
|
|
62
|
+
]) : [],
|
|
63
|
+
(layout === "middle" || layout === "left") ? m("", { style: "flex: 1;" }) : [],
|
|
64
|
+
]);
|
|
65
|
+
},
|
|
66
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import m from "mithril";
|
|
2
|
+
/**
|
|
3
|
+
* Default common settings for pagination components
|
|
4
|
+
*/
|
|
5
|
+
export declare const PAGINATION_DEFAULT_SETTINGS: {
|
|
6
|
+
/** "left" | "middle" | "right" */
|
|
7
|
+
layout: string;
|
|
8
|
+
pageSize: number;
|
|
9
|
+
pageSizes: number[];
|
|
10
|
+
/** Optionally override the default icon components displayed in the pagination buttons */
|
|
11
|
+
iconComponents: {
|
|
12
|
+
first: m.Component<any, any> | undefined;
|
|
13
|
+
prev: m.Component<any, any> | undefined;
|
|
14
|
+
next: m.Component<any, any> | undefined;
|
|
15
|
+
last: m.Component<any, any> | undefined;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default common settings for pagination components
|
|
3
|
+
*/
|
|
4
|
+
export const PAGINATION_DEFAULT_SETTINGS = {
|
|
5
|
+
/** "left" | "middle" | "right" */
|
|
6
|
+
layout: "right",
|
|
7
|
+
pageSize: 25,
|
|
8
|
+
pageSizes: [25, 50, 100],
|
|
9
|
+
/** Optionally override the default icon components displayed in the pagination buttons */
|
|
10
|
+
iconComponents: {
|
|
11
|
+
first: undefined,
|
|
12
|
+
prev: undefined,
|
|
13
|
+
next: undefined,
|
|
14
|
+
last: undefined,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import m from "mithril";
|
|
2
|
+
export declare const PanelTreePanel: m.Component<{
|
|
3
|
+
/** The data subtree associated with this panel */
|
|
4
|
+
data: object;
|
|
5
|
+
/** The type of parent container (if any) to inform how the dragging target is highlighted (or not) */
|
|
6
|
+
parentType: "row" | "column" | undefined;
|
|
7
|
+
/** Remove the data associated with this panel from the canonical tree to be inserted elsewhere */
|
|
8
|
+
remove: () => void;
|
|
9
|
+
/** Insert the given subtree either before or after the current node as a sibling in the tree */
|
|
10
|
+
insert: (subtree: object, before: boolean) => void;
|
|
11
|
+
debugLabel?: string;
|
|
12
|
+
class?: string;
|
|
13
|
+
style?: string;
|
|
14
|
+
}, {
|
|
15
|
+
/** Whether the current drag is over the "start" or "end" of the panel, according to the parent direction */
|
|
16
|
+
isOverStart: boolean;
|
|
17
|
+
el: HTMLElement;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const PanelTreeHandle: m.Component<{
|
|
20
|
+
/** The data subtree associated with this panel */
|
|
21
|
+
data: object;
|
|
22
|
+
/** Remove the data associated with this panel from the canonical tree to be inserted elsewhere */
|
|
23
|
+
remove: () => void;
|
|
24
|
+
}, {
|
|
25
|
+
el: HTMLElement;
|
|
26
|
+
}>;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import m from "mithril";
|
|
2
|
+
import { PANEL_TREE_DEBUG, PANEL_TREE_PANEL_CLASS } from "./panel-tree-constants";
|
|
3
|
+
import { PanelTreeStore } from "./panel-tree-store";
|
|
4
|
+
import { PanelTreeUtils as PTUtils } from "./panel-tree-utils";
|
|
5
|
+
/** Data about the state of the ongoing drag operation */
|
|
6
|
+
const PTStore = new PanelTreeStore();
|
|
7
|
+
export const PanelTreePanel = {
|
|
8
|
+
oninit() {
|
|
9
|
+
// this.isDragOver = false;
|
|
10
|
+
},
|
|
11
|
+
oncreate({ dom }) {
|
|
12
|
+
this.el = dom;
|
|
13
|
+
},
|
|
14
|
+
onupdate({ dom }) {
|
|
15
|
+
this.el = dom;
|
|
16
|
+
},
|
|
17
|
+
view({ attrs, children }) {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
const { parentType, data } = attrs;
|
|
20
|
+
const isOver = PTStore.isDragging && PTStore.overEl === this.el;
|
|
21
|
+
const isRecursive = (_a = PTStore.draggedPanel) === null || _a === void 0 ? void 0 : _a.contains(this.el);
|
|
22
|
+
const isValidTarget = (parentType !== undefined) && (PTStore.draggedData !== data) && !isRecursive;
|
|
23
|
+
let dragBorder = "border border-grey-300 dark:border-grey-700";
|
|
24
|
+
if (isOver && isValidTarget) {
|
|
25
|
+
if (parentType === "row" && this.isOverStart) {
|
|
26
|
+
dragBorder = "border-primary border-l-4";
|
|
27
|
+
}
|
|
28
|
+
else if (parentType === "row" && !this.isOverStart) {
|
|
29
|
+
dragBorder = "border-primary border-r-4";
|
|
30
|
+
}
|
|
31
|
+
else if (parentType === "column" && this.isOverStart) {
|
|
32
|
+
dragBorder = "border-primary border-t-4";
|
|
33
|
+
}
|
|
34
|
+
else if (parentType === "column" && !this.isOverStart) {
|
|
35
|
+
dragBorder = "border-primary border-b-4";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (isOver && !isValidTarget) {
|
|
39
|
+
dragBorder = "border-grey-500 border";
|
|
40
|
+
}
|
|
41
|
+
const onOver = (ev) => {
|
|
42
|
+
var _a;
|
|
43
|
+
if (!PTStore.isDragging)
|
|
44
|
+
return;
|
|
45
|
+
ev.stopImmediatePropagation();
|
|
46
|
+
ev.preventDefault();
|
|
47
|
+
// PANEL_TREE_DEBUG ?? console.debug("is dragging over panel with parent " + parentType);
|
|
48
|
+
const { dragEv, touchEv } = PTUtils.dragOrTouch(ev);
|
|
49
|
+
PTStore.overEl = this.el;
|
|
50
|
+
const isRecursive = (_a = PTStore.draggedPanel) === null || _a === void 0 ? void 0 : _a.contains(this.el);
|
|
51
|
+
const isValidTarget = parentType !== undefined && PTStore.draggedData !== data && !isRecursive;
|
|
52
|
+
if (isValidTarget) {
|
|
53
|
+
// this.isDragOver = true;
|
|
54
|
+
PTStore.dropEffect = (parentType === undefined) ? "none" : "move";
|
|
55
|
+
if (dragEv === null || dragEv === void 0 ? void 0 : dragEv.dataTransfer) {
|
|
56
|
+
dragEv.dataTransfer.dropEffect = PTStore.dropEffect;
|
|
57
|
+
}
|
|
58
|
+
// Determine if the drag is over the "starting end" of the panel
|
|
59
|
+
const overDiv = ev.currentTarget;
|
|
60
|
+
const targetRect = overDiv.getBoundingClientRect();
|
|
61
|
+
if (parentType === "row") {
|
|
62
|
+
const leftToMouse = PTUtils.eventXPos(ev) - targetRect.left;
|
|
63
|
+
const isLeft = leftToMouse < (targetRect.width - leftToMouse);
|
|
64
|
+
this.isOverStart = isLeft;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const topToMouse = PTUtils.eventYPos(ev) - targetRect.top;
|
|
68
|
+
const isAbove = topToMouse < (targetRect.height - topToMouse);
|
|
69
|
+
this.isOverStart = isAbove;
|
|
70
|
+
}
|
|
71
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`dragging over valid target, ${this.isOverStart ? "over start" : "over end"}`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`dragging over invalid target`);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const onDrop = (ev) => {
|
|
78
|
+
var _a;
|
|
79
|
+
if (!PTStore.isDragging)
|
|
80
|
+
return;
|
|
81
|
+
ev.stopImmediatePropagation();
|
|
82
|
+
// this.isDragOver = false;
|
|
83
|
+
PTStore.dropTargetData = data;
|
|
84
|
+
PTStore.dropTargetPanel = this.el;
|
|
85
|
+
const isRecursive = (_a = PTStore.draggedPanel) === null || _a === void 0 ? void 0 : _a.contains(this.el);
|
|
86
|
+
const movedData = PTStore.draggedData;
|
|
87
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`drag dropped, dataTransfer data: ${JSON.stringify(movedData)}`);
|
|
88
|
+
if (movedData && movedData !== data && !isRecursive) {
|
|
89
|
+
setTimeout(() => {
|
|
90
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`Instruct tree to insert subtree: ${JSON.stringify(movedData)}`);
|
|
91
|
+
attrs.insert(movedData, this.isOverStart);
|
|
92
|
+
m.redraw();
|
|
93
|
+
}, 1);
|
|
94
|
+
}
|
|
95
|
+
PTStore.isDragging = false;
|
|
96
|
+
};
|
|
97
|
+
const onEnd = (ev) => {
|
|
98
|
+
// ev.stopImmediatePropagation();
|
|
99
|
+
// this.isDragOver = false;
|
|
100
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug("drag ended");
|
|
101
|
+
// No op?
|
|
102
|
+
PTStore.isDragging = false;
|
|
103
|
+
};
|
|
104
|
+
return m(`.${PANEL_TREE_PANEL_CLASS}.flex-1.rounded.shadow-md`, {
|
|
105
|
+
// TODO
|
|
106
|
+
// class: `${attrs.class ?? ""} ${mobileMode.isMob ? "p-1" : "p-2"} ${dragBorder}`,
|
|
107
|
+
class: `${(_b = attrs.class) !== null && _b !== void 0 ? _b : ""} p-1 ${dragBorder}`,
|
|
108
|
+
style: (_c = attrs.style) !== null && _c !== void 0 ? _c : "",
|
|
109
|
+
ondragover: (ev) => {
|
|
110
|
+
return onOver(ev);
|
|
111
|
+
},
|
|
112
|
+
ondragleave: (ev) => {
|
|
113
|
+
// ev.stopImmediatePropagation();
|
|
114
|
+
// if (ev.currentTarget === this.el) {
|
|
115
|
+
// PANEL_TREE_DEBUG ?? console.debug("drag leave target", ev.target);
|
|
116
|
+
// PANEL_TREE_DEBUG ?? console.debug("drag leave current target", ev.currentTarget);
|
|
117
|
+
// // PANEL_TREE_DEBUG ?? console.debug(`Leaving panel ${attrs.debugLabel}`);
|
|
118
|
+
// // this.isDragOver = false;
|
|
119
|
+
// }
|
|
120
|
+
},
|
|
121
|
+
ondrop: (ev) => {
|
|
122
|
+
return onDrop(ev);
|
|
123
|
+
},
|
|
124
|
+
ondragend: (ev) => {
|
|
125
|
+
return onEnd(ev);
|
|
126
|
+
},
|
|
127
|
+
// Event redispatched from the drag handle
|
|
128
|
+
ontouchmove: (ev) => {
|
|
129
|
+
return onOver(ev);
|
|
130
|
+
},
|
|
131
|
+
// Event redispatched from the drag handle
|
|
132
|
+
ontouchend: (ev) => {
|
|
133
|
+
return onDrop(ev);
|
|
134
|
+
},
|
|
135
|
+
}, children);
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
export const PanelTreeHandle = {
|
|
139
|
+
oninit() { },
|
|
140
|
+
oncreate({ dom }) {
|
|
141
|
+
this.el = dom;
|
|
142
|
+
},
|
|
143
|
+
view({ attrs }) {
|
|
144
|
+
const { data } = attrs;
|
|
145
|
+
return m(".px-2.py-1.flex.items-center.cursor-move", {
|
|
146
|
+
// TODO
|
|
147
|
+
// ...tooltipSpread("Reposition this element", { delay: 1_000 }),
|
|
148
|
+
draggable: true,
|
|
149
|
+
ondragstart: (ev) => PTStore.onStartDraggingHandle(ev, data),
|
|
150
|
+
ondragend: (ev) => PTStore.onEndDraggingHandle(ev, data, () => { var _a; return (_a = attrs.remove) === null || _a === void 0 ? void 0 : _a.call(attrs); }),
|
|
151
|
+
ontouchstart: (ev) => PTStore.onStartDraggingHandle(ev, data),
|
|
152
|
+
// Redispatch the event to the panel that the touch is currently over
|
|
153
|
+
ontouchmove: (ev) => {
|
|
154
|
+
if (PTStore.isDragging) {
|
|
155
|
+
// Disable scrolling if there is an ongoing drag
|
|
156
|
+
ev.stopImmediatePropagation();
|
|
157
|
+
ev.preventDefault();
|
|
158
|
+
PTUtils.dispatchTouchEventToHoveredPanel(ev);
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
ontouchend: (ev) => {
|
|
162
|
+
// Re-dispatch the event first to set the drop target data
|
|
163
|
+
PTUtils.dispatchTouchEventToLastHoveredPanel(ev);
|
|
164
|
+
// Next, handle the end of the drag and possibly call the function to remove the panel
|
|
165
|
+
PTStore.onEndDraggingHandle(ev, data, () => { var _a; return (_a = attrs.remove) === null || _a === void 0 ? void 0 : _a.call(attrs); });
|
|
166
|
+
},
|
|
167
|
+
ontouchcancel: (ev) => {
|
|
168
|
+
PTStore.isDragging = false;
|
|
169
|
+
},
|
|
170
|
+
}, [
|
|
171
|
+
m("i.fas.fa-grip-vertical.text-icon"),
|
|
172
|
+
]);
|
|
173
|
+
},
|
|
174
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare class PanelTreeStore {
|
|
2
|
+
/** If there is an ongoing drag operation */
|
|
3
|
+
isDragging: boolean;
|
|
4
|
+
/** The panel in the tree being moved by an ongoing drag operation */
|
|
5
|
+
draggedPanel: HTMLElement | undefined;
|
|
6
|
+
/** The panel in the tree that has just had a drag event dropped onto it */
|
|
7
|
+
dropTargetPanel: HTMLElement | undefined;
|
|
8
|
+
/** The panel over which the ongoing drag was last dragged */
|
|
9
|
+
overEl: HTMLElement | undefined;
|
|
10
|
+
/** The data being "moved" by the drag operation */
|
|
11
|
+
draggedData: object | undefined;
|
|
12
|
+
/** The data associated with the target for the drop action */
|
|
13
|
+
dropTargetData: object | undefined;
|
|
14
|
+
/** Mirrored from `dragEvent.dataTransfer.dropEffect` to support touch drags */
|
|
15
|
+
dropEffect: "none" | "copy" | "link" | "move" | undefined;
|
|
16
|
+
/** Whether the current drop operation is recursive */
|
|
17
|
+
get isRecursive(): boolean;
|
|
18
|
+
constructor();
|
|
19
|
+
/** The user has started dragging a handle of a panel */
|
|
20
|
+
onStartDraggingHandle(ev: DragEvent | TouchEvent, data: object): void;
|
|
21
|
+
/** The user has stopped dragging a handle of a panel */
|
|
22
|
+
onEndDraggingHandle(ev: DragEvent | TouchEvent, data: object, remove: () => void): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { PANEL_TREE_DEBUG } from "./panel-tree-constants";
|
|
2
|
+
import { PanelTreeUtils as PTUtils } from "./panel-tree-utils";
|
|
3
|
+
export class PanelTreeStore {
|
|
4
|
+
/** Whether the current drop operation is recursive */
|
|
5
|
+
get isRecursive() {
|
|
6
|
+
return (this.draggedPanel !== undefined) &&
|
|
7
|
+
(this.dropTargetPanel !== undefined) &&
|
|
8
|
+
(this.draggedPanel.contains(this.dropTargetPanel));
|
|
9
|
+
}
|
|
10
|
+
constructor() {
|
|
11
|
+
/** If there is an ongoing drag operation */
|
|
12
|
+
this.isDragging = false;
|
|
13
|
+
/** The panel in the tree being moved by an ongoing drag operation */
|
|
14
|
+
this.draggedPanel = undefined;
|
|
15
|
+
/** The panel in the tree that has just had a drag event dropped onto it */
|
|
16
|
+
this.dropTargetPanel = undefined;
|
|
17
|
+
/** The panel over which the ongoing drag was last dragged */
|
|
18
|
+
this.overEl = undefined;
|
|
19
|
+
/** The data being "moved" by the drag operation */
|
|
20
|
+
this.draggedData = undefined;
|
|
21
|
+
/** The data associated with the target for the drop action */
|
|
22
|
+
this.dropTargetData = undefined;
|
|
23
|
+
/** Mirrored from `dragEvent.dataTransfer.dropEffect` to support touch drags */
|
|
24
|
+
this.dropEffect = undefined;
|
|
25
|
+
}
|
|
26
|
+
/** The user has started dragging a handle of a panel */
|
|
27
|
+
onStartDraggingHandle(ev, data) {
|
|
28
|
+
var _a;
|
|
29
|
+
ev.stopImmediatePropagation();
|
|
30
|
+
// ev.preventDefault();
|
|
31
|
+
const { dragEv, touchEv } = PTUtils.dragOrTouch(ev);
|
|
32
|
+
const parentPanel = PTUtils.findParentPanel(ev.currentTarget);
|
|
33
|
+
// logger.debug(``)
|
|
34
|
+
if (parentPanel) {
|
|
35
|
+
this.isDragging = true;
|
|
36
|
+
this.draggedData = data;
|
|
37
|
+
this.draggedPanel = parentPanel;
|
|
38
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`Begin dragging, handle data: ${JSON.stringify(data)}`);
|
|
39
|
+
const parentRect = parentPanel.getBoundingClientRect();
|
|
40
|
+
if (dragEv) {
|
|
41
|
+
(_a = dragEv.dataTransfer) === null || _a === void 0 ? void 0 : _a.setDragImage(parentPanel, dragEv.clientX - parentRect.left, dragEv.clientY - parentRect.top);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** The user has stopped dragging a handle of a panel */
|
|
46
|
+
onEndDraggingHandle(ev, data, remove) {
|
|
47
|
+
ev.stopImmediatePropagation();
|
|
48
|
+
const { dragEv, touchEv } = PTUtils.dragOrTouch(ev);
|
|
49
|
+
const isRecursive = this.isRecursive; // STORE.dropTargetPanel && STORE.draggedPanel?.contains(STORE.dropTargetPanel);
|
|
50
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`End dragging, dropEffect: ${this.dropEffect}, handle data: ${JSON.stringify(data)}`);
|
|
51
|
+
if (this.dropEffect === "move") {
|
|
52
|
+
if (this.dropTargetData !== data && !isRecursive) {
|
|
53
|
+
PANEL_TREE_DEBUG !== null && PANEL_TREE_DEBUG !== void 0 ? PANEL_TREE_DEBUG : console.debug(`Instruct tree to remove subtree: ${JSON.stringify(data)}`);
|
|
54
|
+
remove === null || remove === void 0 ? void 0 : remove();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
this.isDragging = false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stateless utility functions used by the PanelTree component
|
|
3
|
+
*/
|
|
4
|
+
export declare class PanelTreeUtils {
|
|
5
|
+
/** The last panel that was targetted when re-dispatching a touch event */
|
|
6
|
+
static lastTouchHoverPanel: HTMLElement | undefined;
|
|
7
|
+
/** Find the first parent element of the given element that contains the CSS class for panel tree panels */
|
|
8
|
+
static findParentPanel(handleEl: HTMLElement): HTMLElement | undefined;
|
|
9
|
+
static dragOrTouch(ev: DragEvent | TouchEvent): {
|
|
10
|
+
dragEv: DragEvent | undefined;
|
|
11
|
+
touchEv: TouchEvent | undefined;
|
|
12
|
+
};
|
|
13
|
+
static eventXPos(ev: DragEvent | TouchEvent): number;
|
|
14
|
+
static eventYPos(ev: DragEvent | TouchEvent): number;
|
|
15
|
+
static dispatchTouchEventToHoveredPanel(ev: TouchEvent): void;
|
|
16
|
+
static dispatchTouchEventToLastHoveredPanel(ev: TouchEvent): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { PANEL_TREE_PANEL_CLASS } from "./panel-tree-constants";
|
|
2
|
+
/**
|
|
3
|
+
* Stateless utility functions used by the PanelTree component
|
|
4
|
+
*/
|
|
5
|
+
export class PanelTreeUtils {
|
|
6
|
+
/** Find the first parent element of the given element that contains the CSS class for panel tree panels */
|
|
7
|
+
static findParentPanel(handleEl) {
|
|
8
|
+
const parent = handleEl.parentElement;
|
|
9
|
+
if (!parent)
|
|
10
|
+
return;
|
|
11
|
+
if (parent.classList.contains(PANEL_TREE_PANEL_CLASS))
|
|
12
|
+
return parent;
|
|
13
|
+
return this.findParentPanel(parent);
|
|
14
|
+
}
|
|
15
|
+
static dragOrTouch(ev) {
|
|
16
|
+
const dragEv = ev.type.includes("drag") ? ev : undefined;
|
|
17
|
+
const touchEv = (ev.type.includes("touch")) ? ev : undefined;
|
|
18
|
+
return {
|
|
19
|
+
dragEv,
|
|
20
|
+
touchEv,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static eventXPos(ev) {
|
|
24
|
+
if (ev.type.includes("touch")) {
|
|
25
|
+
return ev.touches[0].clientX;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return ev.clientX;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static eventYPos(ev) {
|
|
32
|
+
if (ev.type.includes("touch")) {
|
|
33
|
+
return ev.touches[0].clientY;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return ev.clientY;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static dispatchTouchEventToHoveredPanel(ev) {
|
|
40
|
+
// Find element dragged over
|
|
41
|
+
const overEl = document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY);
|
|
42
|
+
const panel = overEl ? this.findParentPanel(overEl) : undefined;
|
|
43
|
+
if (panel) {
|
|
44
|
+
this.lastTouchHoverPanel = panel;
|
|
45
|
+
const evCopy = new TouchEvent(ev.type, ev);
|
|
46
|
+
panel.dispatchEvent(evCopy);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static dispatchTouchEventToLastHoveredPanel(ev) {
|
|
50
|
+
if (this.lastTouchHoverPanel) {
|
|
51
|
+
const evCopy = new TouchEvent(ev.type, ev);
|
|
52
|
+
this.lastTouchHoverPanel.dispatchEvent(evCopy);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import m from "mithril";
|
|
2
|
+
/**
|
|
3
|
+
* A reorderable list of items. Expects a list of reorderable list items in children.
|
|
4
|
+
*
|
|
5
|
+
* ! The divs containing the content of the items must be passed as a 1-D list to
|
|
6
|
+
* the reorderable list's children. E.g.:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* m(ReorderableList, {...}, ["one", "two"]),
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Or (note the list spread):
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* m(ReorderableList, {...}, [
|
|
16
|
+
* ...someList.map(item => m("", {...}, [...])),
|
|
17
|
+
* ]),
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The divs defining the content of the items are displayed in a flex row, and are encouraged
|
|
21
|
+
* to flex themselves to fill the row.
|
|
22
|
+
*
|
|
23
|
+
* Example of applying a reordering:
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* const dragged = this.items.splice(fromIndex, 1)[0];
|
|
27
|
+
* this.items.splice(toIndex, 0, dragged);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const ReorderableList: m.Component<{
|
|
31
|
+
/** A reorder instruction from the user */
|
|
32
|
+
reorder: (fromIndex: number, toIndex: number) => any;
|
|
33
|
+
/** Function called when a reordering drag begins */
|
|
34
|
+
reorderStart?: (ev: MouseEvent | TouchEvent) => any;
|
|
35
|
+
/** Function called after a reordering drag has finished */
|
|
36
|
+
reorderEnd?: (ev: MouseEvent | TouchEvent) => any;
|
|
37
|
+
/** Message to display when there are no items in the list */
|
|
38
|
+
emptyMessage?: string | m.Vnode<any, any>;
|
|
39
|
+
/** Disable reordering and the UI prompts */
|
|
40
|
+
disableReordering?: boolean;
|
|
41
|
+
/** Optionally hide the row numbers and narrow the reorder grip area */
|
|
42
|
+
hideNumbers?: boolean;
|
|
43
|
+
/** Optional space-separated CSS classes to apply to the container div */
|
|
44
|
+
class?: string;
|
|
45
|
+
/** Optional space-separated CSS classes to apply to each reorderable item row div */
|
|
46
|
+
itemClass?: string;
|
|
47
|
+
/** Optional CSS styles to apply to the container div */
|
|
48
|
+
style?: string;
|
|
49
|
+
/** Optional HTML ID for the div containing the list rows */
|
|
50
|
+
id?: string;
|
|
51
|
+
}, {
|
|
52
|
+
draggingIndex: number | undefined;
|
|
53
|
+
draggedOverIndex: number | undefined;
|
|
54
|
+
draggedOverTop: boolean | undefined;
|
|
55
|
+
}>;
|