@onereach/ui-components 8.21.0 → 8.21.1-beta.4033.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 (30) hide show
  1. package/dist/bundled/v2/{OrTree-962e1cbd.js → OrTree-6428a410.js} +43 -14
  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 +43 -14
  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-66f15e1f.js} +43 -14
  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 +2818 -2
  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/partials/or-tree-node/utils.d.ts +1 -1
  16. package/dist/esm/v2/components/or-tree-v3/types.d.ts +2 -0
  17. package/dist/esm/v2/index.js +1 -1
  18. package/dist/esm/v3/{OrTree-0a8d7804.js → OrTree-171145c6.js} +43 -14
  19. package/dist/esm/v3/components/index.js +1 -1
  20. package/dist/esm/v3/components/or-tree-v3/index.js +1 -1
  21. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +3 -1
  22. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/styles.d.ts +1 -0
  23. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/utils.d.ts +1 -1
  24. package/dist/esm/v3/components/or-tree-v3/types.d.ts +2 -0
  25. package/dist/esm/v3/index.js +1 -1
  26. package/package.json +2 -3
  27. package/src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue +32 -10
  28. package/src/components/or-tree-v3/partials/or-tree-node/styles.ts +22 -4
  29. package/src/components/or-tree-v3/partials/or-tree-node/utils.ts +3 -2
  30. package/src/components/or-tree-v3/types.ts +4 -0
@@ -16,6 +16,7 @@ function inRange(num, min, max) {
16
16
  }
