flexlayout-react 0.6.3 → 0.6.7

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 (115) hide show
  1. package/ChangeLog.txt +13 -0
  2. package/declarations/Types.d.ts +2 -0
  3. package/declarations/model/Model.d.ts +1 -2
  4. package/declarations/model/RowNode.d.ts +0 -2
  5. package/dist/flexlayout.js +193 -319
  6. package/dist/flexlayout_min.js +1 -1
  7. package/lib/Attribute.js +1 -1
  8. package/lib/Attribute.js.map +1 -1
  9. package/lib/AttributeDefinitions.js +21 -12
  10. package/lib/AttributeDefinitions.js.map +1 -1
  11. package/lib/DockLocation.js +6 -6
  12. package/lib/DockLocation.js.map +1 -1
  13. package/lib/DragDrop.js +24 -22
  14. package/lib/DragDrop.js.map +1 -1
  15. package/lib/Orientation.js +1 -1
  16. package/lib/Orientation.js.map +1 -1
  17. package/lib/PopupMenu.js +6 -6
  18. package/lib/PopupMenu.js.map +1 -1
  19. package/lib/Rect.js +1 -1
  20. package/lib/Rect.js.map +1 -1
  21. package/lib/Types.js +2 -0
  22. package/lib/Types.js.map +1 -1
  23. package/lib/model/BorderNode.js +31 -31
  24. package/lib/model/BorderNode.js.map +1 -1
  25. package/lib/model/BorderSet.js +18 -14
  26. package/lib/model/BorderSet.js.map +1 -1
  27. package/lib/model/Model.js +40 -35
  28. package/lib/model/Model.js.map +1 -1
  29. package/lib/model/Node.js +29 -28
  30. package/lib/model/Node.js.map +1 -1
  31. package/lib/model/RowNode.js +53 -50
  32. package/lib/model/RowNode.js.map +1 -1
  33. package/lib/model/SplitterNode.js +11 -11
  34. package/lib/model/SplitterNode.js.map +1 -1
  35. package/lib/model/TabNode.js +17 -17
  36. package/lib/model/TabNode.js.map +1 -1
  37. package/lib/model/TabSetNode.js +52 -51
  38. package/lib/model/TabSetNode.js.map +1 -1
  39. package/lib/model/Utils.js +3 -3
  40. package/lib/model/Utils.js.map +1 -1
  41. package/lib/view/BorderButton.js +52 -12
  42. package/lib/view/BorderButton.js.map +1 -1
  43. package/lib/view/BorderTabSet.js +5 -4
  44. package/lib/view/BorderTabSet.js.map +1 -1
  45. package/lib/view/ErrorBoundary.js +1 -1
  46. package/lib/view/ErrorBoundary.js.map +1 -1
  47. package/lib/view/FloatingWindow.js +27 -16
  48. package/lib/view/FloatingWindow.js.map +1 -1
  49. package/lib/view/FloatingWindowTab.js +1 -1
  50. package/lib/view/FloatingWindowTab.js.map +1 -1
  51. package/lib/view/Layout.js +80 -75
  52. package/lib/view/Layout.js.map +1 -1
  53. package/lib/view/Splitter.js +1 -1
  54. package/lib/view/Splitter.js.map +1 -1
  55. package/lib/view/Tab.js +5 -5
  56. package/lib/view/Tab.js.map +1 -1
  57. package/lib/view/TabButton.js +10 -15
  58. package/lib/view/TabButton.js.map +1 -1
  59. package/lib/view/TabButtonStamp.js +2 -2
  60. package/lib/view/TabButtonStamp.js.map +1 -1
  61. package/lib/view/TabFloating.js +8 -2
  62. package/lib/view/TabFloating.js.map +1 -1
  63. package/lib/view/TabOverflowHook.js +1 -1
  64. package/lib/view/TabOverflowHook.js.map +1 -1
  65. package/lib/view/TabSet.js +17 -12
  66. package/lib/view/TabSet.js.map +1 -1
  67. package/lib/view/Utils.js +3 -3
  68. package/lib/view/Utils.js.map +1 -1
  69. package/package.json +22 -16
  70. package/src/Attribute.ts +1 -1
  71. package/src/AttributeDefinitions.ts +16 -12
  72. package/src/DockLocation.ts +9 -9
  73. package/src/DragDrop.ts +42 -38
  74. package/src/Orientation.ts +2 -2
  75. package/src/PopupMenu.tsx +4 -4
  76. package/src/Rect.ts +1 -1
  77. package/src/Types.ts +2 -0
  78. package/src/model/BorderNode.ts +29 -28
  79. package/src/model/BorderSet.ts +16 -16
  80. package/src/model/IDraggable.ts +2 -2
  81. package/src/model/IDropTarget.ts +3 -3
  82. package/src/model/Model.ts +41 -41
  83. package/src/model/Node.ts +38 -38
  84. package/src/model/RowNode.ts +46 -44
  85. package/src/model/SplitterNode.ts +11 -11
  86. package/src/model/TabNode.ts +21 -21
  87. package/src/model/TabSetNode.ts +46 -44
  88. package/src/model/Utils.ts +3 -3
  89. package/src/view/BorderButton.tsx +82 -14
  90. package/src/view/BorderTabSet.tsx +6 -2
  91. package/src/view/ErrorBoundary.tsx +3 -3
  92. package/src/view/FloatingWindow.tsx +8 -6
  93. package/src/view/FloatingWindowTab.tsx +2 -2
  94. package/src/view/Layout.tsx +93 -93
  95. package/src/view/Splitter.tsx +2 -2
  96. package/src/view/Tab.tsx +3 -3
  97. package/src/view/TabButton.tsx +11 -15
  98. package/src/view/TabButtonStamp.tsx +2 -2
  99. package/src/view/TabFloating.tsx +11 -2
  100. package/src/view/TabOverflowHook.tsx +1 -1
  101. package/src/view/TabSet.tsx +6 -5
  102. package/src/view/Utils.tsx +3 -3
  103. package/style/_base.scss +55 -43
  104. package/style/dark.css +86 -45
  105. package/style/dark.css.map +1 -1
  106. package/style/dark.scss +70 -25
  107. package/style/gray.css +84 -60
  108. package/style/gray.css.map +1 -1
  109. package/style/gray.scss +70 -24
  110. package/style/light.css +84 -45
  111. package/style/light.css.map +1 -1
  112. package/style/light.scss +68 -19
  113. package/style/underline.css +557 -0
  114. package/style/underline.css.map +1 -0
  115. package/style/underline.scss +172 -0
