flexlayout-react 0.5.18 → 0.6.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 (92) hide show
  1. package/ChangeLog.txt +27 -0
  2. package/README.md +126 -108
  3. package/declarations/Types.d.ts +8 -1
  4. package/declarations/model/IJsonModel.d.ts +3 -0
  5. package/declarations/model/Model.d.ts +2 -0
  6. package/declarations/view/Icons.d.ts +6 -0
  7. package/declarations/view/Layout.d.ts +8 -4
  8. package/declarations/view/MenuTabButton.d.ts +1 -0
  9. package/declarations/view/TabButtonStamp.d.ts +1 -0
  10. package/declarations/view/Utils.d.ts +1 -0
  11. package/dist/flexlayout.js +53 -17
  12. package/dist/flexlayout_min.js +1 -1
  13. package/lib/PopupMenu.js +22 -12
  14. package/lib/PopupMenu.js.map +1 -1
  15. package/lib/Types.js +7 -0
  16. package/lib/Types.js.map +1 -1
  17. package/lib/model/BorderNode.js +8 -7
  18. package/lib/model/BorderNode.js.map +1 -1
  19. package/lib/model/Model.js +15 -3
  20. package/lib/model/Model.js.map +1 -1
  21. package/lib/model/RowNode.js +19 -5
  22. package/lib/model/RowNode.js.map +1 -1
  23. package/lib/model/TabNode.js +6 -1
  24. package/lib/model/TabNode.js.map +1 -1
  25. package/lib/model/TabSetNode.js +8 -4
  26. package/lib/model/TabSetNode.js.map +1 -1
  27. package/lib/view/BorderButton.js +19 -38
  28. package/lib/view/BorderButton.js.map +1 -1
  29. package/lib/view/BorderTabSet.js +19 -8
  30. package/lib/view/BorderTabSet.js.map +1 -1
  31. package/lib/view/FloatingWindow.js +13 -5
  32. package/lib/view/FloatingWindow.js.map +1 -1
  33. package/lib/view/Icons.js +36 -0
  34. package/lib/view/Icons.js.map +1 -0
  35. package/lib/view/Layout.js +148 -71
  36. package/lib/view/Layout.js.map +1 -1
  37. package/lib/view/MenuTabButton.js +22 -0
  38. package/lib/view/MenuTabButton.js.map +1 -0
  39. package/lib/view/Splitter.js +3 -3
  40. package/lib/view/Splitter.js.map +1 -1
  41. package/lib/view/Tab.js +9 -6
  42. package/lib/view/Tab.js.map +1 -1
  43. package/lib/view/TabButton.js +20 -44
  44. package/lib/view/TabButton.js.map +1 -1
  45. package/lib/view/TabButtonStamp.js +22 -0
  46. package/lib/view/TabButtonStamp.js.map +1 -0
  47. package/lib/view/TabFloating.js +29 -15
  48. package/lib/view/TabFloating.js.map +1 -1
  49. package/lib/view/TabOverflowHook.js +1 -1
  50. package/lib/view/TabSet.js +40 -25
  51. package/lib/view/TabSet.js.map +1 -1
  52. package/lib/view/Utils.js +61 -0
  53. package/lib/view/Utils.js.map +1 -0
  54. package/package.json +11 -6
  55. package/src/I18nLabel.ts +1 -1
  56. package/src/PopupMenu.tsx +54 -15
  57. package/src/Types.ts +7 -0
  58. package/src/model/BorderNode.ts +8 -7
  59. package/src/model/IJsonModel.ts +3 -0
  60. package/src/model/Model.ts +19 -3
  61. package/src/model/RowNode.ts +8 -5
  62. package/src/model/TabNode.ts +6 -1
  63. package/src/model/TabSetNode.ts +8 -4
  64. package/src/view/BorderButton.tsx +38 -43
  65. package/src/view/BorderTabSet.tsx +34 -7
  66. package/src/view/FloatingWindow.tsx +14 -6
  67. package/src/view/Icons.tsx +36 -0
  68. package/src/view/Layout.tsx +179 -88
  69. package/src/view/Splitter.tsx +4 -1
  70. package/src/view/Tab.tsx +17 -6
  71. package/src/view/TabButton.tsx +42 -55
  72. package/src/view/TabButtonStamp.tsx +47 -0
  73. package/src/view/TabFloating.tsx +47 -23
  74. package/src/view/TabOverflowHook.tsx +1 -1
  75. package/src/view/TabSet.tsx +71 -22
  76. package/src/view/Utils.tsx +71 -0
  77. package/style/_base.scss +146 -92
  78. package/style/dark.css +157 -129
  79. package/style/dark.css.map +1 -1
  80. package/style/dark.scss +31 -21
  81. package/style/gray.css +157 -129
  82. package/style/gray.css.map +1 -1
  83. package/style/gray.scss +30 -23
  84. package/style/light.css +157 -129
  85. package/style/light.css.map +1 -1
  86. package/style/light.scss +30 -20
  87. package/images/close.png +0 -0
  88. package/images/maximize.png +0 -0
  89. package/images/more.png +0 -0
  90. package/images/more2.png +0 -0
  91. package/images/popout.png +0 -0
  92. package/images/restore.png +0 -0
