@onereach/ui-components 4.10.2 → 4.10.3-beta.2943.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.
Files changed (49) hide show
  1. package/dist/bundled/v2/components/OrTreeV3/OrTree.js +431 -0
  2. package/dist/bundled/v2/components/OrTreeV3/OrTree.vue.d.ts +41 -0
  3. package/dist/bundled/v2/components/OrTreeV3/index.d.ts +2 -0
  4. package/dist/bundled/v2/components/OrTreeV3/index.js +15 -0
  5. package/dist/bundled/v2/components/OrTreeV3/types.d.ts +15 -0
  6. package/dist/bundled/v2/components/OrTreeV3/types.js +8 -0
  7. package/dist/bundled/v2/components/index.d.ts +1 -0
  8. package/dist/bundled/v2/components/index.js +2 -0
  9. package/dist/bundled/v2/index.js +3 -1
  10. package/dist/bundled/v3/OrTree.vue_vue_type_script_lang-ad14cc9d.js +310 -0
  11. package/dist/bundled/v3/components/OrTreeV3/OrTree.js +47 -0
  12. package/dist/bundled/v3/components/OrTreeV3/OrTree.vue.d.ts +35 -0
  13. package/dist/bundled/v3/components/OrTreeV3/index.d.ts +2 -0
  14. package/dist/bundled/v3/components/OrTreeV3/index.js +18 -0
  15. package/dist/bundled/v3/components/OrTreeV3/types.d.ts +15 -0
  16. package/dist/bundled/v3/components/OrTreeV3/types.js +8 -0
  17. package/dist/bundled/v3/components/index.d.ts +1 -0
  18. package/dist/bundled/v3/components/index.js +2 -0
  19. package/dist/bundled/v3/index.js +4 -1
  20. package/dist/esm/v2/OrTree-9e9e5025.js +428 -0
  21. package/dist/esm/v2/components/index.d.ts +1 -0
  22. package/dist/esm/v2/components/index.js +1 -0
  23. package/dist/esm/v2/components/or-tree-v3/OrTree.vue.d.ts +41 -0
  24. package/dist/esm/v2/components/or-tree-v3/index.d.ts +2 -0
  25. package/dist/esm/v2/components/or-tree-v3/index.js +7 -0
  26. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +120 -0
  27. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/styles.d.ts +6 -0
  28. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/utils.d.ts +3 -0
  29. package/dist/esm/v2/components/or-tree-v3/types.d.ts +15 -0
  30. package/dist/esm/v2/index.js +1 -0
  31. package/dist/esm/v3/OrTree-07b5540c.js +342 -0
  32. package/dist/esm/v3/components/index.d.ts +1 -0
  33. package/dist/esm/v3/components/index.js +1 -0
  34. package/dist/esm/v3/components/or-tree-v3/OrTree.vue.d.ts +35 -0
  35. package/dist/esm/v3/components/or-tree-v3/index.d.ts +2 -0
  36. package/dist/esm/v3/components/or-tree-v3/index.js +7 -0
  37. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +88 -0
  38. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/styles.d.ts +6 -0
  39. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/utils.d.ts +3 -0
  40. package/dist/esm/v3/components/or-tree-v3/types.d.ts +15 -0
  41. package/dist/esm/v3/index.js +1 -0
  42. package/package.json +2 -3
  43. package/src/components/index.ts +1 -0
  44. package/src/components/or-tree-v3/OrTree.vue +65 -0
  45. package/src/components/or-tree-v3/index.ts +2 -0
  46. package/src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue +235 -0
  47. package/src/components/or-tree-v3/partials/or-tree-node/styles.ts +60 -0
  48. package/src/components/or-tree-v3/partials/or-tree-node/utils.ts +26 -0
  49. package/src/components/or-tree-v3/types.ts +16 -0
