@aptre/flex-layout 0.1.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 (115) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +527 -0
  3. package/declarations/Attribute.d.ts +1 -0
  4. package/declarations/AttributeDefinitions.d.ts +1 -0
  5. package/declarations/DockLocation.d.ts +12 -0
  6. package/declarations/DragDrop.d.ts +15 -0
  7. package/declarations/DropInfo.d.ts +12 -0
  8. package/declarations/I18nLabel.d.ts +14 -0
  9. package/declarations/Orientation.d.ts +7 -0
  10. package/declarations/PopupMenu.d.ts +1 -0
  11. package/declarations/Rect.d.ts +28 -0
  12. package/declarations/Types.d.ts +78 -0
  13. package/declarations/index.d.ts +22 -0
  14. package/declarations/model/Action.d.ts +5 -0
  15. package/declarations/model/Actions.d.ts +110 -0
  16. package/declarations/model/BorderNode.d.ts +34 -0
  17. package/declarations/model/BorderSet.d.ts +4 -0
  18. package/declarations/model/ICloseType.d.ts +5 -0
  19. package/declarations/model/IDraggable.d.ts +2 -0
  20. package/declarations/model/IDropTarget.d.ts +2 -0
  21. package/declarations/model/IJsonModel.d.ts +146 -0
  22. package/declarations/model/Model.d.ts +86 -0
  23. package/declarations/model/Node.d.ts +17 -0
  24. package/declarations/model/RowNode.d.ts +11 -0
  25. package/declarations/model/SplitterNode.d.ts +5 -0
  26. package/declarations/model/TabNode.d.ts +36 -0
  27. package/declarations/model/TabSetNode.d.ts +40 -0
  28. package/declarations/model/Utils.d.ts +1 -0
  29. package/declarations/view/BorderButton.d.ts +1 -0
  30. package/declarations/view/BorderTabSet.d.ts +1 -0
  31. package/declarations/view/ErrorBoundary.d.ts +1 -0
  32. package/declarations/view/FloatingWindow.d.ts +1 -0
  33. package/declarations/view/FloatingWindowTab.d.ts +1 -0
  34. package/declarations/view/Icons.d.ts +6 -0
  35. package/declarations/view/Layout.d.ts +158 -0
  36. package/declarations/view/Splitter.d.ts +1 -0
  37. package/declarations/view/Tab.d.ts +1 -0
  38. package/declarations/view/TabButton.d.ts +1 -0
  39. package/declarations/view/TabButtonStamp.d.ts +1 -0
  40. package/declarations/view/TabFloating.d.ts +1 -0
  41. package/declarations/view/TabOverflowHook.d.ts +1 -0
  42. package/declarations/view/TabSet.d.ts +1 -0
  43. package/declarations/view/Utils.d.ts +1 -0
  44. package/dist/index.js +5669 -0
  45. package/package.json +73 -0
  46. package/style/_base.scss +631 -0
  47. package/style/dark.css +560 -0
  48. package/style/dark.css.map +1 -0
  49. package/style/dark.scss +173 -0
  50. package/style/gray.css +543 -0
  51. package/style/gray.css.map +1 -0
  52. package/style/gray.scss +172 -0
  53. package/style/light.css +544 -0
  54. package/style/light.css.map +1 -0
  55. package/style/light.scss +156 -0
  56. package/style/underline.css +565 -0
  57. package/style/underline.css.map +1 -0
  58. package/style/underline.scss +178 -0
  59. package/tsconfig.json +18 -0
  60. package/typedoc/.nojekyll +1 -0
  61. package/typedoc/assets/highlight.css +106 -0
  62. package/typedoc/assets/main.js +58 -0
  63. package/typedoc/assets/search.js +1 -0
  64. package/typedoc/assets/style.css +1338 -0
  65. package/typedoc/classes/Action.html +134 -0
  66. package/typedoc/classes/Actions.html +499 -0
  67. package/typedoc/classes/BorderNode.html +374 -0
  68. package/typedoc/classes/BorderSet.html +112 -0
  69. package/typedoc/classes/DockLocation.html +163 -0
  70. package/typedoc/classes/DragDrop.html +242 -0
  71. package/typedoc/classes/DropInfo.html +155 -0
  72. package/typedoc/classes/Layout.html +600 -0
  73. package/typedoc/classes/Model.html +396 -0
  74. package/typedoc/classes/Node.html +221 -0
  75. package/typedoc/classes/Orientation.html +148 -0
  76. package/typedoc/classes/Rect.html +312 -0
  77. package/typedoc/classes/RowNode.html +275 -0
  78. package/typedoc/classes/SplitterNode.html +238 -0
  79. package/typedoc/classes/TabNode.html +389 -0
  80. package/typedoc/classes/TabSetNode.html +453 -0
  81. package/typedoc/enums/CLASSES.html +480 -0
  82. package/typedoc/enums/I18nLabel.html +160 -0
  83. package/typedoc/enums/ICloseType.html +115 -0
  84. package/typedoc/index.html +148 -0
  85. package/typedoc/interfaces/IBorderAttributes.html +166 -0
  86. package/typedoc/interfaces/ICustomDropDestination.html +149 -0
  87. package/typedoc/interfaces/IDraggable.html +95 -0
  88. package/typedoc/interfaces/IDropTarget.html +96 -0
  89. package/typedoc/interfaces/IFontValues.html +124 -0
  90. package/typedoc/interfaces/IGlobalAttributes.html +329 -0
  91. package/typedoc/interfaces/IIcons.html +134 -0
  92. package/typedoc/interfaces/IJsonBorderNode.html +188 -0
  93. package/typedoc/interfaces/IJsonModel.html +119 -0
  94. package/typedoc/interfaces/IJsonRowNode.html +141 -0
  95. package/typedoc/interfaces/IJsonTabNode.html +220 -0
  96. package/typedoc/interfaces/IJsonTabSetNode.html +273 -0
  97. package/typedoc/interfaces/ILayoutProps.html +365 -0
  98. package/typedoc/interfaces/ILayoutState.html +144 -0
  99. package/typedoc/interfaces/IRowAttributes.html +131 -0
  100. package/typedoc/interfaces/ITabAttributes.html +201 -0
  101. package/typedoc/interfaces/ITabRenderValues.html +124 -0
  102. package/typedoc/interfaces/ITabSetAttributes.html +241 -0
  103. package/typedoc/interfaces/ITabSetRenderValues.html +134 -0
  104. package/typedoc/interfaces/ITitleObject.html +114 -0
  105. package/typedoc/types/CustomDragCallback.html +108 -0
  106. package/typedoc/types/DragRectRenderCallback.html +104 -0
  107. package/typedoc/types/FloatingTabPlaceholderRenderCallback.html +114 -0
  108. package/typedoc/types/IBorderLocation.html +87 -0
  109. package/typedoc/types/IInsets.html +98 -0
  110. package/typedoc/types/ITabLocation.html +87 -0
  111. package/typedoc/types/IconFactory.html +100 -0
  112. package/typedoc/types/NodeMouseEvent.html +102 -0
  113. package/typedoc/types/ShowOverflowMenuCallback.html +122 -0
  114. package/typedoc/types/TabSetPlaceHolderCallback.html +100 -0
  115. package/typedoc/types/TitleFactory.html +100 -0
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@aptre/flex-layout",
3
+ "author": "Caplin Systems Ltd",
4
+ "description": "A multi-tab docking layout manager",
5
+ "version": "0.1.0",
6
+ "license": "ISC",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/aperturerobotics/flex-layout.git"
10
+ },
11
+ "keywords": [
12
+ "react",
13
+ "layout",
14
+ "dock",
15
+ "popout",
16
+ "tabs",
17
+ "drag-and-drop",
18
+ "tabset",
19
+ "splitter",
20
+ "drag",
21
+ "drop",
22
+ "reactjs",
23
+ "react-dom"
24
+ ],
25
+ "main": "./dist/index.js",
26
+ "module": "./dist/index.js",
27
+ "types": "./declarations/index.d.ts",
28
+ "exports": {
29
+ ".": "./dist/index.js"
30
+ },
31
+ "files": [
32
+ "README.md",
33
+ "LICENSE",
34
+ "tsconfig.json",
35
+ "style/",
36
+ "declarations/",
37
+ "typedoc/",
38
+ "dist/"
39
+ ],
40
+ "scripts": {
41
+ "build": "npm run build:style && npm run build:doc && npm run build:lib",
42
+ "build:min": "npm run build:style && npm run build:doc && npm run build:lib:min",
43
+ "build:lib": "esbuild --bundle --external:react --external:react-dom --format=esm --target=es2022 --platform=browser --outfile=./dist/index.js ./src/index.ts",
44
+ "build:lib:min": "npm run build:lib -- --minify",
45
+ "build:doc": "typedoc --out typedoc --exclude \"**/examples/**/*.tsx\" --excludeInternal --disableSources --excludePrivate --excludeProtected --readme none ./src",
46
+ "build:style": "sass style/underline.scss style/underline.css && sass style/gray.scss style/gray.css && sass style/light.scss style/light.css && sass style/dark.scss style/dark.css",
47
+ "test": "tsc --project tsconfig.json --noEmit",
48
+ "lint": "eslint src/*"
49
+ },
50
+ "peerDependencies": {
51
+ "react": "^18.0.0",
52
+ "react-dom": "^18.0.0"
53
+ },
54
+ "eslintConfig": {
55
+ "extends": "react-app"
56
+ },
57
+ "dependencies": {},
58
+ "devDependencies": {
59
+ "@types/node": "^18.15.13",
60
+ "@types/prismjs": "^1.26.0",
61
+ "@types/react": "^18.0.5",
62
+ "@types/react-dom": "^18.0.1",
63
+ "esbuild": "^0.19.5",
64
+ "prettier": "^2.6.2",
65
+ "prismjs": "^1.28.0",
66
+ "react": "^18.0.0",
67
+ "react-dom": "^18.0.0",
68
+ "react-scripts": "5.0.1",
69
+ "sass": "^1.50.0",
70
+ "typedoc": "^0.24.4",
71
+ "typescript": "^4.9.5"
72
+ }
73
+ }
@@ -0,0 +1,631 @@
1
+ @mixin absoluteFill {
2
+ left: 0;
3
+ top: 0;
4
+ right: 0;
5
+ bottom: 0;
6
+ position: absolute;
7
+ }
8
+
9
+ .flexlayout {
10
+ &__layout {
11
+ @include absoluteFill;
12
+ overflow: hidden;
13
+ }
14
+
15
+ &__splitter {
16
+ background-color: var(--color-splitter);
17
+ @include splitter_mixin;
18
+
19
+ @media (hover: hover) {
20
+ &:hover {
21
+ background-color: var(--color-splitter-hover);
22
+ transition: background-color ease-in .1s;
23
+ transition-delay: 0.05s;
24
+ @include splitter_hover_mixin;
25
+ }
26
+ }
27
+ &_border {
28
+ z-index: 10;
29
+ @include splitter_border_mixin;
30
+ }
31
+ &_drag {
32
+ z-index: 1000;
33
+ background-color: var(--color-splitter-drag);
34
+ @include splitter_drag_mixin;
35
+ }
36
+ &_extra {
37
+ background-color: transparent;
38
+ }
39
+ }
40
+
41
+ &__outline_rect {
42
+ position: absolute;
43
+ pointer-events: none;
44
+ box-sizing: border-box;
45
+ border: 2px solid var(--color-drag1);
46
+ background: var(--color-drag1-background);
47
+ border-radius: 5px;
48
+ z-index: 1000;
49
+
50
+ &_edge {
51
+ pointer-events: none;
52
+ border: 2px solid var(--color-drag2);
53
+ background: var(--color-drag2-background);
54
+ border-radius: 5px;
55
+ z-index: 1000;
56
+ box-sizing: border-box;
57
+ }
58
+ }
59
+
60
+ &__edge_rect {
61
+ position: absolute;
62
+ z-index: 1000;
63
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
64
+ background-color: var(--color-edge-marker);
65
+ pointer-events: none;
66
+ }
67
+
68
+ &__drag_rect {
69
+ position: absolute;
70
+ cursor: move;
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);
75
+ border-radius: 5px;
76
+ z-index: 1000;
77
+ box-sizing: border-box;
78
+ opacity: 0.9;
79
+ text-align: center;
80
+
81
+ display: flex;
82
+ justify-content: center;
83
+ flex-direction: column;
84
+ overflow: hidden;
85
+ padding: 0.3em 1em;
86
+ word-wrap: break-word;
87
+ font-size: var(--font-size);
88
+ font-family: var(--font-family);
89
+ }
90
+
91
+ &__tabset {
92
+ display: flex;
93
+ flex-direction: column;
94
+ overflow: hidden;
95
+ background-color: var(--color-tabset-background);
96
+ box-sizing: border-box;
97
+ font-size: var(--font-size);
98
+ font-family: var(--font-family);
99
+ @include tabset_mixin;
100
+
101
+ &_tab_divider {
102
+ width: 4px;
103
+ @include tabset_tab_divider_mixin;
104
+ }
105
+
106
+ &_content {
107
+ display: flex;
108
+ flex-grow: 1;
109
+ align-items: center;
110
+ justify-content: center;
111
+ }
112
+
113
+ &_header {
114
+ // tabset header bar
115
+ display: flex;
116
+ align-items: center;
117
+ padding: 3px 3px 3px 5px;
118
+ box-sizing: border-box;
119
+ border-bottom: 1px solid var(--color-tabset-divider-line);
120
+ color: var(--color-tabset-header);
121
+ background-color: var(--color-tabset-header-background);
122
+ @include tabset_header_mixin;
123
+
124
+ &_content {
125
+ flex-grow: 1;
126
+ }
127
+ }
128
+
129
+ &_tabbar {
130
+ &_outer {
131
+ // tabset tabbar outer
132
+ box-sizing: border-box;
133
+ background-color: var(--color-tabset-background);
134
+ overflow: hidden;
135
+ display: flex;
136
+ @include tabset_tabbar_mixin;
137
+ }
138
+
139
+ &_outer_top {
140
+ border-bottom: 1px solid var(--color-tabset-divider-line);
141
+ }
142
+
143
+ &_outer_bottom {
144
+ border-top: 1px solid var(--color-tabset-divider-line);
145
+ }
146
+
147
+ &_inner {
148
+ // tabset tabbar inner
149
+ position: relative;
150
+ box-sizing: border-box;
151
+ display: flex;
152
+ flex-grow: 1;
153
+ overflow: hidden;
154
+
155
+ &_tab_container {
156
+ display: flex;
157
+ padding-left: 4px;
158
+ padding-right: 4px;
159
+ box-sizing: border-box;
160
+ position: absolute;
161
+ top: 0;
162
+ bottom: 0;
163
+ width: 10000px;
164
+
165
+ &_top {
166
+ border-top: 2px solid transparent; // if you change this, update the _sizer above
167
+ }
168
+ &_bottom {
169
+ border-bottom: 2px solid transparent;
170
+ }
171
+ }
172
+ }
173
+ }
174
+
175
+ &-selected {
176
+ background-color: var(--color-tabset-background-selected);
177
+ @include tabset_selected_mixin;
178
+ }
179
+
180
+ &-maximized {
181
+ background-color: var(--color-tabset-background-maximized);
182
+ @include tabset_maximized_mixin;
183
+ }
184
+ }
185
+
186
+ &__tab_button_stamp {
187
+ display: inline-flex;
188
+ align-items: center;
189
+ gap: 0.3em;
190
+ white-space: nowrap;
191
+ box-sizing: border-box;
192
+ }
193
+
194
+ &__tab {
195
+ overflow: auto;
196
+ position: absolute;
197
+ box-sizing: border-box;
198
+ background-color: var(--color-background);
199
+ color: var(--color-text);
200
+
201
+ &_button {
202
+ display: flex;
203
+ gap: 0.3em;
204
+ align-items: center;
205
+ box-sizing: border-box;
206
+ padding: 3px 0.5em; // if you change top or bottom update the tabset_sizer above
207
+
208
+ cursor: pointer;
209
+ @include tab_button_mixin;
210
+
211
+ &--selected {
212
+ background-color:var(--color-tab-selected-background);
213
+ color:var(--color-tab-selected);
214
+ @include tab_button_selected_mixin;
215
+ }
216
+ @media (hover: hover) {
217
+ &:hover {
218
+ background-color:var(--color-tab-selected-background);
219
+ color:var(--color-tab-selected);
220
+ @include tab_button_hovered_mixin;
221
+ }
222
+ }
223
+
224
+ &--unselected {
225
+ background-color:var(--color-tab-unselected-background);
226
+ color:var(--color-tab-unselected);
227
+ @include tab_button_unselected_mixin;
228
+ }
229
+
230
+ &_top {
231
+ @include tab_top_mixin;
232
+ }
233
+
234
+ &_bottom {
235
+ @include tab_bottom_mixin;
236
+ }
237
+
238
+ &_leading {
239
+ display: flex;
240
+ }
241
+
242
+ &_content {
243
+ display: flex;
244
+ }
245
+
246
+ &_textbox {
247
+ border: none;
248
+ font-family: var(--font-family);
249
+ font-size: var(--font-size);
250
+ color: var(--color-tab-textbox);
251
+ background-color: var(--color-tab-textbox-background);
252
+ border: 1px inset var(--color-1);
253
+ border-radius: 3px;
254
+ width: 10em;
255
+ }
256
+
257
+ &_textbox:focus {
258
+ outline: none;
259
+ }
260
+
261
+ &_trailing {
262
+ display: flex;
263
+ visibility: hidden;
264
+ border-radius: 4px;
265
+ &:hover {
266
+ @include close_button_hovered_mixin;
267
+ }
268
+ }
269
+ @media (pointer: coarse) {
270
+ &_trailing {
271
+ }
272
+ }
273
+ @media (hover: hover) {
274
+ &:hover &_trailing {
275
+ visibility: visible;
276
+ }
277
+ }
278
+
279
+ &--selected &_trailing {
280
+ visibility: visible;
281
+ }
282
+
283
+ &_overflow {
284
+ display: flex;
285
+ align-items: center;
286
+ border: none;
287
+ color: var(--color-overflow);
288
+ font-size: inherit;
289
+ background-color: transparent;
290
+ }
291
+ }
292
+
293
+ &_toolbar {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: .3em;
297
+ padding-left: .5em;
298
+ padding-right: .3em;
299
+
300
+ &_button {
301
+ border: none;
302
+ outline: none;
303
+ font-size: inherit;
304
+ margin: 0px;
305
+ background-color: transparent;
306
+ border-radius: 4px;
307
+ padding: 1px;
308
+ @media (hover: hover) {
309
+ &:hover {
310
+ @include toolbar_button_hovered_mixin;
311
+ }
312
+ }
313
+
314
+ &-min {
315
+ }
316
+
317
+ &-max {
318
+ }
319
+
320
+ &-float {
321
+ }
322
+
323
+ &-close {
324
+ }
325
+ }
326
+
327
+ &_sticky_buttons_container {
328
+ display: flex;
329
+ gap: 0.3em;
330
+ padding-left: 5px;
331
+ align-items: center;
332
+ }
333
+ }
334
+
335
+ &_floating {
336
+ overflow: auto;
337
+ position: absolute;
338
+ box-sizing: border-box;
339
+ color: var(--color-text);
340
+ background-color: var(--color-background);
341
+ display: flex;
342
+ justify-content: center;
343
+ align-items: center;
344
+
345
+ &_inner {
346
+ overflow: auto;
347
+ display: flex;
348
+ flex-direction: column;
349
+ justify-content: center;
350
+ align-items: center;
351
+ }
352
+
353
+ &_inner div {
354
+ margin-bottom: 5px;
355
+ text-align: center;
356
+ }
357
+
358
+ &_inner div a {
359
+ color: royalblue;
360
+ }
361
+ }
362
+ }
363
+
364
+ &__border {
365
+ box-sizing: border-box;
366
+ overflow: hidden;
367
+ display: flex;
368
+ font-size: var(--font-size);
369
+ font-family: var(--font-family);
370
+ color: var(--color-border);
371
+ background-color: var(--color-border-background);
372
+ @include border_mixin;
373
+
374
+ &_top {
375
+ border-bottom: 1px solid var(--color-border-divider-line);
376
+ align-items: center;
377
+ }
378
+
379
+ &_bottom {
380
+ border-top: 1px solid var(--color-border-divider-line);
381
+ align-items: center;
382
+ }
383
+
384
+ &_left {
385
+ border-right: 1px solid var(--color-border-divider-line);
386
+ align-content: center;
387
+ flex-direction: column;
388
+ }
389
+
390
+ &_right {
391
+ border-left: 1px solid var(--color-border-divider-line);
392
+ align-content: center;
393
+ flex-direction: column;
394
+ }
395
+
396
+ &_inner {
397
+ position: relative;
398
+ box-sizing: border-box;
399
+ display: flex;
400
+ overflow: hidden;
401
+ flex-grow: 1;
402
+
403
+ &_tab_container {
404
+ white-space: nowrap;
405
+ display: flex;
406
+ padding-left: 2px;
407
+ padding-right: 2px;
408
+ box-sizing: border-box;
409
+ position: absolute;
410
+ top: 0;
411
+ bottom: 0;
412
+ width: 10000px;
413
+
414
+ &_right {
415
+ transform-origin: top left;
416
+ transform: rotate(90deg);
417
+ }
418
+ &_left {
419
+ flex-direction: row-reverse;
420
+ transform-origin: top right;
421
+ transform: rotate(-90deg);
422
+ }
423
+ }
424
+ }
425
+
426
+ &_tab_divider {
427
+ width: 4px;
428
+ @include border_tab_divider_mixin;
429
+ }
430
+
431
+ &_button {
432
+ display: flex;
433
+ gap: 0.3em;
434
+ align-items: center;
435
+ cursor: pointer;
436
+ padding: 3px 0.5em;
437
+ margin: 2px 0px;
438
+ box-sizing: border-box;
439
+ white-space: nowrap;
440
+ @include border_button_mixin;
441
+
442
+ &--selected {
443
+ background-color: var(--color-border-tab-selected-background);
444
+ color: var(--color-border-tab-selected);
445
+ @include border_button_selected_mixin;
446
+ }
447
+ @media (hover: hover) {
448
+ &:hover {
449
+ background-color: var(--color-border-tab-selected-background);
450
+ color: var(--color-border-tab-selected);
451
+ @include border_button_hovered_mixin;
452
+ }
453
+ }
454
+
455
+ &--unselected {
456
+ background-color: var(--color-border-tab-unselected-background);
457
+ color: var(--color-border-tab-unselected);
458
+ @include border_button_unselected_mixin;
459
+ }
460
+
461
+ &_leading {
462
+ display: flex;
463
+ }
464
+
465
+ &_content {
466
+ display: flex;
467
+ }
468
+
469
+ &_trailing {
470
+ display: flex;
471
+ border-radius: 4px;
472
+ visibility: hidden;
473
+ &:hover {
474
+ @include close_button_hovered_mixin;
475
+ }
476
+ }
477
+ @media (pointer: coarse) {
478
+ &_trailing {
479
+ }
480
+ }
481
+ @media (hover: hover) {
482
+ &:hover &_trailing {
483
+ visibility: visible;
484
+ }
485
+ }
486
+
487
+ &--selected &_trailing {
488
+ visibility: visible;
489
+ }
490
+ }
491
+
492
+ &_toolbar {
493
+ display: flex;
494
+ gap: .3em;
495
+ align-items: center;
496
+
497
+ &_left,
498
+ &_right {
499
+ flex-direction: column;
500
+ padding-top: .5em;
501
+ padding-bottom: .3em;
502
+ }
503
+
504
+ &_top,
505
+ &_bottom {
506
+ padding-left: .5em;
507
+ padding-right: .3em;
508
+ }
509
+
510
+ &_button {
511
+ border: none;
512
+ outline: none;
513
+ font-size: inherit;
514
+ background-color: transparent;
515
+ border-radius: 4px;
516
+ padding: 1px;
517
+ @media (hover: hover) {
518
+ &:hover {
519
+ @include toolbar_button_hovered_mixin;
520
+ }
521
+ }
522
+
523
+ &-float {
524
+ }
525
+
526
+ &_overflow {
527
+ display: flex;
528
+ align-items: center;
529
+ border: none;
530
+ color: var(--color-overflow);
531
+ font-size: inherit;
532
+ background-color: transparent;
533
+ }
534
+
535
+ &_overflow_top,
536
+ &_overflow_bottom {
537
+ }
538
+
539
+ &_overflow_right,
540
+ &_overflow_left {
541
+ }
542
+ }
543
+ }
544
+ }
545
+
546
+ &__popup_menu {
547
+ font-size: var(--font-size);
548
+ font-family: var(--font-family);
549
+
550
+ &_item {
551
+ padding: 2px 0.5em;
552
+ white-space: nowrap;
553
+ cursor: pointer;
554
+ border-radius: 2px;
555
+ }
556
+
557
+ @media (hover: hover) {
558
+ &_item:hover {
559
+ background-color: var(--color-6);
560
+ }
561
+ }
562
+
563
+ &_container {
564
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
565
+ border: 1px solid var(--color-popup-border);
566
+ color: var(--color-popup-unselected);
567
+ background: var(--color-popup-unselected-background);
568
+ border-radius: 3px;
569
+ position: absolute;
570
+ z-index: 1000;
571
+ max-height: 50%;
572
+ min-width: 100px;
573
+ overflow: auto;
574
+ padding: 2px;
575
+ }
576
+ }
577
+
578
+ &__floating_window {
579
+ _body {
580
+ height: 100%;
581
+ }
582
+
583
+ &_content {
584
+ @include absoluteFill;
585
+ }
586
+
587
+ &_tab {
588
+ overflow: auto;
589
+ @include absoluteFill;
590
+
591
+ box-sizing: border-box;
592
+ background-color: var(--color-background);
593
+ color: var(--color-text);
594
+ }
595
+ }
596
+
597
+ &__error_boundary_container {
598
+ @include absoluteFill;
599
+ display: flex;
600
+ justify-content: center;
601
+ }
602
+ &__error_boundary_content {
603
+ display: flex;
604
+ align-items: center;
605
+ }
606
+
607
+ // These classes are used to measure the sizes for tab header bar, tab bar and border bars,
608
+ // only the height is used, the padding should match the vertical spacing (padding & margins)
609
+ // that have been used in the above classes
610
+
611
+ &__tabset_sizer {
612
+ padding-top: 5px; // tab_button has 3 padding top, tabset header inner has 2 border
613
+ padding-bottom: 3px; // tab_button has 3 padding bottom
614
+ font-size: var(--font-size);
615
+ font-family: var(--font-family);
616
+ }
617
+
618
+ &__tabset_header_sizer {
619
+ padding-top: 3px;
620
+ padding-bottom: 3px;
621
+ font-size: var(--font-size);
622
+ font-family: var(--font-family);
623
+ }
624
+
625
+ &__border_sizer {
626
+ padding-top: 6px;
627
+ padding-bottom: 5px;
628
+ font-size: var(--font-size);
629
+ font-family: var(--font-family);
630
+ }
631
+ }