@onereach/ui-components 8.19.3 → 8.19.4-beta.3979.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 (27) hide show
  1. package/dist/bundled/v2/{OrTree-962e1cbd.js → OrTree-7fe33341.js} +20 -5
  2. package/dist/bundled/v2/components/OrTreeV3/OrTree.js +1 -1
  3. package/dist/bundled/v2/components/OrTreeV3/index.js +1 -1
  4. package/dist/bundled/v2/components/OrTreeV3/types.d.ts +2 -0
  5. package/dist/bundled/v2/components/index.js +1 -1
  6. package/dist/bundled/v2/index.js +2 -2
  7. package/dist/bundled/v3/components/OrTreeV3/index.js +20 -5
  8. package/dist/bundled/v3/components/OrTreeV3/types.d.ts +2 -0
  9. package/dist/bundled/v3/index.js +1 -1
  10. package/dist/esm/v2/{OrTree-a485bc1d.js → OrTree-776198d7.js} +20 -5
  11. package/dist/esm/v2/components/index.js +1 -1
  12. package/dist/esm/v2/components/or-tree-v3/index.js +1 -1
  13. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +2816 -0
  14. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/styles.d.ts +1 -0
  15. package/dist/esm/v2/components/or-tree-v3/types.d.ts +2 -0
  16. package/dist/esm/v2/index.js +1 -1
  17. package/dist/esm/v3/{OrTree-0a8d7804.js → OrTree-b0994048.js} +20 -5
  18. package/dist/esm/v3/components/index.js +1 -1
  19. package/dist/esm/v3/components/or-tree-v3/index.js +1 -1
  20. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +2 -0
  21. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/styles.d.ts +1 -0
  22. package/dist/esm/v3/components/or-tree-v3/types.d.ts +2 -0
  23. package/dist/esm/v3/index.js +1 -1
  24. package/package.json +2 -3
  25. package/src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue +21 -4
  26. package/src/components/or-tree-v3/partials/or-tree-node/styles.ts +14 -1
  27. package/src/components/or-tree-v3/types.ts +4 -0
@@ -4,3 +4,4 @@ export declare const TreeNodeItemRoot: string[];
4
4
  export declare const TreeNodeItemRootParentSelected: string[];
5
5
  export declare const TreeNodeDragIndicator: string[];
6
6
  export declare const TreeNodeDragIndicatorPosition: Record<TreeNodeDropPosition, string[]>;
7
+ export declare const ChildrenDragoverStyles: string[];
@@ -1,3 +1,4 @@
1
+ import OrTreeNode from './or-tree-node/OrTreeNode.vue';
1
2
  export type TreeNode = {
2
3
  key: string;
3
4
  children?: TreeNode[];
@@ -13,3 +14,4 @@ export declare enum TreeNodeDropPosition {
13
14
  Bottom = "bottom",
14
15
  Middle = "middle"
15
16
  }
17
+ export type TreeNodeType = InstanceType<typeof OrTreeNode>;
@@ -143,7 +143,7 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from './useToast-5aa9d
143
143
  export { _ as OrTooltip } from './OrTooltip-89b494f8.js';
144
144
  export { _ as OrTooltipContent } from './OrTooltipContent-57a25502.js';
145
145
  export { _ as OrTooltipV3 } from './OrTooltip-802dcc86.js';
146
- export { _ as OrTreeV3, T as TreeNodeDropPosition } from './OrTree-a485bc1d.js';
146
+ export { _ as OrTreeV3, T as TreeNodeDropPosition } from './OrTree-776198d7.js';
147
147
  export { D as DropdownClose, a as DropdownOpen } from './dropdown-open-06d651cf.js';
148
148
  export { u as useControlAttributes, a as useIdAttribute } from './useIdAttribute-859439f0.js';
149
149
  export { u as useElevation } from './useElevation-a50ec347.js';
@@ -58,12 +58,14 @@ const TreeNodeDragIndicatorPosition = {
58
58
  top: ['top-[-1px]'],
59
59
  middle: ['top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
60
60
  // Theme
61
- 'bg-transparent', 'border-x-0', 'border-y-2', 'border-primary', 'dark:border-primary-dark'],
61
+ 'bg-transparent', 'border-x-2', 'border-y-2', 'border-primary', 'dark:border-primary-dark'],
62
62
  bottom: ['bottom-[-1px]']
63
63
  };