17
17
  function getDropOffset(e) {
18
18
  let canMiddleDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19
+ let isOpen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19
20
  const {
20
21
  clientY
21
22
  } = e;
@@ -24,7 +25,8 @@ function getDropOffset(e) {
24
25
  height
25
26
  } = e.target.getBoundingClientRect();
26
27
  const offset = Math.max((clientY - top) / height, 0); // sometimes offset is negative
27
- if (canMiddleDrop && inRange(offset, 0.4, 0.7)) {
28
+ const expandedMiddleBottomOffest = isOpen ? 1 : 0.7;
29
+ if (canMiddleDrop && inRange(offset, 0.4, expandedMiddleBottomOffest)) {
28
30
  return TreeNodeDropPosition.Middle;
29
31
  } else if (inRange(offset, 0, 0.5)) {
30
32
  return TreeNodeDropPosition.Top;
@@ -55,15 +57,25 @@ const TreeNodeDragIndicator = [
55
57
  // Interaction
56
58
  'pointer-events-none'];
57
59
  const TreeNodeDragIndicatorPosition = {
58
- top: ['top-[-1px]'],
59
- middle: ['top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
60
+ top: [
61
+ // Layout
62
+ 'top-[-1px]'],
63
+ middle: [
64
+ // Layout
65
+ 'top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
60
66
  // Theme
61
- 'bg-transparent', 'border-x-0', 'border-y-2', 'border-primary', 'dark:border-primary-dark'],
62
- bottom: ['bottom-[-1px]']
67
+ 'bg-transparent', 'border-1', 'border-primary-hover', 'dark:border-primary-hover-dark'],
68
+ bottom: [
69
+ // Layout
70
+ 'bottom-[-1px]']
63
71
  };
72
+ const ChildrenDragoverStyles = [
73
+ // Layout
74
+ 'top-[-1px]', 'left-[0px]', 'w-full', '!h-[calc(100%+2px)]',
75
+ // Theme
76
+ 'bg-transparent', 'border-1', 'border-primary-hover', 'dark:border-primary-hover-dark'];
64
77
 
65
78
  var script$1 = defineComponent({
66
- name: 'OrTreeNode',
67
79
  components: {
68
80
  OrButton: __vue_component__$2,
69
81
  OrIcon: __vue_component__$3
@@ -95,6 +107,7 @@ var script$1 = defineComponent({
95
107
  }
96
108
  },
97
109
  emits: ['drop', 'dragstart', 'click', 'expand', 'collapse', 'contextmenu'],
110
+ expose: ['isDragOver'],
98
111
  setup(props, _ref) {
99
112
  let {
100
113
  emit
@@ -102,15 +115,17 @@ var script$1 = defineComponent({
102
115
  // Refs
103
116
  const root = ref();
104
117
  const nodeRoot = ref();
118
+ const childrenTreeNodes = ref([]);
105
119
  // State
106
120
  const isDragOver = ref(false);
107
121
  const isDrag = ref(false);
108
- const dragPosition = ref('top');
122
+ const dragOverPosition = ref('top');
109
123
  const hasChildren = computed(() => !!props.node.children && props.node.children.length > 0);
110
124
  const [isOpen, setIsOpen] = useToggle(props.expanded);
111
125
  const hasCollapseTrigger = computed(() => props.node.collapsible || hasChildren.value);
112
126
  const isLeaf = computed(() => !hasChildren.value);
113
127
  const canDrag = computed(() => props.draggable !== false && props.node.draggable !== false);
128
+ const hasDragoverChildren = computed(() => childrenTreeNodes.value.some(child => child.isDragOver));
114
129
  // Effects
115
130
  watch(() => props.depth, value => {
116
131
  applyPadding(unref(nodeRoot), value, hasCollapseTrigger.value);
@@ -129,24 +144,34 @@ var script$1 = defineComponent({
129
144
  const handleDrop = e => {
130
145
  var _a;
131
146
  const nodeKey = (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('node-key');
147
+ e.currentTarget.style.cursor = 'default';
132
148
  isDragOver.value = false;
133
149
  emit('drop', {
134
150
  dropKey: props.node.key,
135
151
  dragKey: nodeKey,
136
- dropPosition: dragPosition.value
152
+ dropPosition: dragOverPosition.value
137
153
  });
138
154
  };
139
155
  const handleDragStart = e => {
140
- var _a;
156
+ var _a, _b, _c;
157
+ if (e.dataTransfer) {
158
+ e.currentTarget.style.cursor = 'grabbing';
159
+ (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData('node-key', props.node.key);
160
+ const crt = (_b = unref(nodeRoot)) === null || _b === void 0 ? void 0 : _b.cloneNode(true);
161
+ if (crt) {
162
+ crt.style.opacity = '0';
163
+ document.body.appendChild(crt);
164
+ (_c = e.dataTransfer) === null || _c === void 0 ? void 0 : _c.setDragImage(crt, 0, 0);
165
+ }
166
+ }
141
167
  isDrag.value = true;
142
168
  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
169
  emit('dragstart', props.node.key);
145
170
  };
146
171
  const handleDragOver = e => {
147
172
  e.preventDefault();
148
173
  e.stopPropagation();
149
- dragPosition.value = getDropOffset(e, props.node.canMiddleDrop || props.node.collapsible || hasChildren.value);
174
+ dragOverPosition.value = getDropOffset(e, props.node.canMiddleDrop || props.node.collapsible || hasChildren.value, isOpen.value);
150
175
  isDragOver.value = true;
151
176
  };
152
177
  const handleDragLeave = e => {
@@ -175,7 +200,7 @@ var script$1 = defineComponent({
175
200
  // Styles
176
201
  const rootStyles = computed(() => ['or-tree-node-v3', ...TreeNodeRoot]);
177
202
  const nodeStyles = computed(() => [...TreeNodeItemRoot, ...(props.parentSelected ? TreeNodeItemRootParentSelected : [])]);
178
- const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragPosition.value]]);
203
+ const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragOverPosition.value], ...(hasDragoverChildren.value ? ChildrenDragoverStyles : [])]);
179
204
  return {
180
205
  root,
181
206
  isOpen,
@@ -183,11 +208,12 @@ var script$1 = defineComponent({
183
208
  rootStyles,
184
209
  nodeStyles,
185
210
  dragIndicatorStyles,
211
+ childrenTreeNodes,
186
212
  setIsOpen,
187
213
  nodeRoot,
188
214
  isDrag,
189
215
  canDrag,
190
- dragPosition,
216
+ dragOverPosition,
191
217
  handleDragStart,
192
218
  handleDrop,
193
219
  handleCollapse,
@@ -196,6 +222,7 @@ var script$1 = defineComponent({
196
222
  handleDragOver,
197
223
  handleDragLeave,
198
224
  hasCollapseTrigger,
225
+ hasDragoverChildren,
199
226
  isDragOver
200
227
  };
201
228
  }
@@ -265,11 +292,13 @@ var __vue_render__$1 = function () {
265
292
  isDrag: _vm.isDrag,
266
293
  isDragOver: _vm.isDragOver,
267
294
  depth: _vm.depth
268
- }), _vm._v(" "), _vm.isDragOver && !_vm.isDrag ? _c('div', {
295
+ }), _vm._v(" "), _vm.hasDragoverChildren || _vm.isDragOver && !_vm.isDrag ? _c('div', {
269
296
  class: _vm.dragIndicatorStyles
270
297
  }) : _vm._e()], 2), _vm._v(" "), !_vm.isLeaf && _vm.isOpen ? _vm._l(_vm.node.children, function (child) {
271
298
  return _c('OrTreeNode', {
272
299
  key: child.key,
300
+ ref: "childrenTreeNodes",
301
+ refInFor: true,
273
302
  attrs: {
274
303
  "parent-selected": _vm.selected || undefined,
275
304
  "node": child,
@@ -1,2 +1,2 @@
1
- export { _ as default } from '../../OrTree-962e1cbd.js';
1
+ export { _ as default } from '../../OrTree-6428a410.js';
2
2
  import '../../normalize-component-6e8e3d80.js';
@@ -1 +1 @@
1
- export { _ as OrTreeV3, T as TreeNodeDropPosition } from '../../OrTree-962e1cbd.js';
1
+ export { _ as OrTreeV3, T as TreeNodeDropPosition } from '../../OrTree-6428a410.js';
@@ -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>;
@@ -202,4 +202,4 @@ export { default as useQueueV3 } from './OrToastV3/composable/useQueue.js';
202
202
  export { default as OrTooltip } from './OrTooltip/OrTooltip.js';
203
203
  export { default as OrTooltipContent } from './OrTooltipContent/OrTooltipContent.js';
204
204
  export { default as OrTooltipV3 } from './OrTooltipV3/OrTooltip.js';
205
- export { _ as OrTreeV3, T as TreeNodeDropPosition } from '../OrTree-962e1cbd.js';
205
+ export { _ as OrTreeV3, T as TreeNodeDropPosition } from '../OrTree-6428a410.js';