uiconfig-blueprint 0.1.0-dev.6 → 0.1.0-dev.8

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 (100) hide show
  1. package/dist/{allPaths-CxAGUqQA.js → allPaths-CaVZ3prc.js} +5 -5
  2. package/dist/{allPaths-CxAGUqQA.js.map → allPaths-CaVZ3prc.js.map} +1 -1
  3. package/dist/{allPathsLoader-D9qLQ797.js → allPathsLoader-DqAkPjCt.js} +4 -4
  4. package/dist/{allPathsLoader-D9qLQ797.js.map → allPathsLoader-DqAkPjCt.js.map} +1 -1
  5. package/dist/bpComponents/BPButtonComponent.d.ts +1 -0
  6. package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
  7. package/dist/bpComponents/BPComponent.d.ts +1 -0
  8. package/dist/bpComponents/BPFileComponent.d.ts +1 -0
  9. package/dist/bpComponents/BPFolderComponent.d.ts +5 -0
  10. package/dist/bpComponents/BPTreeComponent.d.ts +9 -3
  11. package/dist/components/InspectorStackComponent.d.ts +2 -1
  12. package/dist/components/Tree2.d.ts +52 -0
  13. package/dist/components/TreeNode2.d.ts +43 -0
  14. package/dist/components/treeTypes.d.ts +18 -0
  15. package/dist/{index-CWeYtJnn.js → index-CdK1RFUj.js} +2 -2
  16. package/dist/{index-CWeYtJnn.js.map → index-CdK1RFUj.js.map} +1 -1
  17. package/dist/{index-CKe0TkQl.js → index-CdVGBTp6.js} +5260 -4993
  18. package/dist/index-CdVGBTp6.js.map +1 -0
  19. package/dist/{index-Dv22bSeb.js → index-Ut14H6M3.js} +2 -2
  20. package/dist/{index-Dv22bSeb.js.map → index-Ut14H6M3.js.map} +1 -1
  21. package/dist/index.js +44 -33
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +2 -2
  24. package/dist/{splitPathsBySizeLoader-DjI12iKG.js → splitPathsBySizeLoader-D0hMznHW.js} +5 -5
  25. package/dist/{splitPathsBySizeLoader-DjI12iKG.js.map → splitPathsBySizeLoader-D0hMznHW.js.map} +1 -1
  26. package/docs/classes/UI.html +3 -3
  27. package/docs/classes/UiConfigRendererBlueprint.html +3 -3
  28. package/lib/css/renderer.css +77 -10
  29. package/lib/css/renderer.css.map +1 -1
  30. package/lib/esm/ConfigObject.js +8 -4
  31. package/lib/esm/ConfigObject.js.map +1 -1
  32. package/lib/esm/UiConfigRendererBlueprint.js +22 -11
  33. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  34. package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
  35. package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
  36. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  37. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  38. package/lib/esm/bpComponents/BPColorInputComponent.js +3 -1
  39. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  40. package/lib/esm/bpComponents/BPComponent.d.ts +1 -0
  41. package/lib/esm/bpComponents/BPComponent.js +4 -2
  42. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  43. package/lib/esm/bpComponents/BPDropdownInputComponent.js +2 -2
  44. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  45. package/lib/esm/bpComponents/BPFileComponent.d.ts +1 -0
  46. package/lib/esm/bpComponents/BPFileComponent.js +7 -1
  47. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  48. package/lib/esm/bpComponents/BPFolderComponent.d.ts +5 -0
  49. package/lib/esm/bpComponents/BPFolderComponent.js +46 -6
  50. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  51. package/lib/esm/bpComponents/BPInputComponent.js +2 -1
  52. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  53. package/lib/esm/bpComponents/BPNumberInputComponent.js +1 -1
  54. package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
  55. package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
  56. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  57. package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
  58. package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
  59. package/lib/esm/bpComponents/BPTreeComponent.d.ts +9 -3
  60. package/lib/esm/bpComponents/BPTreeComponent.js +14 -3
  61. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  62. package/lib/esm/components/ExtendedNumericInput.js +1 -1
  63. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  64. package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
  65. package/lib/esm/components/InspectorStackComponent.js +2 -2
  66. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  67. package/lib/esm/components/Tree2.d.ts +52 -0
  68. package/lib/esm/components/Tree2.js +177 -0
  69. package/lib/esm/components/Tree2.js.map +1 -0
  70. package/lib/esm/components/TreeNode2.d.ts +43 -0
  71. package/lib/esm/components/TreeNode2.js +111 -0
  72. package/lib/esm/components/TreeNode2.js.map +1 -0
  73. package/lib/esm/components/treeTypes.d.ts +18 -0
  74. package/lib/esm/components/treeTypes.js +2 -0
  75. package/lib/esm/components/treeTypes.js.map +1 -0
  76. package/package.json +3 -3
  77. package/src/ConfigObject.tsx +11 -4
  78. package/src/UiConfigRendererBlueprint.tsx +22 -11
  79. package/src/bpComponents/BPButtonComponent.scss +3 -1
  80. package/src/bpComponents/BPButtonComponent.tsx +8 -2
  81. package/src/bpComponents/BPColorInputComponent.tsx +7 -1
  82. package/src/bpComponents/BPComponent.tsx +3 -0
  83. package/src/bpComponents/BPDropdownInputComponent.tsx +2 -1
  84. package/src/bpComponents/BPFileComponent.tsx +13 -2
  85. package/src/bpComponents/BPFolderComponent.scss +8 -3
  86. package/src/bpComponents/BPFolderComponent.tsx +85 -13
  87. package/src/bpComponents/BPInputComponent.tsx +4 -1
  88. package/src/bpComponents/BPNumberInputComponent.tsx +2 -1
  89. package/src/bpComponents/BPTextInputComponent.tsx +1 -0
  90. package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
  91. package/src/bpComponents/BPTreeComponent.tsx +21 -5
  92. package/src/components/ExtendedNumericInput.tsx +1 -1
  93. package/src/components/InspectorStackComponent.tsx +2 -2
  94. package/src/components/Tree2.tsx +344 -0
  95. package/src/components/TreeNode2.tsx +192 -0
  96. package/src/components/common.scss +3 -0
  97. package/src/components/tree2.scss +42 -0
  98. package/src/components/treeTypes.ts +97 -0
  99. package/src/renderer.scss +39 -6
  100. package/dist/index-CKe0TkQl.js.map +0 -1
