@theia/core 1.37.0 → 1.38.0-next.5

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.
@@ -11,11 +11,12 @@ export interface SelectOption {
11
11
  userData?: string;
12
12
  }
13
13
  export interface SelectComponentProps {
14
- options: SelectOption[];
14
+ options: readonly SelectOption[];
15
15
  defaultValue?: string | number;
16
16
  onChange?: (option: SelectOption, index: number) => void;
17
17
  onBlur?: () => void;
18
18
  onFocus?: () => void;
19
+ alignment?: 'left' | 'right';
19
20
  }
20
21
  export interface SelectComponentState {
21
22
  dimensions?: DOMRect;
@@ -32,9 +33,10 @@ export declare class SelectComponent extends React.Component<SelectComponentProp
32
33
  protected optimalWidth: number;
33
34
  protected optimalHeight: number;
34
35
  constructor(props: SelectComponentProps);
35
- get options(): SelectOption[];
36
+ get options(): readonly SelectOption[];
36
37
  get value(): string | number | undefined;
37
38
  set value(value: string | number | undefined);
39
+ protected get alignLeft(): boolean;
38
40
  protected getOptimalWidth(): number;
39
41
  protected getOptimalHeight(maxWidth?: number): number;
40
42
  protected attachListeners(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"select-component.d.ts","sourceRoot":"","sources":["../../../src/browser/widgets/select-component.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,iDAAiD,CAAC;AAEzD,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,qBAAa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5F,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC;IACvC,SAAS,CAAC,QAAQ,kCAAqC;IACvD,SAAS,CAAC,WAAW,kCAAqC;IAC1D,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAa;IACxF,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,aAAa,SAAK;gBAEhB,KAAK,EAAE,oBAAoB;IAuBvC,IAAI,OAAO,IAAI,YAAY,EAAE,CAE5B;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAc3C;IAED,SAAS,CAAC,eAAe,IAAI,MAAM;IAKnC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAcrD,SAAS,CAAC,eAAe,IAAI,IAAI;IAwBxB,oBAAoB,IAAI,IAAI;IAc5B,MAAM,IAAI,KAAK,CAAC,SAAS;IA8BlC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM;IAiBvE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI;IAsCvE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;IAMtE,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAYlC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAUpC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS;IAoD3C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS;IAwB5E,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;CAIpE"}
1
+ {"version":3,"file":"select-component.d.ts","sourceRoot":"","sources":["../../../src/browser/widgets/select-component.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,iDAAiD,CAAC;AAEzD,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,qBAAa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5F,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC;IACvC,SAAS,CAAC,QAAQ,kCAAqC;IACvD,SAAS,CAAC,WAAW,kCAAqC;IAC1D,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAa;IACxF,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,aAAa,SAAK;gBAEhB,KAAK,EAAE,oBAAoB;IAuBvC,IAAI,OAAO,IAAI,SAAS,YAAY,EAAE,CAErC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAc3C;IAED,SAAS,KAAK,SAAS,IAAI,OAAO,CAEjC;IAED,SAAS,CAAC,eAAe,IAAI,MAAM;IAKnC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAcrD,SAAS,CAAC,eAAe,IAAI,IAAI;IAwBxB,oBAAoB,IAAI,IAAI;IAc5B,MAAM,IAAI,KAAK,CAAC,SAAS;IA8BlC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM;IAiBvE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI;IAsCvE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;IAMtE,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAYlC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAUpC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS;IAuD3C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS;IAwB5E,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;CAIpE"}
@@ -74,6 +74,9 @@ class SelectComponent extends React.Component {
74
74
  });
75
75
  }
76
76
  }
77
+ get alignLeft() {
78
+ return this.props.alignment !== 'right';
79
+ }
77
80
  getOptimalWidth() {
78
81
  const textWidth = (0, browser_1.measureTextWidth)(this.props.options.map(e => e.label || e.value || '' + (e.detail || '')));
79
82
  return Math.ceil(textWidth + 16);
@@ -129,13 +132,13 @@ class SelectComponent extends React.Component {
129
132
  }
130
133
  }