package/style/_base.scss CHANGED
@@ -8,6 +8,23 @@
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
+
11
28
  @include absoluteFill;
12
29
  overflow: hidden;
13
30
  }
@@ -17,6 +34,8 @@
17
34
 
18
35
  @media (hover: hover) {
19
36
  &:hover {
37
+ transition: background-color ease-in .1s;
38
+ transition-delay: 0.05s;
20
39
  @include splitter_hover_mixin;
21
40
  }
22
41
  }
@@ -37,15 +56,15 @@
37
56
  position: absolute;
38
57
  pointer-events: none;
39
58
  box-sizing: border-box;
40
- border: 2px solid $color_drag1;
41
- box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.2);
59
+ border: 2px solid var(--color-drag1);
60
+ background: var(--color-drag1-background);
42
61
  border-radius: 5px;
43
62
  z-index: 1000;
44
63
 
45
64
  &_edge {
46
65
  pointer-events: none;
47
- border: 2px solid $color_drag2;
48
- box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.2);
66
+ border: 2px solid var(--color-drag2);
67
+ background: var(--color-drag2-background);
49
68
  border-radius: 5px;
50
69
  z-index: 1000;
51
70
  box-sizing: border-box;
@@ -63,9 +82,9 @@
63
82
  &__drag_rect {
64
83
  position: absolute;
65
84
  cursor: move;
66
- color: $color_text;
67
- background-color: $color_1;
68
- border: 2px solid $color_4;
85
+ color: var(--color-text);
86
+ background-color: var(--color-1);
87
+ border: 2px solid var(--color-4);
69
88
  box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.3);
70
89
  border-radius: 5px;
71
90
  z-index: 1000;
@@ -77,18 +96,18 @@
77
96
  justify-content: center;
78
97
  flex-direction: column;
79
98
  overflow: hidden;
80
- padding: 10px;
99
+ padding: 0.5em 1em;
81
100
  word-wrap: break-word;
82
- font-size: $font-size;
83
- font-family: $font-family;
101
+ font-size: var(--font-size);
102
+ font-family: var(--font-family);
84
103
  }
85
104
 
