@onereach/ui-components 4.9.1-beta.2922.0 → 4.9.1-beta.2925.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/components/OrTreeV3/OrTree.js +104 -39
  2. package/dist/bundled/v2/components/OrTreeV3/types.d.ts +1 -0
  3. package/dist/bundled/v2/index.js +1 -1
  4. package/dist/bundled/v3/{OrTree.vue_vue_type_script_lang-211f2212.js → OrTree.vue_vue_type_script_lang-ff782a33.js} +113 -34
  5. package/dist/bundled/v3/components/OrTreeV3/OrTree.js +2 -2
  6. package/dist/bundled/v3/components/OrTreeV3/index.js +1 -1
  7. package/dist/bundled/v3/components/OrTreeV3/types.d.ts +1 -0
  8. package/dist/bundled/v3/components/index.js +1 -1
  9. package/dist/bundled/v3/index.js +2 -2
  10. package/dist/esm/v2/{OrTree-1c9d702d.js → OrTree-999f8d17.js} +104 -39
  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 +21 -9
  14. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/styles.d.ts +3 -0
  15. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/utils.d.ts +3 -0
  16. package/dist/esm/v2/components/or-tree-v3/types.d.ts +1 -0
  17. package/dist/esm/v2/index.js +1 -1
  18. package/dist/esm/v3/{OrTree-4b879734.js → OrTree-942892ac.js} +113 -34
  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 +11 -5
  22. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/styles.d.ts +3 -0
  23. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/utils.d.ts +3 -0
  24. package/dist/esm/v3/components/or-tree-v3/types.d.ts +1 -0
  25. package/dist/esm/v3/index.js +1 -1
  26. package/package.json +1 -1
  27. package/src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue +71 -32
  28. package/src/components/or-tree-v3/partials/or-tree-node/styles.ts +25 -0
  29. package/src/components/or-tree-v3/partials/or-tree-node/utils.ts +21 -0
  30. package/src/components/or-tree-v3/types.ts +2 -0
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, watch, onMounted, unref } from 'vue-demi';
1
+ import { defineComponent, ref, computed, watch, unref, onMounted } from 'vue-demi';
2
2
  import __vue_component__$2 from '../OrButtonV3/OrButton.js';
3
3
  import __vue_component__$3 from '../OrIconV3/OrIcon.js';
4
4
  import { u as useToggle } from '../../index-ec92055d.js';
@@ -15,12 +15,52 @@ import '../OrIconV3/styles.js';
15
15
  import '../OrLabelV3/props.js';
16
16
  import '../OrLabelV3/styles.js';
17
17
 
18
+ function getDropOffset(e) {
19
+ const {
20
+ clientY
21
+ } = e;
22
+ const {
23
+ top,
24
+ height
25
+ } = e.target.getBoundingClientRect();
26
+ const offset = clientY - top;
27
+ if (offset / height < 0.4) {
28
+ return 'top';
29
+ } else if (offset / height > 0.7) {
30
+ return 'bottom';
31
+ } else {
32
+ return 'middle';
33
+ }
34
+ }
35
+ function applyPadding(element, level, hasCollapseTrigger) {
36
+ const padding = level * 20 - (hasCollapseTrigger ? 20 : 0);
37
+ Object.assign(element.style, {
38
+ paddingLeft: `${padding}px`
39
+ });
40
+ }
41
+
18
42
  const TreeNodeRoot = [];
19
43
  const TreeNodeItemRoot = [
20
44
  // Layout
21
45
  'layout-row', 'py-xs', '!items-start',
22
46
  // Theme
23
47
  'hover:bg-primary-opacity-0-08', 'dark:hover:bg-primary-opacity-0-08-dark', 'selected:bg-primary-opacity-0-08', 'dark:selected:bg-primary-opacity-0-08-dark', 'selected:hover:bg-primary-opacity-0-16', 'dark:selected:hover:bg-primary-opacity-0-16-dark'];