64
+ const ChildrenDragoverStyles = ['top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
65
+ // Theme
66
+ 'bg-transparent', 'border-x-2', 'border-y-2', 'border-primary', 'dark:border-primary-dark'];
64
67
 
65
68
  var script$1 = defineComponent({
66
- name: 'OrTreeNode',
67
69
  components: {
68
70
  OrButton: script$2,
69
71
  OrIcon: script$3
@@ -95,6 +97,7 @@ var script$1 = defineComponent({
95
97
  }
96
98
  },
97
99
  emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
100
+ expose: ['isDragOver'],
98
101
  setup(props, _ref) {
99
102
  let {
100
103
  emit
@@ -102,6 +105,7 @@ var script$1 = defineComponent({
102
105
  // Refs
103
106
  const root = ref();
104
107
  const nodeRoot = ref();
108
+ const childrenTreeNodes = ref([]);
105
109
  // State
106
110
  const isDragOver = ref(false);
107
111
  const isDrag = ref(false);
@@ -111,6 +115,7 @@ var script$1 = defineComponent({
111
115
  const hasCollapseTrigger = computed(() => props.node.collapsible || hasChildren.value);
112
116
  const isLeaf = computed(() => !hasChildren.value);
113
117
  const canDrag = computed(() => props.draggable !== false && props.node.draggable !== false);
118
+ const hasDragoverChildren = computed(() => childrenTreeNodes.value.some(child => child.isDragOver));
114
119
  // Effects
115
120
  watch(() => props.depth, value => {
116
121
  applyPadding(unref(nodeRoot), value, hasCollapseTrigger.value);
@@ -137,10 +142,16 @@ var script$1 = defineComponent({
137
142
  });
138
143
  };
139
144
  const handleDragStart = e => {
140
- var _a;
145
+ var _a, _b, _c;
141
146
  isDrag.value = true;
142
147
  setIsOpen(false);
143
148
  (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData('node-key', props.node.key);
149
+ const crt = (_b = unref(nodeRoot)) === null || _b === void 0 ? void 0 : _b.cloneNode(true);
150
+ if (crt) {
151
+ crt.style.opacity = '0';
152
+ document.body.appendChild(crt);
153
+ (_c = e.dataTransfer) === null || _c === void 0 ? void 0 : _c.setDragImage(crt, 0, 0);
154
+ }
144
155
  emit('dragstart', props.node.key);
145
156
  };
146
157
  const handleDragOver = e => {
@@ -175,7 +186,7 @@ var script$1 = defineComponent({
175
186
  // Styles
176
187
  const rootStyles = computed(() => ['or-tree-node-v3', ...TreeNodeRoot]);
177
188
  const nodeStyles = computed(() => [...TreeNodeItemRoot, ...(props.parentSelected ? TreeNodeItemRootParentSelected : [])]);
178
- const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragPosition.value]]);
189
+ const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragPosition.value], ...(hasDragoverChildren.value ? ChildrenDragoverStyles : [])]);
179
190
  return {
180
191
  root,
181
192
  isOpen,
@@ -183,6 +194,7 @@ var script$1 = defineComponent({
183
194
  rootStyles,
184
195
  nodeStyles,
185
196
  dragIndicatorStyles,
197
+ childrenTreeNodes,
186
198
  setIsOpen,
187
199
  nodeRoot,
188
200
  isDrag,
@@ -196,6 +208,7 @@ var script$1 = defineComponent({
196
208
  handleDragOver,
197
209
  handleDragLeave,
198
210
  hasCollapseTrigger,
211
+ hasDragoverChildren,
199
212
  isDragOver
200
213
  };
201
214
  }
@@ -254,7 +267,7 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
254
267
  isDrag: _ctx.isDrag,
255
268
  isDragOver: _ctx.isDragOver,
256
269
  depth: _ctx.depth
257
- })), () => [createTextVNode(toDisplayString(_ctx.node.key), 1 /* TEXT */)]), _ctx.isDragOver && !_ctx.isDrag ? (openBlock(), createElementBlock("div", {
270
+ })), () => [createTextVNode(toDisplayString(_ctx.node.key), 1 /* TEXT */)]), _ctx.hasDragoverChildren || _ctx.isDragOver && !_ctx.isDrag ? (openBlock(), createElementBlock("div", {
258
271
  key: 1,
259
272
  class: normalizeClass(_ctx.dragIndicatorStyles)
260
273
  }, null, 2 /* CLASS */)) : createCommentVNode("v-if", true)], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_1), !_ctx.isLeaf && _ctx.isOpen ? (openBlock(true), createElementBlock(Fragment, {
@@ -262,6 +275,8 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
262
275
  }, renderList(_ctx.node.children, child => {
263
276
  return openBlock(), createBlock(_component_OrTreeNode, {
264
277
  key: child.key,
278
+ ref_for: true,
279
+ ref: "childrenTreeNodes",
265
280
  "parent-selected": _ctx.selected || undefined,
266
281
  node: child,
267
282
  depth: _ctx.depth + 1,
@@ -139,7 +139,7 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from '../useToast-5aa9
139
139
  export { s as OrTooltip } from '../OrTooltip-ac7736a3.js';
140
140
  export { s as OrTooltipContent } from '../OrTooltipContent-c0042844.js';
141
141
  export { s as OrTooltipV3 } from '../OrTooltip-20d8d2f3.js';
142
- export { s as OrTreeV3, T as TreeNodeDropPosition } from '../OrTree-0a8d7804.js';
142
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from '../OrTree-b0994048.js';
143
143
  import 'vue-demi';
144
144
  import 'vue';
145
145
  import '../style-inject.es-4c6f2515.js';
@@ -1,4 +1,4 @@
1
- export { s as OrTreeV3, T as TreeNodeDropPosition } from '../../OrTree-0a8d7804.js';
1
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from '../../OrTree-b0994048.js';
2
2
  import 'vue-demi';
3
3
  import '@vueuse/core';
4
4
  import '../../OrButton-a881b13b.js';
@@ -32,6 +32,7 @@ declare const _default: import("vue-demi").DefineComponent<{
32
32
  rootStyles: import("vue-demi").ComputedRef<string[]>;
33
33
  nodeStyles: import("vue-demi").ComputedRef<string[]>;
34
34
  dragIndicatorStyles: import("vue-demi").ComputedRef<string[]>;
35
+ childrenTreeNodes: import("vue-demi").Ref<any[]>;
35
36
  setIsOpen: (value?: boolean | undefined) => boolean;
36
37
  nodeRoot: import("vue-demi").Ref<HTMLElement | undefined>;
37
38
  isDrag: import("vue-demi").Ref<boolean>;
@@ -45,6 +46,7 @@ declare const _default: import("vue-demi").DefineComponent<{
45
46
  handleDragOver: (e: DragEvent) => void;
46
47
  handleDragLeave: (e: DragEvent) => void;
47
48
  hasCollapseTrigger: import("vue-demi").ComputedRef<boolean>;
49
+ hasDragoverChildren: import("vue-demi").ComputedRef<boolean>;
48
50
  isDragOver: import("vue-demi").Ref<boolean>;
49
51
  }, 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
52
  node: {
@@ -4,3 +4,4 @@ export declare const TreeNodeItemRoot: string[];
4
4
  export declare const TreeNodeItemRootParentSelected: string[];
5
5
  export declare const TreeNodeDragIndicator: string[];
6
6
  export declare const TreeNodeDragIndicatorPosition: Record<TreeNodeDropPosition, string[]>;
7
+ export declare const ChildrenDragoverStyles: string[];
@@ -1,3 +1,4 @@
1
+ import OrTreeNode from './or-tree-node/OrTreeNode.vue';
1
2
  export type TreeNode = {
2
3
  key: string;
3
4
  children?: TreeNode[];
@@ -13,3 +14,4 @@ export declare enum TreeNodeDropPosition {
13
14
  Bottom = "bottom",
14
15
  Middle = "middle"
15
16
  }
17
+ export type TreeNodeType = InstanceType<typeof OrTreeNode>;
@@ -139,7 +139,7 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from './useToast-5aa9d
139
139
  export { s as OrTooltip } from './OrTooltip-ac7736a3.js';
140
140
  export { s as OrTooltipContent } from './OrTooltipContent-c0042844.js';
141
141
  export { s as OrTooltipV3 } from './OrTooltip-20d8d2f3.js';
142
- export { s as OrTreeV3, T as TreeNodeDropPosition } from './OrTree-0a8d7804.js';
142
+ export { s as OrTreeV3, T as TreeNodeDropPosition } from './OrTree-b0994048.js';
143
143
  export { D as DropdownClose, a as DropdownOpen } from './dropdown-open-06d651cf.js';
144
144
  export { u as useControlAttributes, a as useIdAttribute } from './useIdAttribute-859439f0.js';
145
145
  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": "8.19.3",
3
+ "version": "8.19.4-beta.3979.0",
4
4
  "npmUnpacked": "4.15.2",
5
5
  "description": "Vue components library for v2/3",
6
6
  "sideEffects": false,
@@ -177,6 +177,5 @@
177
177
  "default": "./dist/bundled/v3/components/*/index.js"
178
178
  },
179
179
  "./package.json": "./package.json"
180
- },
181
- "gitHead": "33d7530480f6622df003b82190d6f2548ccc4a37"
180
+ }
182
181
  }
@@ -38,7 +38,7 @@
38
38
  {{ node.key }}
39
39
  </slot>
40
40
  <div
41
- v-if="isDragOver && !isDrag"
41
+ v-if="hasDragoverChildren || isDragOver && !isDrag"
42
42
  :class="dragIndicatorStyles"
43
43
  />
44
44
  </div>
@@ -48,6 +48,7 @@
48
48
  <OrTreeNode
49
49
  v-for="child in node.children"
50
50
  :key="child.key"
51
+ ref="childrenTreeNodes"
51
52
  :parent-selected="selected || undefined"
52
53
  :node="child"
53
54
  :depth="depth + 1"
@@ -76,11 +77,10 @@ import { useToggle } from '@vueuse/core';
76
77
  import { OrButtonV3 as OrButton } from '../../../or-button-v3';
77
78
  import { OrIconV3 as OrIcon } from '../../../or-icon-v3';
78
79
  import { getDropOffset, applyPadding } from './utils';
79
- import { TreeNode, TreeNodeDropPosition } from '../../types';
80
- import { TreeNodeRoot, TreeNodeItemRoot, TreeNodeDragIndicator, TreeNodeDragIndicatorPosition, TreeNodeItemRootParentSelected } from './styles';
80
+ import { TreeNode, TreeNodeDropPosition, TreeNodeType } from '../../types';
81
+ import { TreeNodeRoot, TreeNodeItemRoot, TreeNodeDragIndicator, TreeNodeDragIndicatorPosition, TreeNodeItemRootParentSelected, ChildrenDragoverStyles } from './styles';
81
82
 
82
83
  export default defineComponent({
83
- name: 'OrTreeNode',
84
84
  components: {
85
85
  OrButton,
86
86
  OrIcon,
@@ -112,10 +112,12 @@ export default defineComponent({
112
112
  },
113
113
  },
114
114
  emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
115
+ expose: ['isDragOver'],
115
116
  setup(props, { emit }) {
116
117
  // Refs
117
118
  const root = ref<HTMLElement>();
118
119
  const nodeRoot = ref<HTMLElement>();
120
+ const childrenTreeNodes = ref<TreeNodeType[]>([]);
119
121
 
120
122
  // State
121
123
  const isDragOver = ref(false);
@@ -126,6 +128,8 @@ export default defineComponent({
126
128
  const hasCollapseTrigger = computed(() => props.node.collapsible || hasChildren.value);
127
129
  const isLeaf = computed(() => !hasChildren.value);
128
130
  const canDrag = computed(() => props.draggable !== false && props.node.draggable !== false);
131
+ const hasDragoverChildren = computed(() => childrenTreeNodes.value.some((child) => child.isDragOver));
132
+
129
133
  // Effects
130
134
  watch(() => props.depth, (value) => {
131
135
  applyPadding(unref(nodeRoot)!, value, hasCollapseTrigger.value);
@@ -157,7 +161,16 @@ export default defineComponent({
157
161
  const handleDragStart = (e: DragEvent) => {
158
162
  isDrag.value = true;
159
163
  setIsOpen(false);
164
+
160
165
  e?.dataTransfer?.setData('node-key', props.node.key);
166
+
167
+ const crt = unref(nodeRoot)?.cloneNode(true) as HTMLElement;
168
+ if (crt) {
169
+ crt.style.opacity = '0';
170
+ document.body.appendChild(crt);
171
+ e.dataTransfer?.setDragImage(crt, 0, 0);
172
+ }
173
+
161
174
  emit('dragstart', props.node.key);
162
175
  };
163
176
 
@@ -192,6 +205,7 @@ export default defineComponent({
192
205
  emit('expand', props.node.key);
193
206
  }
194
207
  };
208
+
195
209
  // Styles
196
210
  const rootStyles = computed(() => [
197
211
  'or-tree-node-v3',
@@ -206,6 +220,7 @@ export default defineComponent({
206
220
  const dragIndicatorStyles = computed(() => [
207
221
  ...TreeNodeDragIndicator,
208
222
  ...TreeNodeDragIndicatorPosition[dragPosition.value],
223
+ ...(hasDragoverChildren.value ? ChildrenDragoverStyles : []),
209
224
  ]);
210
225
 
211
226
  return {
@@ -215,6 +230,7 @@ export default defineComponent({
215
230
  rootStyles,
216
231
  nodeStyles,
217
232
  dragIndicatorStyles,
233
+ childrenTreeNodes,
218
234
  setIsOpen,
219
235
  nodeRoot,
220
236
  isDrag,
@@ -228,6 +244,7 @@ export default defineComponent({
228
244
  handleDragOver,
229
245
  handleDragLeave,
230
246
  hasCollapseTrigger,
247
+ hasDragoverChildren,
231
248
  isDragOver,
232
249
  };
233
250
  },
@@ -49,7 +49,7 @@ export const TreeNodeDragIndicatorPosition: Record<TreeNodeDropPosition, string[
49
49
 
50
50
  // Theme
51
51
  'bg-transparent',
52
- 'border-x-0',
52
+ 'border-x-2',
53
53
  'border-y-2',
54
54
  'border-primary',
55
55
  'dark:border-primary-dark',
@@ -58,3 +58,16 @@ export const TreeNodeDragIndicatorPosition: Record<TreeNodeDropPosition, string[
58
58
  'bottom-[-1px]',
59
59
  ],
60
60
  };
61
+
62
+ export const ChildrenDragoverStyles: string[] = [
63
+ 'top-[-1px]',
64
+ 'left-[0px]',
65
+ 'w-full',
66
+ '!h-[calc(100%+2px)]',
67
+ // Theme
68
+ 'bg-transparent',
69
+ 'border-x-2',
70
+ 'border-y-2',
71
+ 'border-primary',
72
+ 'dark:border-primary-dark',
73
+ ];
@@ -1,3 +1,5 @@
1
+ import OrTreeNode from './or-tree-node/OrTreeNode.vue';
2
+
1
3
  export type TreeNode = {
2
4
  key: string;
3
5
  children?: TreeNode[];
@@ -14,3 +16,5 @@ export enum TreeNodeDropPosition {
14
16
  Bottom = 'bottom',
15
17
  Middle = 'middle',
16
18
  }
19
+
20
+ export type TreeNodeType = InstanceType<typeof OrTreeNode>;