86
105
  &__tabset {
87
106
  overflow: hidden;
88
- background-color: $color_1;
107
+ background-color: var(--color-1);
89
108
  box-sizing: border-box;
90
- font-size: $font-size;
91
- font-family: $font-family;
109
+ font-size: var(--font-size);
110
+ font-family: var(--font-family);
92
111
  @include tabset_mixin;
93
112
 
94
113
  &_header {
@@ -100,8 +119,8 @@
100
119
  right: 0;
101
120
  padding: 3px 3px 3px 5px;
102
121
  box-sizing: border-box;
103
- border-bottom: 1px solid $color_3;
104
- color: $color_text;
122
+ border-bottom: 1px solid var(--color-3);
123
+ color: var(--color-text);
105
124
  @include tabset_header_mixin;
106
125
 
107
126
  &_content {
@@ -113,7 +132,7 @@
113
132
  &_outer {
114
133
  // tabset tabbar outer
115
134
  box-sizing: border-box;
116
- background-color: $color_1;
135
+ background-color: var(--color-1);
117
136
  position: absolute;
118
137
  left: 0;
119
138
  right: 0;
@@ -123,11 +142,11 @@
123
142
  }
124
143
 
125
144
  &_outer_top {
126
- border-bottom: 1px solid $color_3;
145
+ border-bottom: 1px solid var(--color-3);
127
146
  }
128
147
 
129
148
  &_outer_bottom {
130
- border-top: 1px solid $color_3;
149
+ border-top: 1px solid var(--color-3);
131
150
  }
132
151
 
133
152
  &_inner {
@@ -140,6 +159,9 @@
140
159
 
141
160
  &_tab_container {
142
161
  display: flex;
162
+ gap: 4px;
163
+ padding-left: 4px;
164
+ padding-right: 4px;
143
165
  box-sizing: border-box;
144
166
  position: absolute;
145
167
  top: 0;
@@ -165,19 +187,28 @@
165
187
  }
166
188
  }
167
189
 
190
+ &__tab_button_stamp {
191
+ display: inline-flex;
192
+ align-items: center;
193
+ gap: 0.3em;
194
+ white-space: nowrap;
195
+ box-sizing: border-box;
196
+ }
197
+
168
198
  &__tab {
169
199
  overflow: auto;
170
200
  position: absolute;
171
201
  box-sizing: border-box;
172
- color: $color_text;
173
- background-color: $color_background;
202
+ color: var(--color-text);
203
+ background-color: var(--color-background);
174
204
 
175
205
  &_button {
176
- display: inline-flex;
206
+ display: flex;
207
+ gap: 0.3em;
177
208
  align-items: center;
178
209
  box-sizing: border-box;
179
- padding: 3px 8px; // if you change top or bottom update the tabset_sizer above
180
- margin: 0px 2px;
210
+ padding: 3px 0.5em; // if you change top or bottom update the tabset_sizer above
211
+
181
212
  cursor: pointer;
182
213
  @include tab_button_mixin;
183
214
 
@@ -203,17 +234,21 @@
203
234
  }
204
235
 
205
236
  &_leading {
206
- display: inline-block;
237
+ display: flex;
207
238
  }
208
239
 
209
240
  &_content {
210
- display: inline-block;
241
+ display: flex;
211
242
  }
212
243
 
213
244
  &_textbox {
214
245
  border: none;
215
- color: green;
216
- background-color: $color_3;
246
+ font-family: var(--font-family);
247
+ font-size: var(--font-size);
248
+ color: var(--color-text);
249
+ background-color: var(--color-5);
250
+ border: 1px inset var(--color-1);
251
+ border-radius: 3px;
217
252
  }
218
253
 
219
254
  &_textbox:focus {
@@ -221,66 +256,75 @@
221
256
  }
222
257
 
223
258
  &_trailing {
224
- display: inline-block;
225
- margin-left: 8px;
226
- min-width: 8px;
227
- min-height: 8px;
259
+ display: flex;
260
+ visibility: hidden;
261
+ border-radius: 4px;
262
+ &:hover {
263
+ @include close_button_hovered_mixin;
264
+ }
228
265
  }
229
266
  @media (pointer: coarse) {
230
267
  &_trailing {
231
- min-width: 20px;
232
- min-height: 20px;
233
268
  }
234
269
  }
235
270
  @media (hover: hover) {
236
271
  &:hover &_trailing {
237
- background: transparent url("../images/close.png") no-repeat center;
272
+ visibility: visible;
238
273
  }
239
274
  }
240
275
 
241
276
  &--selected &_trailing {
242
- background: transparent url("../images/close.png") no-repeat center;
277
+ visibility: visible;
243
278
  }
244
279
 
245
280
  &_overflow {
246
- margin-left: 10px;
247
- padding-left: 12px;
281
+ display: flex;
282
+ align-items: center;
248
283
  border: none;
249
284
  color: gray;
250
285
  font-size: inherit;
251
- background: transparent url("../images/more2.png") no-repeat left;
286
+ background-color: transparent;
252
287
  }
253
288
  }
254
289
 
255
290
  &_toolbar {
256
291
  display: flex;
257
292
  align-items: center;
293
+ gap: .3em;
294
+ padding-left: .5em;
295
+ padding-right: .3em;
258
296
 
259
297
  &_button {
260
- min-width: 20px;
261
- min-height: 20px;
262
298
  border: none;
263
299
  outline: none;
300
+ font-size: inherit;
301
+ margin: 0px;
302
+ background-color: transparent;
303
+ border-radius: 4px;
304
+ padding: 1px;
305
+ @media (hover: hover) {
306
+ &:hover {
307
+ @include toolbar_button_hovered_mixin;
308
+ }
309
+ }
264
310
 
265
311
  &-min {
266
- background: transparent url("../images/maximize.png") no-repeat center;
267
312
  }
268
313
 
269
314
  &-max {
270
- background: transparent url("../images/restore.png") no-repeat center;
271
315
  }
272
316
 
273
317
  &-float {
274
- background: transparent url("../images/popout.png") no-repeat center;
275
318
  }
276
319
 
277
320
  &-close {
278
- background: transparent url("../images/close.png") no-repeat center;
279
321
  }
280
322
  }
281
323
 
282
324
  &_sticky_buttons_container {
283
325
  display: flex;
326
+ gap: 0.3em;
327
+ padding-left: 2px;
284
328
  align-items: center;
285
329
  }
286
330
  }
@@ -289,8 +333,8 @@
289
333
  overflow: auto;
290
334
  position: absolute;
291
335
  box-sizing: border-box;
292
- color: $color_text;
293
- background-color: $color_background;
336
+ color: var(--color-text);
337
+ background-color: var(--color-background);
294
338
  display: flex;
295
339
  justify-content: center;
296
340
  align-items: center;
@@ -318,28 +362,28 @@
318
362
  box-sizing: border-box;
319
363
  overflow: hidden;
320
364
  display: flex;
321
- font-size: $font-size;
322
- font-family: $font-family;
365
+ font-size: var(--font-size);
366
+ font-family: var(--font-family);
323
367
  @include border_mixin;
324
368
 
325
369
  &_top {
326
- border-bottom: 1px solid $color_3;
370
+ border-bottom: 1px solid var(--color-3);
327
371
  align-items: center;
328
372
  }
329
373
 
330
374
  &_bottom {
331
- border-top: 1px solid $color_3;
375
+ border-top: 1px solid var(--color-3);
332
376
  align-items: center;
333
377
  }
334
378
 
335
379
  &_left {
336
- border-right: 1px solid $color_3;
380
+ border-right: 1px solid var(--color-3);
337
381
  align-content: center;
338
382
  flex-direction: column;
339
383
  }
340
384
 
341
385
  &_right {
342
- border-left: 1px solid $color_3;
386
+ border-left: 1px solid var(--color-3);
343
387
  align-content: center;
344
388
  flex-direction: column;
345
389
  }
@@ -354,6 +398,9 @@
354
398
  &_tab_container {
355
399
  white-space: nowrap;
356
400
  display: flex;
401
+ gap: 4px;
402
+ padding-left: 2px;
403
+ padding-right: 2px;
357
404
  box-sizing: border-box;
358
405
  position: absolute;
359
406
  top: 0;
@@ -374,10 +421,11 @@
374
421
 
375
422
  &_button {
376
423
  display: flex;
424
+ gap: 0.3em;
377
425
  align-items: center;
378
426
  cursor: pointer;
379
- padding: 3px 8px;
380
- margin: 2px;
427
+ padding: 3px 0.5em;
428
+ margin: 2px 0px;
381
429
  box-sizing: border-box;
382
430
  white-space: nowrap;
383
431
  @include border_button_mixin;
@@ -396,108 +444,114 @@
396
444
  }
397
445
 
398
446
  &_leading {
399
- display: inline;
447
+ display: flex;
400
448
  }
401
449
 
402
450
  &_content {
403
- display: inline-block;
451
+ display: flex;
404
452
  }
405
453
 
406
454
  &_trailing {
407
- display: inline-block;
408
- margin-left: 8px;
409
- min-width: 8px;
410
- min-height: 8px;
455
+ display: flex;
456
+ border-radius: 4px;
457
+ visibility: hidden;
458
+ &:hover {
459
+ @include close_button_hovered_mixin;
460
+ }
411
461
  }
412
-
413
462
  @media (pointer: coarse) {
414
463
  &_trailing {
415
- min-width: 20px;
416
- min-height: 20px;
417
464
  }
418
465
  }
419
-
420
466
  @media (hover: hover) {
421
467
  &:hover &_trailing {
422
- background: transparent url("../images/close.png") no-repeat center;
468
+ visibility: visible;
423
469
  }
424
470
  }
425
471
 
426
472
  &--selected &_trailing {
427
- background: transparent url("../images/close.png") no-repeat center;
473
+ visibility: visible;
428
474
  }
429
475
  }
430
476
 
431
477
  &_toolbar {
432
478
  display: flex;
479
+ gap: .3em;
433
480
  align-items: center;
434
481
 
435
- &_left {
482
+ &_left,
483
+ &_right {
436
484
  flex-direction: column;
485
+ padding-top: .5em;
486
+ padding-bottom: .3em;
437
487
  }
438
488
 
439
- &_right {
440
- flex-direction: column;
489
+ &_top,
490
+ &_bottom {
491
+ padding-left: .5em;
492
+ padding-right: .3em;
441
493
  }
442
494
 
443
495
  &_button {
444
- min-width: 20px;
445
- min-height: 20px;
446
496
  border: none;
447
497
  outline: none;
498
+ font-size: inherit;
499
+ background-color: transparent;
500
+ border-radius: 4px;
501
+ padding: 1px;
448
502
 
449
503
  &-float {
450
- background: transparent url("../images/popout.png") no-repeat center;
451
504
  }
452
505
 
453
506
  &_overflow {
507
+ display: flex;
508
+ align-items: center;
454
509
  border: none;
455
- padding-left: 12px;
456
510
  color: gray;
457
511
  font-size: inherit;
458
- background: transparent url("../images/more2.png") no-repeat left;
512
+ background-color: transparent;
459
513
  }
460
514
 
461
515
  &_overflow_top,
462
516
  &_overflow_bottom {
463
- margin-left: 10px;
464
517
  }
465
518
 
466
519
  &_overflow_right,
467
520
  &_overflow_left {
468
- padding-right: 0px;
469
- margin-top: 5px;
470
521
  }
471
522
  }
472
523
  }
473
524
  }
474
525
 
475
526
  &__popup_menu {
476
- font-size: $font-size;
477
- font-family: $font-family;
527
+ font-size: var(--font-size);
528
+ font-family: var(--font-family);
478
529
 
479
530
  &_item {
480
- padding: 2px 10px 2px 10px;
531
+ padding: 2px 0.5em;
481
532
  white-space: nowrap;
533
+ cursor: pointer;
534
+ border-radius: 2px;
482
535
  }
483
536
 
484
537
  @media (hover: hover) {
485
538
  &_item:hover {
486
- background-color: $color_6;
539
+ background-color: var(--color-6);
487
540
  }
488
541
  }
489
542
 
490
543
  &_container {
491
544
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
492
- border: 1px solid $color_6;
493
- color: $color_text;
494
- background: $color_background;
545
+ border: 1px solid var(--color-6);
546
+ color: var(--color-text);
547
+ background: var(--color-background);
495
548
  border-radius: 3px;
496
549
  position: absolute;
497
550
  z-index: 1000;
498
551
  max-height: 50%;
499
552
  min-width: 100px;
500
553
  overflow: auto;
554
+ padding: 2px;
501
555
  }
502
556
  }
503
557
 
@@ -515,8 +569,8 @@
515
569
  @include absoluteFill;
516
570
 
517
571
  box-sizing: border-box;
518
- background-color: $color_background;
519
- color: $color_text;
572
+ background-color: var(--color-background);
573
+ color: var(--color-text);
520
574
  }
521
575
  }
522
576
 
@@ -537,21 +591,21 @@
537
591
  &__tabset_sizer {
538
592
  padding-top: 5px; // tab_button has 3 padding top, tabset header inner has 2 border
539
593
  padding-bottom: 3px; // tab_button has 3 padding bottom
540
- font-size: $font-size;
541
- font-family: $font-family;
594
+ font-size: var(--font-size);
595
+ font-family: var(--font-family);
542
596
  }
543
597
 
544
598
  &__tabset_header_sizer {
545
599
  padding-top: 3px;
546
600
  padding-bottom: 3px;
547
- font-size: $font-size;
548
- font-family: $font-family;
601
+ font-size: var(--font-size);
602
+ font-family: var(--font-family);
549
603
  }
550
604
 
551
605
  &__border_sizer {
552
606
  padding-top: 6px;
553
607
  padding-bottom: 5px;
554
- font-size: $font-size;
555
- font-family: $font-family;
608
+ font-size: var(--font-size);
609
+ font-family: var(--font-family);
556
610
  }
557
611
  }