@@ -0,0 +1,342 @@
1
+ import { defineComponent, ref, computed, watch, unref, onMounted } from 'vue-demi';
2
+ import { useToggle } from '@vueuse/core';
3
+ import { s as script$2 } from './OrButton-c2b6aa9e.js';
4
+ import { s as script$3 } from './OrIcon-62793572.js';
5
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, createBlock, withCtx, createVNode, createCommentVNode, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, Fragment, renderList } from 'vue';
6
+
7
+ var TreeNodeDropPosition;
8
+ (function (TreeNodeDropPosition) {
9
+ TreeNodeDropPosition["Top"] = "top";
10
+ TreeNodeDropPosition["Bottom"] = "bottom";
11
+ TreeNodeDropPosition["Middle"] = "middle";
12
+ })(TreeNodeDropPosition || (TreeNodeDropPosition = {}));
13
+
14
+ function inRange(num, min, max) {
15
+ return num >= min && num <= max;
16
+ }
17
+ function getDropOffset(e) {
18
+ let canMiddleDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19
+ const {
20
+ clientY
21
+ } = e;
22
+ const {
23
+ top,
24
+ height
25
+ } = e.target.getBoundingClientRect();
26
+ const offset = Math.max((clientY - top) / height, 0); // sometimes offset is negative
27
+ if (canMiddleDrop && inRange(offset, 0.4, 0.7)) {
28
+ return TreeNodeDropPosition.Middle;
29
+ } else if (inRange(offset, 0, 0.5)) {
30
+ return TreeNodeDropPosition.Top;
31
+ }
32
+ return TreeNodeDropPosition.Bottom;
33
+ }
34
+ function applyPadding(element, level, hasCollapseTrigger) {
35
+ const padding = level * 20 - (hasCollapseTrigger ? 20 : 0);
36
+ Object.assign(element.style, {
37
+ paddingLeft: `${padding}px`
38
+ });
39
+ }
40
+
41
+ const TreeNodeRoot = [];
42
+ const TreeNodeItemRoot = [
43
+ // Layout
44
+ 'layout-row', 'py-xs', '!items-start', 'relative',
45
+ // Theme
46
+ 'hover:bg-primary-opacity-0-08', 'dark:hover:bg-primary-opacity-0-08-dark', 'selected:bg-primary-opacity-0-16', 'dark:selected:bg-primary-opacity-0-16-dark', 'selected:hover:bg-primary-opacity-0-16', 'dark:selected:hover:bg-primary-opacity-0-16-dark'];
47
+ const TreeNodeItemRootParentSelected = [
48
+ // Theme
49
+ 'bg-primary-opacity-0-08', 'bg-primary-opacity-0-08-dark', 'hover:bg-primary-opacity-0-16', 'dark:hover:bg-primary-opacity-0-16-dark'];
50
+ const TreeNodeDragIndicator = [
51
+ // Layout
52
+ 'absolute h-[2px] w-full left-[0px]',
53
+ // Theme
54
+ 'bg-primary',
55
+ // Interaction
56
+ 'pointer-events-none'];
57
+ const TreeNodeDragIndicatorPosition = {
58
+ top: ['top-[-1px]'],
59
+ middle: ['top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
60
+ // Theme
61
+ 'bg-transparent', 'border-x-0', 'border-y-2', 'border-primary', 'dark:border-primary-dark'],
62
+ bottom: ['bottom-[-1px]']
63
+ };
64
+
65
+ var script$1 = defineComponent({
66
+ name: 'OrTreeNode',
67
+ components: {
68
+ OrButton: script$2,
69
+ OrIcon: script$3
70
+ },
71
+ props: {
72
+ node: {
73
+ type: Object,
74
+ required: true
75
+ },
76
+ selected: {
77
+ type: Boolean,
78
+ default: undefined
79
+ },
80
+ parentSelected: {
81
+ type: Boolean,
82
+ default: undefined
83
+ },
84
+ expanded: {
85
+ type: Boolean,
86
+ default: true
87
+ },
88
+ depth: {
89
+ type: Number,
90
+ default: 1
91
+ },
92
+ draggable: {
93
+ type: Boolean,
94
+ default: false
95
+ }
96
+ },
97
+ emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
98
+ setup(props, _ref) {
99
+ let {
100
+ emit
101
+ } = _ref;
102
+ // Refs
103
+ const root = ref();
104
+ const nodeRoot = ref();
105
+ // State
106
+ const isDragOver = ref(false);
107
+ const isDrag = ref(false);
108
+ const dragPosition = ref('top');
109
+ const hasChildren = computed(() => !!props.node.children && props.node.children.length > 0);
110
+ const [isOpen, setIsOpen] = useToggle(props.expanded);
111
+ const hasCollapseTrigger = computed(() => props.node.collapsible || hasChildren.value);
112
+ const isLeaf = computed(() => !hasChildren.value);
113
+ const canDrag = computed(() => props.draggable !== false && props.node.draggable !== false);
114
+ // Effects
115
+ watch(() => props.depth, value => {
116
+ applyPadding(unref(nodeRoot), value, hasCollapseTrigger.value);
117
+ });
118
+ watch(() => props.expanded, value => {
119
+ if (value !== undefined) {
120
+ setIsOpen(value);
121
+ }
122
+ }, {
123
+ immediate: true
124
+ });
125
+ onMounted(() => {
126
+ applyPadding(unref(nodeRoot), props.depth, hasCollapseTrigger.value);
127
+ });
128
+ // Methods
129
+ const handleDrop = e => {
130
+ var _a;
131
+ const nodeKey = (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('node-key');
132
+ isDragOver.value = false;
133
+ emit('drop', {
134
+ dropKey: props.node.key,
135
+ dragKey: nodeKey,
136
+ dropPosition: dragPosition.value
137
+ });
138
+ };
139
+ const handleDragStart = e => {
140
+ var _a;
141
+ isDrag.value = true;
142
+ setIsOpen(false);
143
+ (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData('node-key', props.node.key);
144
+ emit('dragstart', props.node.key);
145
+ };
146
+ const handleDragOver = e => {
147
+ e.preventDefault();
148
+ e.stopPropagation();
149
+ dragPosition.value = getDropOffset(e, props.node.collapsible && props.node.canMiddleDrop !== false);
150
+ isDragOver.value = true;
151
+ };
152
+ const handleDragLeave = e => {
153
+ e.preventDefault();
154
+ e.stopPropagation();
155
+ isDragOver.value = false;
156
+ };
157
+ const handleContextMenu = e => {
158
+ emit('contextmenu', Object.assign(e, {
159
+ nodeKey: props.node.key
160
+ }));
161
+ };
162
+ const handleClick = e => {
163
+ e.preventDefault();
164
+ emit('click', props.node.key);
165
+ };
166
+ const handleCollapse = () => {
167
+ if (isOpen.value) {
168
+ setIsOpen(false);
169
+ emit('collapse', props.node.key);
170
+ } else {
171
+ setIsOpen(true);
172
+ emit('expand', props.node.key);
173
+ }
174
+ };
175
+ // Styles
176
+ const rootStyles = computed(() => ['or-tree-node-v3', ...TreeNodeRoot]);
177
+ const nodeStyles = computed(() => [...TreeNodeItemRoot, ...(props.parentSelected ? TreeNodeItemRootParentSelected : [])]);
178
+ const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragPosition.value]]);
179
+ return {
180
+ root,
181
+ isOpen,
182
+ isLeaf,
183
+ rootStyles,
184
+ nodeStyles,
185
+ dragIndicatorStyles,
186
+ setIsOpen,
187
+ nodeRoot,
188
+ isDrag,
189
+ canDrag,
190
+ dragPosition,
191
+ handleDragStart,
192
+ handleDrop,
193
+ handleCollapse,
194
+ handleContextMenu,
195
+ handleClick,
196
+ handleDragOver,
197
+ handleDragLeave,
198
+ hasCollapseTrigger,
199
+ isDragOver
200
+ };
201
+ }
202
+ });
203
+
204
+ const _hoisted_1 = ["draggable", "selected"];
205
+ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
206
+ const _component_OrIcon = resolveComponent("OrIcon");
207
+ const _component_OrButton = resolveComponent("OrButton");
208
+ const _component_OrTreeNode = resolveComponent("OrTreeNode", true);
209
+ return openBlock(), createElementBlock("div", {
210
+ ref: "root",
211
+ class: normalizeClass(_ctx.rootStyles)
212
+ }, [createElementVNode("div", {
213
+ ref: "nodeRoot",
214
+ class: normalizeClass(_ctx.nodeStyles),
215
+ draggable: _ctx.canDrag ? true : undefined,
216
+ selected: _ctx.selected ? true : undefined,
217
+ onDragend: _cache[0] || (_cache[0] = $event => _ctx.isDrag = false),
218
+ onDragstart: _cache[1] || (_cache[1] = withModifiers(function () {
219
+ return _ctx.handleDragStart && _ctx.handleDragStart(...arguments);
220
+ }, ["stop"])),
221
+ onDragover: _cache[2] || (_cache[2] = withModifiers(function () {
222
+ return _ctx.handleDragOver && _ctx.handleDragOver(...arguments);
223
+ }, ["prevent"])),
224
+ onDragenter: _cache[3] || (_cache[3] = withModifiers(function () {
225
+ return _ctx.handleDragOver && _ctx.handleDragOver(...arguments);
226
+ }, ["prevent"])),
227
+ onDragleave: _cache[4] || (_cache[4] = function () {
228
+ return _ctx.handleDragLeave && _ctx.handleDragLeave(...arguments);
229
+ }),
230
+ onDrop: _cache[5] || (_cache[5] = function () {
231
+ return _ctx.handleDrop && _ctx.handleDrop(...arguments);
232
+ }),
233
+ onClick: _cache[6] || (_cache[6] = function () {
234
+ return _ctx.handleClick && _ctx.handleClick(...arguments);
235
+ }),
236
+ onContextmenu: _cache[7] || (_cache[7] = function () {
237
+ return _ctx.handleContextMenu && _ctx.handleContextMenu(...arguments);
238
+ })
239
+ }, [_ctx.hasCollapseTrigger ? (openBlock(), createBlock(_component_OrButton, {
240
+ key: 0,
241
+ variant: "link",
242
+ onClick: withModifiers(_ctx.handleCollapse, ["stop"])
243
+ }, {
244
+ default: withCtx(() => [createVNode(_component_OrIcon, {
245
+ class: normalizeClass([_ctx.isOpen ? 'rotate-90' : 'rotate-0']),
246
+ icon: "arrow_right",
247
+ size: "l"
248
+ }, null, 8 /* PROPS */, ["class"])]),
249
+ _: 1 /* STABLE */
250
+ }, 8 /* PROPS */, ["onClick"])) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "node", normalizeProps(guardReactiveProps({
251
+ node: _ctx.node,
252
+ isOpen: _ctx.isOpen,
253
+ isLeaf: _ctx.isLeaf,
254
+ isDrag: _ctx.isDrag,
255
+ isDragOver: _ctx.isDragOver,
256
+ depth: _ctx.depth
257
+ })), () => [createTextVNode(toDisplayString(_ctx.node.key), 1 /* TEXT */)]), _ctx.isDragOver && !_ctx.isDrag ? (openBlock(), createElementBlock("div", {
258
+ key: 1,
259
+ class: normalizeClass(_ctx.dragIndicatorStyles)
260
+ }, null, 2 /* CLASS */)) : createCommentVNode("v-if", true)], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_1), !_ctx.isLeaf && _ctx.isOpen ? (openBlock(true), createElementBlock(Fragment, {
261
+ key: 0
262
+ }, renderList(_ctx.node.children, child => {
263
+ return openBlock(), createBlock(_component_OrTreeNode, {
264
+ key: child.key,
265
+ "parent-selected": _ctx.selected || undefined,
266
+ node: child,
267
+ depth: _ctx.depth + 1,
268
+ selected: child.selected,
269
+ draggable: _ctx.draggable,
270
+ onDrop: _cache[8] || (_cache[8] = $event => _ctx.$emit('drop', $event)),
271
+ onDragstart: _cache[9] || (_cache[9] = $event => _ctx.$emit('dragstart', $event)),
272
+ onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('click', $event)),
273
+ onExpand: _cache[11] || (_cache[11] = $event => _ctx.$emit('expand', $event)),
274
+ onCollapse: _cache[12] || (_cache[12] = $event => _ctx.$emit('collapse', $event)),
275
+ onContextmenu: _cache[13] || (_cache[13] = (e, key) => _ctx.$emit('contextmenu', e, key))
276
+ }, {
277
+ node: withCtx(props => [renderSlot(_ctx.$slots, "node", normalizeProps(guardReactiveProps(props)))]),
278
+ _: 2 /* DYNAMIC */
279
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["parent-selected", "node", "depth", "selected", "draggable"]);
280
+ }), 128 /* KEYED_FRAGMENT */)) : createCommentVNode("v-if", true)], 2 /* CLASS */);
281
+ }
282
+
283
+ script$1.render = render$1;
284
+ script$1.__file = "src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue";
285
+
286
+ var script = defineComponent({
287
+ name: 'OrTree',
288
+ components: {
289
+ OrTreeNode: script$1
290
+ },
291
+ props: {
292
+ nodes: {
293
+ type: Array,
294
+ default: () => []
295
+ },
296
+ draggable: {
297
+ type: Boolean,
298
+ default: false
299
+ }
300
+ },
301
+ emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
302
+ setup() {
303
+ // Refs
304
+ const root = ref(null);
305
+ // Styles
306
+ const rootStyles = computed(() => ['or-tree-v3']);
307
+ return {
308
+ root,
309
+ rootStyles
310
+ };
311
+ }
312
+ });
313
+
314
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
315
+ const _component_OrTreeNode = resolveComponent("OrTreeNode");
316
+ return openBlock(), createElementBlock("div", {
317
+ ref: "root",
318
+ class: normalizeClass(_ctx.rootStyles)
319
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, item => {
320
+ return openBlock(), createBlock(_component_OrTreeNode, {
321
+ key: item.key,
322
+ node: item,
323
+ expanded: item.expanded,
324
+ selected: item.selected,
325
+ draggable: !item.hasOwnProperty('draggable') || item.draggable === null ? _ctx.draggable : item.draggable,
326
+ onDrop: _cache[0] || (_cache[0] = $event => _ctx.$emit('drop', $event)),
327
+ onDragstart: _cache[1] || (_cache[1] = $event => _ctx.$emit('dragstart', $event)),
328
+ onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('click', $event)),
329
+ onCollapse: _cache[3] || (_cache[3] = $event => _ctx.$emit('collapse', $event)),
330
+ onExpand: _cache[4] || (_cache[4] = $event => _ctx.$emit('expand', $event)),
331
+ onContextmenu: _cache[5] || (_cache[5] = $event => _ctx.$emit('contextmenu', $event))
332
+ }, {
333
+ node: withCtx(props => [renderSlot(_ctx.$slots, "node", normalizeProps(guardReactiveProps(props)))]),
334
+ _: 2 /* DYNAMIC */
335
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["node", "expanded", "selected", "draggable"]);
336
+ }), 128 /* KEYED_FRAGMENT */))], 2 /* CLASS */);
337
+ }
338
+
339
+ script.render = render;
340
+ script.__file = "src/components/or-tree-v3/OrTree.vue";
341
+
342
+ export { TreeNodeDropPosition as T, script as s };
@@ -104,3 +104,4 @@ export * from './or-toast';
104
104
  export * from './or-toast-v3';
