Skip to content

Commit a2a4010

Browse files
committed
Control multi selection mode by property
1 parent af6c5aa commit a2a4010

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

src/vscode-list-item/vscode-list-item.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ export class VscodeListItem extends VscElement {
7878
}
7979

8080
private _selectItem(isCtrlDown: boolean) {
81-
const {selectedItems} = this._listContextState;
81+
const {selectedItems, multiSelect} = this._listContextState;
8282

83-
if (isCtrlDown) {
83+
if (multiSelect && isCtrlDown) {
8484
if (this.selected) {
8585
this.selected = false;
8686
selectedItems.delete(this);
@@ -132,7 +132,7 @@ export class VscodeListItem extends VscElement {
132132
const isCtrlDown = ev.ctrlKey;
133133
this._selectItem(isCtrlDown);
134134

135-
if (this.branch && !isCtrlDown) {
135+
if (this.branch && !(this._listContextState.multiSelect && isCtrlDown)) {
136136
this.closed = !this.closed;
137137
}
138138

src/vscode-list/list-context.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {VscodeList} from './vscode-list';
55
export interface ListContext {
66
indent: number;
77
arrows: boolean;
8+
multiSelect: boolean;
89
selectedItems: Set<VscodeListItem>;
910
focusedItem: VscodeListItem | null;
1011
focusItem: (item: VscodeListItem) => void;

src/vscode-list/vscode-list.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,15 @@ export class VscodeList extends VscElement {
3131
@property({type: Number, reflect: true})
3232
indent = 8;
3333

34-
@property({type: Boolean, reflect: true})
35-
multiselect = false;
34+
@property({type: Boolean, reflect: true, attribute: 'multi-select'})
35+
set multiSelect(val: boolean) {
36+
this._multiSelect = val;
37+
this._listContextState.multiSelect = val;
38+
}
39+
get multiSelect(): boolean {
40+
return this._multiSelect;
41+
}
42+
private _multiSelect = false;
3643

3744
/** @internal */
3845
@property({type: String, reflect: true})
@@ -45,6 +52,7 @@ export class VscodeList extends VscElement {
4552
private _listContextState: ListContext = {
4653
arrows: false,
4754
indent: 8,
55+
multiSelect: false,
4856
selectedItems: new Set(),
4957
focusedItem: null,
5058
hasBranchItem: false,

0 commit comments

Comments
 (0)