Skip to content

Commit 903d60d

Browse files
committed
Sync min-width changes
1 parent e0d4be7 commit 903d60d

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

dev/vscode-table/shift-table-columns.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,19 @@ <h1>Basic example</h1>
4646
>
4747
<vscode-table-header slot="header">
4848
<vscode-table-header-cell min-width="30"
49-
>id</vscode-table-header-cell
49+
>Id</vscode-table-header-cell
5050
>
5151
<vscode-table-header-cell min-width="70"
52-
>firstname</vscode-table-header-cell
52+
>First name</vscode-table-header-cell
5353
>
5454
<vscode-table-header-cell min-width="70"
55-
>lastname</vscode-table-header-cell
55+
>Last name</vscode-table-header-cell
5656
>
5757
<vscode-table-header-cell min-width="70"
58-
>email</vscode-table-header-cell
58+
>Email</vscode-table-header-cell
5959
>
6060
<vscode-table-header-cell min-width="70"
61-
>company</vscode-table-header-cell
61+
>Company</vscode-table-header-cell
6262
>
6363
</vscode-table-header>
6464
<vscode-table-body slot="body">

src/vscode-table-header-cell/vscode-table-header-cell.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export class VscodeTableHeaderCell extends VscElement {
3636
this.dispatchEvent(
3737
new CustomEvent('vsc-table-change-min-column-width', {
3838
detail: {columnIndex: this.index, propertyValue: this.minWidth},
39+
bubbles: true,
3940
}) as VscTableChangeMinColumnWidthEvent
4041
);
4142
}
@@ -54,4 +55,8 @@ declare global {
5455
interface HTMLElementTagNameMap {
5556
'vscode-table-header-cell': VscodeTableHeaderCell;
5657
}
58+
59+
interface GlobalEventHandlersEventMap {
60+
'vsc-table-change-min-column-width': VscTableChangeMinColumnWidthEvent;
61+
}
5762
}

src/vscode-table/vscode-table.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
} from '../includes/sizes.js';
2323
import styles from './vscode-table.styles.js';
2424
import {ColumnResizeController} from './ColumnResizeController.js';
25+
import {VscTableChangeMinColumnWidthEvent} from '../vscode-table-header-cell/vscode-table-header-cell.js';
2526

2627
/**
2728
* @tag vscode-table
@@ -191,6 +192,15 @@ export class VscodeTable extends VscElement {
191192

192193
private _columnResizeController = new ColumnResizeController(this);
193194

195+
constructor() {
196+
super();
197+
198+
this.addEventListener(
199+
'vsc-table-change-min-column-width',
200+
this._handleMinColumnWidthChange
201+
);
202+
}
203+
194204
override connectedCallback(): void {
195205
super.connectedCallback();
196206

@@ -618,6 +628,17 @@ export class VscodeTable extends VscElement {
618628
this._stopDrag(event);
619629
};
620630

631+
private _handleMinColumnWidthChange = (
632+
event: VscTableChangeMinColumnWidthEvent
633+
) => {
634+
const {columnIndex, propertyValue} = event.detail;
635+
const value = parseSizeAttributeToPercent(propertyValue, this._componentW);
636+
637+
if (value) {
638+
this._columnResizeController.setColumnMinWidthAt(columnIndex, value);
639+
}
640+
};
641+
621642
override render(): TemplateResult {
622643
const splitterPositions = this._columnResizeController.splitterPositions;
623644

0 commit comments

Comments
 (0)