105
105
  export * from './or-tooltip';
106
106
  export * from './or-tooltip-v3';
107
+ export * from './or-tree-v3';
@@ -115,6 +115,7 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from '../useToast-a133
115
115
  export { s as OrTooltip } from '../OrTooltip-c1006713.js';
116
116
  export { s as OrTooltipContent } from '../OrTooltipContent-c0042844.js';
117
117
  export { s as OrTooltipV3 } from '../OrTooltip-3025564a.js';
118
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from '../OrTree-07b5540c.js';
118
119
  import 'vue-demi';
119
120
  import 'vue';
120
121
  import '../style-inject.es-4c6f2515.js';
@@ -0,0 +1,35 @@
1
+ import { PropType } from 'vue-demi';
2
+ import { TreeNode } from './types';
3
+ declare const _default: import("vue-demi").DefineComponent<{
4
+ nodes: {
5
+ type: PropType<TreeNode[]>;
6
+ default: () => never[];
7
+ };
8
+ draggable: {
9
+ type: BooleanConstructor;
10
+ default: boolean;
11
+ };
12
+ }, {
13
+ root: import("vue-demi").Ref<HTMLElement | null>;
14
+ rootStyles: import("vue-demi").ComputedRef<string[]>;
15
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("drop" | "dragstart" | "click" | "expand" | "collapse" | "contextmenu")[], "drop" | "dragstart" | "click" | "expand" | "collapse" | "contextmenu", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
16
+ nodes: {
17
+ type: PropType<TreeNode[]>;
18
+ default: () => never[];
19
+ };
20
+ draggable: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ }>> & {
25
+ onDrop?: ((...args: any[]) => any) | undefined;
26
+ onDragstart?: ((...args: any[]) => any) | undefined;
27
+ onClick?: ((...args: any[]) => any) | undefined;
28
+ onExpand?: ((...args: any[]) => any) | undefined;
29
+ onCollapse?: ((...args: any[]) => any) | undefined;
30
+ onContextmenu?: ((...args: any[]) => any) | undefined;
31
+ }, {
32
+ nodes: TreeNode[];
33
+ draggable: boolean;
34
+ }>;
35
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as OrTreeV3 } from './OrTree.vue';
2
+ export * from './types';
@@ -0,0 +1,7 @@
1
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from '../../OrTree-07b5540c.js';
2
+ import 'vue-demi';
3
+ import '@vueuse/core';
4
+ import '../../OrButton-c2b6aa9e.js';
5
+ import '../../OrLoader-b79022da.js';
6
+ import 'vue';
7
+ import '../../OrIcon-62793572.js';
@@ -0,0 +1,88 @@
1
+ import { PropType } from 'vue-demi';
2
+ import { TreeNode } from '../../types';
3
+ declare const _default: import("vue-demi").DefineComponent<{
4
+ node: {
5
+ type: PropType<TreeNode>;
6
+ required: true;
7
+ };
8
+ selected: {
9
+ type: BooleanConstructor;
10
+ default: undefined;
11
+ };
12
+ parentSelected: {
13
+ type: BooleanConstructor;
14
+ default: undefined;
15
+ };
16
+ expanded: {
17
+ type: BooleanConstructor;
18
+ default: boolean;
19
+ };
20
+ depth: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
24
+ draggable: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ }, {
29
+ root: import("vue-demi").Ref<HTMLElement | undefined>;
30
+ isOpen: import("vue-demi").Ref<boolean>;
31
+ isLeaf: import("vue-demi").ComputedRef<boolean>;
32
+ rootStyles: import("vue-demi").ComputedRef<string[]>;
33
+ nodeStyles: import("vue-demi").ComputedRef<string[]>;
34
+ dragIndicatorStyles: import("vue-demi").ComputedRef<string[]>;
35
+ setIsOpen: (value?: boolean | undefined) => boolean;
36
+ nodeRoot: import("vue-demi").Ref<HTMLElement | undefined>;
37
+ isDrag: import("vue-demi").Ref<boolean>;
38
+ canDrag: import("vue-demi").ComputedRef<boolean>;
39
+ dragPosition: import("vue-demi").Ref<"top" | "bottom" | "middle">;
40
+ handleDragStart: (e: DragEvent) => void;
41
+ handleDrop: (e: DragEvent) => void;
42
+ handleCollapse: () => void;
43
+ handleContextMenu: (e: MouseEvent) => void;
44
+ handleClick: (e: MouseEvent) => void;
45
+ handleDragOver: (e: DragEvent) => void;
46
+ handleDragLeave: (e: DragEvent) => void;
47
+ hasCollapseTrigger: import("vue-demi").ComputedRef<boolean>;
48
+ isDragOver: import("vue-demi").Ref<boolean>;
49
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("drop" | "dragstart" | "click" | "expand" | "collapse" | "contextmenu")[], "drop" | "dragstart" | "click" | "expand" | "collapse" | "contextmenu", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
50
+ node: {
51
+ type: PropType<TreeNode>;
52
+ required: true;
53
+ };
54
+ selected: {
55
+ type: BooleanConstructor;
56
+ default: undefined;
57
+ };
58
+ parentSelected: {
59
+ type: BooleanConstructor;
60
+ default: undefined;
61
+ };
62
+ expanded: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ depth: {
67
+ type: NumberConstructor;
68
+ default: number;
69
+ };
70
+ draggable: {
71
+ type: BooleanConstructor;
72
+ default: boolean;
73
+ };
74
+ }>> & {
75
+ onDrop?: ((...args: any[]) => any) | undefined;
76
+ onDragstart?: ((...args: any[]) => any) | undefined;
77
+ onClick?: ((...args: any[]) => any) | undefined;
78
+ onExpand?: ((...args: any[]) => any) | undefined;
79
+ onCollapse?: ((...args: any[]) => any) | undefined;
80
+ onContextmenu?: ((...args: any[]) => any) | undefined;
81
+ }, {
82
+ selected: boolean;
83
+ parentSelected: boolean;
84
+ expanded: boolean;
85
+ depth: number;
86
+ draggable: boolean;
87
+ }>;
88
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { TreeNodeDropPosition } from '../../types';
2
+ export declare const TreeNodeRoot: never[];
3
+ export declare const TreeNodeItemRoot: string[];
4
+ export declare const TreeNodeItemRootParentSelected: string[];
5
+ export declare const TreeNodeDragIndicator: string[];
6
+ export declare const TreeNodeDragIndicatorPosition: Record<TreeNodeDropPosition, string[]>;
@@ -0,0 +1,3 @@
1
+ import { TreeNodeDropPosition } from '../../types';
2
+ export declare function getDropOffset(e: DragEvent, canMiddleDrop?: boolean): TreeNodeDropPosition;
3
+ export declare function applyPadding(element: HTMLElement, level: number, hasCollapseTrigger: boolean): void;
@@ -0,0 +1,15 @@
1
+ export type TreeNode = {
2
+ key: string;
3
+ children?: TreeNode[];
4
+ collapsible?: boolean;
5
+ expanded?: boolean;
6
+ selected?: boolean;
7
+ draggable?: boolean;
8
+ [key: string]: any;
9
+ canMiddleDrop?: boolean;
10
+ };
11
+ export declare enum TreeNodeDropPosition {
12
+ Top = "top",
13
+ Bottom = "bottom",
14
+ Middle = "middle"
15
+ }
@@ -115,6 +115,7 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from './useToast-a1332
115
115
  export { s as OrTooltip } from './OrTooltip-c1006713.js';