@@ -0,0 +1,177 @@
1
+ import { createElement as _createElement } from "react";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import classNames from "classnames";
4
+ import * as React from "react";
5
+ import { Classes, DISPLAYNAME_PREFIX } from "@blueprintjs/core";
6
+ import { TreeNode2 } from "./TreeNode2";
7
+ import { TREE_NODE } from "@blueprintjs/core/lib/esnext/common/classes";
8
+ export class Tree2 extends React.Component {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.nodeRefs = {};
12
+ this.dragSource = null;
13
+ this.rootRef = React.createRef();
14
+ this.renderNodeSpacer = (node, path, i) => {
15
+ return _jsx("li", { className: Classes.TREE + "-drop-spacer", children: _jsx("div", { onDragOver: (e) => this.handleNodeDragOver(node, path, e, i), onDrop: (e) => this.handleNodeDrop(node, path, e, i), onDragEnter: (e) => this.handleNodeDragEnter(node, path, e, i), onDragLeave: (e) => this.handleNodeDragLeave(node, path, e, i) }) }, "drop-" + node.id + "-" + i);
16
+ };
17
+ this.handleContentRef = (node, element) => {
18
+ if (element != null) {
19
+ this.nodeRefs[node.id] = element;
20
+ }
21
+ else {
22
+ delete this.nodeRefs[node.id];
23
+ }
24
+ };
25
+ this.handleNodeCollapse = (node, path, e) => {
26
+ var _a, _b;
27
+ (_b = (_a = this.props).onNodeCollapse) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
28
+ };
29
+ this.handleNodeClick = (node, path, e) => {
30
+ var _a, _b;
31
+ (_b = (_a = this.props).onNodeClick) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
32
+ };
33
+ this.handleNodeContextMenu = (node, path, e) => {
34
+ var _a, _b;
35
+ (_b = (_a = this.props).onNodeContextMenu) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
36
+ };
37
+ this.handleNodeDoubleClick = (node, path, e) => {
38
+ var _a, _b;
39
+ (_b = (_a = this.props).onNodeDoubleClick) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
40
+ };
41
+ this.handleNodeExpand = (node, path, e) => {
42
+ var _a, _b;
43
+ (_b = (_a = this.props).onNodeExpand) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
44
+ };
45
+ this.handleNodeMouseEnter = (node, path, e) => {
46
+ var _a, _b;
47
+ (_b = (_a = this.props).onNodeMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
48
+ };
49
+ this.handleNodeMouseLeave = (node, path, e) => {
50
+ var _a, _b;
51
+ (_b = (_a = this.props).onNodeMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
52
+ };
53
+ this.handleNodeDragStart = (node, path, e) => {
54
+ var _a, _b, _c, _d;
55
+ this.dragSource = { node, path };
56
+ this.draggingNode = { node, path };
57
+ (_b = (_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.classList.add(Classes.TREE + "-dragging-node");
58
+ this.addNodeClass(node, TREE_NODE + "-dragging");
59
+ e.dataTransfer.effectAllowed = "move";
60
+ try {
61
+ e.dataTransfer.setData("application/json", JSON.stringify({ nodeId: node.id, path }));
62
+ }
63
+ catch (_e) {
64
+ }
65
+ (_d = (_c = this.props).onNodeDragStart) === null || _d === void 0 ? void 0 : _d.call(_c, node, path, e);
66
+ };
67
+ this.handleNodeDragOver = (node, path, e, index) => {
68
+ var _a, _b, _c, _d, _e;
69
+ if (this.dragSource && this.props.canDropNode) {
70
+ const canDrop = this.props.canDropNode(this.dragSource.node, this.dragSource.path, node, path, index);
71
+ if (!canDrop) {
72
+ e.dataTransfer.dropEffect = "none";
73
+ e.preventDefault();
74
+ return;
75
+ }
76
+ }
77
+ const currentTarget = e.currentTarget;
78
+ if ((((_a = this.dragOverNode) === null || _a === void 0 ? void 0 : _a.node.id) !== node.id || ((_b = this.dragOverNode) === null || _b === void 0 ? void 0 : _b.currentTarget) !== currentTarget) && ((_c = this.draggingNode) === null || _c === void 0 ? void 0 : _c.node.id) !== node.id) {
79
+ if (this.dragOverNode)
80
+ this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
81
+ this.dragOverNode = { node, path, currentTarget };
82
+ this.addNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
83
+ }
84
+ e.preventDefault();
85
+ e.dataTransfer.dropEffect = "move";
86
+ (_e = (_d = this.props).onNodeDragOver) === null || _e === void 0 ? void 0 : _e.call(_d, node, path, e);
87
+ };
88
+ this.handleNodeDrop = (targetNode, targetPath, e, index) => {
89
+ var _a, _b;
90
+ e.preventDefault();
91
+ const source = this.dragSource;
92
+ const canDrop = !source ? false : (this.props.canDropNode ? this.props.canDropNode(source.node, source.path, targetNode, targetPath, index) : true);
93
+ if (this.dragOverNode)
94
+ this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
95
+ if (this.draggingNode)
96
+ this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
97
+ this.dragSource = null;
98
+ this.draggingNode = undefined;
99
+ (_b = (_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.classList.remove(Classes.TREE + "-dragging-node");
100
+ this.dragOverNode = undefined;
101
+ if (canDrop && source && this.props.onNodeDrop) {
102
+ this.props.onNodeDrop(source.node, source.path, targetNode, targetPath, e, index);
103
+ }
104
+ };
105
+ this.handleNodeDragEnd = (node, path, e, _index) => {
106
+ var _a, _b, _c, _d;
107
+ if (this.draggingNode)
108
+ this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
109
+ if (this.dragOverNode)
110
+ this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
111
+ this.dragSource = null;
112
+ this.draggingNode = undefined;
113
+ (_b = (_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.classList.remove(Classes.TREE + "-dragging-node");
114
+ this.dragOverNode = undefined;
115
+ (_d = (_c = this.props).onNodeDragEnd) === null || _d === void 0 ? void 0 : _d.call(_c, node, path, e);
116
+ };
117
+ this.handleNodeDragEnter = (node, path, e, _index) => {
118
+ var _a, _b;
119
+ (_b = (_a = this.props).onNodeDragEnter) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
120
+ };
121
+ this.handleNodeDragLeave = (node, path, e, _index) => {
122
+ var _a, _b;
123
+ if (this.dragOverNode)
124
+ this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
125
+ this.dragOverNode = undefined;
126
+ (_b = (_a = this.props).onNodeDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, node, path, e);
127
+ };
128
+ this.addNodeClass = (node, className, currentTarget) => {
129
+ const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
130
+ if (el)
131
+ el.classList.add(className);
132
+ if (currentTarget)
133
+ currentTarget.classList.add(className);
134
+ };
135
+ this.removeNodeClass = (node, className, currentTarget) => {
136
+ const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
137
+ if (el)
138
+ el.classList.remove(className);
139
+ if (currentTarget)
140
+ currentTarget.classList.remove(className);
141
+ };
142
+ }
143
+ static ofType() {
144
+ return Tree2;
145
+ }
146
+ static nodeFromPath(path, treeNodes) {
147
+ if (path.length === 1) {
148
+ return treeNodes[path[0]];
149
+ }
150
+ else {
151
+ return Tree2.nodeFromPath(path.slice(1), treeNodes[path[0]].childNodes);
152
+ }
153
+ }
154
+ render() {
155
+ return (_jsx("div", { className: classNames(Classes.TREE, this.props.className, {
156
+ [Classes.COMPACT]: this.props.compact,
157
+ }), ref: this.rootRef, children: this.renderNodes(this.props.contents, [], Classes.TREE_ROOT) }));
158
+ }
159
+ getNodeContentElement(nodeId) {
160
+ return this.nodeRefs[nodeId];
161
+ }
162
+ renderNodes(treeNodes, currentPath, className, parentNode) {
163
+ if (treeNodes == null) {
164
+ return null;
165
+ }
166
+ const nodeItems = treeNodes.map((node, i) => {
167
+ const elementPath = currentPath.concat(i);
168
+ const draggable = !!node.draggable;
169
+ const droppable = !!node.droppable;
170
+ const parentDroppable = !!(parentNode && parentNode.droppable);
171
+ return (_jsxs(_Fragment, { children: [parentDroppable && i === 0 && this.renderNodeSpacer(parentNode, elementPath, i), _createElement(TreeNode2, Object.assign({}, node, { key: node.id, contentRef: this.handleContentRef, depth: elementPath.length - 1, onClick: this.handleNodeClick, onContextMenu: this.handleNodeContextMenu, onCollapse: this.handleNodeCollapse, onDoubleClick: this.handleNodeDoubleClick, onExpand: this.handleNodeExpand, onMouseEnter: this.handleNodeMouseEnter, onMouseLeave: this.handleNodeMouseLeave, path: elementPath, draggable: draggable, onDragStart: draggable ? this.handleNodeDragStart : undefined, onDragEnd: draggable ? this.handleNodeDragEnd : undefined, onDragOver: droppable ? this.handleNodeDragOver : undefined, onDrop: droppable ? this.handleNodeDrop : undefined, onDragEnter: droppable ? this.handleNodeDragEnter : undefined, onDragLeave: droppable ? this.handleNodeDragLeave : undefined }), this.renderNodes(node.childNodes, elementPath, undefined, node)), parentDroppable && i >= 0 && this.renderNodeSpacer(parentNode, elementPath, i + 1)] }));
172
+ });
173
+ return _jsx("ul", { className: classNames(Classes.TREE_NODE_LIST, className), children: nodeItems });
174
+ }
175
+ }
176
+ Tree2.displayName = `${DISPLAYNAME_PREFIX}.Tree`;
177
+ //# sourceMappingURL=Tree2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree2.js","sourceRoot":"","sources":["../../../src/components/Tree2.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import * as React from "react";
2
+ import type { TreeEventHandler, TreeNodeInfo } from "@blueprintjs/core";
3
+ export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> {
4
+ children?: React.ReactNode;
5
+ contentRef?: (node: TreeNodeInfo<T>, element: HTMLDivElement | null) => void;
6
+ depth: number;
7
+ key?: string | number;
8
+ onClick?: TreeEventHandler<T>;
9
+ onCollapse?: TreeEventHandler<T>;
10
+ onContextMenu?: TreeEventHandler<T>;
11
+ onDoubleClick?: TreeEventHandler<T>;
12
+ onExpand?: TreeEventHandler<T>;
13
+ onMouseEnter?: TreeEventHandler<T>;
14
+ onMouseLeave?: TreeEventHandler<T>;
15
+ path: number[];
16
+ draggable?: boolean;
17
+ onDragStart?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
18
+ onDragOver?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
19
+ onDrop?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
20
+ onDragEnd?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
21
+ onDragEnter?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
22
+ onDragLeave?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
23
+ }
24
+ export declare class TreeNode2<T = {}> extends React.Component<TreeNodeProps<T>> {
25
+ static displayName: string;
26
+ static ofType<U>(): new (props: TreeNodeProps<U>) => TreeNode2<U>;
27
+ render(): import("react/jsx-runtime").JSX.Element;
28
+ private maybeRenderCaret;
29
+ private maybeRenderSecondaryLabel;
30
+ private handleCaretClick;
31
+ private handleClick;
32
+ private handleContentRef;
33
+ private handleContextMenu;
34
+ private handleDoubleClick;
35
+ private handleMouseEnter;
36
+ private handleMouseLeave;
37
+ private handleDragStart;
38
+ private handleDragOver;
39
+ private handleDrop;
40
+ private handleDragEnd;
41
+ private handleDragEnter;
42
+ private handleDragLeave;
43
+ }
@@ -0,0 +1,111 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from "classnames";
3
+ import * as React from "react";
4
+ import { ChevronRight } from "@blueprintjs/icons";
5
+ import { Classes, Collapse, DISPLAYNAME_PREFIX, Icon } from "@blueprintjs/core";
6
+ export class TreeNode2 extends React.Component {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.handleCaretClick = (e) => {
10
+ var _a;
11
+ e.stopPropagation();
12
+ const { isExpanded, onCollapse, onExpand } = this.props;
13
+ (_a = (isExpanded ? onCollapse : onExpand)) === null || _a === void 0 ? void 0 : _a(this.props, this.props.path, e);
14
+ };
15
+ this.handleClick = (e) => {
16
+ var _a, _b;
17
+ (_b = (_a = this.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
18
+ };
19
+ this.handleContentRef = (element) => {
20
+ var _a, _b;
21
+ (_b = (_a = this.props).contentRef) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, element);
22
+ };
23
+ this.handleContextMenu = (e) => {
24
+ var _a, _b;
25
+ (_b = (_a = this.props).onContextMenu) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
26
+ };
27
+ this.handleDoubleClick = (e) => {
28
+ var _a, _b;
29
+ (_b = (_a = this.props).onDoubleClick) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
30
+ };
31
+ this.handleMouseEnter = (e) => {
32
+ var _a, _b;
33
+ (_b = (_a = this.props).onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
34
+ };
35
+ this.handleMouseLeave = (e) => {
36
+ var _a, _b;
37
+ (_b = (_a = this.props).onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
38
+ };
39
+ this.handleDragStart = (e) => {
40
+ var _a, _b;
41
+ (_b = (_a = this.props).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
42
+ };
43
+ this.handleDragOver = (e) => {
44
+ var _a, _b;
45
+ (_b = (_a = this.props).onDragOver) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
46
+ };
47
+ this.handleDrop = (e) => {
48
+ var _a, _b;
49
+ (_b = (_a = this.props).onDrop) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
50
+ };
51
+ this.handleDragEnd = (e) => {
52
+ var _a, _b;
53
+ (_b = (_a = this.props).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
54
+ };
55
+ this.handleDragEnter = (e) => {
56
+ var _a, _b;
57
+ (_b = (_a = this.props).onDragEnter) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
58
+ };
59
+ this.handleDragLeave = (e) => {
60
+ var _a, _b;
61
+ (_b = (_a = this.props).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, this.props, this.props.path, e);
62
+ };
63
+ }
64
+ static ofType() {
65
+ return TreeNode2;
66
+ }
67
+ render() {
68
+ const { children, className, disabled, icon, isExpanded, isSelected, label, draggable } = this.props;
69
+ const classes = classNames(Classes.TREE_NODE, {
70
+ [Classes.DISABLED]: disabled,
71
+ [Classes.TREE_NODE_SELECTED]: isSelected,
72
+ [Classes.TREE_NODE_EXPANDED]: isExpanded,
73
+ }, className);
74
+ const contentClasses = classNames(Classes.TREE_NODE_CONTENT, `${Classes.TREE_NODE_CONTENT}-${this.props.depth}`);
75
+ const eventHandlers = disabled === true
76
+ ? {}
77
+ : {
78
+ onClick: this.handleClick,
79
+ onContextMenu: this.handleContextMenu,
80
+ onDoubleClick: this.handleDoubleClick,
81
+ onMouseEnter: this.handleMouseEnter,
82
+ onMouseLeave: this.handleMouseLeave,
83
+ draggable: draggable,
84
+ onDragStart: this.handleDragStart,
85
+ onDragOver: this.handleDragOver,
86
+ onDrop: this.handleDrop,
87
+ onDragEnd: this.handleDragEnd,
88
+ onDragEnter: this.handleDragEnter,
89
+ onDragLeave: this.handleDragLeave,
90
+ };
91
+ return (_jsxs("li", { className: classes, children: [_jsxs("div", Object.assign({ className: contentClasses, ref: this.handleContentRef }, eventHandlers, { children: [this.maybeRenderCaret(), _jsx(Icon, { className: Classes.TREE_NODE_ICON, icon: icon, "aria-hidden": true, tabIndex: -1 }), _jsx("span", { className: Classes.TREE_NODE_LABEL, children: label }), this.maybeRenderSecondaryLabel()] })), _jsx(Collapse, { isOpen: isExpanded, children: children })] }));
92
+ }
93
+ maybeRenderCaret() {
94
+ const { children, isExpanded, disabled, hasCaret = React.Children.count(children) > 0 } = this.props;
95
+ if (hasCaret) {
96
+ const caretClasses = classNames(Classes.TREE_NODE_CARET, isExpanded ? Classes.TREE_NODE_CARET_OPEN : Classes.TREE_NODE_CARET_CLOSED);
97
+ return (_jsx(ChevronRight, { title: isExpanded ? "Collapse group" : "Expand group", className: caretClasses, onClick: disabled === true ? undefined : this.handleCaretClick }));
98
+ }
99
+ return _jsx("span", { className: Classes.TREE_NODE_CARET_NONE });
100
+ }
101
+ maybeRenderSecondaryLabel() {
102
+ if (this.props.secondaryLabel != null) {
103
+ return _jsx("span", { className: Classes.TREE_NODE_SECONDARY_LABEL, children: this.props.secondaryLabel });
104
+ }
105
+ else {
106
+ return undefined;
107
+ }
108
+ }
109
+ }
110
+ TreeNode2.displayName = `${DISPLAYNAME_PREFIX}.TreeNode`;
111
+ //# sourceMappingURL=TreeNode2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNode2.js","sourceRoot":"","sources":["../../../src/components/TreeNode2.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import type { IconName, MaybeElement } from "@blueprintjs/core";
3
+ export interface TreeNodeInfo<T = {}> {
4
+ className?: string;
5
+ childNodes?: Array<TreeNodeInfo<T>>;
6
+ disabled?: boolean;
7
+ hasCaret?: boolean;
8
+ icon?: IconName | MaybeElement;
9
+ id: string | number;
10
+ isExpanded?: boolean;
11
+ isSelected?: boolean;
12
+ label: string | React.JSX.Element;
13
+ secondaryLabel?: string | MaybeElement;
14
+ nodeData?: T;
15
+ draggable?: boolean;
16
+ droppable?: boolean;
17
+ }
18
+ export type TreeEventHandler<T = {}> = (node: TreeNodeInfo<T>, nodePath: number[], e: React.MouseEvent<HTMLElement>) => void;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=treeTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeTypes.js","sourceRoot":"","sources":["../../../src/components/treeTypes.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "uiconfig-blueprint",
3
3
  "name:umd": "bpui",
4
- "version": "0.1.0-dev.6",
4
+ "version": "0.1.0-dev.8",
5
5
  "description": "Blueprint.js wrapper and custom components for web controls UI. To be used with uiconfig.",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
@@ -37,8 +37,8 @@
37
37
  },
38
38
  "homepage": "https://github.com/repalash/uiconfig-blueprint#readme",
39
39
  "dependencies": {
40
- "ts-browser-helpers": "^0.16.2",
41
- "uiconfig.js": "^0.1.2",
40
+ "ts-browser-helpers": "^0.17.1",
41
+ "uiconfig.js": "^0.1.5",
42
42
  "@blueprintjs/icons": "^5.11.0",
43
43
  "@blueprintjs/select": "^5.2.2",
44
44
  "blueprint-styler": "^5.0.2",
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import {Class, PartialRecord} from "ts-browser-helpers";
2
+ import {Class, getOrCall, PartialRecord} from "ts-browser-helpers";
3
3
  import {BPComponentProps, BPComponentState, UiConfigRendererContext} from "./bpComponents/BPComponent";
4
4
  import {BPFolderComponent, FolderHeadCard} from "./bpComponents/BPFolderComponent";
5
5
  import {BPTextInputComponent} from "./bpComponents/BPTextInputComponent";
@@ -59,6 +59,10 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
59
59
  render() {
60
60
  if (!this.props.config || !this.props.config.type) return (<div key={this.props.config.uuid}></div>)
61
61
  this.context.methods.initUiConfig(this.props.config)
62
+
63
+ const order = this.props.config.order ? getOrCall(this.props.config.order, this.props.config) ?? undefined : undefined
64
+ const orderStyle = {order: order && typeof order === 'string' ? parseInt(order): order}
65
+
62
66
  let type = this.props.config.type as any as UiConfigTypes
63
67
  const val = this.context.methods.getRawValue(this.props.config)
64
68
 
@@ -78,7 +82,7 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
78
82
  const enabledToggle = children[0] && this.context.methods.getLabel(children[0]).toLowerCase() === 'enabled' ? children[0] : undefined
79
83
  enabledToggle && (enabledToggle.hidden = true)
80
84
  return (
81
- <div key={this.props.config.uuid}>
85
+ <div key={this.props.config.uuid} style={orderStyle}>
82
86
  <FolderHeadCard
83
87
  enabled={enabledToggle ? this.context.methods.getRawValue(enabledToggle) : undefined}
84
88
  onEnabledChange={(e) => enabledToggle && this.context.methods.setValue(enabledToggle, e.target.checked, {}).then(() => this.setState(this.state))}
@@ -97,9 +101,12 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
97
101
  )
98
102
  }
99
103
  if (BPComp) {
100
- return (<div key={this.props.config.uuid}><BPComp {...{...this.props, isPanel: undefined}} /></div>)
104
+ return (<div key={this.props.config.uuid} style={orderStyle}><BPComp {...{...this.props, isPanel: undefined}} /></div>)
101
105
  }
102
- return (<div key={this.props.config.uuid}>Unknown type: {this.props.config.type}</div>)
106
+ return (<div key={this.props.config.uuid} style={orderStyle}>
107
+ {/*Unknown type: {this.props.config.type}*/}
108
+ </div>)
109
+ // return null
103
110
 
104
111
  // let uiRef: React.FC | BPUiRef<any> | null = this.props.uiConfig.uiRef
105
112
  // if (uiRef) {
@@ -22,19 +22,30 @@ export class UiConfigRendererBlueprint extends UiConfigRenderer {
22
22
 
23
23
  const container = createDiv({id: 'blueprintUiContainer', addToBody: false})
24
24
  createStyles(css`
25
- :root{
26
- --blueprint-ui-container-width: 300px;
27
- }
28
- @media only screen and (min-width: 1500px) {
29
- :root{
30
- --blueprint-ui-container-width: 400px;
25
+ :root {
26
+ --blueprint-ui-container-width: 300px;
31
27
  }
32
- }
33
- @media only screen and (min-width: 2500px) {
34
- :root{
35
- --blueprint-ui-container-width: 500px;
28
+
29
+ @media only screen and (min-width: 1500px) {
30
+ :root {
31
+ --blueprint-ui-container-width: 400px;
32
+ }
33
+ }
34
+ @media only screen and (min-width: 2500px) {
35
+ :root {
36
+ --blueprint-ui-container-width: 500px;
37
+ }
38
+ }
39
+
40
+ @media only screen and (min-width: 600px) {
41
+ #blueprintUiContainer {
42
+ min-width: var(--blueprint-ui-container-width);
43
+ min-height: 200px;
44
+ max-height: 100%;
45
+ max-width: 100%;
46
+ resize: both;
47
+ }
36
48
  }
37
- }
38
49
  `)
39
50
  createStyles(rendererCss)
40
51
 
@@ -2,8 +2,10 @@
2
2
  .bpButtonComponent {
3
3
  //width: 100%;
4
4
  display: flex;
5
+ flex: 1 1;
6
+ height: 100%;
5
7
  justify-content: center;
6
- flex-basis: 50%;
8
+ //min-width: 50%;
7
9
  margin: 2px 0;
8
10
  width: max-content;
9
11
  }
@@ -1,7 +1,7 @@
1
1
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
2
2
  import React from "react";
3
3
  import {BPLabelledComponent, BPLabelledComponentState} from "./BPLabelledComponent";
4
- import {Button} from "@blueprintjs/core";
4
+ import {Button, Intent} from "@blueprintjs/core";
5
5
 
6
6
  // @ts-ignore
7
7
  export class BPButtonComponent extends BPLabelledComponent<()=>void, BPLabelledComponentState> {
@@ -14,12 +14,18 @@ export class BPButtonComponent extends BPLabelledComponent<()=>void, BPLabelledC
14
14
  this.context.methods.clickButton(this.props.config, {args: [event]})
15
15
  }
16
16
 
17
+ protected flexBasis = "50%"
18
+
17
19
  render() {
18
20
  return !this.state.hidden ? (
19
- <div className="bpButtonComponent xPaddedContent">
21
+ <div className="bpButtonComponent xPaddedContent"
22
+ style={{flexBasis: this.state.baseWidth ?? this.flexBasis}}
23
+ >
20
24
  <Button className="bpButton"
21
25
  disabled={this.state.disabled}
26
+ intent={Intent.PRIMARY}
22
27
  // small={true}
28
+ fill={true}
23
29
  text={this.state.label} style={{}} onClick={this.onClick}/>
24
30
  </div>
25
31
  ) : null
@@ -95,11 +95,17 @@ export class BPColorInputComponent extends BPValueComponent<ColorRepresentation,
95
95
  document.addEventListener('mouseup', this._mouseUp)
96
96
  }
97
97
 
98
+ protected flexBasis = "100%"
99
+
98
100
  render() {
99
101
  return !this.state.hidden ? (
100
- <FormGroupComponent label={this.state.label}>
102
+ <FormGroupComponent
103
+ label={this.state.label}
104
+ flexBasis={this.state.baseWidth ?? this.flexBasis}
105
+ >
101
106
  <InputGroup inputRef={this._inputRef}
102
107
  disabled={this.state.disabled} readOnly={this.state.readOnly}
108
+ fill={true}
103
109
  leftElement={(
104
110
  <Popover
105
111
  popoverClassName={'color-picker-popover'}
@@ -12,6 +12,7 @@ export type BPComponentState = {
12
12
  hidden?: boolean
13
13
  disabled?: boolean
14
14
  readOnly?: boolean // same as disabled(for most inputs)
15
+ baseWidth?: string // for flexBasis, can be a number or a string like '50%' or '100px'
15
16
  }
16
17
  export interface UiConfigRendererBaseBp extends UiConfigRendererBase{
17
18
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -49,6 +50,7 @@ export abstract class BPComponent<TValue, TState extends BPComponentState, TProp
49
50
  const hidden = getOrCall(this.props.config.hidden) ?? false
50
51
  const disabled = getOrCall(this.props.config.disabled) ?? false
51
52
  const readOnly = getOrCall(this.props.config.readOnly) ?? false
53
+ const baseWidth = getOrCall(this.props.config.baseWidth) ?? undefined
52
54
  if(hidden !== state.hidden
53
55
  || disabled !== state.disabled
54
56
  || readOnly !== state.readOnly
@@ -58,6 +60,7 @@ export abstract class BPComponent<TValue, TState extends BPComponentState, TProp
58
60
  hidden,
59
61
  disabled,
60
62
  readOnly,
63
+ baseWidth
61
64
  }
62
65
  }
63
66
 
@@ -59,12 +59,13 @@ export class BPDropdownInputComponent extends BPInputComponent<string|number, BP
59
59
  activeItem={item}
60
60
  key={this.props.config.uuid}
61
61
  disabled={this.state.disabled}
62
+ fill={true}
62
63
  popoverProps={{
63
64
  minimal: true,
64
65
  }}
65
66
  popoverTargetProps={{
66
67
  style: {
67
- height: "100%"
68
+ height: "var(--pt-input-height)",
68
69
  }
69
70
  }}
70
71
  noResults={<MenuItem disabled={true} text="No results." roleStructure="listoption" />}
@@ -77,9 +77,20 @@ export class BPFileComponent<T extends FileImportType=FileImportType, TP = {}> e
77
77
  // return super.updateStateValue(state, last);
78
78
  // }
79
79
 
80
+ protected flexBasis = "100%"
81
+
80
82
  render() {
81
- return !this.state.hidden ? (
82
- <FormGroupComponent label={this.state.label} flexBasis={"100%"} disabled={this.state.disabled}>
83
+ let show = !this.state.hidden
84
+ // todo - document hideOnEmpty. it hides the whole component if there is no value and no preview. (used in SSReflectionPlugin)
85
+ if (show && this.props.config.hideOnEmpty && !this.state.preview && !this.state.value) {
86
+ show = false
87
+ }
88
+ return show ? (
89
+ <FormGroupComponent
90
+ label={this.state.label}
91
+ disabled={this.state.disabled}
92
+ flexBasis={this.state.baseWidth ?? this.flexBasis}
93
+ >
83
94
  <FileComponent previewSlot={this.renderPreviewSlot()} state={this.state} onChange={(s) =>
84
95
  this.updateStateValue({...this.state, preview: undefined, ...s}) // todo: set loading while this promise is happening.
85
96
  } key={this.props.config.uuid}/>