Skip to content

Commit d1ab4a5

Browse files
Refactoring
1 parent 1d79205 commit d1ab4a5

File tree

3 files changed

+25
-25
lines changed

3 files changed

+25
-25
lines changed

src/core/renderHelper.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,32 @@ function getSlot(slots, key) {
66
return slotValue ? slotValue() : [];
77
}
88

9+
function isTransition(nodes) {
10+
if (nodes.length !== 1) {
11+
return false;
12+
}
13+
const [{ type }] = nodes;
14+
return !!type && (isTransitionName(type) || isTransitionName(type.name));
15+
}
16+
917
function computeChildrenAndNodes(slots) {
1018
const [header, defaultNodes, footer] = [
1119
"header",
1220
"default",
1321
"footer"
1422
].map(name => getSlot(slots, name));
23+
const transitionMode = isTransition(defaultNodes);
1524
return {
1625
children: [...header, ...defaultNodes, ...footer],
26+
transitionMode,
1727
nodes: {
1828
header,
1929
footer,
2030
default: defaultNodes
31+
},
32+
offsets: {
33+
header: header.length,
34+
footer: footer.length
2135
}
2236
};
2337
}
@@ -33,18 +47,11 @@ function solveTag(tag) {
3347

3448
function computeRenderContext({ $slots, tag }) {
3549
const childrenAndNodes = computeChildrenAndNodes($slots);
36-
const {
37-
nodes: { header, footer }
38-
} = childrenAndNodes;
3950
const tagInformation = solveTag(tag);
4051

4152
return {
4253
...tagInformation,
43-
...childrenAndNodes,
44-
offsets: {
45-
header: header.length,
46-
footer: footer.length
47-
}
54+
...childrenAndNodes
4855
};
4956
}
5057

src/vuedraggable.js

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
getValidSortableEntries
99
} from "./core/componentBuilderHelper";
1010
import { computeRenderContext } from "./core/renderHelper";
11-
import { h, defineComponent, nextTick, resolveComponent } from "vue";
11+
import { h, defineComponent, nextTick } from "vue";
1212

1313
function computeVmIndex(vNodes, element) {
1414
const domElements = vNodes.map(({ el }) => el);
@@ -53,14 +53,6 @@ function manageAndEmit(evtName) {
5353
};
5454
}
5555

56-
function isTransition(slots) {
57-
if (!slots || slots.length !== 1) {
58-
return false;
59-
}
60-
const [{ type }] = slots;
61-
return !!type && (isTransitionName(type) || isTransitionName(type.name));
62-
}
63-
6456
let draggingElement = null;
6557

6658
const props = {
@@ -104,7 +96,6 @@ const draggableComponent = defineComponent({
10496

10597
data() {
10698
return {
107-
transitionMode: false,
10899
noneFunctionalComponentMode: false
109100
};
110101
},
@@ -117,7 +108,6 @@ const draggableComponent = defineComponent({
117108
const mainNode = h(renderContext.tag, attributes, renderContext.children);
118109

119110
this.renderContext = renderContext;
120-
this.transitionMode = isTransition(renderContext.nodes.default);
121111
this.noneFunctionalComponentMode =
122112
renderContext.externalComponent && typeof mainNode.type !== "function";
123113
return mainNode;
@@ -137,7 +127,7 @@ const draggableComponent = defineComponent({
137127
$attrs,
138128
rootContainer,
139129
noneFunctionalComponentMode,
140-
transitionMode
130+
renderContext: { transitionMode }
141131
} = this;
142132
if (noneFunctionalComponentMode && transitionMode) {
143133
throw new Error(
@@ -164,7 +154,10 @@ const draggableComponent = defineComponent({
164154

165155
computed: {
166156
rootContainer() {
167-
const { $el, transitionMode } = this;
157+
const {
158+
$el,
159+
renderContext: { transitionMode }
160+
} = this;
168161
if (!transitionMode) {
169162
return $el;
170163
}
@@ -209,8 +202,8 @@ const draggableComponent = defineComponent({
209202
getChildrenNodes() {
210203
const {
211204
noneFunctionalComponentMode,
212-
transitionMode,
213205
renderContext: {
206+
transitionMode,
214207
nodes: { default: defaultNodes }
215208
}
216209
} = this;
@@ -240,7 +233,7 @@ const draggableComponent = defineComponent({
240233
this.visibleIndexes = computeIndexes(
241234
this.getChildrenNodes(),
242235
this.rootContainer.children,
243-
this.transitionMode,
236+
this.renderContext.transitionMode,
244237
this.renderContext.offsets.footer
245238
);
246239
});

tests/unit/vuedraggable.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -969,7 +969,7 @@ describe("draggable.vue when initialized with modelValue", () => {
969969
});
970970

971971
it("transition mode should be false", () => {
972-
expect(vm.transitionMode).toBe(false);
972+
expect(vm.renderContext.transitionMode).toBe(false);
973973
});
974974

975975
describe("when initiating a drag operation", () => {
@@ -1124,7 +1124,7 @@ describe("draggable.vue when initialized with a transition group", () => {
11241124
});
11251125

11261126
it("transition mode should be true", () => {
1127-
expect(vm.transitionMode).toBe(true);
1127+
expect(vm.renderContext.transitionMode).toBe(true);
11281128
});
11291129

11301130
it("renders correctly", () => {

0 commit comments

Comments
 (0)