116
116
  export { s as OrTooltipContent } from './OrTooltipContent-c0042844.js';
117
117
  export { s as OrTooltipV3 } from './OrTooltip-3025564a.js';
118
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from './OrTree-07b5540c.js';
118
119
  export { D as DropdownClose, a as DropdownOpen } from './dropdown-open-e1f90e0a.js';
119
120
  export { u as useControlAttributes, a as useIdAttribute } from './useIdAttribute-859439f0.js';
120
121
  export { u as useElevation } from './useElevation-a50ec347.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onereach/ui-components",
3
- "version": "4.10.2",
3
+ "version": "4.10.3-beta.2943.0",
4
4
  "description": "Vue components library for v2/3",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/auto/index.js",
@@ -154,6 +154,5 @@
154
154
  "default": "./dist/bundled/v3/components/*/index.js"
155
155
  },
156
156
  "./package.json": "./package.json"
157
- },
158
- "gitHead": "d5d6d88a083ea4049936f2f5290eed1ea5cab305"
157
+ }
159
158
  }
@@ -104,3 +104,4 @@ export * from './or-toast';
104
104
  export * from './or-toast-v3';
105
105
  export * from './or-tooltip';
106
106
  export * from './or-tooltip-v3';
107
+ export * from './or-tree-v3';
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <div
3
+ ref="root"
4
+ :class="rootStyles"
5
+ >
6
+ <OrTreeNode
7
+ v-for="item in nodes"
8
+ :key="item.key"
9
+ :node="item"
10
+ :expanded="item.expanded"
11
+ :selected="item.selected"
12
+ :draggable="(!item.hasOwnProperty('draggable') || item.draggable === null) ? draggable : item.draggable"
13
+ @drop="$emit('drop', $event)"
14
+ @dragstart="$emit('dragstart', $event)"
15
+ @click="$emit('click', $event)"
16
+ @collapse="$emit('collapse', $event)"
17
+ @expand="$emit('expand', $event)"
18
+ @contextmenu="$emit('contextmenu', $event)"
19
+ >
20
+ <template v-slot:node="props">
21
+ <slot
22
+ name="node"
23
+ v-bind="props"
24
+ />
25
+ </template>
26
+ </OrTreeNode>
27
+ </div>
28
+ </template>
29
+ <script lang="ts">
30
+ import { defineComponent, PropType, ref, computed } from 'vue-demi';
31
+ import OrTreeNode from './partials/or-tree-node/OrTreeNode.vue';
32
+ import { TreeNode } from './types';
33
+
34
+ export default defineComponent({
35
+ name: 'OrTree',
36
+ components: {
37
+ OrTreeNode,
38
+ },
39
+ props: {
40
+ nodes: {
41
+ type: Array as PropType<TreeNode[]>,
42
+ default: () => [],
43
+ },
44
+ draggable: {
45
+ type: Boolean,
46
+ default: false,
47
+ },
48
+ },
49
+ emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
50
+ setup() {
51
+ // Refs
52
+ const root = ref<HTMLElement | null>(null);
53
+
54
+ // Styles
55
+ const rootStyles = computed(() => [
56
+ 'or-tree-v3',
57
+ ]);
58
+
59
+ return {
60
+ root,
61
+ rootStyles,
62
+ };
63
+ },
64
+ });
65
+ </script>
@@ -0,0 +1,2 @@
1
+ export { default as OrTreeV3 } from './OrTree.vue';
2
+ export * from './types';