48
+ const TreeNodeDragIndicator = [
49
+ // Layout
50
+ 'absolute h-[2px] w-full left-[0px]',
51
+ // Theme
52
+ 'bg-primary',
53
+ // Interaction
54
+ 'pointer-events-none'];
55
+ const TreeNodeDragIndicatorPosition = {
56
+ top: ['top-[-1px]'],
57
+ middle: ['top-[-1px]'
58
+ // 'top-[50%]', ????
59
+ // 'transform:-translateY(50%)',
60
+ ],
61
+
62
+ bottom: ['bottom-[-1px]']
63
+ };
24
64
 
25
65
  var script$1 = defineComponent({
26
66
  name: 'OrTreeNode',
@@ -62,22 +102,17 @@ var script$1 = defineComponent({
62
102
  // Refs
63
103
  const root = ref(null);
64
104
  const nodeRoot = ref(null);
65
- const dragOver = ref(false);
66
- const drag = ref(false);
67
105
  // State
106
+ const isDragOver = ref(false);
107
+ const isDrag = ref(false);
108
+ const dragPosition = ref('top');
68
109
  const hasChildren = computed(() => !!props.node.children && props.node.children.length > 0);
69
110
  const [isOpen, setIsOpen] = useToggle(props.expanded);
70
111
  const hasCollapseTrigger = computed(() => props.collapsible && hasChildren.value);
71
- // Methods
72
- const applyPadding = depth => {
73
- const rootElement = unref(nodeRoot);
74
- const padding = depth * 20 - (hasCollapseTrigger.value ? 20 : 0);
75
- Object.assign(rootElement.style, {
76
- paddingLeft: `${padding}px`
77
- });
78
- };
112
+ const isLeaf = computed(() => !hasChildren.value);
113
+ // Effects
79
114
  watch(() => props.depth, value => {
80
- applyPadding(value);
115
+ applyPadding(unref(nodeRoot), value, hasCollapseTrigger.value);
81
116
  });
82
117
  watch(() => props.expanded, value => {
83
118
  if (value !== undefined) {
@@ -87,24 +122,48 @@ var script$1 = defineComponent({
87
122
  immediate: true
88
123
  });
89
124
  onMounted(() => {
90
- applyPadding(props.depth);
125
+ applyPadding(unref(nodeRoot), props.depth, hasCollapseTrigger.value);
91
126
  });
127
+ // Methods
92
128
  const handleDrop = e => {
93
129
  var _a;
94
130
  const nodeKey = (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('node-key');
95
- dragOver.value = false;
131
+ isDragOver.value = false;
96
132
  emit('drop', {
97
133
  dropKey: props.node.key,
98
- dragKey: nodeKey
134
+ dragKey: nodeKey,
135
+ dropPosition: dragPosition.value
99
136
  });
100
137
  };
101
138
  const handleDragStart = e => {
102
139
  var _a;
103
- drag.value = true;
140
+ isDrag.value = true;
104
141
  setIsOpen(false);
105
142
  (_a = e === null || e === void 0 ? void 0 : e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData('node-key', props.node.key);
106
143
  emit('dragstart', props.node.key);
107
144
  };
145
+ const handleDragOver = e => {
146
+ e.preventDefault();
147
+ e.stopPropagation();
148
+ dragPosition.value = getDropOffset(e);
149
+ isDragOver.value = true;
150
+ };
151
+ const handleDragLeave = e => {
152
+ e.preventDefault();
153
+ e.stopPropagation();
154
+ isDragOver.value = false;
155
+ };
156
+ const handleContextMenu = e => {
157
+ e.preventDefault();
158
+ emit('contextmenu', {
159
+ $event: e,
160
+ nodeKey: props.node.key
161
+ });
162
+ };
163
+ const handleClick = e => {
164
+ e.preventDefault();
165
+ emit('click', props.node.key);
166
+ };
108
167
  const handleCollapse = () => {
109
168
  if (isOpen.value) {
110
169
  setIsOpen(false);
@@ -116,21 +175,28 @@ var script$1 = defineComponent({
116
175
  };
117
176
  // Styles
118
177
  const rootStyles = computed(() => ['or-tree-node-v3', ...TreeNodeRoot]);
119
- const nodeStyles = computed(() => [...TreeNodeItemRoot, ...[dragOver.value && !drag.value ? ['border-t-2', 'border-primary'] : []]]);
178
+ const nodeStyles = computed(() => [...TreeNodeItemRoot, 'relative']);
179
+ const dragIndicatorStyles = computed(() => [...TreeNodeDragIndicator, ...TreeNodeDragIndicatorPosition[dragPosition.value]]);
120
180
  return {
121
181
  root,
122
- hasChildren,
123
182
  isOpen,
183
+ isLeaf,
124
184
  rootStyles,
185
+ nodeStyles,
186
+ dragIndicatorStyles,
125
187
  setIsOpen,
126
188
  nodeRoot,
127
- drag,
189
+ isDrag,
190
+ dragPosition,
128
191
  handleDragStart,
129
192
  handleDrop,
130
193
  handleCollapse,
194
+ handleContextMenu,
195
+ handleClick,
196
+ handleDragOver,
197
+ handleDragLeave,
131
198
  hasCollapseTrigger,
132
- dragOver,
133
- nodeStyles
199
+ isDragOver
134
200
  };
135
201
  }
136
202
  });
@@ -155,7 +221,7 @@ var __vue_render__$1 = function () {
155
221
  },
156
222
  on: {
157
223
  "dragend": function ($event) {
158
- _vm.drag = false;
224
+ _vm.isDrag = false;
159
225
  },
160
226
  "dragstart": function ($event) {
161
227
  $event.stopPropagation();
@@ -163,24 +229,16 @@ var __vue_render__$1 = function () {
163
229
  },
164
230
  "dragover": function ($event) {
165
231
  $event.preventDefault();
232
+ return _vm.handleDragOver.apply(null, arguments);
166
233
  },
167
234
  "dragenter": function ($event) {
168
235
  $event.preventDefault();
169
- _vm.dragOver = true;
170
- },
171
- "dragleave": function ($event) {
172
- _vm.dragOver = false;
236
+ return _vm.handleDragOver.apply(null, arguments);
173
237
  },
238
+ "dragleave": _vm.handleDragLeave,
174
239
  "drop": _vm.handleDrop,
175
- "click": function ($event) {
176
- return _vm.$emit('click', _vm.node.key);
177
- },
178
- "contextmenu": function ($event) {
179
- return _vm.$emit('contextmenu', {
180
- $event: $event,
181
- nodeKey: _vm.node.key
182
- });
183
- }
240
+ "click": _vm.handleClick,
241
+ "contextmenu": _vm.handleContextMenu
184
242
  }
185
243
  }, [_vm.hasCollapseTrigger ? [_c('OrButton', {
186
244
  attrs: {
@@ -198,11 +256,18 @@ var __vue_render__$1 = function () {
198
256
  "icon": "arrow_right",
199
257
  "size": "l"
200
258
  }
201
- })], 1)] : _vm._e(), _vm._v(" "), _vm._t("node", null, null, {
259
+ })], 1)] : _vm._e(), _vm._v(" "), _vm._t("node", function () {
260
+ return [_vm._v("\n " + _vm._s(_vm.node.key) + "\n ")];
261
+ }, null, {
202
262
  node: _vm.node,
203
- hasChildren: _vm.hasChildren,
204
- isOpen: _vm.isOpen
205
- })], 2), _vm._v(" "), _vm.hasChildren && _vm.isOpen ? _vm._l(_vm.node.children, function (child) {
263
+ isOpen: _vm.isOpen,
264
+ isLeaf: _vm.isLeaf,
265
+ isDrag: _vm.isDrag,
266
+ isDragOver: _vm.isDragOver,
267
+ depth: _vm.depth
268
+ }), _vm._v(" "), _vm.isDragOver && !_vm.isDrag ? _c('div', {
269
+ class: _vm.dragIndicatorStyles
270
+ }) : _vm._e()], 2), _vm._v(" "), !_vm.isLeaf && _vm.isOpen ? _vm._l(_vm.node.children, function (child) {
206
271
  return _c('OrTreeNode', {
207
272
  key: child.key,
208
273
  attrs: {
@@ -7,3 +7,4 @@ export type TreeNode = {
7
7
  draggable?: boolean;
8
8
  [key: string]: any;
9
9
  };
10
+ export type TreeNodeDropPosition = 'top' | 'middle' | 'bottom';