131
134
  render() {
132
- var _a, _b;
135
+ var _a, _b, _c, _d;
133
136
  const { options } = this.props;
134
137
  let { selected } = this.state;
135
138
  if ((_a = options[selected]) === null || _a === void 0 ? void 0 : _a.separator) {
136
139
  selected = this.nextNotSeparator('forwards');
137
140
  }
138
- const selectedItemLabel = (_b = options[selected].label) !== null && _b !== void 0 ? _b : options[selected].value;
141
+ const selectedItemLabel = (_c = (_b = options[selected]) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : (_d = options[selected]) === null || _d === void 0 ? void 0 : _d.value;
139
142
  return React.createElement(React.Fragment, null,
140
143
  React.createElement("div", { key: "select-component", ref: this.fieldRef, tabIndex: 0, className: "theia-select-component", onClick: e => this.handleClickEvent(e), onBlur: () => {
141
144
  var _a, _b;
@@ -234,6 +237,8 @@ class SelectComponent extends React.Component {
234
237
  if (!this.state.dimensions) {
235
238
  return;
236
239
  }
240
+ const shellArea = document.getElementById('theia-app-shell').getBoundingClientRect();
241
+ const maxWidth = this.alignLeft ? shellArea.width - this.state.dimensions.left : this.state.dimensions.right;
237
242
  if (this.mountedListeners.size === 0) {
238
243
  // Only attach our listeners once we render our dropdown menu
239
244
  this.attachListeners();
@@ -241,9 +246,8 @@ class SelectComponent extends React.Component {
241
246
  this.optimalWidth = this.getOptimalWidth();
242
247
  this.optimalHeight = this.getOptimalHeight(Math.max(this.state.dimensions.width, this.optimalWidth));
243
248
  }
244
- const clientRect = document.getElementById('theia-app-shell').getBoundingClientRect();
245
- const availableTop = this.state.dimensions.top - clientRect.top;
246
- const availableBottom = clientRect.top + clientRect.height - this.state.dimensions.bottom;
249
+ const availableTop = this.state.dimensions.top - shellArea.top;
250
+ const availableBottom = shellArea.top + shellArea.height - this.state.dimensions.bottom;
247
251
  // prefer rendering to the bottom unless there is not enough space and more content can be shown to the top
248
252
  const invert = availableBottom < this.optimalHeight && (availableBottom - this.optimalHeight) < (availableTop - this.optimalHeight);
249
253
  const { options } = this.props;
@@ -267,14 +271,13 @@ class SelectComponent extends React.Component {
267
271
  items.push(descriptionNode);
268
272
  }
269
273
  }
270
- const calculatedWidth = Math.max(this.state.dimensions.width, this.optimalWidth);
271
- const maxWidth = clientRect.width - this.state.dimensions.left;
272
274
  return React.createElement("div", { key: "dropdown", className: "theia-select-component-dropdown", style: {
273
275
  top: invert ? 'none' : this.state.dimensions.bottom,
274
- bottom: invert ? clientRect.top + clientRect.height - this.state.dimensions.top : 'none',
275
- left: this.state.dimensions.left,
276
- width: Math.min(calculatedWidth, maxWidth),
277
- maxHeight: clientRect.height - (invert ? clientRect.height - this.state.dimensions.bottom : this.state.dimensions.top) - this.state.dimensions.height,
276
+ bottom: invert ? shellArea.top + shellArea.height - this.state.dimensions.top : 'none',
277
+ left: this.alignLeft ? this.state.dimensions.left : 'none',
278
+ right: this.alignLeft ? 'none' : shellArea.width - this.state.dimensions.right,
279
+ width: Math.min(Math.max(this.state.dimensions.width, this.optimalWidth), maxWidth),
280
+ maxHeight: shellArea.height - (invert ? shellArea.height - this.state.dimensions.bottom : this.state.dimensions.top) - this.state.dimensions.height,
278
281
  position: 'absolute'
279
282
  }, ref: this.dropdownRef }, items);
280
283
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select-component.js","sourceRoot":"","sources":["../../../src/browser/widgets/select-component.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-component.js","sourceRoot":"","sources":["../../../src/browser/widgets/select-component.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.37.0",
3
+ "version": "1.38.0-next.5+cc3017002",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -16,8 +16,8 @@
16
16
  "@phosphor/signaling": "1",
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
- "@theia/application-package": "1.37.0",
20
- "@theia/request": "1.37.0",
19
+ "@theia/application-package": "1.38.0-next.5+cc3017002",
20
+ "@theia/request": "1.38.0-next.5+cc3017002",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -205,5 +205,5 @@
205
205
  "nyc": {
206
206
  "extends": "../../configs/nyc.json"
207
207
  },
208
- "gitHead": "57769513da78e4f8d90abce3d7daaf7d436545fd"
208
+ "gitHead": "cc301700227906f840029c516b876114cb6e6931"
209
209
  }
@@ -99,9 +99,10 @@ export class DefaultJsonSchemaContribution implements JsonSchemaContribution {
99
99
  @inject(RequestService)
100
100
  protected readonly requestService: RequestService;
101
101
 
102
+ protected readonly jsonSchemaUrl = `${new Endpoint().httpScheme}//schemastore.org/api/json/catalog.json`;
103
+
102
104
  async registerSchemas(context: JsonSchemaRegisterContext): Promise<void> {
103
- const url = `${new Endpoint().httpScheme}//schemastore.azurewebsites.net/api/json/catalog.json`;
104
- const response = await this.requestService.request({ url });
105
+ const response = await this.requestService.request({ url: this.jsonSchemaUrl });
105
106
  const schemas = RequestContext.asJson<{ schemas: DefaultJsonSchemaContribution.SchemaData[] }>(response).schemas;
106
107
  for (const s of schemas) {
107
108
  if (s.fileMatch) {
@@ -34,6 +34,9 @@ import { IDragEvent } from '@phosphor/dragdrop';
34
34
  import { LOCKED_CLASS, PINNED_CLASS } from '../widgets/widget';
35
35
  import { CorePreferences } from '../core-preferences';
36
36
  import { HoverService } from '../hover-service';
37
+ import { Root, createRoot } from 'react-dom/client';
38
+ import { SelectComponent } from '../widgets/select-component';
39
+ import { createElement } from 'react';
37
40
 
38
41
  /** The class name added to hidden content nodes, which are required to render vertical side bars. */
39
42
  const HIDDEN_CONTENT_CLASS = 'theia-TabBar-hidden-content';
@@ -228,7 +231,7 @@ export class TabBarRenderer extends TabBar.Renderer {
228
231
  } else {
229
232
  width = '';
230
233
  }
231
- return { zIndex, height, width };
234
+ return { zIndex, height, minWidth: width, maxWidth: width };
232
235
  }
233
236
 
234
237
  /**
@@ -575,13 +578,6 @@ export class TabBarRenderer extends TabBar.Renderer {
575
578
 
576
579
  }
577
580
 
578
- export namespace ScrollableTabBar {
579
- export interface Options {
580
- minimumTabSize: number;
581
- defaultTabSize: number;
582
- }
583
- }
584
-
585
581
  /**
586
582
  * A specialized tab bar for the main and bottom areas.
587
583
  */
@@ -595,13 +591,18 @@ export class ScrollableTabBar extends TabBar<Widget> {
595
591
  protected needsRecompute = false;
596
592
  protected tabSize = 0;
597
593
  private _dynamicTabOptions?: ScrollableTabBar.Options;
594
+ protected contentContainer: HTMLElement;
595
+ protected topRow: HTMLElement;
598
596
 
599
597
  protected readonly toDispose = new DisposableCollection();
598
+ protected openTabsContainer: HTMLDivElement;
599
+ protected openTabsRoot: Root;
600
600
 
601
601
  constructor(options?: TabBar.IOptions<Widget> & PerfectScrollbar.Options, dynamicTabOptions?: ScrollableTabBar.Options) {
602
602
  super(options);
603
603
  this.scrollBarFactory = () => new PerfectScrollbar(this.scrollbarHost, options);
604
604
  this._dynamicTabOptions = dynamicTabOptions;
605
+ this.rewireDOM();
605
606
  }
606
607
 
607
608
  set dynamicTabOptions(options: ScrollableTabBar.Options | undefined) {
@@ -621,6 +622,35 @@ export class ScrollableTabBar extends TabBar<Widget> {
621
622
  this.toDispose.dispose();
622
623
  }
623
624
 
625
+ /**
626
+ * Restructures the DOM defined in PhosphorJS.
627
+ *
628
+ * By default the tabs (`li`) are contained in the `this.contentNode` (`ul`) which is wrapped in a `div` (`this.node`).
629
+ * Instead of this structure, we add a container for the `this.contentNode` and for the toolbar.
630
+ * The scrollbar will only work for the `ul` part but it does not affect the toolbar, so it can be on the right hand-side.
631
+ */
632
+ private rewireDOM(): void {
633
+ const contentNode = this.node.getElementsByClassName(ScrollableTabBar.Styles.TAB_BAR_CONTENT)[0];
634
+ if (!contentNode) {
635
+ throw new Error("'this.node' does not have the content as a direct child with class name 'p-TabBar-content'.");
636
+ }
637
+ this.node.removeChild(contentNode);
638
+ this.contentContainer = document.createElement('div');
639
+ this.contentContainer.classList.add(ScrollableTabBar.Styles.TAB_BAR_CONTENT_CONTAINER);
640
+ this.contentContainer.appendChild(contentNode);
641
+
642
+ this.topRow = document.createElement('div');
643
+ this.topRow.classList.add('theia-tabBar-tab-row');
644
+ this.topRow.appendChild(this.contentContainer);
645
+
646
+ this.openTabsContainer = document.createElement('div');
647
+ this.openTabsContainer.classList.add('theia-tabBar-open-tabs');
648
+ this.openTabsRoot = createRoot(this.openTabsContainer);
649
+ this.topRow.appendChild(this.openTabsContainer);
650
+
651
+ this.node.appendChild(this.topRow);
652
+ }
653
+
624
654
  protected override onAfterAttach(msg: Message): void {
625
655
  if (!this.scrollBar) {
626
656
  this.scrollBar = this.scrollBarFactory();
@@ -649,18 +679,41 @@ export class ScrollableTabBar extends TabBar<Widget> {
649
679
  }
650
680
 
651
681
  protected updateTabs(): void {
652
-
653
682
  const content = [];
654
683
  if (this.dynamicTabOptions) {
684
+
685
+ this.openTabsRoot.render(createElement(SelectComponent, {
686
+ options: this.titles,
687
+ onChange: (option, index) => {
688
+ this.currentIndex = index;
689
+ },
690
+ alignment: 'right'
691
+ }));
692
+
655
693
  if (this.isMouseOver) {
656
694
  this.needsRecompute = true;
657
695
  } else {
658
696
  this.needsRecompute = false;
659
697
  if (this.orientation === 'horizontal') {
660
- this.tabSize = Math.max(Math.min(this.scrollbarHost.clientWidth / this.titles.length,
698
+ let availableWidth = this.scrollbarHost.clientWidth;
699
+ let effectiveWidth = availableWidth;
700
+ if (!this.openTabsContainer.classList.contains('p-mod-hidden')) {
701
+ availableWidth += this.openTabsContainer.getBoundingClientRect().width;
702
+ }
703
+ if (this.dynamicTabOptions.minimumTabSize * this.titles.length <= availableWidth) {
704
+ effectiveWidth += this.openTabsContainer.getBoundingClientRect().width;
705
+ this.openTabsContainer.classList.add('p-mod-hidden');
706
+ } else {
707
+ this.openTabsContainer.classList.remove('p-mod-hidden');
708
+ }
709
+ this.tabSize = Math.max(Math.min(effectiveWidth / this.titles.length,
661
710
  this.dynamicTabOptions.defaultTabSize), this.dynamicTabOptions.minimumTabSize);
662
711
  }
663
712
  }
713
+ this.node.classList.add('dynamic-tabs');
714
+ } else {
715
+ this.openTabsContainer.classList.add('p-mod-hidden');
716
+ this.node.classList.remove('dynamic-tabs');
664
717
  }
665
718
  for (let i = 0, n = this.titles.length; i < n; ++i) {
666
719
  const title = this.titles[i];
@@ -674,7 +727,9 @@ export class ScrollableTabBar extends TabBar<Widget> {
674
727
  }
675
728
  VirtualDOM.render(content, this.contentNode);
676
729
  if (this.scrollBar) {
677
- this.scrollBar.update();
730
+ if (!(this.dynamicTabOptions && this.isMouseOver)) {
731
+ this.scrollBar.update();
732
+ }
678
733
  }
679
734
  }
680
735
 
@@ -739,10 +794,38 @@ export class ScrollableTabBar extends TabBar<Widget> {
739
794
  return result;
740
795
  }
741
796
 
797
+ /**
798
+ * Overrides the `contentNode` property getter in PhosphorJS' TabBar.
799
+ */
800
+ // @ts-expect-error TS2611 `TabBar<T>.contentNode` is declared as `readonly contentNode` but is implemented as a getter.
801
+ get contentNode(): HTMLUListElement {
802
+ return this.tabBarContainer.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT)[0] as HTMLUListElement;
803
+ }
804
+
805
+ /**
806
+ * Overrides the scrollable host from the parent class.
807
+ */
742
808
  protected get scrollbarHost(): HTMLElement {
743
- return this.node;
809
+ return this.tabBarContainer;
810
+ }
811
+
812
+ protected get tabBarContainer(): HTMLElement {
813
+ return this.node.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT_CONTAINER)[0] as HTMLElement;
814
+ }
815
+ }
816
+
817
+ export namespace ScrollableTabBar {
818
+
819
+ export interface Options {
820
+ minimumTabSize: number;
821
+ defaultTabSize: number;
744
822
  }
823
+ export namespace Styles {
745
824
 
825
+ export const TAB_BAR_CONTENT = 'p-TabBar-content';
826
+ export const TAB_BAR_CONTENT_CONTAINER = 'p-TabBar-content-container';
827
+
828
+ }
746
829
  }
747
830
 
748
831
  /**
@@ -761,12 +844,9 @@ export class ScrollableTabBar extends TabBar<Widget> {
761
844
  *
762
845
  */
763
846
  export class ToolbarAwareTabBar extends ScrollableTabBar {
764
-
765
- protected contentContainer: HTMLElement;
766
847
  protected toolbar: TabBarToolbar | undefined;
767
848
  protected breadcrumbsContainer: HTMLElement;
768
849
  protected readonly breadcrumbsRenderer: BreadcrumbsRenderer;
769
- protected topRow: HTMLElement;
770
850
 
771
851
  constructor(
772
852
  protected readonly tabBarToolbarRegistry: TabBarToolbarRegistry,
@@ -777,7 +857,8 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
777
857
  ) {
778
858
  super(options, dynamicTabOptions);
779
859
  this.breadcrumbsRenderer = this.breadcrumbsRendererFactory();
780
- this.rewireDOM();
860
+ this.addBreadcrumbs();
861
+ this.toolbar = this.tabBarToolbarFactory();
781
862
  this.toDispose.push(this.tabBarToolbarRegistry.onDidChange(() => this.update()));
782
863
  this.toDispose.push(this.breadcrumbsRenderer);
783
864
  this.toDispose.push(this.breadcrumbsRenderer.onDidChangeActiveState(active => {
@@ -792,25 +873,6 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
792
873
  this.toDispose.push(Disposable.create(() => this.currentChanged.disconnect(handler)));
793
874
  }
794
875
 
795
- /**
796
- * Overrides the `contentNode` property getter in PhosphorJS' TabBar.
797
- */
798
- // @ts-expect-error TS2611 `TabBar<T>.contentNode` is declared as `readonly contentNode` but is implemented as a getter.
799
- get contentNode(): HTMLUListElement {
800
- return this.tabBarContainer.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT)[0] as HTMLUListElement;
801
- }
802
-
803
- /**
804
- * Overrides the scrollable host from the parent class.
805
- */
806
- protected override get scrollbarHost(): HTMLElement {
807
- return this.tabBarContainer;
808
- }
809
-
810
- protected get tabBarContainer(): HTMLElement {
811
- return this.node.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT_CONTAINER)[0] as HTMLElement;
812
- }
813
-
814
876
  protected async updateBreadcrumbs(): Promise<void> {
815
877
  const current = this.currentTitle?.owner;
816
878
  const uri = NavigatableWidget.is(current) ? current.getResourceUri() : undefined;
@@ -853,13 +915,19 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
853
915
  }
854
916
 
855
917
  override handleEvent(event: Event): void {
856
- if (this.toolbar && event instanceof MouseEvent && this.toolbar.shouldHandleMouseEvent(event)) {
857
- // if the mouse event is over the toolbar part don't handle it.
858
- return;
918
+ if (event instanceof MouseEvent) {
919
+ if (this.toolbar && this.toolbar.shouldHandleMouseEvent(event) || this.isOver(event, this.openTabsContainer)) {
920
+ // if the mouse event is over the toolbar part don't handle it.
921
+ return;
922
+ }
859
923
  }
860
924
  super.handleEvent(event);
861
925
  }
862
926
 
927
+ private isOver(event: Event, element: Element): boolean {
928
+ return element && event.target instanceof Element && element.contains(event.target);
929
+ }
930
+
863
931
  /**
864
932
  * Restructures the DOM defined in PhosphorJS.
865
933
  *
@@ -867,20 +935,7 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
867
935
  * Instead of this structure, we add a container for the `this.contentNode` and for the toolbar.
868
936
  * The scrollbar will only work for the `ul` part but it does not affect the toolbar, so it can be on the right hand-side.
869
937
  */
870
- protected rewireDOM(): void {
871
- const contentNode = this.node.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT)[0];
872
- if (!contentNode) {
873
- throw new Error("'this.node' does not have the content as a direct child with class name 'p-TabBar-content'.");
874
- }
875
- this.node.removeChild(contentNode);
876
- this.topRow = document.createElement('div');
877
- this.topRow.classList.add('theia-tabBar-tab-row');
878
- this.contentContainer = document.createElement('div');
879
- this.contentContainer.classList.add(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT_CONTAINER);
880
- this.contentContainer.appendChild(contentNode);
881
- this.topRow.appendChild(this.contentContainer);
882
- this.node.appendChild(this.topRow);
883
- this.toolbar = this.tabBarToolbarFactory();
938
+ private addBreadcrumbs(): void {
884
939
  this.breadcrumbsContainer = document.createElement('div');
885
940
  this.breadcrumbsContainer.classList.add('theia-tabBar-breadcrumb-row');
886
941
  this.breadcrumbsContainer.appendChild(this.breadcrumbsRenderer.host);
@@ -888,17 +943,6 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
888
943
  }
889
944
  }
890
945
 
891
- export namespace ToolbarAwareTabBar {
892
-
893
- export namespace Styles {
894
-
895
- export const TAB_BAR_CONTENT = 'p-TabBar-content';
896
- export const TAB_BAR_CONTENT_CONTAINER = 'p-TabBar-content-container';
897
-
898
- }
899
-
900
- }
901
-
902
946
  /**
903
947
  * A specialized tab bar for side areas.
904
948
  */
@@ -22,8 +22,6 @@
22
22
  }
23
23
 
24
24
  .p-TabBar[data-orientation='horizontal'] {
25
- overflow-x: hidden;
26
- overflow-y: hidden;
27
25
  min-height: var(--theia-horizontal-toolbar-height);
28
26
  }
29
27
 
@@ -38,6 +36,7 @@
38
36
  line-height: var(--theia-private-horizontal-tab-height);
39
37
  padding: 0px 8px;
40
38
  align-items: center;
39
+ overflow: hidden;
41
40
  }
42
41
 
43
42
  .p-TabBar[data-orientation='vertical'] .p-TabBar-tab {
@@ -215,7 +214,19 @@
215
214
  -ms-user-select: none;
216
215
  }
217
216
 
218
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon:hover {
217
+ .p-TabBar.theia-app-centers.dynamic-tabs .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon,
218
+ .p-TabBar.theia-app-centers.dynamic-tabs .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon {
219
+ /* hide close icon for dynamic tabs strategy*/
220
+ display: none;
221
+ }
222
+
223
+ .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-current > .p-TabBar-tabCloseIcon,
224
+ .p-TabBar.theia-app-centers .p-TabBar-tab:hover.p-mod-closable > .p-TabBar-tabCloseIcon,
225
+ .p-TabBar.theia-app-centers .p-TabBar-tab:hover.theia-mod-pinned > .p-TabBar-tabCloseIcon {
226
+ display: inline-block;
227
+ }
228
+
229
+ .p-TabBar.theia-app-centers .p-TabBar-tab:hover.p-mod-closable > .p-TabBar-tabCloseIcon {
219
230
  border-radius: 5px;
220
231
  background-color: rgba(50%, 50%, 50%, 0.2);
221
232
  }
@@ -303,6 +314,15 @@
303
314
  bottom: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
304
315
  }
305
316
 
317
+ .p-TabBar[data-orientation='vertical'] .p-TabBar-content-container > .ps__rail-y {
318
+ width: var(--theia-private-horizontal-tab-scrollbar-rail-height);
319
+ z-index: 1000;
320
+ }
321
+
322
+ .p-TabBar[data-orientation='vertical'] .p-TabBar-content-container > .ps__rail-y > .ps__thumb-y {
323
+ width: var(--theia-private-horizontal-tab-scrollbar-height) !important;
324
+ right: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
325
+ }
306
326
 
307
327
  /*-----------------------------------------------------------------------------
308
328
  | Dragged tabs
@@ -405,18 +425,36 @@
405
425
  flex-direction: column;
406
426
  }
407
427
 
408
- .theia-tabBar-tab-row {
428
+ .p-TabBar[data-orientation='horizontal'] .theia-tabBar-tab-row {
409
429
  display: flex;
410
430
  flex-flow: row nowrap;
411
431
  min-width: 100%;
412
432
  }
413
433
 
414
- .p-TabBar-tab .theia-tab-icon-label {
434
+ .p-TabBar[data-orientation='vertical'] .theia-tabBar-tab-row {
435
+ display: flex;
436
+ flex-flow: column nowrap;
437
+ height: 100%;
438
+ }
439
+
440
+ .p-TabBar[data-orientation='horizontal'] .p-TabBar-content {
441
+ flex-direction: row;
442
+ }
443
+
444
+ .p-TabBar[data-orientation='vertical'] .p-TabBar-content {
445
+ flex-direction: column;
446
+ }
447
+
448
+ .p-TabBar.theia-app-centers[data-orientation='horizontal'].dynamic-tabs .p-TabBar-tabLabel {
449
+ /* fade out text with dynamic tabs strategy */
450
+ mask-image: linear-gradient(to left, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 1) 15px);
451
+ -webkit-mask-image: linear-gradient(to left, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 1) 15px);
415
452
  flex: 1;
416
453
  }
417
454
 
418
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab.p-mod-closable:hover .theia-tab-icon-label,
419
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab.p-mod-current .theia-tab-icon-label {
455
+
456
+ .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab .theia-tab-icon-label {
457
+ flex: 1;
420
458
  overflow: hidden;
421
459
  }
422
460
 
@@ -435,3 +473,25 @@
435
473
  margin: 0px 0px;
436
474
  margin-top: 4px;
437
475
  }
476
+
477
+ /*-----------------------------------------------------------------------------
478
+ | Open tabs dropdown
479
+ |----------------------------------------------------------------------------*/
480
+ .theia-tabBar-open-tabs>.theia-select-component .theia-select-component-label {
481
+ display: none;
482
+ }
483
+
484
+ .theia-tabBar-open-tabs>.theia-select-component {
485
+ min-width: auto;
486
+ height: 100%;
487
+ }
488
+
489
+ .theia-tabBar-open-tabs {
490
+ flex: 0 0 auto;
491
+ display: flex;
492
+ align-items: center;
493
+ }
494
+
495
+ .theia-tabBar-open-tabs.p-mod-hidden {
496
+ display: none
497
+ }