Skip to content

Commit 58ae479

Browse files
committed
v0.8.1
1 parent 9b2e01b commit 58ae479

File tree

8 files changed

+54
-24
lines changed

8 files changed

+54
-24
lines changed

ChangeLog.txt

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
0.8.1
2+
Fixed enableDrag on tab and tabset nodes.
3+
Fixed calc for min/max tabset height from min/max tab height.
4+
Modified style sheet code in demo to reduce flash.
5+
16
0.8.0
27
New:
38
* Wrap tabs option

examples/demo/App.tsx

+25-17
Original file line numberDiff line numberDiff line change
@@ -339,27 +339,35 @@ class App extends React.Component<any, { layoutFile: string | null, model: Model
339339
var target = event.target as HTMLSelectElement;
340340

341341
let flexlayout_stylesheet: any = window.document.getElementById("flexlayout-stylesheet");
342+
let page_stylesheet = window.document.getElementById("page-stylesheet");
342343
let index = flexlayout_stylesheet.href.lastIndexOf("/");
343344
let newAddress = flexlayout_stylesheet.href.substr(0, index);
344-
document.head.removeChild(flexlayout_stylesheet);
345-
346-
flexlayout_stylesheet = document.createElement("link");
347-
flexlayout_stylesheet.setAttribute("id", "flexlayout-stylesheet");
348-
flexlayout_stylesheet.setAttribute("rel", "stylesheet");
349-
flexlayout_stylesheet.setAttribute("href", newAddress + "/" + target.value + ".css");
350-
document.head.appendChild(flexlayout_stylesheet);
351-
352-
let page_stylesheet = window.document.getElementById("page-stylesheet");
353-
document.head.removeChild(page_stylesheet!);
354-
355-
page_stylesheet!.setAttribute("id", "page-stylesheet");
356-
page_stylesheet!.setAttribute("rel", "stylesheet");
357-
page_stylesheet!.setAttribute("href", target.value + ".css");
358-
document.head.appendChild(page_stylesheet!);
359345

360-
setTimeout(() => {
346+
let s1 = document.createElement("link");
347+
s1.setAttribute("id", "flexlayout-stylesheet");
348+
s1.setAttribute("rel", "stylesheet");
349+
s1.setAttribute("href", newAddress + "/" + target.value + ".css");
350+
351+
let s2 = document.createElement("link");
352+
s2.setAttribute("id", "page-stylesheet");
353+
s2.setAttribute("rel", "stylesheet");
354+
s2.setAttribute("href", target.value + ".css");
355+
356+
const promises: Promise<boolean>[] = [];
357+
promises.push(new Promise((resolve) => {
358+
s1.onload = () => resolve(true);
359+
}));
360+
promises.push(new Promise((resolve) => {
361+
s2.onload = () => resolve(true);
362+
}));
363+
document.head.appendChild(s1);
364+
document.head.appendChild(s2);
365+
366+
Promise.all(promises).then(() => {
367+
document.head.removeChild(flexlayout_stylesheet);
368+
document.head.removeChild(page_stylesheet!);
361369
this.forceUpdate();
362-
}, 300);
370+
});
363371
}
364372

365373
onFontSizeChange = (event: React.FormEvent) => {

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flexlayout-react",
3-
"version": "0.8.0",
3+
"version": "0.8.1",
44
"description": "A multi-tab docking layout manager",
55
"main": "lib/index.js",
66
"types": "./declarations/index.d.ts",

src/model/TabSetNode.ts

+3
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@ export class TabSetNode extends Node implements IDraggable, IDropTarget {
248248
this.calculatedMaxWidth = Math.min(this.calculatedMaxWidth, c.getMaxWidth());
249249
this.calculatedMaxHeight = Math.min(this.calculatedMaxHeight, c.getMaxHeight());
250250
}
251+
252+
this.calculatedMinHeight += this.tabStripRect.height;
253+
this.calculatedMaxHeight += this.tabStripRect.height;
251254
}
252255

253256
/** @internal */

src/view/BorderButton.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@ export const BorderButton = (props: IBorderButtonProps) => {
2424
const contentRef = React.useRef<HTMLInputElement | null>(null);
2525

2626
const onDragStart = (event: React.DragEvent<HTMLElement>) => {
27-
event.stopPropagation();
28-
layout.setDragNode(event.nativeEvent, node as TabNode);
27+
if (node.isEnableDrag()) {
28+
event.stopPropagation();
29+
layout.setDragNode(event.nativeEvent, node as TabNode);
30+
} else {
31+
event.preventDefault();
32+
}
2933
};
3034

3135
const onDragEnd = (event: React.DragEvent<HTMLElement>) => {

src/view/Layout.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -1224,6 +1224,8 @@ export class LayoutInternal extends React.Component<ILayoutInternalProps, ILayou
12241224
// *************************** End Drag Drop *************************************
12251225
}
12261226

1227+
export const FlexLayoutVersion = "0.8.1";
1228+
12271229
export type DragRectRenderCallback = (
12281230
content: React.ReactNode | undefined,
12291231
node?: Node,

src/view/TabButton.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ export const TabButton = (props: ITabButtonProps) => {
3131
});
3232

3333
const onDragStart = (event: React.DragEvent<HTMLElement>) => {
34-
event.stopPropagation(); // prevent starting a tabset drag as well
35-
layout.setDragNode(event.nativeEvent, node as TabNode);
34+
if (node.isEnableDrag()) {
35+
event.stopPropagation(); // prevent starting a tabset drag as well
36+
layout.setDragNode(event.nativeEvent, node as TabNode);
37+
} else {
38+
event.preventDefault();
39+
}
3640
};
3741

3842
const onDragEnd = (event: React.DragEvent<HTMLElement>) => {

src/view/TabSet.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@ export const TabSet = (props: ITabSetProps) => {
7373

7474
const onDragStart = (event: React.DragEvent<HTMLElement>) => {
7575
if (!layout.getEditingTab()) {
76-
event.stopPropagation();
77-
layout.setDragNode(event.nativeEvent, node as TabSetNode);
76+
if (node.isEnableDrag()) {
77+
event.stopPropagation();
78+
layout.setDragNode(event.nativeEvent, node as TabSetNode);
79+
} else {
80+
event.preventDefault();
81+
}
7882
} else {
7983
event.preventDefault();
8084
}

0 commit comments

Comments
 (0)