@@ -4,7 +4,7 @@ import { ILayoutCallbacks } from "./Layout";
4
4
  import { CLASSES } from "../Types";
5
5
  import { getRenderStateEx } from "./Utils";
6
6
 
7
- /** @hidden @internal */
7
+ /** @internal */
8
8
  export interface ITabButtonStampProps {
9
9
  node: TabNode;
10
10
  layout: ILayoutCallbacks;
@@ -12,7 +12,7 @@ export interface ITabButtonStampProps {
12
12
  titleFactory?: (node: TabNode) => React.ReactNode | undefined;
13
13
  }
14
14
 
15
- /** @hidden @internal */
15
+ /** @internal */
16
16
  export const TabButtonStamp = (props: ITabButtonStampProps) => {
17
17
  const { layout, node, iconFactory, titleFactory } = props;
18
18
  const selfRef = React.useRef<HTMLDivElement | null>(null);
@@ -6,8 +6,9 @@ import { CLASSES } from "../Types";
6
6
  import { ILayoutCallbacks } from "./Layout";
7
7
  import { I18nLabel } from "../I18nLabel";
8
8
  import { hideElement } from "./Utils";
9
+ import { BorderNode } from "../model/BorderNode";
9
10
 
10
- /** @hidden @internal */
11
+ /** @internal */
11
12
  export interface ITabFloatingProps {
12
13
  layout: ILayoutCallbacks;
13
14
  selected: boolean;
@@ -15,7 +16,7 @@ export interface ITabFloatingProps {
15
16
  path: string;
16
17
  }
17
18
 
18
- /** @hidden @internal */
19
+ /** @internal */
19
20
  export const TabFloating = (props: ITabFloatingProps) => {
20
21
  const { layout, selected, node, path } = props;
21
22
 
@@ -50,11 +51,19 @@ export const TabFloating = (props: ITabFloatingProps) => {
50
51
 
51
52
  const cm = layout.getClassName;
52
53
 
54
+
55
+ const parentNode = node.getParent() as TabSetNode | BorderNode;
53
56
  const style: Record<string, any> = node._styleWithPosition();
54
57
  if (!selected) {
55
58
  hideElement(style, node.getModel().isUseVisibility());
56
59
  }
57
60
 
61
+ if (parentNode instanceof TabSetNode) {
62
+ if (node.getModel().getMaximizedTabset() !== undefined && !parentNode.isMaximized()) {
63
+ hideElement(style, node.getModel().isUseVisibility());
64
+ }
65
+ }
66
+
58
67
  const message = layout.i18nName(I18nLabel.Floating_Window_Message);
59
68
  const showMessage = layout.i18nName(I18nLabel.Floating_Window_Show_Window);
60
69
  const dockMessage = layout.i18nName(I18nLabel.Floating_Window_Dock_Window);
@@ -5,7 +5,7 @@ import { TabSetNode } from "../model/TabSetNode";
5
5
  import { BorderNode } from "../model/BorderNode";
6
6
  import { Orientation } from "../Orientation";
7
7
 
8
- /** @hidden @internal */
8
+ /** @internal */
9
9
  export const useTabOverflow = (
10
10
  node: TabSetNode | BorderNode,
11
11
  orientation: Orientation,
@@ -11,7 +11,7 @@ import { Orientation } from "../Orientation";
11
11
  import { CLASSES } from "../Types";
12
12
  import { hideElement, isAuxMouseEvent } from "./Utils";
13
13
 
14
- /** @hidden @internal */
14
+ /** @internal */
15
15
  export interface ITabSetProps {
16
16
  layout: ILayoutCallbacks;
17
17
  node: TabSetNode;
@@ -22,7 +22,7 @@ export interface ITabSetProps {
22
22
  path?: string;
23
23
  }
24
24
 
25
- /** @hidden @internal */
25
+ /** @internal */
26
26
  export const TabSet = (props: ITabSetProps) => {
27
27
  const { node, layout, iconFactory, titleFactory, icons, path } = props;
28
28
 
@@ -138,12 +138,13 @@ export const TabSet = (props: ITabSetProps) => {
138
138
  path={path + "/tb" + i}
139
139
  key={child.getId()}
140
140
  selected={isSelected}
141
- height={node.getTabStripHeight()}
142
141
  iconFactory={iconFactory}
143
142
  titleFactory={titleFactory}
144
143
  icons={icons}
145
- />
146
- );
144
+ />);
145
+ tabs.push(
146
+ <div key={"divider" + i} className={cm(CLASSES.FLEXLAYOUT__TABSET_TAB_DIVIDER)}></div>
147
+ );
147
148
  }
148
149
  }
149
150
 
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import { TabNode } from "../model/TabNode";
3
3
  import { ILayoutCallbacks, ITitleObject } from "./Layout";
4
4
 
5
- /** @hidden @internal */
5
+ /** @internal */
6
6
  export function getRenderStateEx(
7
7
  layout: ILayoutCallbacks,
8
8
  node: TabNode,
@@ -48,7 +48,7 @@ export function getRenderStateEx(
48
48
 
49
49
  }
50
50
 
51
- /** @hidden @internal */
51
+ /** @internal */
52
52
  export function hideElement(style: Record<string, any>, useVisibility: ConstrainBoolean) {
53
53
  if (useVisibility) {
54
54
  style.visibility = "hidden";
@@ -58,7 +58,7 @@ export function hideElement(style: Record<string, any>, useVisibility: Constrain
58
58
  }
59
59
 
60
60
 
61
- /** @hidden @internal */
61
+ /** @internal */
62
62
  export function isAuxMouseEvent(event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) {
63
63
  let auxEvent = false;
64
64
  if (event.nativeEvent instanceof MouseEvent) {
package/style/_base.scss CHANGED
@@ -8,32 +8,17 @@
8
8
 
9
9
  .flexlayout {
10
10
  &__layout {
11
- --color-text: #{$color_text};
12
- --color-background: #{$color_background};
13
- --color-base: #{$color_base};
14
- --color-1: #{$color_1};
15
- --color-2: #{$color_2};
16
- --color-3: #{$color_3};
17
- --color-4: #{$color_4};
18
- --color-5: #{$color_5};
19
- --color-6: #{$color_6};
20
- --color-drag1: #{$color_drag1};
21
- --color-drag2: #{$color_drag2};
22
- --color-drag1-background: #{$color_drag1_background};
23
- --color-drag2-background: #{$color_drag2_background};
24
-
25
- --font-size: #{$font-size};
26
- --font-family: #{$font-family};
27
-
28
11
  @include absoluteFill;
29
12
  overflow: hidden;
30
13
  }
31
14
 
32
15
  &__splitter {
16
+ background-color: var(--color-splitter);
33
17
  @include splitter_mixin;
34
18
 
35
19
  @media (hover: hover) {
36
20
  &:hover {
21
+ background-color: var(--color-splitter-hover);
37
22
  transition: background-color ease-in .1s;
38
23
  transition-delay: 0.05s;
39
24
  @include splitter_hover_mixin;
@@ -45,6 +30,7 @@
45
30
  }
46
31
  &_drag {
47
32
  z-index: 1000;
33
+ background-color: var(--color-splitter-drag);
48
34
  @include splitter_drag_mixin;
49
35
  }
50
36
  &_extra {
@@ -75,17 +61,17 @@
75
61
  position: absolute;
76
62
  z-index: 1000;
77
63
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
78
- background-color: gray;
64
+ background-color: var(--color-edge-marker);
79
65
  pointer-events: none;
80
66
  }
81
67
 
82
68
  &__drag_rect {
83
69
  position: absolute;
84
70
  cursor: move;
85
- color: var(--color-text);
86
- background-color: var(--color-1);
87
- border: 2px solid var(--color-4);
88
- box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.3);
71
+ color: var(--color-drag-rect);
72
+ background-color: var(--color-drag-rect-background);
73
+ border: 2px solid var(--color-drag-rect-border);
74
+ // box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.3);
89
75
  border-radius: 5px;
90
76
  z-index: 1000;
91
77
  box-sizing: border-box;
@@ -96,7 +82,7 @@
96
82
  justify-content: center;
97
83
  flex-direction: column;
98
84
  overflow: hidden;
99
- padding: 0.5em 1em;
85
+ padding: 0.3em 1em;
100
86
  word-wrap: break-word;
101
87
  font-size: var(--font-size);
102
88
  font-family: var(--font-family);
@@ -104,12 +90,17 @@
104
90
 
105
91
  &__tabset {
106
92
  overflow: hidden;
107
- background-color: var(--color-1);
93
+ background-color: var(--color-tabset-background);
108
94
  box-sizing: border-box;
109
95
  font-size: var(--font-size);
110
96
  font-family: var(--font-family);
111
97
  @include tabset_mixin;
112
98
 
99
+ &_tab_divider {
100
+ width: 4px;
101
+ @include tabset_tab_divider_mixin;
102
+ }
103
+
113
104
  &_header {
114
105
  // tabset header bar
115
106
  position: absolute;
@@ -119,8 +110,9 @@
119
110
  right: 0;
120
111
  padding: 3px 3px 3px 5px;
121
112
  box-sizing: border-box;
122
- border-bottom: 1px solid var(--color-3);
123
- color: var(--color-text);
113
+ border-bottom: 1px solid var(--color-tabset-divider-line);
114
+ color: var(--color-tabset-header);
115
+ background-color: var(--color-tabset-header-background);
124
116
  @include tabset_header_mixin;
125
117
 
126
118
  &_content {
@@ -132,7 +124,7 @@
132
124
  &_outer {
133
125
  // tabset tabbar outer
134
126
  box-sizing: border-box;
135
- background-color: var(--color-1);
127
+ background-color: var(--color-tabset-background);
136
128
  position: absolute;
137
129
  left: 0;
138
130
  right: 0;
@@ -142,11 +134,11 @@
142
134
  }
143
135
 
144
136
  &_outer_top {
145
- border-bottom: 1px solid var(--color-3);
137
+ border-bottom: 1px solid var(--color-tabset-divider-line);
146
138
  }
147
139
 
148
140
  &_outer_bottom {
149
- border-top: 1px solid var(--color-3);
141
+ border-top: 1px solid var(--color-tabset-divider-line);
150
142
  }
151
143
 
152
144
  &_inner {
@@ -159,7 +151,6 @@
159
151
 
160
152
  &_tab_container {
161
153
  display: flex;
162
- gap: 4px;
163
154
  padding-left: 4px;
164
155
  padding-right: 4px;
165
156
  box-sizing: border-box;
@@ -179,10 +170,12 @@
179
170
  }
180
171
 
181
172
  &-selected {
173
+ background-color: var(--color-tabset-background-selected);
182
174
  @include tabset_selected_mixin;
183
175
  }
184
176
 
185
177
  &-maximized {
178
+ background-color: var(--color-tabset-background-maximized);
186
179
  @include tabset_maximized_mixin;
187
180
  }
188
181
  }
@@ -199,8 +192,8 @@
199
192
  overflow: auto;
200
193
  position: absolute;
201
194
  box-sizing: border-box;
202
- color: var(--color-text);
203
195
  background-color: var(--color-background);
196
+ color: var(--color-text);
204
197
 
205
198
  &_button {
206
199
  display: flex;
@@ -213,15 +206,21 @@
213
206
  @include tab_button_mixin;
214
207
 
215
208
  &--selected {
209
+ background-color:var(--color-tab-selected-background);
210
+ color:var(--color-tab-selected);
216
211
  @include tab_button_selected_mixin;
217
212
  }
218
213
  @media (hover: hover) {
219
214
  &:hover {
215
+ background-color:var(--color-tab-selected-background);
216
+ color:var(--color-tab-selected);
220
217
  @include tab_button_hovered_mixin;
221
218
  }
222
219
  }
223
220
 
224
221
  &--unselected {
222
+ background-color:var(--color-tab-unselected-background);
223
+ color:var(--color-tab-unselected);
225
224
  @include tab_button_unselected_mixin;
226
225
  }
227
226
 
@@ -245,10 +244,11 @@
245
244
  border: none;
246
245
  font-family: var(--font-family);
247
246
  font-size: var(--font-size);
248
- color: var(--color-text);
249
- background-color: var(--color-5);
247
+ color: var(--color-tab-textbox);
248
+ background-color: var(--color-tab-textbox-background);
250
249
  border: 1px inset var(--color-1);
251
250
  border-radius: 3px;
251
+ width: 10em;
252
252
  }
253
253
 
254
254
  &_textbox:focus {
@@ -281,7 +281,7 @@
281
281
  display: flex;
282
282
  align-items: center;
283
283
  border: none;
284
- color: gray;
284
+ color: var(--color-overflow);
285
285
  font-size: inherit;
286
286
  background-color: transparent;
287
287
  }
@@ -364,26 +364,28 @@
364
364
  display: flex;
365
365
  font-size: var(--font-size);
366
366
  font-family: var(--font-family);
367
+ color: var(--color-border);
368
+ background-color: var(--color-border-background);
367
369
  @include border_mixin;
368
370
 
369
371
  &_top {
370
- border-bottom: 1px solid var(--color-3);
372
+ border-bottom: 1px solid var(--color-border-divider-line);
371
373
  align-items: center;
372
374
  }
373
375
 
374
376
  &_bottom {
375
- border-top: 1px solid var(--color-3);
377
+ border-top: 1px solid var(--color-border-divider-line);
376
378
  align-items: center;
377
379
  }
378
380
 
379
381
  &_left {
380
- border-right: 1px solid var(--color-3);
382
+ border-right: 1px solid var(--color-border-divider-line);
381
383
  align-content: center;
382
384
  flex-direction: column;
383
385
  }
384
386
 
385
387
  &_right {
386
- border-left: 1px solid var(--color-3);
388
+ border-left: 1px solid var(--color-border-divider-line);
387
389
  align-content: center;
388
390
  flex-direction: column;
389
391
  }
@@ -398,7 +400,6 @@
398
400
  &_tab_container {
399
401
  white-space: nowrap;
400
402
  display: flex;
401
- gap: 4px;
402
403
  padding-left: 2px;
403
404
  padding-right: 2px;
404
405
  box-sizing: border-box;
@@ -419,6 +420,11 @@
419
420
  }
420
421
  }
421
422
 
423
+ &_tab_divider {
424
+ width: 4px;
425
+ @include border_tab_divider_mixin;
426
+ }
427
+
422
428
  &_button {
423
429
  display: flex;
424
430
  gap: 0.3em;
@@ -431,15 +437,21 @@
431
437
  @include border_button_mixin;
432
438
 
433
439
  &--selected {
440
+ background-color: var(--color-border-tab-selected-background);
441
+ color: var(--color-border-tab-selected);
434
442
  @include border_button_selected_mixin;
435
443
  }
436
444
  @media (hover: hover) {
437
445
  &:hover {
446
+ background-color: var(--color-border-tab-selected-background);
447
+ color: var(--color-border-tab-selected);
438
448
  @include border_button_hovered_mixin;
439
449
  }
440
450
  }
441
451
 
442
452
  &--unselected {
453
+ background-color: var(--color-border-tab-unselected-background);
454
+ color: var(--color-border-tab-unselected);
443
455
  @include border_button_unselected_mixin;
444
456
  }
445
457
 
@@ -512,7 +524,7 @@
512
524
  display: flex;
513
525
  align-items: center;
514
526
  border: none;
515
- color: gray;
527
+ color: var(--color-overflow);
516
528
  font-size: inherit;
517
529
  background-color: transparent;
518
530
  }
@@ -547,9 +559,9 @@
547
559
 
548
560
  &_container {
549
561
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
550
- border: 1px solid var(--color-6);
551
- color: var(--color-text);
552
- background: var(--color-background);
562
+ border: 1px solid var(--color-popup-border);
563
+ color: var(--color-popup-unselected);
564
+ background: var(--color-popup-unselected-background);
553
565
  border-radius: 3px;
554
566
  position: absolute;
555
567
  z-index: 1000;